Skip to content

Instantly share code, notes, and snippets.

@mikejk8s
Last active June 22, 2017 23:37
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mikejk8s/0f805c3e7d0704cbea63db846a00357e to your computer and use it in GitHub Desktop.
Save mikejk8s/0f805c3e7d0704cbea63db846a00357e to your computer and use it in GitHub Desktop.
image: registry.gitlab.com/gitlab-examples/kubernetes-deploy
stages:
- deploy
- rollback
kubernetes deploy:
stage: deploy
environment:
name: production
script:
- sed -i "s/__CI_ENVIRONMENT_SLUG__/$CI_ENVIRONMENT_SLUG/" nginx-deployment.yaml
- cat nginx-deployment.yaml
- echo "$KUBE_CA_PEM" > kube_ca.pem
- cat kube_ca.pem
- kubectl config set-cluster default-cluster --server=$KUBE_URL --certificate-authority="$(pwd)/kube_ca.pem"
- kubectl config set-credentials default-admin --token=$KUBE_TOKEN
- kubectl config set-context default-system --cluster=default-cluster --user=default-admin --namespace $KUBE_NAMESPACE
- kubectl config use-context default-system
- kubectl cluster-info --insecure-skip-tls-verify=true
- kubectl get deployments -l app=$CI_ENVIRONMENT_SLUG --insecure-skip-tls-verify=true
- kubectl create -f nginx-deployment.yaml --record --insecure-skip-tls-verify=true || kubectl replace -f nginx-deployment.yaml --insecure-skip-tls-verify=true
- kubectl patch deployment/nginx-deployment -p '{"spec":{"progressDeadlineSeconds":10}}' --insecure-skip-tls-verify=true
- kubectl rollout status deployments/nginx-deployment --insecure-skip-tls-verify=true
- kubectl get deployments -l app=$CI_ENVIRONMENT_SLUG --insecure-skip-tls-verify=true
roll_back:
stage: rollback
environment:
name: production
script:
- echo "$KUBE_CA_PEM" > kube_ca.pem
- cat kube_ca.pem
- kubectl config set-cluster default-cluster --server=$KUBE_URL --certificate-authority="$(pwd)/kube_ca.pem"
- kubectl config set-credentials default-admin --token=$KUBE_TOKEN
- kubectl config set-context default-system --cluster=default-cluster --user=default-admin --namespace $KUBE_NAMESPACE
- kubectl config use-context default-system
- kubectl rollout undo deployments/nginx-deployment --to-revision=$(kubectl --insecure-skip-tls-verify=true rollout history deployments/nginx-deployment | head -3 | tail -1 | awk '{print $1}') --insecure-skip-tls-verify=true
when: on_failure
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment