Skip to content

Yaml

works on helm v3.7.1

Sample:

project: my-project
version: dev
repositories:
- name: bitnami
  url: https://charts.bitnami.com/bitnami
  username: ""
  password: ""
  certfile: ""
  keyfile: ""
  cafile: ""
  insecureskiptlsverify: false
  force: false
  allow_failure: true
releases:
- store:
    hello: world
  chart:
    name: bitnami/nginx
    cafile: ""
    certfile: ""
    keyfile: ""
    insecureskiptlsverify: false
    keyring: ""
    password: ""
    repourl: ""
    username: ""
    verify: false
    version: ""
  name: nginx
  namespace: test
  description: ""
  depends_on: []
  values: 
  - .helmwave/values/nginx@test/5ae83192a2a53eec01dee5207fcf3cccbc5af87f.yml
  - tests/07_values.yaml
  tags: []
  timeout: 0s
  maxhistory: 0
  createnamespace: false
  resetvalues: false
  recreate: false
  force: false
  atomic: false
  cleanuponfail: false
  subnotes: false
  disablehooks: false
  disableopenapivalidation: false
  waitforjobs: false
  wait: false
  skipcrds: false
  devel: false
  reusevalues: false

Project

Reserved for future.

Version

Helmwave will check current version and project version.

In the future it is planned to be used for major compatibility.

Repositories[]

field required type default
name string ""
url url ""
username 🙅 string ""
password 🙅 string ""
certfile 🙅 string ""
keyfile 🙅 string ""
cafile 🙅 string ""
insecureskiptlsverify 🙅 bool false
force 🙅 bool false

name

Local name alias

url

URL for chart repository

force

Don't skip if repository exists.

Releases[]

field required type default helmwave build helmwave up
name string ""
namespace string ""
chart.name string ""
chart.username 🙅 string ""
chart.password 🙅 string ""
chart.certfile 🙅 string ""
chart.keyfile 🙅 string ""
chart.cafile 🙅 string ""
chart.insecureskiptlsverify 🙅 bool false
description 🙅 string ""
depends_on 🙅 array []
allow_failure 🙅 bool false
values 🙅 array []
tags 🙅 array []
store 🙅 object {}
timeout 🙅 interval 0s
maxhistory 🙅 int 0
createnamespace 🙅 bool false
resetvalues 🙅 bool false
recreate 🙅 bool false
force 🙅 bool false
atomic 🙅 bool false
cleanuponfail 🙅 bool false
subnotes 🙅 bool false
disablehooks 🙅 bool false
disableopenapivalidation 🙅 bool false
waitforjobs 🙅 bool false
wait 🙅 bool false
skipcrds 🙅 bool false
devel 🙅 bool false
reusevalues 🙅 bool false

🗳️ Store

It allows to pass you custom fields from helmwave.yml to values.

It works when you call $ helmwave build

example

🔖 Tags

It allows you to choose releases for build

It works with next options when you call $ helmwave build:

--tags value, -t value  It allows you choose releases for build. Example: -t tag1 -t tag3,tag4 [$HELMWAVE_TAGS]
--match-all-tags        Match all provided tags (default: false) [$HELMWAVE_MATCH_ALL_TAGS]

Matching with tags

Suppose we have next helmwave.yml with 4 releases.

  1. redis-a
  2. redis-b
  3. memcached-a
  4. memcached-b

repositories:
- name: bitnami
  url: https://charts.bitnami.com/bitnami

releases:
- name: redis-a
  namespace: test
  chart:
    name: bitnami/redis
  tags:
  - a
  - redis

- name: redis-b
  namespace: test
  chart:
    name: bitnami/redis
  tags:
  - b
  - redis

- name: memcached-a
  namespace: test
  chart:
    name: bitnami/redis
  tags:
  - a
  - memcached


- name: memcached-b
  namespace: test
  chart:
    name: bitnami/memcached
  tags:
  - b
  - memcached

Match all redis

helmwave build -t redis
[🙃 aka INFO]: 🏗 Plan
        releases: 
          - redis-a@test
          - redis-b@test

Match the group a

helmwave build -t a 
[🙃 aka INFO]: 🏗 Plan
        releases: 
          - redis-a@test
          - memcached-a@test

Match multiply group.

If you know SQL. It looks like that:

SELECT * FROM releases WHERE tag = "redis" OR tag = "a"
helmwave build -t redis -t a
[🙃 aka INFO]: 🏗 Plan
        releases: 
          - redis-a@test
          - redis-b@test
          - memcached-a@test

All that was above, we used the logical OR operator. If you need strongly logic with AND you should use --match-all-tags flag. This flag changes logic for query releases.

If you know SQL. It looks like that:

SELECT * FROM releases WHERE tag = "redis" AND tag = "a"
helmwave build -t redis -t a --match-all-tags
[🙃 aka INFO]: 🏗 Plan
        releases: 
          - redis-a@test

depends_on & allow_failure

It allows waiting releases

It works when you call $ helmwave up

Example for 3-tier application

graph LR frontend --> backend --> db;

Your helmwave.yml will

releases:
  - name: frontend
    depends_on: backend@test
    namespace: test

  - name: backend
    depends_on: db@test
    namespace: test

  - name: db
    allow_failure: false
    namespace: test

When allow_failure is set true. It allows the installation to proceed.

name

Release name

I hope you know what it is.

namespace

Kubernetes namespace

createnamespace

if true Helmwave will create the release namespace if not present

timeout

time to wait for any individual Kubernetes operation