.kubernetes-config: variables: KUBECTL_VERSION: "1.21.1-release" DOCKER_REGCRED: "nexus-regcred" KUBERNETES_MANIFEST_TEMPLATES: src/deployment.yaml src/service.yaml src/config-map.yaml image: name: private.nexus-regs.docker:8086/dimmaryanto93/k8s-kubectl-helm:${KUBECTL_VERSION} before_script: - echo "set kubernetes namespaces to $KUBE_NAMESPACE" - kubectl config set-context --current --namespace="$KUBE_NAMESPACE" - mkdir -p .docker/ && cat $DOCKER_CONF_JSON > .docker/config.json - export NEXUS_REGCRED_IS_EXIST=$(kubectl get secret $DOCKER_REGCRED -n $KUBE_NAMESPACE -o json --ignore-not-found=true | grep $DOCKER_REGCRED | wc -l) - echo "kubernetes registry is exist => ${NEXUS_REGCRED_IS_EXIST}" - | if [ ${NEXUS_REGCRED_IS_EXIST} -eq 0 ]; then kubectl create secret generic $DOCKER_REGCRED --from-file=".dockerconfigjson=.docker/config.json" --type="kubernetes.io/dockerconfigjson" --namespace=$KUBE_NAMESPACE else echo "Docker Registry Credential was created"; fi .kubernetes-deploy: extends: .kubernetes-config script: - > for TEMPLATE in ${KUBERNETES_MANIFEST_TEMPLATES}; do echo "--------------------------------"; echo "kubernetes manifest => $TEMPLATE"; envsubst < $TEMPLATE; envsubst < $TEMPLATE | kubectl apply -n $KUBE_NAMESPACE -f -; echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"; done .kubernetes-stop-deploy: extends: .kubernetes-config when: manual script: - | for TEMPLATE in ${KUBERNETES_MANIFEST_TEMPLATES}; do envsubst < $TEMPLATE | kubectl delete -n $KUBE_NAMESPACE -f -; done - kubectl delete secret $DOCKER_REGCRED -n $KUBE_NAMESPACE allow_failure: true .kustomize-deploy: extends: .kubernetes-config script: - > for TEMPLATE in ${KUBERNETES_MANIFEST_TEMPLATES}; do echo "--------------------------------"; echo "kubernetes manifest => $TEMPLATE"; kubectl kustomize $TEMPLATE kubectl kustomize $TEMPLATE | envsubst | kubectl apply -f -; echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"; done .kustomize-stop-deploy: extends: .kubernetes-config when: manual script: - | for TEMPLATE in ${KUBERNETES_MANIFEST_TEMPLATES}; do kubectl kustomize $TEMPLATE kubectl kustomize $TEMPLATE | envsubst | kubectl delete --ignore-not-found=true -f -; done - kubectl delete secret --ignore-not-found=true $DOCKER_REGCRED -n $KUBE_NAMESPACE allow_failure: true