Skip to content

Apps per namespace

Source

If you want to install each application in your own namespace.

Create the project

Project structure

├── README.md
├── helmwave.yml.tpl
├── values
│   ├── harbor.yml
│   ├── minio.yml
│   ├── plantuml.yml
│   └── renovate.yml
└── vars.yaml

Step 1. Create helmwave.yml.tpl

version: 0.16.2


repositories:
  - name: bitnami
    url: https://charts.bitnami.com/bitnami
  - name: renovate
    url: https://docs.renovatebot.com/helm-charts
  - name: stevehipwell
    url: https://stevehipwell.github.io/helm-charts



# General options
.options: &options
  wait: true
  waitforjobs: true
  force: false
  timeout: 10m
  atomic: false
  maxhistory: 3
  createnamespace: true


releases:
{{- with readFile "vars.yaml" | fromYaml | get "releases" }}
{{ range $v := . }}

#################################
#                               #
#      {{ $v | get "name" }}
#                               #
#################################
- name: {{ $v | get "name" }}
  chart:
    name: {{ $v | get "repo" }}/{{ $v | get "name" }}
    version: {{ $v | get "version" }}
  namespace: {{ $v | get "name" }}
  tags: [{{ $v | get "name" }}]
  values:
    - values/{{ $v | get "name" }}.yml
  <<: *options

{{ end }}
{{- end }}

Step 2. Create vars.yaml

We will manage list apps with additional vars.yaml file

releases:
  - name: harbor
    repo: bitnami
    version: 11.0.5

  - name: minio
    repo: bitnami
    version: 9.0.2

  - name: plantuml
    repo: stevehipwell
    version: 3.3.0

  - name: renovate
    repo: renovate
    version: 25.76.1

Step 3. Render helmwave.yml.tpl -> helmwave.yml

helmwave yml

You will get it

version: 0.16.2


repositories:
  - name: bitnami
    url: https://charts.bitnami.com/bitnami
  - name: renovate
    url: https://docs.renovatebot.com/helm-charts
  - name: stevehipwell
    url: https://stevehipwell.github.io/helm-charts



# General options
.options: &options
  wait: true
  waitforjobs: true
  force: false
  timeout: 10m
  atomic: false
  maxhistory: 3
  createnamespace: true


releases:


#################################
#                               #
#      harbor
#                               #
#################################
- name: harbor
  chart:
    name: bitnami/harbor
    version: 11.0.5
  namespace: harbor
  tags: [harbor]
  values:
    - values/harbor.yml
  <<: *options



#################################
#                               #
#      minio
#                               #
#################################
- name: minio
  chart:
    name: bitnami/minio
    version: 9.0.2
  namespace: minio
  tags: [minio]
  values:
    - values/minio.yml
  <<: *options



#################################
#                               #
#      plantuml
#                               #
#################################
- name: plantuml
  chart:
    name: stevehipwell/plantuml
    version: 3.3.0
  namespace: plantuml
  tags: [plantuml]
  values:
    - values/plantuml.yml
  <<: *options



#################################
#                               #
#      renovate
#                               #
#################################
- name: renovate
  chart:
    name: renovate/renovate
    version: 25.76.1
  namespace: renovate
  tags: [renovate]
  values:
    - values/renovate.yml
  <<: *options

Step 4. Build plan

helmwave build

Step 5. Deploy plan

if we want to deploy only plantuml

helmwave build -t plantuml
helmwave up

looks how to work HELMWAVE_TAGS

CI/CD with Gitlab-CI

variables:
  HELMWAVE_LOG_LEVEL: debug

Deploy to prod:
  stage: deploy
  when: manual
  environment:
    name: prod
  image:
    name: ghcr.io/helmwave/helmwave:0.16.2
    entrypoint: [""]
  before_script:
    - printenv | grep HELMWAVE
  script:
    - helmwave yml
    - helmwave build
    - helmwave up
  artifacts:
    paths:
    - .helmwave
    expire_in: 2 week

if you want to deploy only plantuml via CI.