From d1cc7740157bc12ceff9622d07e26071cae815b0 Mon Sep 17 00:00:00 2001 From: Jack He Date: Wed, 14 Jul 2021 12:40:02 -0700 Subject: [PATCH 1/3] add dynamic arch support --- Dockerfile | 2 +- Makefile | 31 ++++++++++++++++++++++++++++--- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 244389c6..ba76a806 100644 --- a/Dockerfile +++ b/Dockerfile @@ -49,6 +49,6 @@ #FROM alpine:3.11 FROM gcr.io/distroless/static:latest WORKDIR / -COPY bin/manager ./ +COPY bin/staging/manager ./ USER nobody ENTRYPOINT ["/manager"] \ No newline at end of file diff --git a/Makefile b/Makefile index 01a0bdbd..b4673aef 100644 --- a/Makefile +++ b/Makefile @@ -68,7 +68,8 @@ PROD_REGISTRY := mocimages.azurecr.io IMAGE_NAME ?= caphcontroller CONTROLLER_IMG ?= $(REGISTRY)/$(IMAGE_NAME) TAG := $(MAJOR_VER).$(MINOR_VER).$(PATCH_VER)${TAGSUFFIX_APPEND} -ARCH := amd64 +ARCH ?= amd64 +ARM = arm64 ALL_ARCH = amd64 arm arm64 ppc64le s390x # Local repository path for development @@ -121,12 +122,17 @@ $(KUBECTL) $(KUBE_APISERVER) $(ETCD): ## install test asset kubectl, kube-apiser ## -------------------------------------- .PHONY: binaries -binaries: manager ## Builds and installs all binaries +binaries: manager manager_arm64 ## Builds and installs all binaries .PHONY: manager manager: ## Build manager binary. CGO_ENABLED=0 GOOS=linux go build -a -ldflags '-extldflags "-static"' -o bin/manager cmd/manager/main.go + +.PHONY: manager_arm64 +manager_arm64: ## Build manager binary. + CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -a -ldflags '-extldflags "-static"' -o bin/arm64/manager cmd/manager/main.go + ## -------------------------------------- ## Tooling Binaries ## -------------------------------------- @@ -219,8 +225,20 @@ docker-login: ## Login docker to a private registry .PHONY: docker-build-img docker-build-img: manager + mkdir ./bin/staging + cp ./bin/manager ./bin/staging #docker build --pull --build-arg ARCH=$(ARCH) . -t $(CONTROLLER_IMG)-$(ARCH):$(TAG) - docker build --pull --build-arg ARCH=$(ARCH) . -t $(CONTROLLER_IMG):$(TAG) + docker build --pull --build-arg ARCH=$(ARCH) . -t $(CONTROLLER_IMG):$(TAG) + rm -rf ./bin/staging + +.PHONY: docker-build-img_arm64 +docker-build-img_arm64: manager_arm64 + mkdir ./bin/staging + cp ./bin/arm64/manager ./bin/staging + #sudo docker build --pull --build-arg ARCH=$(ARM)v8/ . -t $(CONTROLLER_IMG)-$(ARM):$(TAG) + sudo docker build --pull --build-arg ARCH=$(ARM)v8/ . -t $(CONTROLLER_IMG):$(TAG) + rm -rf ./bin/staging + .PHONY: docker-build docker-build: docker-build-img ## Build the docker image for controller-manager @@ -228,6 +246,13 @@ docker-build: docker-build-img ## Build the docker image for controller-manager MANIFEST_IMG=$(CONTROLLER_IMG) MANIFEST_TAG=$(TAG) $(MAKE) set-manifest-image $(MAKE) set-manifest-pull-policy + +.PHONY: docker-build_my_arm64 +docker-build_my_arm64: docker-build-img_arm64 ## Build the docker image for controller-manager + #MANIFEST_IMG=$(CONTROLLER_IMG)-$(ARM) MANIFEST_TAG=$(TAG) $(MAKE) set-manifest-image + MANIFEST_IMG=$(CONTROLLER_IMG) MANIFEST_TAG=$(TAG) $(MAKE) set-manifest-image + $(MAKE) set-manifest-pull-policy + .PHONY: docker-push docker-push: ## Push the docker image docker push $(CONTROLLER_IMG):$(TAG) From 1a4030b7d49db74a37908e111ce355ed0aaed950 Mon Sep 17 00:00:00 2001 From: Jack He Date: Wed, 21 Jul 2021 12:07:20 -0700 Subject: [PATCH 2/3] added single control support --- Dockerfile | 3 ++- Makefile | 31 +++---------------------------- 2 files changed, 5 insertions(+), 29 deletions(-) diff --git a/Dockerfile b/Dockerfile index ba76a806..1e63f423 100644 --- a/Dockerfile +++ b/Dockerfile @@ -48,7 +48,8 @@ # Copy the controller-manager into a thin image #FROM alpine:3.11 FROM gcr.io/distroless/static:latest +ARG ARCH WORKDIR / -COPY bin/staging/manager ./ +COPY bin/${ARCH}/manager ./ USER nobody ENTRYPOINT ["/manager"] \ No newline at end of file diff --git a/Makefile b/Makefile index b4673aef..e6e3200b 100644 --- a/Makefile +++ b/Makefile @@ -69,7 +69,6 @@ IMAGE_NAME ?= caphcontroller CONTROLLER_IMG ?= $(REGISTRY)/$(IMAGE_NAME) TAG := $(MAJOR_VER).$(MINOR_VER).$(PATCH_VER)${TAGSUFFIX_APPEND} ARCH ?= amd64 -ARM = arm64 ALL_ARCH = amd64 arm arm64 ppc64le s390x # Local repository path for development @@ -122,16 +121,11 @@ $(KUBECTL) $(KUBE_APISERVER) $(ETCD): ## install test asset kubectl, kube-apiser ## -------------------------------------- .PHONY: binaries -binaries: manager manager_arm64 ## Builds and installs all binaries +binaries: manager ## Builds and installs all binaries .PHONY: manager manager: ## Build manager binary. - CGO_ENABLED=0 GOOS=linux go build -a -ldflags '-extldflags "-static"' -o bin/manager cmd/manager/main.go - - -.PHONY: manager_arm64 -manager_arm64: ## Build manager binary. - CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -a -ldflags '-extldflags "-static"' -o bin/arm64/manager cmd/manager/main.go + CGO_ENABLED=0 GOOS=linux GOARCH=$(ARCH) go build -a -ldflags '-extldflags "-static"' -o bin/$(ARCH)/manager cmd/manager/main.go ## -------------------------------------- ## Tooling Binaries @@ -224,21 +218,9 @@ docker-login: ## Login docker to a private registry docker login $(STAGING_REGISTRY) -u ${DOCKER_USERNAME} -p ${DOCKER_PASSWORD} .PHONY: docker-build-img -docker-build-img: manager - mkdir ./bin/staging - cp ./bin/manager ./bin/staging +docker-build-img: manager #docker build --pull --build-arg ARCH=$(ARCH) . -t $(CONTROLLER_IMG)-$(ARCH):$(TAG) docker build --pull --build-arg ARCH=$(ARCH) . -t $(CONTROLLER_IMG):$(TAG) - rm -rf ./bin/staging - -.PHONY: docker-build-img_arm64 -docker-build-img_arm64: manager_arm64 - mkdir ./bin/staging - cp ./bin/arm64/manager ./bin/staging - #sudo docker build --pull --build-arg ARCH=$(ARM)v8/ . -t $(CONTROLLER_IMG)-$(ARM):$(TAG) - sudo docker build --pull --build-arg ARCH=$(ARM)v8/ . -t $(CONTROLLER_IMG):$(TAG) - rm -rf ./bin/staging - .PHONY: docker-build docker-build: docker-build-img ## Build the docker image for controller-manager @@ -246,13 +228,6 @@ docker-build: docker-build-img ## Build the docker image for controller-manager MANIFEST_IMG=$(CONTROLLER_IMG) MANIFEST_TAG=$(TAG) $(MAKE) set-manifest-image $(MAKE) set-manifest-pull-policy - -.PHONY: docker-build_my_arm64 -docker-build_my_arm64: docker-build-img_arm64 ## Build the docker image for controller-manager - #MANIFEST_IMG=$(CONTROLLER_IMG)-$(ARM) MANIFEST_TAG=$(TAG) $(MAKE) set-manifest-image - MANIFEST_IMG=$(CONTROLLER_IMG) MANIFEST_TAG=$(TAG) $(MAKE) set-manifest-image - $(MAKE) set-manifest-pull-policy - .PHONY: docker-push docker-push: ## Push the docker image docker push $(CONTROLLER_IMG):$(TAG) From c723ebd04be6e37351f9f47947a12070d8491874 Mon Sep 17 00:00:00 2001 From: Jack He Date: Wed, 21 Jul 2021 15:42:50 -0700 Subject: [PATCH 3/3] no whitespace --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index e6e3200b..b47d1860 100644 --- a/Makefile +++ b/Makefile @@ -121,7 +121,7 @@ $(KUBECTL) $(KUBE_APISERVER) $(ETCD): ## install test asset kubectl, kube-apiser ## -------------------------------------- .PHONY: binaries -binaries: manager ## Builds and installs all binaries +binaries: manager ## Builds and installs all binaries .PHONY: manager manager: ## Build manager binary. @@ -218,7 +218,7 @@ docker-login: ## Login docker to a private registry docker login $(STAGING_REGISTRY) -u ${DOCKER_USERNAME} -p ${DOCKER_PASSWORD} .PHONY: docker-build-img -docker-build-img: manager +docker-build-img: manager #docker build --pull --build-arg ARCH=$(ARCH) . -t $(CONTROLLER_IMG)-$(ARCH):$(TAG) docker build --pull --build-arg ARCH=$(ARCH) . -t $(CONTROLLER_IMG):$(TAG)