Cert-manager: Provide simpler deployment method than Helm

Created on 22 Jan 2018  路  4Comments  路  Source: jetstack/cert-manager

Is this a BUG REPORT or FEATURE REQUEST?:

/kind bug

What happened:
We wouldn't like to install helm on our cluster (because security considerations and overhead - we wouldn't use it for anything else), so we are not able to install cert-manager.

What you expected to happen:
Find docs about how to install cert-manager without helm as a dependency.

Anything else we need to know?:
Currently the README states:

The easiest way to deploy cert-manager into your cluster is to use the Helm chart

But I wasn't able to find another way (as the whole deployment is expressed as Helm files).

Possible solutions:

  1. State clearly in the README that Helm is the only way to deploy cert-manager
  2. Detail an alternative deployment method without external dependencies
kinbug

Most helpful comment

馃憤 I'd like to explore different ways we can do this without our 'standard YAML' and Helm templates diverging.

Helm does provide the helm install --dry-run --debug option, which will 'dump' all the YAML that would have been sent to the apiserver locally. Perhaps this could be used as part of our CI process to ensure our example files are up to date.

In the meantime, if you'd like to get started with cert-manager I'd recommend you running helm install --dry-dry --debug ./contrib/charts/cert-manager, which should output a load of YAML which can be used for deploying cert-manager.

All 4 comments

馃憤 I'd like to explore different ways we can do this without our 'standard YAML' and Helm templates diverging.

Helm does provide the helm install --dry-run --debug option, which will 'dump' all the YAML that would have been sent to the apiserver locally. Perhaps this could be used as part of our CI process to ensure our example files are up to date.

In the meantime, if you'd like to get started with cert-manager I'd recommend you running helm install --dry-dry --debug ./contrib/charts/cert-manager, which should output a load of YAML which can be used for deploying cert-manager.

Thanks for the super quick response!

Having the CI generate the YAML files would be a good option. However, helm requires tiller to be running even with the dry-run option (I had to run the command you suggested after helm init on a Minikube, works nicely 馃憦 - but didn't try yet loading the yaml output against our cluster), so not sure how that would work out with CI.

Another possibility would be to add a short paragraph in the README about how to generate the YAML. I can PR that if it sounds like a good idea to you.

@munnerz @f-f you can use the helm template command to locally render a chart to YAML. You don't need tiller, as the template command doesn't validate the output with the cluster. You can render the whole chart or just specific templates.

Good idea @munnerz to generate sample YAML during CI. Since most people seem to use helm these days, static samples will quickly get out of date.

Render chart templates locally and display the output.

This does not require Tiller. However, any values that would normally be
looked up or retrieved in-cluster will be faked locally. Additionally, none
of the server-side testing of chart validity (e.g. whether an API is supported)
is done.

To render just one template in a chart, use '-x':

        $ helm template mychart -x templates/deployment.yaml

Usage:
  helm template [flags] CHART

Flags:
  -x, --execute stringArray    only execute the given templates
      --kube-version string    override the Kubernetes version used as Capabilities.KubeVersion.Major/Minor (e.g. 1.7)
  -n, --name string            release name (default "RELEASE-NAME")
      --name-template string   specify template used to name the release
      --namespace string       namespace to install the release into
      --notes                  show the computed NOTES.txt file as well
      --set stringArray        set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)
  -f, --values valueFiles      specify values in a YAML file (can specify multiple) (default [])

Thanks very much for that tip @whereisaaron! I was not aware of this, and was about to write an ugly parser for the output of helm install --debug --dry-run. I've opened #276 that fixes this issue, and uses the helm template command to both update and verify the generated manifests!

Was this page helpful?
0 / 5 - 0 ratings