jx-boot-helmfile

Experimental repo looking at getting helmfile working with a jx boot config repo.

prerequisits

  • helmfile brew install helmfile - note this also installs a helm 3 binary on your $PATH
  • helm plugins
helm plugin install https://github.com/aslafy-z/helm-git.git
helm plugin install https://github.com/databus23/helm-diff
  • clean Jenkins X cluster created with jx create cluster gke --skip-installation

  • jx version 2.0.1145 or later

running the helmfile installer

There's lots of info on the helmfile github repo, take a look to see how things fit together.

git clone git@github.com:jenkins-x-labs/boot-helmfile-poc.git
cd boot-helmfile-poc

modify requirements

modify the jx-requirements.yml to modify the cluster fields to point to your cluster:

  • clusterName
  • project
  • zone
  • set gitops: false for now while you work on your local checkout

setup Secrets

write some installation secrets to a file using the template below, this is a temporary solution

vi $HOME/.jx/localSecrets/{{ add your cluster name }}/secrets.yaml
secrets:     
  adminUser:
    username: "admin"
    password: "" 
  hmacToken: "" 
  pipelineUser:
    username: ""  
    email: "" 
    token: "" 

run boot

from inside your git clone run boot - making sure you have $JX_SECRETS_DIR set to point to your secrets:

export JX_SECRETS_DIR=$HOME/.jx/localSecrets/{{ add your cluster name }}/                               

jx boot -b --no-update-git

using a recent jx version

uninstall

helmfile destroy    

Source Layout

We still have a boot pipeline in the jenkins-x.yml file though its much simpler; mostly invoking jx step verify XXX commands and then invoking helmfile sync.

Apps folder

The main application charts get installed via the apps/helmfile.yaml file which is quite similar to the traditional env/requirements.yaml file in the classic boot configuration.

Then rather like in the classic boot env folder we have child folders in the apps folder which can contain custom values.yaml or values.yaml.gotmpl files to override any values for a file.

Also note the use of values: inside the apps/helmfile.yaml to configure which values files are used for which app.

Repositories folder

The repositories folder mirrors the folder of the same name in jenkins-x-boot-config and is a chart which contains any SourceRepository YAML files in repositories/templates which are generated by the jx create quickstart / jx import commands.

System folder

The system folder contains the system/helmfile.yaml for setting up system level charts for core services which need setting up before Ingress / TLS / Certs and the like.