/clusterfile

describe contents of kubernetes clusters. top down for all your cluster

Primary LanguageGo

clusterfile

describe contents of kubernetes clusters. and sync them afterwards with helmfile.

clusters:
  - name: dev
    context: kubernetes-dev
    envs:
      - name: web-apps
        location: helmfile/web-apps.yaml
      - name: backend
        location: helmfile/backend.yaml
  - name: test
    context: kubernetes-test
    envs:
      - name: backend
        location: helmfile/backend.yaml

/!\ work in progress /!\

why?

helmfile offers great possibilities to describe environments. The possibilities to describe multple clusters are somehow mingled via a kubeContext: attribute.

Clusterfile builds a layer on top that makes it easy to describe kubernetes cluster contents top-down.

Helmfile builds environments that deploys versioned helm charts together. Sometimes there is more than one environment in a kubernetes cluster, e.g. multiple web-tiers, middle-warez and backends. Thats the point where bash scripts or ci/cd takes over and syncs all the environments.

Clusterfile let you describe the environments per kubernetes cluster declarative and provides a binary to handle the helmfile subapp.

to be continued

current state

  • load a local clusterfile and its dependencies
  • binary supports these helmfile subcommand:
    • lint
    • build
    • template
    • sync
    • one example clusterfile

lot more to do.