From 0ec8b3933446f42b080080dbb2914fc1f7207b20 Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Fri, 8 Jun 2018 02:25:26 -0500 Subject: [PATCH 1/2] Choose architecture for building docker image Signed-off-by: Alice Frosi --- Makefile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 77d7c8ff7..46ab996e8 100644 --- a/Makefile +++ b/Makefile @@ -16,6 +16,7 @@ LDFLAGS := -w -s GOFLAGS := BINDIR := $(CURDIR)/bin BINARIES := helm tiller +GO_ARCH := amd64 # Required for globs to work correctly SHELL=/bin/bash @@ -60,8 +61,8 @@ check-docker: docker-binary: BINDIR = ./rootfs docker-binary: GOFLAGS += -a -installsuffix cgo docker-binary: - GOOS=linux GOARCH=amd64 CGO_ENABLED=0 $(GO) build -o $(BINDIR)/helm $(GOFLAGS) -tags '$(TAGS)' -ldflags '$(LDFLAGS)' k8s.io/helm/cmd/helm - GOOS=linux GOARCH=amd64 CGO_ENABLED=0 $(GO) build -o $(BINDIR)/tiller $(GOFLAGS) -tags '$(TAGS)' -ldflags '$(LDFLAGS)' k8s.io/helm/cmd/tiller + GOOS=linux GOARCH=$(GO_ARCH) CGO_ENABLED=0 $(GO) build -o $(BINDIR)/helm $(GOFLAGS) -tags '$(TAGS)' -ldflags '$(LDFLAGS)' k8s.io/helm/cmd/helm + GOOS=linux GOARCH=$(GO_ARCH) CGO_ENABLED=0 $(GO) build -o $(BINDIR)/tiller $(GOFLAGS) -tags '$(TAGS)' -ldflags '$(LDFLAGS)' k8s.io/helm/cmd/tiller .PHONY: docker-build docker-build: check-docker docker-binary @@ -72,7 +73,7 @@ docker-build: check-docker docker-binary docker-binary-rudder: BINDIR = ./rootfs docker-binary-rudder: GOFLAGS += -a -installsuffix cgo docker-binary-rudder: - GOOS=linux GOARCH=amd64 CGO_ENABLED=0 $(GO) build -o $(BINDIR)/rudder $(GOFLAGS) -tags '$(TAGS)' -ldflags '$(LDFLAGS)' k8s.io/helm/cmd/rudder + GOOS=linux GOARCH=$(GO_ARCH) CGO_ENABLED=0 $(GO) build -o $(BINDIR)/rudder $(GOFLAGS) -tags '$(TAGS)' -ldflags '$(LDFLAGS)' k8s.io/helm/cmd/rudder .PHONY: docker-build-experimental docker-build-experimental: check-docker docker-binary docker-binary-rudder From 90eeb0f91001b93e3bed68db7c0f3e5a9e38ae3c Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Fri, 8 Jun 2018 03:41:36 -0500 Subject: [PATCH 2/2] Build tiller image for different architectures Signed-off-by: Alice Frosi --- Makefile | 21 ++++++++++++++++++++- rootfs/Dockerfile | 8 +++++--- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 46ab996e8..19ee8f546 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,7 @@ IMAGE_PREFIX ?= kubernetes-helm SHORT_NAME ?= tiller SHORT_NAME_RUDDER ?= rudder TARGETS ?= darwin/amd64 linux/amd64 linux/386 linux/arm linux/arm64 linux/ppc64le linux/s390x windows/amd64 +TARGETS_DOCKER ?= amd64 arm arm64 ppc64le s390x DIST_DIRS = find * -type d -exec APP = helm @@ -82,6 +83,24 @@ docker-build-experimental: check-docker docker-binary docker-binary-rudder docker build --rm -t ${IMAGE_RUDDER} rootfs -f rootfs/Dockerfile.rudder docker tag ${IMAGE_RUDDER} ${MUTABLE_IMAGE_RUDDER} +.PHONY: docker-cross-binary +docker-cross-binary: + for target in $(TARGETS_DOCKER); do \ + echo "Building binaries for arch $$target" ; \ + mkdir -p rootfs/bin ; \ + GOOS=linux GOARCH=$$target CGO_ENABLED=0 $(GO) build -o rootfs/bin/$$target/helm $(GOFLAGS) -tags '$(TAGS)' -ldflags '$(LDFLAGS)' k8s.io/helm/cmd/helm ; \ + GOOS=linux GOARCH=$$target CGO_ENABLED=0 $(GO) build -o rootfs/bin/$$target/tiller $(GOFLAGS) -tags '$(TAGS)' -ldflags '$(LDFLAGS)' k8s.io/helm/cmd/tiller ; \ + done + +.PHONY: docker-build-images +docker-build-images: check-docker docker-cross-binary + for target in $(TARGETS_DOCKER); do \ + IMAGE=$(shell echo '$(IMAGE)' | sed 's/-[^:-]*:/-$$target:/g') ; \ + MUTABLE_IMAGE=$(shell echo '$(MUTABLE_IMAGE)' | sed 's/-[^:-]*:/-$$target:/g') ; \ + docker build --rm --build-arg BIN_DIR=bin/$$target/ -t $$IMAGE rootfs; \ + docker tag $$IMAGE $$MUTABLE_IMAGE; \ + done + .PHONY: test test: build test: TESTFLAGS += -race -v @@ -113,7 +132,7 @@ verify-docs: build .PHONY: clean clean: - @rm -rf $(BINDIR) ./rootfs/tiller ./_dist + @rm -rf $(BINDIR) ./rootfs/tiller ./rootfs/bin ./_dist .PHONY: coverage coverage: diff --git a/rootfs/Dockerfile b/rootfs/Dockerfile index ef426616a..98249cd8d 100644 --- a/rootfs/Dockerfile +++ b/rootfs/Dockerfile @@ -14,12 +14,14 @@ FROM alpine:3.7 -RUN apk update && apk add ca-certificates socat && rm -rf /var/cache/apk/* +ARG BIN_DIR + +RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/* ENV HOME /tmp -COPY helm /bin/helm -COPY tiller /bin/tiller +COPY ${BIN_DIR}helm /bin/helm +COPY ${BIN_DIR}tiller /bin/tiller EXPOSE 44134 USER nobody