Kubernetes is a container-based platform for deploying, scaling and running applications. Buddy lets you automate your Kubernetes delivery workflows with a series of dedicated K8s actions.
Pipeline example
Each time you make changes to your application code or Kubernetes configuration, you have two options to update your cluster: kubectl apply
or kubectl set image
.
In such case your workflow most often looks like this:
Edit code or configuration .YML
Push it to your Git repository
Build a new Docker image
Push the Docker image
Log in to your K8s cluster
Run
kubectl apply
orkubectl set image
With Buddy, you can avoid most of these steps by doing a simple push to Git! :)
How to automate Kubernetes releases on every push
Buddy is a Continuous Delivery tool that you can use to automate your whole K8s release workflow, including:
managing configuration changes of a K8s Deployment
deployments of code changes
managing Dockerfile updates
building Docker images and pushing them to the Docker registry
applying new images on your K8s cluster
If you often use
kubectl apply
orkubectl set image
, this is for you!
Configuring delivery pipeline
- Add a new pipeline, set the trigger mode to On every push, and select the branch that will trigger the pipeline
Adding a new pipeline
- Add the Build Docker image action. Switch the Tab to Options and select Docker Hub from the dropdown under Docker registry. Choose the Dockerfile path, Docker repository, and the name of the image that you want to push.
Action details
- Depending on your scenario, add Set K8s Image or Apply K8s Deployment action
You can use the number of the revision for the tag with environment variables.
Scenario 1: If you use kubectl set image go with Set K8s Image action:
Select which container should be replaced and which image you want to use. Make sure to enter the name and tag of the image from step #2 above.
Buddy will turn off the running nodes and switch them back on with the new image version.
If you use a tag which is constant for every execution (eg.
branchName
) but different from 'latest', make sure to set the Pull Policy to 'Always'. Find out more about updating images.
Action details
Scenario 2: If you use kubectl apply go with Apply K8s Deployment action:
With every change in the YAML config or in your app code, Buddy will apply the deployment and Kubernetes will start transforming the containers to the desired state.
The action will wait for the status of deployment, checking its rollout status. If any errors occur, the pipeline will stop as ‘failed’.
Setting up K8s action
How to automate running Kubernetes pods or jobs
If you often run tasks in a container, such as:
DB migration during the deployment of new version
backups
batch jobs, eg. creating a directory structure for a new version of your app
you can either use pods or jobs. The first type launches a single pod with the task; the second one launches a series of pods until a specified number of them ends with a successful status.
Pipeline configuration for running Kubernetes pods or jobs
Let’s say you have an application on a K8s cluster and the repository contains as follows:
source code of your application
a Dockerfile with instructions on creating an image of your app
DB migration scripts
a Dockerfile with instructions on creating an image that will run the migration during the deployment (db migration runner)
In this case, you can configure a pipeline that will:
A. Build application and migrate images (first action)
B. Push them to the Docker Hub (second action)
Delivery pipeline
C. Trigger the DB migration using the previously built image (third action). You can define the image, commands and deployment using a YAML file:
Deploy using YAML
Once you make a push, the pipeline will automatically build and push the images to the repository and run your migration scripts. How cool is that?
The job action will wait until the command has finished executing. If the exit status is different than 0, the action will be labeled as ‘failed’
D. The last action is using either Apply K8s Deployment or Set K8s Image to update the image in your K8s application. Once you add the action, the whole pipeline will look like this:
Finished pipeline
When everything is in place, make a push once again and watch Buddy automatically perform the whole workflow.
If you’re not sure if you can apply our solution to your workflow, please reach out on the live-chat or drop a line to support@buddy.works and we’ll do it for you.