Home

Awesome

Disclaimer: This is intended to show case the typical fissile flow from creating a BOSH release to generating a set of Helm Charts. The actual result may be deployable to a Kubernetes cluster, but it was never tested to run or produce any meaningful results once deployed.

Fissile development playground

This repo contains the simplest possible configuration to run fissile commands. It can be used to test changes done to fissile.

There are two sets of configuration to make this work:

Following the steps, you will find the generated content under output.

Setup fissile from source

Copied from the fissile README:

$ go get -d code.cloudfoundry.org/fissile
$ cd $GOPATH/src/code.cloudfoundry.org/fissile
$ make tools docker-deps all

Setup this playground

Initialise the submodules:

$ git submodule update --init --recursive
Submodule path 'releases/bpm': checked out '92b3b92dfb19977d1fc0b2647b82df5cb6d1413e'
Submodule path 'releases/loggregator-agent': checked out '89c8672487e38bc9476346ddcc0194cedaca1c8e'
Submodule 'src/code.cloudfoundry.org/go-batching' (https://github.com/cloudfoundry/go-batching) registered for path 'releases/loggregator-agent/src/code.cloudfoundry.org/go-batching'
[...]

Create a dev release of all releases (requires that you have a BOSH v2 CLI installed):

$ for I in releases/*; do ( cd $I && bosh create-release ); done

Enable the .envrc settings by running the following command:

direnv allow

Note: You need the direnv hook of bash to be working, you can enable it by running eval "$(direnv hook bash)"

Make sure you have the configured stemcell available:

$ docker pull $FISSILE_STEMCELL

Once you have a BOSH dev release, fissile build packages can work:

$ fissile build packages
Compiling packages for releases:
         nginx (1.12.2+dev.1)
compile: nginx/nginx
done:    nginx/nginx
result   > success: nginx/nginx

Other fissile commands should work as well:

$ fissile show release
Dev release nginx (1.12.2+dev.1)
nginx (e7dc968f9daf5b31ff4ad6edf048306f45a70bbb):
There are 1 jobs present.

Dev release nginx (1.12.2+dev.1)
nginx (d6ddf5c4782669341b260a27c53208d32a17b3a5)
There are 1 packages present.

Run fissile build helm to generate the Helm templates, you should see something like the following:

$ fissile build helm
Writing config output/helm/templates/secrets.yaml
Writing config output/helm/templates/registry-secret.yaml
Writing config output/helm/values.yaml
Writing config output/helm/templates/nginx.yaml for role nginx

By default, fissile will colocate the templates dir and the values.yaml under the FISSILE_OUTPUT_DIR env variable.

To have a complete helm charts, you will need to run the following script, ./bin/create-chart.sh. This will generate the missing Chart.yaml file.

What is missing

This README lacks the steps to create (fissile build images) and push your newly created image to a Docker registry of your choice. After that, you should be able to use Helm to install the release to any Kubernetes cluster.