2017-09-27 19:08:21 +00:00
|
|
|
# Deployment with Kubernetes
|
|
|
|
|
|
|
|
# KUBE_CA_PEM_FILE is the path of a certificate file. It automatically set by GitLab
|
|
|
|
# if you enable Kubernetes integration in a project.
|
|
|
|
#
|
|
|
|
# As of this writing, Kubernetes integration can not be set on a group level, so it has to
|
|
|
|
# be manually set in every project.
|
|
|
|
# Alternatively, we use a custom KUBE_CA_BUNDLE environment variable, which can be set at
|
|
|
|
# the group level. In this case, the variable contains the whole content of the certificate,
|
|
|
|
# which we dump to a temporary file
|
|
|
|
#
|
|
|
|
# Check if the KUBE_CA_PEM_FILE exists. Otherwise, create it from KUBE_CA_BUNDLE
|
|
|
|
KUBE_CA_TEMP=false
|
2017-10-03 11:41:51 +00:00
|
|
|
ifndef KUBE_CA_PEM_FILE
|
|
|
|
KUBE_CA_PEM_FILE:=$$PWD/.ca.crt
|
|
|
|
CREATED:=$(shell echo -e "$(KUBE_CA_BUNDLE)" > $(KUBE_CA_PEM_FILE))
|
2017-09-27 19:08:21 +00:00
|
|
|
endif
|
|
|
|
KUBE_TOKEN?=""
|
|
|
|
KUBE_NAMESPACE?=$(NAME)
|
|
|
|
KUBECTL=docker run --rm -v $(KUBE_CA_PEM_FILE):/tmp/ca.pem -i lachlanevenson/k8s-kubectl --server="$(KUBE_URL)" --token="$(KUBE_TOKEN)" --certificate-authority="/tmp/ca.pem" -n $(KUBE_NAMESPACE)
|
|
|
|
CI_COMMIT_REF_NAME?=master
|
|
|
|
|
2017-10-03 11:41:51 +00:00
|
|
|
info:: ## Print variables. Useful for debugging.
|
2017-09-27 19:08:21 +00:00
|
|
|
@echo "#KUBERNETES"
|
|
|
|
@echo KUBE_URL=$(KUBE_URL)
|
|
|
|
@echo KUBE_CA_PEM_FILE=$(KUBE_CA_PEM_FILE)
|
|
|
|
@echo KUBE_CA_BUNDLE=$$KUBE_CA_BUNDLE
|
|
|
|
@echo KUBE_TOKEN=$(KUBE_TOKEN)
|
|
|
|
@echo KUBE_NAMESPACE=$(KUBE_NAMESPACE)
|
|
|
|
@echo KUBECTL=$(KUBECTL)
|
|
|
|
|
|
|
|
@echo "#CI"
|
|
|
|
@echo CI_PROJECT_NAME=$(CI_PROJECT_NAME)
|
|
|
|
@echo CI_REGISTRY=$(CI_REGISTRY)
|
|
|
|
@echo CI_REGISTRY_USER=$(CI_REGISTRY_USER)
|
|
|
|
@echo CI_COMMIT_REF_NAME=$(CI_COMMIT_REF_NAME)
|
2017-10-03 11:41:51 +00:00
|
|
|
@echo "CREATED=$(CREATED)"
|
2017-09-27 19:08:21 +00:00
|
|
|
|
|
|
|
#
|
|
|
|
# Deployment and advanced features
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
|
|
deploy: ## Deploy to kubernetes using the credentials in KUBE_CA_PEM_FILE (or KUBE_CA_BUNDLE ) and TOKEN
|
2017-10-03 13:08:16 +00:00
|
|
|
@ls k8s/*.yaml k8s/*.yml k8s/*.tmpl 2>/dev/null || true
|
|
|
|
@cat k8s/*.yaml k8s/*.yml k8s/*.tmpl 2>/dev/null | envsubst | $(KUBECTL) apply -f -
|
2017-09-27 19:08:21 +00:00
|
|
|
|
|
|
|
deploy-check: ## Get the deployed configuration.
|
|
|
|
@$(KUBECTL) get deploy,pods,svc,ingress
|
|
|
|
|
|
|
|
.PHONY:: info deploy deploy-check
|