In summary:

  • Kubernetes Manifests are the basic way of deploying things to kubernetes
    • raw YAML files: no portability, no customisation, no code reuse
  • Use Helm to package manifests into installable units
    • powerful templating (Go Templates), rich context information and parameters (values.yaml)
    • possible to publish Helm charts to registries (sharing)
    • umbrella charts to group multiple charts under a parent one (sub-charts)
  • Use helmfile to group and manage multiple helm charts as one
    • you still have separate helm releases (vs umbrella chart)
    • declarative YAML with many features (envs, templates)
    • powerful CLI with tons of options
  • Use Argo CD to add GitOps and automation to the mix
    • automatically syncs the state defined in a git repo with one or more clusters
    • supports raw manifests, kustomize, helm, jsonnet, … (+ helmfile through a plugin)
    • and much more! multi-cluster support, ApplicationSets, etc.

I hope you enjoyed this tutorial. Please, leave a ⭐ on the github repo, it will help me stay motivated.