CI to Kubernetes

Hi guys!, new here:)

I wanted to know how do you do CI to Kubernetes? Where do you keep all of the YAML? Do you use kubectl set image… or helm?

My general idea was

  • push new code
  • build artifact
  • create docker image with commit hash:
  • use image name and commit hash to update helm chart? deployment yaml?
  • helm install ?
  • or kubectl apply -f … ?

Thanks for advice

In particular, performing manual Kubernetes deployments with a large development team can be error-prone:

Almost everything related to deployments or most user-facing components in Kubernetes are defined in YAML files. These can be frustratingly error-prone with no feedback when things go wrong.
Kubernetes applications are comprised of several different resource types, some of which may need upgrading, and depending on the type of app you are working on, knowing what to update can make deployments complex.
Keeping track of the diff history, managing rollbacks of new and old deployments especially when you are working on a large application within a team can be challenging.
Managing secrets in Kubernetes between team members working on the same app across different repos requires that you are careful.
To mitigate these problems the ultimate goal for developers working with apps running in Kubernetes is to automate the workflow for code updates to achieve an end-to-end Continuous Integration/Continuous Delivery (CI/CD) pipeline.

Depending on your team’s needs and workflows, some tools might be better than others. In this two-part blog series, we discuss some of the more popular tools and highlight the pros and cons of each.

Throughout this survey of CICD tools for Kubernetes, three different patterns emerge:

Package Managers
CI with CD support for Kubernetes
CD only tools