ldc-shared-ci/deploy/kubernetes.yml

109 lines
3.1 KiB
YAML

variables:
KUBERNETES_CLUSTER_NAME: prod-k8s-ldc-web
KUBERNETES_VERSION: 1.29.2
.kubernetes:
stage: deploy
image:
name: "alpine/k8s:${KUBERNETES_VERSION}"
entrypoint: ['']
variables:
KUBE_CONTEXT: "ldc-web/cluster-k8s:${KUBERNETES_CLUSTER_NAME}"
KUBE_NAMESPACE: default
CRT_TLS_NAME: "wildcard-k8s-ldc"
REDIRECT:
before_script:
- kubectl config use-context ${KUBE_CONTEXT}
script:
- envsubst < manifest.yaml | kubectl apply --namespace ${KUBE_NAMESPACE} -f -
.kubernetes_stop:
extends: .kubernetes
script:
- envsubst < manifest.yaml | kubectl delete --namespace ${KUBE_NAMESPACE} -f -
when: manual
environment:
action: stop
# kubernetes:review:
# extends: .kubernetes
# variables:
# KUBE_NAMESPACE: review
# IMAGE_TAG: "${CI_REGISTRY_IMAGE}:review-${CI_MERGE_REQUEST_IID}"
# needs:
# - job: docker-build:review
# rules:
# - if: $CI_PIPELINE_SOURCE == "merge_request_event"
# when: manual
# environment:
# name: review/${CI_MERGE_REQUEST_IID}
# url: https://${DOMAIN}
# on_stop: kubernetes_stop:review
# kubernetes_stop:review:
# extends: .kubernetes_stop
# variables:
# KUBE_NAMESPACE: review
# rules:
# - if: $CI_PIPELINE_SOURCE == "merge_request_event"
# environment:
# name: review/${CI_MERGE_REQUEST_IID}
kubernetes:staging:
extends: .kubernetes
variables:
KUBE_NAMESPACE: staging
IMAGE_TAG: "${CI_REGISTRY_IMAGE}:s-${CI_COMMIT_SHA}"
needs:
- job: docker-build:staging
rules:
- if: $CI_COMMIT_BRANCH == "trunk"
script:
- envsubst < manifest.yaml | kubectl apply --namespace ${KUBE_NAMESPACE} -f -
- envsubst < staging-resources.yaml | kubectl apply --namespace ${KUBE_NAMESPACE} -f -
when: manual
environment:
name: staging
url: https://${DOMAIN}
on_stop: kubernetes_stop:staging
kubernetes_stop:staging:
extends: .kubernetes_stop
variables:
KUBE_NAMESPACE: staging
rules:
- if: $CI_COMMIT_BRANCH == "trunk"
environment:
name: staging
kubernetes:prod:
extends: .kubernetes
variables:
KUBE_NAMESPACE: production
IMAGE_TAG: "${CI_REGISTRY_IMAGE}:p-${CI_COMMIT_SHA}"
CRT_TLS_NAME: "${APP_DOMAIN}"
REDIRECT: "www."
needs:
- job: docker-build:latest
rules:
- if: $CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH == "master"
script:
- envsubst < manifest.yaml | kubectl apply --namespace ${KUBE_NAMESPACE} -f -
- envsubst < production-resources.yaml | kubectl apply --namespace ${KUBE_NAMESPACE} -f -
when: manual
environment:
name: production
url: https://${DOMAIN}
#on_stop: kubernetes_stop:production
#kubernetes_stop:production:
# extends: .kubernetes_stop
# variables:
# KUBE_NAMESPACE: production
# rules:
# - if: $CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH == "master"
# environment:
# name: production