Declaratively deploy your Kubernetes manifests, Kustomize configs, and Charts as Helm releases in one shot
Go to file
Justin Nauman e0b324b69b Adding in diff plugin execution
- Simple copy-paste for the most part from sync job.  I had started down
the path of adding in a meta PluginCommand directive and trying to make it
more modular, but in the end there are some small differences between
the execution that were a bit difficult to model and it just got ugly.
Figured keeping it simple would be easier to manage
2017-08-17 23:49:06 -05:00
helmexec Adding in diff plugin execution 2017-08-17 23:49:06 -05:00
state Adding in diff plugin execution 2017-08-17 23:49:06 -05:00
vendor vendor: add deps 2016-11-22 12:37:41 -05:00
.gitignore ignore dist 2017-04-12 11:22:19 -04:00
Dockerfile container: add helm 2016-11-22 21:40:24 -05:00
Makefile ignore standard ignores 2017-04-19 15:31:15 -04:00
README.md documentation updates and tweaking workflows with env vars. It now throws errors if they're not set 2017-04-12 10:15:56 -04:00
circle.yml build: add docker login 2016-11-22 21:40:50 -05:00
main.go Adding in diff plugin execution 2017-08-17 23:49:06 -05:00

README.md

helmfile CircleCI

Deploy Kubernetes Helm Charts

Docker Repository on Quay

about

Helmfile is a declarative spec for deploying helm charts. It lets you...

  • Keep a directory of chart value files and maintain changes in version control.
  • Apply CI/CD to configuration changes.
  • Periodically sync to avoid skew in environments.

To avoid upgrades for each iteration of helm, the helmfile executable delegates to helm - as a result, helm must be installed.

The default helmfile is charts.yaml:

repositories:
  - name: roboll
    url: http://roboll.io/charts

charts:
  - name: vault                          # helm deployment name
    namespace: vault                     # target namespace
    chart: roboll/vault-secret-manager   # chart reference
    values: [ vault.yaml ]               # value files (--values)
    set:                                 # values (--set)
      - name: address
        value: https://vault.example.com
    env:                                 # values (--set) but value will be pulled from environment variables. Will throw an error if the environment variable is not set.
      - name: db.password
        value: DB_PASSWORD               # $DB_PASSOWRD needs to be set in the calling environment ex: export DB_PASSWORD='password1'

install

go get github.com/roboll/helmfile or releases or container

usage

NAME:
   helmfile -

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

VERSION:
   0.1.0

COMMANDS:
     repos   sync repositories from state file (helm repo add && helm repo update)
     charts  sync charts from state file (helm repo upgrade --install)
     sync    sync all resources from state file (repos && charts)
     delete  delete charts from state file (helm delete)

GLOBAL OPTIONS:
   --file FILE, -f FILE  load config from FILE (default: "charts.yaml")
   --quiet, -q           silence output
   --kube-context value  Set kubectl context. Uses current context by default
   --help, -h            show help
   --version, -v         print the version