From 6da5bc5ceef5e3925bb49b15d2cf9341bba26550 Mon Sep 17 00:00:00 2001 From: Matt Butcher <mbutcher@engineyard.com> Date: Wed, 28 Sep 2016 10:32:35 -0600 Subject: [PATCH] docs(charts): fix charts docs to reflect current template practices Closes #1241 --- docs/charts.md | 58 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 48 insertions(+), 10 deletions(-) diff --git a/docs/charts.md b/docs/charts.md index 7b5e1ee67..c882ae81f 100644 --- a/docs/charts.md +++ b/docs/charts.md @@ -244,17 +244,18 @@ spec: serviceAccount: deis-database containers: - name: deis-database - image: {{.imageRegistry}}/postgres:{{.dockerTag}} - imagePullPolicy: {{.pullPolicy}} + image: {{.Values.imageRegistry}}/postgres:{{.Values.dockerTag}} + imagePullPolicy: {{.Values.pullPolicy}} ports: - containerPort: 5432 env: - name: DATABASE_STORAGE - value: {{default "minio" .storage}} + value: {{default "minio" .Values.storage}} ``` The above example, based loosely on [https://github.com/deis/charts](https://github.com/deis/charts), is a template for a Kubernetes replication controller. -It can use the following four template values: +It can use the following four template values (usually defined in a +`.values.yaml` file): - `imageRegistry`: The source registry for the Docker image. - `dockerTag`: The tag for the docker image. @@ -266,6 +267,10 @@ require or dictate parameters. ### Predefined Values +Values that are supplied via a `values.yaml` file (or via the `--set` +flag) are accessible from the `.Values` object in a template. But there +are other pre-defined pieces of data you can access in your templates. + The following values are pre-defined, are available to every template, and cannot be overridden. As with all values, the names are _case sensitive_. @@ -333,6 +338,39 @@ Note that only the last field was overridden. `values.yaml`. But files specified on the command line can be named anything. +Any of these values are then accessible inside of templates using the +`.Values` object: + +```yaml +apiVersion: v1 +kind: ReplicationController +metadata: + name: deis-database + namespace: deis + labels: + heritage: deis +spec: + replicas: 1 + selector: + app: deis-database + template: + metadata: + labels: + app: deis-database + spec: + serviceAccount: deis-database + containers: + - name: deis-database + image: {{.Values.imageRegistry}}/postgres:{{.Values.dockerTag}} + imagePullPolicy: {{.Values.pullPolicy}} + ports: + - containerPort: 5432 + env: + - name: DATABASE_STORAGE + value: {{default "minio" .Values.storage}} + +``` + ### Scope, Dependencies, and Values Values files can declare values for the top-level chart, as well as for @@ -355,16 +393,16 @@ apache: ``` Charts at a higher level have access to all of the variables defined -beneath. So the wordpress chart can access `.mysql.password`. But lower -level charts cannot access things in parent charts, so MySQL will not be -able to access the `title` property. Nor, for that matter, can it access -`.apache.port`. +beneath. So the wordpress chart can access the MySQL password as +`.Values.mysql.password`. But lower level charts cannot access things in +parent charts, so MySQL will not be able to access the `title` property. Nor, +for that matter, can it access `apache.port`. Values are namespaced, but namespaces are pruned. So for the Wordpress -chart, it can access the MySQL password field as `.mysql.password`. But +chart, it can access the MySQL password field as `.Values.mysql.password`. But for the MySQL chart, the scope of the values has been reduced and the namespace prefix removed, so it will see the password field simply as -`.password`. +`.Values.password`. #### Global Values -- GitLab