2025-01-30Hünkar Döner

What is Helmfile? Why is it used for EKS?

HelmfileHelmEKSIaC
W

What is Helmfile? Why is it used for EKS?

Helm is great, but if you have dozens of microservices and a separate Helm chart for each, installing them one by one with helm install is difficult. Also, keeping track of which version of which chart is installed becomes impossible.

Helmfile is like "Helm for Helm". It allows you to define all your Helm charts, their versions, and value files in a single helmfile.yaml file.

Why Helmfile?

  • Declarative: You describe the Desired State of your system. The helmfile apply command brings the system to that state.
  • Environment Management: Easily manages different values.yaml files for Dev, Staging, and Prod.
  • Ordering: Can manage dependencies like "install database first, then backend".

Example helmfile.yaml

repositories:
  - name: ingress-nginx
    url: https://kubernetes.github.io/ingress-nginx

releases:
  - name: my-ingress
    namespace: ingress
    chart: ingress-nginx/ingress-nginx
    version: 4.0.0
    values:
      - ./values/ingress-prod.yaml
  
  - name: my-app
    namespace: default
    chart: ./charts/my-app
    values:
      - ./values/app-prod.yaml

In our Amazon EKS projects, Helmfile is our indispensable tool for managing infrastructure in the stage before switching to GitOps (ArgoCD).