[FEATURE] Helmfile support in werf v1.1.22+fix16

With today’s werf v1.1.22+fix16 release — currently available in alpha & beta channels — we’re happy to announce the Helmfile support!

Here are brief instructions to give it a try:

  1. Install the last version of helmfile.
  2. Install the helm-diff plugin (required by helmfile):
source $(multiwerf use 1.1 alpha --as-file)
werf helm-v3 plugin install https://github.com/databus23/helm-diff
  1. Prepare your helmfile.yaml:
repositories:
- name: stable
  url: https://kubernetes-charts.storage.googleapis.com
releases:
- name: mytraefik
  namespace: this-is-my-namespace
  createNamespace: true
  wait: true
  chart: stable/traefik
  labels:
    name: traefik-public
  version: 1.86.2
  1. Set the WERF_HELM3_MODE=1 environment variable to make the CLI interface of werf binary compatible with Helm 3. Then, we can start helmfile using the --helm-binary flag:
source $(multiwerf use 1.1 alpha --as-file)
export WERF_HELM3_MODE=1
helmfile -b $(multiwerf werf-path 1.1 alpha) apply
  1. Check whether everything is working:
export WERF_HELM3_MODE=1
werf list --namespace this-is-my-namespace
# or
unset WERF_HELM3_MODE
werf helm-v3 list --namespace this-is-my-namespace

Known issues:

  • Helmfile doesn’t support live output when helm (hence werf) is executed, so werf’s output is displayed when the process is done.
  • To get kubedog’s output you need to use wait: true in your helmfile.yaml (this is an equivalent to using helm upgrade --wait or werf helm-v3 upgrade --wait).
  • Despite there is no live output in Helmfile, werf is still quite useful since all this output will be displayed in the end and werf will terminate the deploy process in case of an error (the “fail fast” feature).
  • If you need to get a live output, we recommend to use regular werf as it is.

P.S. The full support of Helm 3 in werf’s deploy and dismiss commands is coming soon.

ⓒ 2020 Flant. Powered by Discourse.