Skip to content

sprokhorov/helmctl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

helmctl

helmctl is a wrapper of helm, helm-diff and sops. It uses yaml formated files to describe and re-use helm releases.

Installing

brew install go && \
git clone https://github.com/sprokhorov/helmctl.git && \
cd helmctl && go install github.com/sprokhorov/helmctl

Using the helmctl

Create helmctl.yaml

First of all we need helmctl.yaml to describe our releases. In following example we deploy telegraf on development environment. Please check example-helmctl.yaml to see all possible options of release describing.

version: v1
spec:
  releases:
    - name: telegraf
      chart: stable/telegraf
      version: 1.6.1
      values:
        - name: image.tag
          value: latest
  installs:
    environments:
      development:
        - telegraf

Syntax features:

  • You can use environment variables with custom YAML tag !env
  • You can include yaml blocks from files with custom YAML tag !include
version: v1
spec:
  releases:
  # Include values from file
    - !include releases/example/example-release-2.yaml
  # You can use `<<:` yaml merge operation to merge data from file with defined values
    - <<: !include releases/example/example-release-2.yaml
      name: example-release-2
  • You can use override/append release params for each environemnt or project in installs section. Arrays will be appended, string values will be overrided:
version: v1
spec:
  releases:
    - name: telegraf
      chart: stable/telegraf
      version: 1.6.1
      values:
        - name: image.tag
          value: latest
  installs:
    environments:
      development:
        - name: telegraf
          values:
          - name: image.pullPolicy
            value: always
          version: 1.6.2-NEW_VERSION

This will produce next release for development for telegraf:

name: telegraf
chart: stable/telegraf
version: 1.6.2-NEW_VERSION
values:
  - name: image.tag
    value: latest
  - name: image.pullPolicy
    value: always

Install releases

We can install one release to environment:

helmctl --environment development install telegraf

or all releases at the same time:

helmctl --environment development install all

About

The Helm wrapper which let re-use helm releases

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages