makefile
This commit is contained in:
parent
218070e6ea
commit
45b68c2160
3 changed files with 22 additions and 88 deletions
|
@ -1,18 +1,8 @@
|
||||||
all: push
|
|
||||||
|
|
||||||
BUILDTAGS=
|
|
||||||
|
|
||||||
# Use the 0.0 tag for testing, it shouldn't clobber any release builds
|
# Use the 0.0 tag for testing, it shouldn't clobber any release builds
|
||||||
TAG?=0.9.0-beta.11
|
TAG?=0.1
|
||||||
REGISTRY?=gcr.io/google_containers
|
|
||||||
GOOS?=linux
|
GOOS?=linux
|
||||||
DOCKER?=gcloud docker --
|
#SED_I?=sed -i
|
||||||
SED_I?=sed -i
|
#GOHOSTOS ?= $(shell go env GOHOSTOS)
|
||||||
GOHOSTOS ?= $(shell go env GOHOSTOS)
|
|
||||||
|
|
||||||
ifeq ($(GOHOSTOS),darwin)
|
|
||||||
SED_I=sed -i ''
|
|
||||||
endif
|
|
||||||
|
|
||||||
REPO_INFO=$(shell git config --get remote.origin.url)
|
REPO_INFO=$(shell git config --get remote.origin.url)
|
||||||
|
|
||||||
|
@ -28,85 +18,17 @@ DUMB_ARCH = ${ARCH}
|
||||||
|
|
||||||
ALL_ARCH = amd64 arm ppc64le
|
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)
|
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:
|
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
|
build: clean
|
||||||
CGO_ENABLED=0 GOOS=${GOOS} GOARCH=${GOARCH} go build -a -installsuffix cgo \
|
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}" \
|
-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:
|
fmt:
|
||||||
@echo "+ $@"
|
@echo "+ $@"
|
||||||
|
@ -129,6 +51,3 @@ cover:
|
||||||
vet:
|
vet:
|
||||||
@echo "+ $@"
|
@echo "+ $@"
|
||||||
@go vet $(shell go list ${PKG}/... | grep -v vendor)
|
@go vet $(shell go list ${PKG}/... | grep -v vendor)
|
||||||
|
|
||||||
release: all-container all-push
|
|
||||||
echo "done"
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ It functions very much like https://github.com/kubernetes/ingress/tree/master/co
|
||||||
## Why?
|
## 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.
|
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.
|
This ingress controller is NOT to be used if you don't understand exaktly what you are doing.
|
||||||
|
|
||||||
|
|
|
@ -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
|
Loading…
Reference in a new issue