Skip to content

๐Ÿ›  CLI Referenceยถ

NAME:
   helmwave - true release management for helm

USAGE:
   helmwave [global options] command [command options] [arguments...]

VERSION:
   0.31.0

DESCRIPTION:
   This tool helps you compose your helm releases!
   0. $ helmwave yml
   1. $ helmwave build
   2. $ helmwave up


COMMANDS:
   build         ๐Ÿ— build a plan
   diff, vs      ๐Ÿ†š show differences
   up            ๐Ÿšข apply your plan
   list, ls      ๐Ÿ‘€ list of deployed releases
   rollback      โฎ  rollback your plan
   status        ๐Ÿ‘๏ธstatus of deployed releases
   down          ๐Ÿ”ช delete all
   validate      ๐Ÿ›‚ validate your plan
   yml           ๐Ÿ“„ render helmwave.yml.tpl -> helmwave.yml
   schema        generate json schema
   graph         show graph
   version, ver  show shorts version
   completion    generate completion script
   help, h       Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --log-format value  You can set: [ text | json | pad | emoji ] (default: "emoji") [$HELMWAVE_LOG_FORMAT]
   --log-level value   You can set: [ debug | info | warn  | fatal | panic | trace ] (default: "info") [$HELMWAVE_LOG_LEVEL, $HELMWAVE_LOG_LVL]
   --log-color         on/off color (default: true) [$HELMWAVE_LOG_COLOR]
   --log-timestamps    Add timestamps to log messages (default: false) [$HELMWAVE_LOG_TIMESTAMPS]
   --help, -h          show help
   --version, -v       print the version

workflow

flowchart TD step0[step 0: helmwave.yml.tpl] -- yml --> step1[step 1: helmwave.yml] -- build --> step2[step 2: .helmwave/planfile] step2 --> up(up) step2 --> down(down) step2 --> ls(ls) step2 --> s(status) step2 --> r(rollback) step2 --> g(graph) step2 --> v(validate) step2 --> diff(diff)
If you don't see a graph, please reload the page.

ymlยถ

This command renders helmwave.yml.tpl to helmwave.yml.

Flags
--tpl value             main tpl file (default: "helmwave.yml.tpl") [$HELMWAVE_TPL]
--file value, -f value  main yml file (default: "helmwave.yml") [$HELMWAVE_YAML, $HELMWAVE_YML]
--templater value       select template engine: [ sprig | gomplate ] (default: "sprig") [$HELMWAVE_TEMPLATER, $HELMWAVE_TEMPLATE_ENGINE]

--tplยถ

Set path to helmwave.yml.tpl

--fileยถ

Set path to helmwave.yml

--templaterยถ

Introduced in v0.17.0

You can define template engine, which will be used to render helmwave.yml file or values files.

Please visit templating reference for more details.

buildยถ

Helmwave builds plan in complete plan directory (.helmwave by default) that other commands use.

A plan includes:

  • Downloaded remote charts
  • Downloaded and templated all used values files
  • Rendered manifests for each release
  • Markdown file with dependency graph as mermaid diagram
  • Rendered helmwave.yml that uses plan files (e.g., downloaded chart and values)
Flags

As you can see, build command includes yml command flags. You can pass --yml flag into build command for launching yml command before building a plan.

--plandir value, -p value                          path to plandir (default: ".helmwave/") [$HELMWAVE_PLANDIR, $HELMWAVE_PLAN]
--tags value, -t value [ --tags value, -t value ]  build releases by tags: -t tag1 -t tag3,tag4 [$HELMWAVE_TAGS]
--match-all-tags                                   match all provided tags (default: false) [$HELMWAVE_MATCH_ALL_TAGS]
--graph-width value                                set ceil width: 1 โ€“ disable graph; 0 โ€“ full names; N>1 โ€“ show only N symbols; N<0 โ€“ drop N symbols from end. (default: 0) [$HELMWAVE_GRAPH_WIDTH]
--skip-unchanged                                   skip unchanged releases (default: false) [$HELMWAVE_SKIP_UNCHANGED]
--diff-mode value                                  you can set: [ live | local | none ] (default: "live") [$HELMWAVE_DIFF_MODE]
--charts-cache-dir value                           enable caching of helm charts in specified directory [$HELMWAVE_CHARTS_CACHE]
--yml                                              auto helmwave.yml.tpl --> helmwave.yml (default: false) [$HELMWAVE_AUTO_YML, $HELMWAVE_AUTO_YAML]
--wide value                                       show line around changes (default: 5) [$HELMWAVE_DIFF_WIDE]
--show-secret                                      show secret in diff (default: true) [$HELMWAVE_DIFF_SHOW_SECRET]
--3-way-merge                                      show 3-way merge diff (default: false) [$HELMWAVE_DIFF_3_WAY_MERGE]
--tpl value                                        main tpl file (default: "helmwave.yml.tpl") [$HELMWAVE_TPL]
--file value, -f value                             main yml file (default: "helmwave.yml") [$HELMWAVE_YAML, $HELMWAVE_YML]
--templater value                                  select template engine: [ sprig | gomplate ] (default: "sprig") [$HELMWAVE_TEMPLATER, $HELMWAVE_TEMPLATE_ENGINE]

--ymlยถ

Enable execute yml command before build command.

helmwave yml                                                              
[๐Ÿ™ƒ aka INFO]: ๐Ÿ“„ YML is ready!
        build plan with next command: helmwave build -f helmwave.yml

--tagsยถ

Allow to filter releases by tags. You can use this flag multiple times.

It works with --match-all-tags flag and tags field in helmwave.yaml file.

example

--match-all-tagsยถ

Change behavior of --tags flag. If --match-all-tags is set, then all tags should be matched. Otherwise, at least one tag should be matched.

example

--skip-unchangedยถ

Introduced in v0.27.0

This flag will skip unchanged helm releases.

TODO: add example

--charts-cache-dirยถ

Introduced in v0.25.0

The directory to use for storing cached charts. If not specified, the default is .helmwave/charts.

--graph-widthยถ

Introduced in v0.27.1

You can change logic of graph rendering by changing this flag.

  • 1: --graph-width=1 - disable graph rendering
  • 2: --graph-width=0 - try to detect max width of ceil by release name
  • N<0: --graph-width=-10 - drop 10 symbols.
  • N>1: --graph-width=10 - show only first 10 symbols.

:material-docs: example


--diff-modeยถ

Introduced in v0.12.0

  • live - diff with live cluster
  • plan - diff with local plan
  • none - disable diff

diff example

--wideยถ

Set wide output for diff.

TODO: add example

--show-secretยถ

Introduced in v0.16.0

Enable showing secret values in diff output.

TODO: add example

--3-way-mergeยถ

Introduced in v0.24.4

Enable 3-way merge for when call diff.

TODO: add example

upยถ

Helmwave will install repositories and helm releases from a plan.

Flags
--build                                            auto build (default: false) [$HELMWAVE_AUTO_BUILD]
--progress                                         enable progress logs of helm (INFO log level) (default: false) [$HELMWAVE_PROGRESS]
--parallel-limit value                             limit amount of parallel releases (default: 0) [$HELMWAVE_PARALLEL_LIMIT]
--kubedog                                          enable/disable kubedog (default: false) [$HELMWAVE_KUBEDOG_ENABLED, $HELMWAVE_KUBEDOG]
--kubedog-status-interval value                    interval of kubedog status messages (default: 5s) [$HELMWAVE_KUBEDOG_STATUS_INTERVAL]
--kubedog-start-delay value                        delay kubedog start, don't make it too late (default: 1s) [$HELMWAVE_KUBEDOG_START_DELAY]
--kubedog-timeout value                            timeout of kubedog multitrackers (default: 5m0s) [$HELMWAVE_KUBEDOG_TIMEOUT]
--kubedog-log-width value                          set kubedog max log line width (default: 140) [$HELMWAVE_KUBEDOG_LOG_WIDTH]
--kubedog-track-all                                track almost all resources, experimental (default: false) [$HELMWAVE_KUBEDOG_TRACK_ALL]
--plandir value, -p value                          path to plandir (default: ".helmwave/") [$HELMWAVE_PLANDIR, $HELMWAVE_PLAN]
--tags value, -t value [ --tags value, -t value ]  build releases by tags: -t tag1 -t tag3,tag4 [$HELMWAVE_TAGS]
--match-all-tags                                   match all provided tags (default: false) [$HELMWAVE_MATCH_ALL_TAGS]
--graph-width value                                set ceil width: 1 โ€“ disable graph; 0 โ€“ full names; N>1 โ€“ show only N symbols; N<0 โ€“ drop N symbols from end. (default: 0) [$HELMWAVE_GRAPH_WIDTH]
--skip-unchanged                                   skip unchanged releases (default: false) [$HELMWAVE_SKIP_UNCHANGED]
--diff-mode value                                  you can set: [ live | local | none ] (default: "live") [$HELMWAVE_DIFF_MODE]
--charts-cache-dir value                           enable caching of helm charts in specified directory [$HELMWAVE_CHARTS_CACHE]
--yml                                              auto helmwave.yml.tpl --> helmwave.yml (default: false) [$HELMWAVE_AUTO_YML, $HELMWAVE_AUTO_YAML]
--wide value                                       show line around changes (default: 5) [$HELMWAVE_DIFF_WIDE]
--show-secret                                      show secret in diff (default: true) [$HELMWAVE_DIFF_SHOW_SECRET]
--3-way-merge                                      show 3-way merge diff (default: false) [$HELMWAVE_DIFF_3_WAY_MERGE]
--tpl value                                        main tpl file (default: "helmwave.yml.tpl") [$HELMWAVE_TPL]
--file value, -f value                             main yml file (default: "helmwave.yml") [$HELMWAVE_YAML, $HELMWAVE_YML]
--templater value                                  select template engine: [ sprig | gomplate ] (default: "sprig") [$HELMWAVE_TEMPLATER, $HELMWAVE_TEMPLATE_ENGINE]

--buildยถ

Enable execute build command before.

And you can also use --yml flag that renders helmwave.yml.tpl to helmwave.yml before running --build command.

--progressยถ

Introduced in v0.17.0

Enable helm debug progress output.

helmwave up --progress=false
[๐Ÿ™ƒ aka INFO]: ๐Ÿ—„ sync repositories...
[๐Ÿ™ƒ aka INFO]: ๐Ÿ—„ sync registries...
[๐Ÿ™ƒ aka INFO]: ๐Ÿ›ฅ sync releases...
[๐Ÿ™ƒ aka INFO]: ๐Ÿ›ฅ deploying... 
        release: a@my-namespace
[๐Ÿ™ƒ aka INFO]: ๐Ÿ›ฅ deploying... 
        release: b@my-namespace
[๐Ÿ™ƒ aka INFO]: โœ…
    release: b@my-namespace
[๐Ÿ™ƒ aka INFO]: โœ…
        release: a@my-namespace
[๐Ÿ™ƒ aka INFO]: Success 2 / 2
helmwave up --progress
[๐Ÿ™ƒ aka INFO]: ๐Ÿ—„ sync repositories...
[๐Ÿ™ƒ aka INFO]: ๐Ÿ—„ sync registries...
[๐Ÿ™ƒ aka INFO]: ๐Ÿ›ฅ sync releases...
[๐Ÿ™ƒ aka INFO]: ๐Ÿ›ฅ deploying... 
        release: a@my-namespace
[๐Ÿ™ƒ aka INFO]: ๐Ÿ›ฅ deploying... 
        release: b@my-namespace
[๐Ÿ™ƒ aka INFO]: getting history for release b
[๐Ÿ™ƒ aka INFO]: getting history for release a
[๐Ÿ™ƒ aka INFO]: preparing upgrade for b
[๐Ÿ™ƒ aka INFO]: preparing upgrade for a
[๐Ÿ™ƒ aka INFO]: performing update for a
[๐Ÿ™ƒ aka INFO]: performing update for b
[๐Ÿ™ƒ aka INFO]: creating upgraded release for a
[๐Ÿ™ƒ aka INFO]: creating upgraded release for b
[๐Ÿ™ƒ aka INFO]: checking 4 resources for changes
[๐Ÿ™ƒ aka INFO]: checking 4 resources for changes
[๐Ÿ™ƒ aka INFO]: Patch Secret "a-nats" in namespace my-namespace
[๐Ÿ™ƒ aka INFO]: Patch Secret "b-nats" in namespace my-namespace
[๐Ÿ™ƒ aka INFO]: Looks like there are no changes for Service "a-nats-headless"
[๐Ÿ™ƒ aka INFO]: Looks like there are no changes for Service "b-nats-headless"
[๐Ÿ™ƒ aka INFO]: Patch Service "a-nats" in namespace my-namespace
[๐Ÿ™ƒ aka INFO]: Patch Service "b-nats" in namespace my-namespace
[๐Ÿ™ƒ aka INFO]: Patch StatefulSet "a-nats" in namespace my-namespace
[๐Ÿ™ƒ aka INFO]: Patch StatefulSet "b-nats" in namespace my-namespace
[๐Ÿ™ƒ aka INFO]: waiting for release a resources (created: 0 updated: 4  deleted: 0)
[๐Ÿ™ƒ aka INFO]: beginning wait for 4 resources with timeout of 1m0s
[๐Ÿ™ƒ aka INFO]: waiting for release b resources (created: 0 updated: 4  deleted: 0)
[๐Ÿ™ƒ aka INFO]: beginning wait for 4 resources with timeout of 1m0s
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/a-nats. 0 out of 1 expected pods have been scheduled
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/b-nats. 0 out of 1 expected pods have been scheduled
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/a-nats. 0 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/b-nats. 0 out of 1 expected pods have been scheduled
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/a-nats. 0 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/b-nats. 0 out of 1 expected pods have been scheduled
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/a-nats. 0 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/b-nats. 0 out of 1 expected pods have been scheduled
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/a-nats. 0 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/b-nats. 0 out of 1 expected pods have been scheduled
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/a-nats. 0 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/b-nats. 0 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: StatefulSet is ready: my-namespace/a-nats. 1 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/b-nats. 0 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: updating status for upgraded release for a
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/b-nats. 0 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: โœ…
        release: a@my-namespace
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/b-nats. 0 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/b-nats. 0 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: StatefulSet is ready: my-namespace/b-nats. 1 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: updating status for upgraded release for b
[๐Ÿ™ƒ aka INFO]: โœ…
        release: b@my-namespace
[๐Ÿ™ƒ aka INFO]: Success 2 / 2

--parallel-limitยถ

Introduced in v0.20.0

Limit the number of parallel helm operations.


Introduced in v0.8.0

--kubedogยถ

Enable kubedog.

--kubedog-status-intervalยถ

Set interval for kubedog status.

--kubedog-start-delayยถ

Set delay before kubedog will start.

--kubedog-timeoutยถ

Set timeout for kubedog.

--kubedog-log-widthยถ

Set width of kubedog logboek.

--kubedog-track-allยถ

Introduced in v0.30.0

Track all resources, not only Deployment, DaemonSet, StatefulSet, Job. Annotations are also respected for these resources but it wasn't tested.

It will probably fail for some non-namespaced custom resources because kubedog can track only namespaced resources. In this case kubedog will fail with a warning

downยถ

Introduced in v0.12.2

Helmwave will uninstall helm releases from plan.

Flags
--build                                            auto build (default: false) [$HELMWAVE_AUTO_BUILD]
--plandir value, -p value                          path to plandir (default: ".helmwave/") [$HELMWAVE_PLANDIR, $HELMWAVE_PLAN]
--tags value, -t value [ --tags value, -t value ]  build releases by tags: -t tag1 -t tag3,tag4 [$HELMWAVE_TAGS]
--match-all-tags                                   match all provided tags (default: false) [$HELMWAVE_MATCH_ALL_TAGS]
--graph-width value                                set ceil width: 1 โ€“ disable graph; 0 โ€“ full names; N>1 โ€“ show only N symbols; N<0 โ€“ drop N symbols from end. (default: 0) [$HELMWAVE_GRAPH_WIDTH]
--skip-unchanged                                   skip unchanged releases (default: false) [$HELMWAVE_SKIP_UNCHANGED]
--diff-mode value                                  you can set: [ live | local | none ] (default: "live") [$HELMWAVE_DIFF_MODE]
--charts-cache-dir value                           enable caching of helm charts in specified directory [$HELMWAVE_CHARTS_CACHE]
--yml                                              auto helmwave.yml.tpl --> helmwave.yml (default: false) [$HELMWAVE_AUTO_YML, $HELMWAVE_AUTO_YAML]
--wide value                                       show line around changes (default: 5) [$HELMWAVE_DIFF_WIDE]
--show-secret                                      show secret in diff (default: true) [$HELMWAVE_DIFF_SHOW_SECRET]
--3-way-merge                                      show 3-way merge diff (default: false) [$HELMWAVE_DIFF_3_WAY_MERGE]
--tpl value                                        main tpl file (default: "helmwave.yml.tpl") [$HELMWAVE_TPL]
--file value, -f value                             main yml file (default: "helmwave.yml") [$HELMWAVE_YAML, $HELMWAVE_YML]
--templater value                                  select template engine: [ sprig | gomplate ] (default: "sprig") [$HELMWAVE_TEMPLATER, $HELMWAVE_TEMPLATE_ENGINE]
$ helmwave down      
[๐Ÿ™ƒ aka INFO]: โœ… frontend@test uninstalled!
[๐Ÿ™ƒ aka INFO]: โœ… database@test uninstalled!
[๐Ÿ™ƒ aka INFO]: โœ… backend@test uninstalled!

lsยถ

Introduced in v0.11.0

Helmwave will get a list of helm releases from a plan.

Flags
--build                                            auto build (default: false) [$HELMWAVE_AUTO_BUILD]
--plandir value, -p value                          path to plandir (default: ".helmwave/") [$HELMWAVE_PLANDIR, $HELMWAVE_PLAN]
--tags value, -t value [ --tags value, -t value ]  build releases by tags: -t tag1 -t tag3,tag4 [$HELMWAVE_TAGS]
--match-all-tags                                   match all provided tags (default: false) [$HELMWAVE_MATCH_ALL_TAGS]
--graph-width value                                set ceil width: 1 โ€“ disable graph; 0 โ€“ full names; N>1 โ€“ show only N symbols; N<0 โ€“ drop N symbols from end. (default: 0) [$HELMWAVE_GRAPH_WIDTH]
--skip-unchanged                                   skip unchanged releases (default: false) [$HELMWAVE_SKIP_UNCHANGED]
--diff-mode value                                  you can set: [ live | local | none ] (default: "live") [$HELMWAVE_DIFF_MODE]
--charts-cache-dir value                           enable caching of helm charts in specified directory [$HELMWAVE_CHARTS_CACHE]
--yml                                              auto helmwave.yml.tpl --> helmwave.yml (default: false) [$HELMWAVE_AUTO_YML, $HELMWAVE_AUTO_YAML]
--wide value                                       show line around changes (default: 5) [$HELMWAVE_DIFF_WIDE]
--show-secret                                      show secret in diff (default: true) [$HELMWAVE_DIFF_SHOW_SECRET]
--3-way-merge                                      show 3-way merge diff (default: false) [$HELMWAVE_DIFF_3_WAY_MERGE]
--tpl value                                        main tpl file (default: "helmwave.yml.tpl") [$HELMWAVE_TPL]
--file value, -f value                             main yml file (default: "helmwave.yml") [$HELMWAVE_YAML, $HELMWAVE_YML]
--templater value                                  select template engine: [ sprig | gomplate ] (default: "sprig") [$HELMWAVE_TEMPLATER, $HELMWAVE_TEMPLATE_ENGINE]
$ helmwave ls      
[๐Ÿ™ƒ aka INFO]: Should be 3 releases
   NAME    | NAMESPACE | REVISION |            UPDATED             |  STATUS  | CHART | VERSION  
-----------+-----------+----------+--------------------------------+----------+-------+----------
  frontend | test      |        1 | 2021-11-10 04:41:23.330989     | deployed | this  | 0.1.0    
           |           |          | +0300 MSK                      |          |       |          
  database | test      |        1 | 2021-11-10 04:41:23.353473     | deployed | this  | 0.1.0    
           |           |          | +0300 MSK                      |          |       |          
  backend  | test      |        1 | 2021-11-10 04:41:23.270076     | deployed | this  | 0.1.0    
           |           |          | +0300 MSK                      |          |       |

statusยถ

Introduced in v0.11.0

Helmwave try getting status of helm releases from a plan.

Flags
--build                                            auto build (default: false) [$HELMWAVE_AUTO_BUILD]
--plandir value, -p value                          path to plandir (default: ".helmwave/") [$HELMWAVE_PLANDIR, $HELMWAVE_PLAN]
--tags value, -t value [ --tags value, -t value ]  build releases by tags: -t tag1 -t tag3,tag4 [$HELMWAVE_TAGS]
--match-all-tags                                   match all provided tags (default: false) [$HELMWAVE_MATCH_ALL_TAGS]
--graph-width value                                set ceil width: 1 โ€“ disable graph; 0 โ€“ full names; N>1 โ€“ show only N symbols; N<0 โ€“ drop N symbols from end. (default: 0) [$HELMWAVE_GRAPH_WIDTH]
--skip-unchanged                                   skip unchanged releases (default: false) [$HELMWAVE_SKIP_UNCHANGED]
--diff-mode value                                  you can set: [ live | local | none ] (default: "live") [$HELMWAVE_DIFF_MODE]
--charts-cache-dir value                           enable caching of helm charts in specified directory [$HELMWAVE_CHARTS_CACHE]
--yml                                              auto helmwave.yml.tpl --> helmwave.yml (default: false) [$HELMWAVE_AUTO_YML, $HELMWAVE_AUTO_YAML]
--wide value                                       show line around changes (default: 5) [$HELMWAVE_DIFF_WIDE]
--show-secret                                      show secret in diff (default: true) [$HELMWAVE_DIFF_SHOW_SECRET]
--3-way-merge                                      show 3-way merge diff (default: false) [$HELMWAVE_DIFF_3_WAY_MERGE]
--tpl value                                        main tpl file (default: "helmwave.yml.tpl") [$HELMWAVE_TPL]
--file value, -f value                             main yml file (default: "helmwave.yml") [$HELMWAVE_YAML, $HELMWAVE_YML]
--templater value                                  select template engine: [ sprig | gomplate ] (default: "sprig") [$HELMWAVE_TEMPLATER, $HELMWAVE_TEMPLATE_ENGINE]
$ helmwave status      
[๐Ÿ™ƒ aka INFO]: Status of frontend@test
        status: deployed
        revision: 1
        name: frontend
        namespace: test
        chart: frontend-0.1.0
        last deployed: 2021-11-10 04:41:23.330989 +0300 MSK
[๐Ÿ™ƒ aka INFO]: Status of database@test
        status: deployed
        revision: 1
        name: database
        namespace: test
        chart: database-0.1.0
        last deployed: 2021-11-10 04:41:23.353473 +0300 MSK
[๐Ÿ™ƒ aka INFO]: Status of backend@test
        name: backend
        namespace: test
        chart: backend-0.1.0
        last deployed: 2021-11-10 04:41:23.270076 +0300 MSK
        status: deployed
        revision: 1

rollbackยถ

Introduced in v0.12.0

Rollback helm releases from a plan.

Flags
--revision value                                   rollback all releases to this revision (default: -1)
--build                                            auto build (default: false) [$HELMWAVE_AUTO_BUILD]
--kubedog                                          enable/disable kubedog (default: false) [$HELMWAVE_KUBEDOG_ENABLED, $HELMWAVE_KUBEDOG]
--kubedog-status-interval value                    interval of kubedog status messages (default: 5s) [$HELMWAVE_KUBEDOG_STATUS_INTERVAL]
--kubedog-start-delay value                        delay kubedog start, don't make it too late (default: 1s) [$HELMWAVE_KUBEDOG_START_DELAY]
--kubedog-timeout value                            timeout of kubedog multitrackers (default: 5m0s) [$HELMWAVE_KUBEDOG_TIMEOUT]
--kubedog-log-width value                          set kubedog max log line width (default: 140) [$HELMWAVE_KUBEDOG_LOG_WIDTH]
--kubedog-track-all                                track almost all resources, experimental (default: false) [$HELMWAVE_KUBEDOG_TRACK_ALL]
--plandir value, -p value                          path to plandir (default: ".helmwave/") [$HELMWAVE_PLANDIR, $HELMWAVE_PLAN]
--tags value, -t value [ --tags value, -t value ]  build releases by tags: -t tag1 -t tag3,tag4 [$HELMWAVE_TAGS]
--match-all-tags                                   match all provided tags (default: false) [$HELMWAVE_MATCH_ALL_TAGS]
--graph-width value                                set ceil width: 1 โ€“ disable graph; 0 โ€“ full names; N>1 โ€“ show only N symbols; N<0 โ€“ drop N symbols from end. (default: 0) [$HELMWAVE_GRAPH_WIDTH]
--skip-unchanged                                   skip unchanged releases (default: false) [$HELMWAVE_SKIP_UNCHANGED]
--diff-mode value                                  you can set: [ live | local | none ] (default: "live") [$HELMWAVE_DIFF_MODE]
--charts-cache-dir value                           enable caching of helm charts in specified directory [$HELMWAVE_CHARTS_CACHE]
--yml                                              auto helmwave.yml.tpl --> helmwave.yml (default: false) [$HELMWAVE_AUTO_YML, $HELMWAVE_AUTO_YAML]
--wide value                                       show line around changes (default: 5) [$HELMWAVE_DIFF_WIDE]
--show-secret                                      show secret in diff (default: true) [$HELMWAVE_DIFF_SHOW_SECRET]
--3-way-merge                                      show 3-way merge diff (default: false) [$HELMWAVE_DIFF_3_WAY_MERGE]
--tpl value                                        main tpl file (default: "helmwave.yml.tpl") [$HELMWAVE_TPL]
--file value, -f value                             main yml file (default: "helmwave.yml") [$HELMWAVE_YAML, $HELMWAVE_YML]
--templater value                                  select template engine: [ sprig | gomplate ] (default: "sprig") [$HELMWAVE_TEMPLATER, $HELMWAVE_TEMPLATE_ENGINE]

--revisionยถ

Rollback all releases to specific revision.


Introduced in v0.30.0

--kubedogยถ

Enable kubedog.

--kubedog-status-intervalยถ

Set interval for kubedog status.

--kubedog-start-delayยถ

Set delay before kubedog will start.

--kubedog-timeoutยถ

Set timeout for kubedog.

--kubedog-log-widthยถ

Set width of kubedog logboek.

--kubedog-track-allยถ

Introduced in v0.30.0

Track all resources, not only Deployment, DaemonSet, StatefulSet, Job. Annotations are also respected for these resources but it wasn't tested.

It will probably fail for some non-namespaced custom resources because kubedog can track only namespaced resources. In this case kubedog will fail with a warning

$ helmwave rollback      
[๐Ÿ™ƒ aka INFO]: โœ… frontend@test rollback!
[๐Ÿ™ƒ aka INFO]: โœ… database@test rollback!
[๐Ÿ™ƒ aka INFO]: โœ… backend@test rollback!

graphยถ

Introduced in v0.27.2

Show only graph of helm releases from plan. Graph draws with helmwave/asciigraph

Flags
--build                                            auto build (default: false) [$HELMWAVE_AUTO_BUILD]
--plandir value, -p value                          path to plandir (default: ".helmwave/") [$HELMWAVE_PLANDIR, $HELMWAVE_PLAN]
--tags value, -t value [ --tags value, -t value ]  build releases by tags: -t tag1 -t tag3,tag4 [$HELMWAVE_TAGS]
--match-all-tags                                   match all provided tags (default: false) [$HELMWAVE_MATCH_ALL_TAGS]
--graph-width value                                set ceil width: 1 โ€“ disable graph; 0 โ€“ full names; N>1 โ€“ show only N symbols; N<0 โ€“ drop N symbols from end. (default: 0) [$HELMWAVE_GRAPH_WIDTH]
--skip-unchanged                                   skip unchanged releases (default: false) [$HELMWAVE_SKIP_UNCHANGED]
--diff-mode value                                  you can set: [ live | local | none ] (default: "live") [$HELMWAVE_DIFF_MODE]
--charts-cache-dir value                           enable caching of helm charts in specified directory [$HELMWAVE_CHARTS_CACHE]
--yml                                              auto helmwave.yml.tpl --> helmwave.yml (default: false) [$HELMWAVE_AUTO_YML, $HELMWAVE_AUTO_YAML]
--wide value                                       show line around changes (default: 5) [$HELMWAVE_DIFF_WIDE]
--show-secret                                      show secret in diff (default: true) [$HELMWAVE_DIFF_SHOW_SECRET]
--3-way-merge                                      show 3-way merge diff (default: false) [$HELMWAVE_DIFF_3_WAY_MERGE]
--tpl value                                        main tpl file (default: "helmwave.yml.tpl") [$HELMWAVE_TPL]
--file value, -f value                             main yml file (default: "helmwave.yml") [$HELMWAVE_YAML, $HELMWAVE_YML]
--templater value                                  select template engine: [ sprig | gomplate ] (default: "sprig") [$HELMWAVE_TEMPLATER, $HELMWAVE_TEMPLATE_ENGINE]

--graph-widthยถ

Introduced in v0.27.1

You can change logic of graph rendering by changing this flag.

  • 1: --graph-width=1 - disable graph rendering
  • 2: --graph-width=0 - try to detect max width of ceil by release name
  • N<0: --graph-width=-10 - drop 10 symbols.
  • N>1: --graph-width=10 - show only first 10 symbols.

:material-docs: example

validateยถ

Introduced in v0.12.0

Helmwave will validate a plan. Helmwave always validates plan before any command.

Flags
--plandir value, -p value  path to plandir (default: ".helmwave/") [$HELMWAVE_PLANDIR, $HELMWAVE_PLAN]
$ helmwave validate                                                          
$ echo $?                   
0

diffยถ

Introduced in v0.18.0

Flags
--wide value   show line around changes (default: 5) [$HELMWAVE_DIFF_WIDE]
--show-secret  show secret in diff (default: true) [$HELMWAVE_DIFF_SHOW_SECRET]
--3-way-merge  show 3-way merge diff (default: false) [$HELMWAVE_DIFF_3_WAY_MERGE]

--wideยถ

Set wide output for diff.

TODO: add example

--show-secretยถ

Introduced in v0.16.0

Enable showing secret values in diff output.

TODO: add example

--3-way-mergeยถ

Introduced in v0.24.4

Enable 3-way merge for when call diff.

TODO: add example

Diff has 2 subcommands plan and live.

This command will diff with manifests in the kubernetes cluster

options
--plandir value, -p value  path to plandir (default: ".helmwave/") [$HELMWAVE_PLANDIR, $HELMWAVE_PLAN]
helmwave diff live

This command will diff with local plan

options
--plandir1 value  path to plandir1 (default: ".helmwave/") [$HELMWAVE_PLANDIR_1, $HELMWAVE_PLANDIR]
--plandir2 value  path to plandir2 (default: ".helmwave/") [$HELMWAVE_PLANDIR_2]
helmwave diff plan

versionยถ

Get version of current helmwave.

$ helmwave --version  
helmwave version 0.31.0

$ helmwave -v
helmwave version 0.31.0
$ helmwave version
0.31.0

$ helmwave ver
0.31.0

completionยถ

Generates scripts for shell completion.

Add this code to your ~/.bashrc

source <(helmwave completion bash)
echo "source <(helmwave completion bash)" >> ~/.bashrc

bash completion example

Add this code to your ~/.zshrc

source <(helmwave completion zsh)
echo "source <(helmwave completion zsh)" >> ~/.zshrc

zsh completion example

schemaยถ

You can generate json schema for autocomplete and validate helmwave.yml in your IDE.

helmwave schema > helmwave.schema.json

๐Ÿณ๏ธ Global flagsยถ

Global flags available in any command.

Flags
--log-format value  You can set: [ text | json | pad | emoji ] (default: "emoji") [$HELMWAVE_LOG_FORMAT]
--log-level value   You can set: [ debug | info | warn  | fatal | panic | trace ] (default: "info") [$HELMWAVE_LOG_LEVEL, $HELMWAVE_LOG_LVL]
--log-color         on/off color (default: true) [$HELMWAVE_LOG_COLOR]
--log-timestamps    Add timestamps to log messages (default: false) [$HELMWAVE_LOG_TIMESTAMPS]

Helmwave uses sirupsen/logrus as internal logger.

--log-formatยถ

Helmwave supports different log formatters

features text json pad emoji (default)
Color โœ… โŒ โœ… ๐ŸŒˆ
Human readable ๐Ÿง ๐Ÿค– ๐Ÿง๐Ÿง โœ…
Performance ๐Ÿš€ ๐Ÿข โœˆ๏ธ ๐Ÿข
Module TextFormatter (in-built logrus formatter) JSONFormatter (in-built logrus formatter) TextFormatter (in-built logrus formatter) logrus-emoji-formatter special for helmwave
$ helmwave --log-format text build -f docs/examples/quick-start/helmwave.yml
INFO ๐Ÿ”จ Building releases...                       
INFO ๐Ÿ”จ Building graphs...                         
INFO show graph:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ a@my-namespace  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜



โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ b@my-namespace  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ 
INFO ๐Ÿ”จ Building values...                         
INFO ๐Ÿ”จ no values provided                          release=a@my-namespace
INFO ๐Ÿ”จ no values provided                          release=b@my-namespace
INFO ๐Ÿ”จ Building repositories...                   
INFO ๐Ÿ”จ Building registries...                     
INFO ๐Ÿ—„ registry has been added to the plan         registry=registry-1.docker.io
INFO ๐Ÿ”จ Building charts...                         
INFO Pulled: registry-1.docker.io/bitnamicharts/nats:7.8.3 
INFO Digest: sha256:5f80350b8a85177e4a9c7ed968f77c47bedcc461418172fb66594bc61fa1ffac 
INFO Pulled: registry-1.docker.io/bitnamicharts/nats:7.8.3 
INFO Digest: sha256:5f80350b8a85177e4a9c7ed968f77c47bedcc461418172fb66594bc61fa1ffac 
INFO ๐Ÿ”จ Building manifests...                      
INFO โŽ skipping updating dependencies for remote chart  release=b@my-namespace
INFO โŽ skipping updating dependencies for remote chart  release=a@my-namespace
INFO Pulled: registry-1.docker.io/bitnamicharts/nats:7.8.3 
INFO Digest: sha256:5f80350b8a85177e4a9c7ed968f77c47bedcc461418172fb66594bc61fa1ffac 
INFO Pulled: registry-1.docker.io/bitnamicharts/nats:7.8.3 
INFO Digest: sha256:5f80350b8a85177e4a9c7ed968f77c47bedcc461418172fb66594bc61fa1ffac
...
$ helmwave --log-format json build -f docs/examples/quick-start/helmwave.yml
{
  "level": "info",
  "msg": "๐Ÿ”จ Building releases...",
}
{
  "level": "info",
  "msg": "๐Ÿ”จ Building graphs...",
}
{
  "level": "info",
  "msg": "show graph:\nโ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”\nโ”‚ a@my-namespace  โ”‚\nโ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n                   \n                   \n                   \nโ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”\nโ”‚ b@my-namespace  โ”‚\nโ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n",
}
{
  "level": "info",
  "msg": "๐Ÿ”จ Building values...",
}
$ helmwave --log-format pad build -f docs/examples/quick-start/helmwave.yml
INFO    ๐Ÿ”จ Building releases...                       
INFO    ๐Ÿ”จ Building graphs...                         
INFO    show graph:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ a@my-namespace  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜



โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ b@my-namespace  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ 
INFO    ๐Ÿ”จ Building values...                         
INFO    ๐Ÿ”จ no values provided                          release=b@my-namespace
INFO    ๐Ÿ”จ no values provided                          release=a@my-namespace
INFO    ๐Ÿ”จ Building repositories...                   
INFO    ๐Ÿ”จ Building registries...                     
INFO    ๐Ÿ—„ registry has been added to the plan         registry=registry-1.docker.io
INFO    ๐Ÿ”จ Building charts...                         
$ helmwave --log-format emoji build -f docs/examples/quick-start/helmwave.yml
[๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ Building releases...
[๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ Building graphs...
[๐Ÿ™ƒ aka INFO]: show graph:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ a@my-namespace  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜



โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ b@my-namespace  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

[๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ Building values...
[๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ no values provided
        release: b@my-namespace
[๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ no values provided
        release: a@my-namespace
[๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ Building repositories...
[๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ Building registries...
[๐Ÿ™ƒ aka INFO]: ๐Ÿ—„ registry has been added to the plan
        registry: registry-1.docker.io
[๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ Building charts...
[๐Ÿ™ƒ aka INFO]: Pulled: registry-1.docker.io/bitnamicharts/nats:7.8.3

--log-levelยถ

This option manage how much information you want to get. This modern way instead of verbose (-vvvvv) logging.

_ info (default) debug warn fatal panic trace
general info โœ… โœ… โœ… โœ… โœ… โœ…
incompatible version โŒ โœ… โœ… โœ… โœ… โœ…
helm-debug without --progress โŒ โœ… โœ… โœ… โœ… โœ…
helm-debug with --progress โœ… โœ… โœ… โœ… โœ… โœ…
lifecycle hooks show=true โœ… โœ… โœ… โœ… โœ… โœ…
lifecycle hooks show=false โŒ โœ… โœ… โœ… โœ… โœ…
file content โŒ โœ… โŒ โœ… โœ… โœ…
helm manifests, bug report โŒ โŒ โŒ โŒ โŒ โœ…

--log-colorยถ

Enable/Disable color in output.

output with disabled log colors

output with enabled log colors

--log-timestampsยถ

Add additional block with timestamp information in logs.

helmwave --log-timestamps --log-format text build -f docs/examples/quick-start/helmwave.yml 
INFO[2023-06-19T05:51:32+04:00] ๐Ÿ”จ Building releases...                       
INFO[2023-06-19T05:51:32+04:00] ๐Ÿ”จ Building graphs...                         
INFO[2023-06-19T05:51:32+04:00] show graph:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ a@my-namespace  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜



โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ b@my-namespace  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ 
INFO[2023-06-19T05:51:32+04:00] ๐Ÿ”จ Building values...                         
INFO[2023-06-19T05:51:32+04:00] ๐Ÿ”จ no values provided                          release=b@my-namespace
INFO[2023-06-19T05:51:32+04:00] ๐Ÿ”จ no values provided                          release=a@my-namespace
INFO[2023-06-19T05:51:32+04:00] ๐Ÿ”จ Building repositories...                   
INFO[2023-06-19T05:51:32+04:00] ๐Ÿ”จ Building registries...                     
INFO[2023-06-19T05:51:32+04:00] ๐Ÿ—„ registry has been added to the plan         registry=registry-1.docker.io
INFO[2023-06-19T05:51:32+04:00] ๐Ÿ”จ Building charts...                         
INFO[2023-06-19T05:51:34+04:00] Pulled: registry-1.docker.io/bitnamicharts/nats:7.8.3 
helmwave --log-timestamps --log-format json build -f docs/examples/quick-start/helmwave.yml 
{
  "level": "info",
  "msg": "๐Ÿ”จ Building releases...",
  "time": "2023-06-19T05:52:24+04:00"
}
{
  "level": "info",
  "msg": "๐Ÿ”จ Building graphs...",
  "time": "2023-06-19T05:52:24+04:00"
}
{
  "level": "info",
  "msg": "show graph:\nโ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”\nโ”‚ a@my-namespace  โ”‚\nโ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n                   \n                   \n                   \nโ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”\nโ”‚ b@my-namespace  โ”‚\nโ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n",
  "time": "2023-06-19T05:52:24+04:00"
}
{
  "level": "info",
  "msg": "๐Ÿ”จ Building values...",
  "time": "2023-06-19T05:52:24+04:00"
}
{
  "level": "info",
  "msg": "๐Ÿ”จ no values provided",
  "release": "b@my-namespace",
  "time": "2023-06-19T05:52:24+04:00"
}
{
  "level": "info",
  "msg": "๐Ÿ”จ no values provided",
  "release": "a@my-namespace",
  "time": "2023-06-19T05:52:24+04:00"
}
{
  "level": "info",
  "msg": "๐Ÿ”จ Building repositories...",
  "time": "2023-06-19T05:52:24+04:00"
}
{
  "level": "info",
  "msg": "๐Ÿ”จ Building registries...",
  "time": "2023-06-19T05:52:24+04:00"
}
$ helmwave --log-timestamps build -f docs/examples/quick-start/helmwave.yml 
[2023-06-19T03:31:18+04:00] [๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ Building releases...
[2023-06-19T03:31:18+04:00] [๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ Building graphs...
[2023-06-19T03:31:18+04:00] [๐Ÿ™ƒ aka INFO]: show graph:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ a@my-namespace  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜



โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ b@my-namespace  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

[2023-06-19T03:31:18+04:00] [๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ Building values...
[2023-06-19T03:31:18+04:00] [๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ no values provided
        release: b@my-namespace
[2023-06-19T03:31:18+04:00] [๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ no values provided
        release: a@my-namespace
[2023-06-19T03:31:18+04:00] [๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ Building repositories...