2019-03-20T22:32:35.000Z
Continues deployment with Kubernetes and Google Cloud
This is the easiest way to configure continues deployment using CloudBuild and GKE.
You first have to connect and configure Google Cloud CloudBuild to connect to
Github. After that you configure it to use a cloudbuild.yaml
which can contain custom steps.
That file needs to:
- Build a docker image with the git sha
- Push that docker image to Google Cloud Container Registry
- Now render a new yaml file that contains a reference to the new docker image sha
- Run
kubectl apply -f deploy.yml
to apply the new configuration.
It will look like this:
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/nodejs-cloudbuild-kubernetes/nodejs-cloudbuild-kubernetes:$COMMIT_SHA', '.']
- name: 'gcr.io/cloud-builders/docker'
args: ['push', 'gcr.io/nodejs-cloudbuild-kubernetes/nodejs-cloudbuild-kubernetes:$COMMIT_SHA']
- name: 'kevinsimper/render'
entrypoint: 'bash'
args:
- '-c'
- |
/render -f /workspace/kubernetes/deployment.yml -var sha=$COMMIT_SHA -o /workspace
cat /workspace/workspace/kubernetes/deployment.yml
- name: 'gcr.io/cloud-builders/kubectl'
args: ['apply', '-f', '/workspace/workspace/kubernetes/deployment.yml']
env:
- 'CLOUDSDK_COMPUTE_ZONE=europe-west4-a'
- 'CLOUDSDK_CONTAINER_CLUSTER=staging'
Step 4. running Kubectl
Normally CloudBuild will not have access to your Kubernetes cluster. A way to get started would be to give your CloudBuild service account under IAM access as a Google Cloud Cluster Developer.
That you can do under IAM in your project.
Example
You can find a example repo of how it can be done minimally here
https://github.com/kevinsimper/nodejs-cloudbuild-kubernetes