From 45b68c2160fc971c2b8a2286722351605d306f63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hardy=20Mans=C3=A9n?= Date: Wed, 26 Jul 2017 22:04:06 +0200 Subject: [PATCH] makefile --- controllers/ext_nginx/Makefile | 93 ++----------------- controllers/ext_nginx/README.md | 2 +- .../rootfs/nginx-ingress-controller.service | 15 +++ 3 files changed, 22 insertions(+), 88 deletions(-) create mode 100644 controllers/ext_nginx/rootfs/nginx-ingress-controller.service diff --git a/controllers/ext_nginx/Makefile b/controllers/ext_nginx/Makefile index 9fe80286a..754224640 100644 --- a/controllers/ext_nginx/Makefile +++ b/controllers/ext_nginx/Makefile @@ -1,18 +1,8 @@ -all: push - -BUILDTAGS= - # Use the 0.0 tag for testing, it shouldn't clobber any release builds -TAG?=0.9.0-beta.11 -REGISTRY?=gcr.io/google_containers +TAG?=0.1 GOOS?=linux -DOCKER?=gcloud docker -- -SED_I?=sed -i -GOHOSTOS ?= $(shell go env GOHOSTOS) - -ifeq ($(GOHOSTOS),darwin) - SED_I=sed -i '' -endif +#SED_I?=sed -i +#GOHOSTOS ?= $(shell go env GOHOSTOS) REPO_INFO=$(shell git config --get remote.origin.url) @@ -28,85 +18,17 @@ DUMB_ARCH = ${ARCH} ALL_ARCH = amd64 arm ppc64le -QEMUVERSION=v2.7.0 - -IMGNAME = nginx-ingress-controller -IMAGE = $(REGISTRY)/$(IMGNAME) -MULTI_ARCH_IMG = $(IMAGE)-$(ARCH) - -# Set default base image dynamically for each arch -BASEIMAGE?=gcr.io/google_containers/nginx-slim-$(ARCH):0.21 - -ifeq ($(ARCH),arm) - QEMUARCH=arm - GOARCH=arm - DUMB_ARCH=armhf -endif -#ifeq ($(ARCH),arm64) -# QEMUARCH=aarch64 -#endif -ifeq ($(ARCH),ppc64le) - QEMUARCH=ppc64le - GOARCH=ppc64le - DUMB_ARCH=ppc64el -endif -#ifeq ($(ARCH),s390x) -# QEMUARCH=s390x -#endif - TEMP_DIR := $(shell mktemp -d) -all: all-container - -sub-container-%: - $(MAKE) ARCH=$* build container - -sub-push-%: - $(MAKE) ARCH=$* push - -all-container: $(addprefix sub-container-,$(ALL_ARCH)) - -all-push: $(addprefix sub-push-,$(ALL_ARCH)) - -container: .container-$(ARCH) -.container-$(ARCH): - cp -r ./* $(TEMP_DIR) - cd $(TEMP_DIR) && $(SED_I) 's|BASEIMAGE|$(BASEIMAGE)|g' rootfs/Dockerfile - cd $(TEMP_DIR) && $(SED_I) "s|QEMUARCH|$(QEMUARCH)|g" rootfs/Dockerfile - cd $(TEMP_DIR) && $(SED_I) "s|DUMB_ARCH|$(DUMB_ARCH)|g" rootfs/Dockerfile - -ifeq ($(ARCH),amd64) - # When building "normally" for amd64, remove the whole line, it has no part in the amd64 image - cd $(TEMP_DIR) && $(SED_I) "/CROSS_BUILD_/d" rootfs/Dockerfile -else - # When cross-building, only the placeholder "CROSS_BUILD_" should be removed - # Register /usr/bin/qemu-ARCH-static as the handler for ARM binaries in the kernel - $(DOCKER) run --rm --privileged multiarch/qemu-user-static:register --reset - curl -sSL https://github.com/multiarch/qemu-user-static/releases/download/$(QEMUVERSION)/x86_64_qemu-$(QEMUARCH)-static.tar.gz | tar -xz -C $(TEMP_DIR)/rootfs - cd $(TEMP_DIR) && $(SED_I) "s/CROSS_BUILD_//g" rootfs/Dockerfile -endif - - $(DOCKER) build -t $(MULTI_ARCH_IMG):$(TAG) $(TEMP_DIR)/rootfs - -ifeq ($(ARCH), amd64) - # This is for to maintain the backward compatibility - $(DOCKER) tag $(MULTI_ARCH_IMG):$(TAG) $(IMAGE):$(TAG) -endif - -push: .push-$(ARCH) -.push-$(ARCH): - $(DOCKER) push $(MULTI_ARCH_IMG):$(TAG) -ifeq ($(ARCH), amd64) - $(DOCKER) push $(IMAGE):$(TAG) -endif clean: - $(DOCKER) rmi -f $(MULTI_ARCH_IMG):$(TAG) || true + rm -f rootfs/nginx-ingress-controller +# $(DOCKER) rmi -f $(MULTI_ARCH_IMG):$(TAG) || true build: clean CGO_ENABLED=0 GOOS=${GOOS} GOARCH=${GOARCH} go build -a -installsuffix cgo \ -ldflags "-s -w -X ${PKG}/pkg/version.RELEASE=${TAG} -X ${PKG}/pkg/version.COMMIT=${COMMIT} -X ${PKG}/pkg/version.REPO=${REPO_INFO}" \ - -o ${TEMP_DIR}/rootfs/nginx-ingress-controller ${PKG}/pkg/cmd/controller + -o rootfs/nginx-ingress-controller ${PKG}/pkg/cmd/controller fmt: @echo "+ $@" @@ -129,6 +51,3 @@ cover: vet: @echo "+ $@" @go vet $(shell go list ${PKG}/... | grep -v vendor) - -release: all-container all-push - echo "done" diff --git a/controllers/ext_nginx/README.md b/controllers/ext_nginx/README.md index 41e26f309..e9e4f37eb 100644 --- a/controllers/ext_nginx/README.md +++ b/controllers/ext_nginx/README.md @@ -7,7 +7,7 @@ It functions very much like https://github.com/kubernetes/ingress/tree/master/co ## Why? The user case where you host your kubernetes cluster on-premise and don't want to have multiple layers of "load balancing" in front of your pods. You also really like nginx. -Using this ingress controller on your edge load balacing cluster, the configuration is kept up too date and you can still use nginx build in functions for zero down time deployments of config and binaries that the normal "in-cluster" ingress controller don't support. +Using this ingress controller on your edge load balacing cluster, the configuration is kept up too date and you can still use nginx build-in functions for zero down time deployments of config and binaries that the normal "in-cluster" ingress controller don't support. This ingress controller is NOT to be used if you don't understand exaktly what you are doing. diff --git a/controllers/ext_nginx/rootfs/nginx-ingress-controller.service b/controllers/ext_nginx/rootfs/nginx-ingress-controller.service new file mode 100644 index 000000000..770c89369 --- /dev/null +++ b/controllers/ext_nginx/rootfs/nginx-ingress-controller.service @@ -0,0 +1,15 @@ +[Unit] +Description=Kubernetes nginx-ingress controller. +Documentation=https://github.com/GoogleCloudPlatform/kubernetes + +[Service] +User=root +Environment=POD_NAMESPACE=default +Environment=POD_NAME=default +ExecStart=./ingress-controller/nginx-ingress-controller --default-backend-service=REPLACEME --apiserver-host=https://$K8_API --kubeconfig /path/kubeconfig +WorkingDirectory=/ingress-controller +Restart=on-failure +LimitNOFILE=65536 + +[Install] +WantedBy=multi-user.target