From 4f6d002d6c07d379508b5bfe53924753a3b1d4da Mon Sep 17 00:00:00 2001 From: Matthew Fisher Date: Wed, 3 Jul 2019 15:50:53 -0700 Subject: [PATCH] chore(docs): move docs to helm-www Signed-off-by: Matthew Fisher --- .gitignore | 2 - cmd/helm/testdata/testcharts/alpine/README.md | 2 +- .../testcharts/chart-bad-type/README.md | 2 +- .../testdata/testcharts/issue1979/README.md | 2 +- cmd/helm/testdata/testcharts/novals/README.md | 2 +- .../testcharts/signtest/alpine/README.md | 2 +- docs/architecture.md | 56 -- docs/chart_best_practices/README.md | 21 - docs/chart_best_practices/conventions.md | 39 - .../custom_resource_definitions.md | 37 - docs/chart_best_practices/labels.md | 36 - docs/chart_best_practices/pods.md | 69 -- docs/chart_best_practices/rbac.md | 63 -- docs/chart_best_practices/requirements.md | 47 - docs/chart_best_practices/templates.md | 198 ---- docs/chart_best_practices/values.md | 155 --- docs/chart_repository.md | 294 ------ docs/chart_repository_sync_example.md | 74 -- docs/chart_template_guide/accessing_files.md | 209 ---- docs/chart_template_guide/builtin_objects.md | 34 - .../control_structures.md | 354 ------- docs/chart_template_guide/data_types.md | 14 - docs/chart_template_guide/debugging.md | 30 - .../functions_and_pipelines.md | 155 --- docs/chart_template_guide/getting_started.md | 213 ---- docs/chart_template_guide/index.md | 16 - docs/chart_template_guide/named_templates.md | 264 ----- docs/chart_template_guide/notes_files.md | 45 - .../subcharts_and_globals.md | 207 ---- docs/chart_template_guide/values_files.md | 132 --- docs/chart_template_guide/variables.md | 131 --- docs/chart_template_guide/wrapping_up.md | 20 - docs/chart_template_guide/yaml_techniques.md | 349 ------- docs/chart_tests.md | 83 -- docs/charts.md | 935 ------------------ docs/charts_hooks.md | 199 ---- docs/charts_tips_and_tricks.md | 248 ----- docs/developers.md | 148 --- docs/examples/README.md | 19 - docs/examples/alpine/Chart.yaml | 8 - docs/examples/alpine/README.md | 11 - docs/examples/alpine/templates/_helpers.tpl | 16 - .../examples/alpine/templates/alpine-pod.yaml | 24 - docs/examples/alpine/values.yaml | 6 - docs/examples/nginx/.helmignore | 5 - docs/examples/nginx/Chart.yaml | 16 - docs/examples/nginx/README.md | 33 - docs/examples/nginx/charts/alpine/Chart.yaml | 8 - docs/examples/nginx/charts/alpine/README.md | 11 - .../charts/alpine/templates/_helpers.tpl | 16 - .../charts/alpine/templates/alpine-pod.yaml | 24 - docs/examples/nginx/charts/alpine/values.yaml | 6 - docs/examples/nginx/templates/NOTES.txt | 1 - docs/examples/nginx/templates/_helpers.tpl | 16 - docs/examples/nginx/templates/configmap.yaml | 14 - docs/examples/nginx/templates/deployment.yaml | 57 -- .../nginx/templates/post-install-job.yaml | 37 - .../nginx/templates/pre-install-secret.yaml | 19 - .../nginx/templates/service-test.yaml | 18 - docs/examples/nginx/templates/service.yaml | 39 - docs/examples/nginx/values.yaml | 34 - docs/faq.md | 255 ----- docs/glossary.md | 168 ---- docs/history.md | 28 - docs/images/create-a-bucket.png | Bin 51471 -> 0 bytes docs/images/create-a-gh-page-button.png | Bin 30225 -> 0 bytes docs/images/edit-permissions.png | Bin 58335 -> 0 bytes docs/images/make-bucket-public.png | Bin 15768 -> 0 bytes docs/images/nothing.png | Bin 275670 -> 0 bytes docs/images/set-a-gh-page.png | Bin 130550 -> 0 bytes docs/index.md | 36 - docs/install.md | 103 -- docs/kubernetes_distros.md | 46 - docs/logos/helm_logo_transparent.png | Bin 36682 -> 0 bytes docs/plugins.md | 207 ---- docs/provenance.md | 277 ------ docs/quickstart.md | 114 --- docs/registries.md | 175 ---- docs/related.md | 82 -- docs/release_checklist.md | 240 ----- docs/using_helm.md | 505 ---------- .../frobnitz.v1/charts/alpine/README.md | 2 +- .../testdata/frobnitz/charts/alpine/README.md | 2 +- .../charts/alpine/README.md | 2 +- pkg/chart/metadata.go | 2 - .../charts/alpine/README.md | 2 +- .../charts/alpine/README.md | 2 +- .../charts/alpine/README.md | 2 +- .../charts/alpine/README.md | 2 +- .../charts/alpine/README.md | 2 +- .../testdata/frobnitz/charts/alpine/README.md | 2 +- .../charts/alpine/README.md | 2 +- .../testdata/signtest/alpine/README.md | 2 +- scripts/update-docs.sh | 55 -- scripts/verify-docs.sh | 55 -- 95 files changed, 16 insertions(+), 7679 deletions(-) delete mode 100644 docs/architecture.md delete mode 100644 docs/chart_best_practices/README.md delete mode 100644 docs/chart_best_practices/conventions.md delete mode 100644 docs/chart_best_practices/custom_resource_definitions.md delete mode 100644 docs/chart_best_practices/labels.md delete mode 100644 docs/chart_best_practices/pods.md delete mode 100644 docs/chart_best_practices/rbac.md delete mode 100644 docs/chart_best_practices/requirements.md delete mode 100644 docs/chart_best_practices/templates.md delete mode 100644 docs/chart_best_practices/values.md delete mode 100644 docs/chart_repository.md delete mode 100644 docs/chart_repository_sync_example.md delete mode 100644 docs/chart_template_guide/accessing_files.md delete mode 100644 docs/chart_template_guide/builtin_objects.md delete mode 100644 docs/chart_template_guide/control_structures.md delete mode 100644 docs/chart_template_guide/data_types.md delete mode 100644 docs/chart_template_guide/debugging.md delete mode 100644 docs/chart_template_guide/functions_and_pipelines.md delete mode 100644 docs/chart_template_guide/getting_started.md delete mode 100644 docs/chart_template_guide/index.md delete mode 100644 docs/chart_template_guide/named_templates.md delete mode 100644 docs/chart_template_guide/notes_files.md delete mode 100644 docs/chart_template_guide/subcharts_and_globals.md delete mode 100644 docs/chart_template_guide/values_files.md delete mode 100644 docs/chart_template_guide/variables.md delete mode 100755 docs/chart_template_guide/wrapping_up.md delete mode 100644 docs/chart_template_guide/yaml_techniques.md delete mode 100644 docs/chart_tests.md delete mode 100644 docs/charts.md delete mode 100644 docs/charts_hooks.md delete mode 100644 docs/charts_tips_and_tricks.md delete mode 100644 docs/developers.md delete mode 100644 docs/examples/README.md delete mode 100644 docs/examples/alpine/Chart.yaml delete mode 100644 docs/examples/alpine/README.md delete mode 100644 docs/examples/alpine/templates/_helpers.tpl delete mode 100644 docs/examples/alpine/templates/alpine-pod.yaml delete mode 100644 docs/examples/alpine/values.yaml delete mode 100644 docs/examples/nginx/.helmignore delete mode 100644 docs/examples/nginx/Chart.yaml delete mode 100644 docs/examples/nginx/README.md delete mode 100644 docs/examples/nginx/charts/alpine/Chart.yaml delete mode 100644 docs/examples/nginx/charts/alpine/README.md delete mode 100644 docs/examples/nginx/charts/alpine/templates/_helpers.tpl delete mode 100644 docs/examples/nginx/charts/alpine/templates/alpine-pod.yaml delete mode 100644 docs/examples/nginx/charts/alpine/values.yaml delete mode 100644 docs/examples/nginx/templates/NOTES.txt delete mode 100644 docs/examples/nginx/templates/_helpers.tpl delete mode 100644 docs/examples/nginx/templates/configmap.yaml delete mode 100644 docs/examples/nginx/templates/deployment.yaml delete mode 100644 docs/examples/nginx/templates/post-install-job.yaml delete mode 100644 docs/examples/nginx/templates/pre-install-secret.yaml delete mode 100644 docs/examples/nginx/templates/service-test.yaml delete mode 100644 docs/examples/nginx/templates/service.yaml delete mode 100644 docs/examples/nginx/values.yaml delete mode 100644 docs/faq.md delete mode 100644 docs/glossary.md delete mode 100644 docs/history.md delete mode 100644 docs/images/create-a-bucket.png delete mode 100644 docs/images/create-a-gh-page-button.png delete mode 100644 docs/images/edit-permissions.png delete mode 100644 docs/images/make-bucket-public.png delete mode 100644 docs/images/nothing.png delete mode 100644 docs/images/set-a-gh-page.png delete mode 100644 docs/index.md delete mode 100755 docs/install.md delete mode 100644 docs/kubernetes_distros.md delete mode 100644 docs/logos/helm_logo_transparent.png delete mode 100644 docs/plugins.md delete mode 100644 docs/provenance.md delete mode 100644 docs/quickstart.md delete mode 100644 docs/registries.md delete mode 100644 docs/related.md delete mode 100644 docs/release_checklist.md delete mode 100755 docs/using_helm.md delete mode 100755 scripts/update-docs.sh delete mode 100755 scripts/verify-docs.sh diff --git a/.gitignore b/.gitignore index e18240eff..d32d1b6dc 100644 --- a/.gitignore +++ b/.gitignore @@ -4,8 +4,6 @@ .idea/ .vimrc .vscode/ -/docs/helm -/docs/man _dist/ bin/ vendor/ diff --git a/cmd/helm/testdata/testcharts/alpine/README.md b/cmd/helm/testdata/testcharts/alpine/README.md index 3c32de5db..fcf7ee017 100644 --- a/cmd/helm/testdata/testcharts/alpine/README.md +++ b/cmd/helm/testdata/testcharts/alpine/README.md @@ -10,4 +10,4 @@ couple of parameters. The `values.yaml` file contains the default values for the `alpine-pod.yaml` template. -You can install this example using `helm install docs/examples/alpine`. +You can install this example using `helm install ./alpine`. diff --git a/cmd/helm/testdata/testcharts/chart-bad-type/README.md b/cmd/helm/testdata/testcharts/chart-bad-type/README.md index 3c32de5db..fcf7ee017 100644 --- a/cmd/helm/testdata/testcharts/chart-bad-type/README.md +++ b/cmd/helm/testdata/testcharts/chart-bad-type/README.md @@ -10,4 +10,4 @@ couple of parameters. The `values.yaml` file contains the default values for the `alpine-pod.yaml` template. -You can install this example using `helm install docs/examples/alpine`. +You can install this example using `helm install ./alpine`. diff --git a/cmd/helm/testdata/testcharts/issue1979/README.md b/cmd/helm/testdata/testcharts/issue1979/README.md index 3c32de5db..fcf7ee017 100644 --- a/cmd/helm/testdata/testcharts/issue1979/README.md +++ b/cmd/helm/testdata/testcharts/issue1979/README.md @@ -10,4 +10,4 @@ couple of parameters. The `values.yaml` file contains the default values for the `alpine-pod.yaml` template. -You can install this example using `helm install docs/examples/alpine`. +You can install this example using `helm install ./alpine`. diff --git a/cmd/helm/testdata/testcharts/novals/README.md b/cmd/helm/testdata/testcharts/novals/README.md index 3c32de5db..fcf7ee017 100644 --- a/cmd/helm/testdata/testcharts/novals/README.md +++ b/cmd/helm/testdata/testcharts/novals/README.md @@ -10,4 +10,4 @@ couple of parameters. The `values.yaml` file contains the default values for the `alpine-pod.yaml` template. -You can install this example using `helm install docs/examples/alpine`. +You can install this example using `helm install ./alpine`. diff --git a/cmd/helm/testdata/testcharts/signtest/alpine/README.md b/cmd/helm/testdata/testcharts/signtest/alpine/README.md index 5bd595747..28bebae07 100644 --- a/cmd/helm/testdata/testcharts/signtest/alpine/README.md +++ b/cmd/helm/testdata/testcharts/signtest/alpine/README.md @@ -6,4 +6,4 @@ couple of parameters. The `values.yaml` file contains the default values for the `alpine-pod.yaml` template. -You can install this example using `helm install docs/examples/alpine`. +You can install this example using `helm install ./alpine`. diff --git a/docs/architecture.md b/docs/architecture.md deleted file mode 100644 index 6b02db1f4..000000000 --- a/docs/architecture.md +++ /dev/null @@ -1,56 +0,0 @@ -# The Kubernetes Helm Architecture - -This document describes the Helm architecture at a high level. - -## The Purpose of Helm - -Helm is a tool for managing Kubernetes packages called _charts_. Helm -can do the following: - -- Create new charts from scratch -- Package charts into chart archive (tgz) files -- Interact with chart repositories where charts are stored -- Install and uninstall charts into an existing Kubernetes cluster -- Manage the release cycle of charts that have been installed with Helm - -For Helm, there are three important concepts: - -1. The _chart_ is a bundle of information necessary to create an - instance of a Kubernetes application. -2. The _config_ contains configuration information that can be merged - into a packaged chart to create a releasable object. -3. A _release_ is a running instance of a _chart_, combined with a - specific _config_. - -## Components - -Helm is an executable which is implemented into two distinct parts: - -**The Helm Client** is a command-line client for end users. The client -is responsible for the following: - -- Local chart development -- Managing repositories -- Managing releases -- Interfacing with the Helm library - - Sending charts to be installed - - Requesting upgrading or uninstalling of existing releases - -**The Helm Library** provides the logic for executing all Helm operations. -It interfaces with the Kubernetes API server and provides the following capability: - -- Combining a chart and configuration to build a release -- Installing charts into Kubernetes, and providing the subsequent release object -- Upgrading and uninstalling charts by interacting with Kubernetes - -The standalone Helm library encapsulates the Helm logic so that it can be leveraged by different clients. - -## Implementation - -The Helm client and library is written in the Go programming language. - -The library uses the Kubernetes client library to communicate with Kubernetes. Currently, -that library uses REST+JSON. It stores information in Secrets located inside of Kubernetes. -It does not need its own database. - -Configuration files are, when possible, written in YAML. diff --git a/docs/chart_best_practices/README.md b/docs/chart_best_practices/README.md deleted file mode 100644 index ee064717e..000000000 --- a/docs/chart_best_practices/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# The Chart Best Practices Guide - -This guide covers the Helm Team's considered best practices for creating charts. -It focuses on how charts should be structured. - -We focus primarily on best practices for charts that may be publicly deployed. -We know that many charts are for internal-use only, and authors of such charts -may find that their internal interests override our suggestions here. - -## Table of Contents - -- [General Conventions](conventions.md): Learn about general chart conventions. -- [Values Files](values.md): See the best practices for structuring `values.yaml`. -- [Templates](templates.md): Learn some of the best techniques for writing templates. -- [Dependencies](requirements.md): Follow best practices for `dependencies` declared in `Chart.yaml`. -- [Labels and Annotations](labels.md): Helm has a _heritage_ of labeling and annotating. -- Kubernetes Resources: - - [Pods and Pod Specs](pods.md): See the best practices for working with pod specifications. - - [Role-Based Access Control](rbac.md): Guidance on creating and using service accounts, roles, and role bindings. - - [Third Party Resources](third_party_resources.md): Third Party Resources (TPRs) have their own associated best practices. - diff --git a/docs/chart_best_practices/conventions.md b/docs/chart_best_practices/conventions.md deleted file mode 100644 index c295725b1..000000000 --- a/docs/chart_best_practices/conventions.md +++ /dev/null @@ -1,39 +0,0 @@ -# General Conventions - -This part of the Best Practices Guide explains general conventions. - -## Chart Names - -Chart names should be lower case letters and numbers. Words _may_ be separated with dashes (-): - -Examples: - -``` -drupal -nginx-lego -aws-cluster-autoscaler -``` - -Neither uppercase letters nor underscores should be used in chart names. Dots should not be used in chart names. - -The directory that contains a chart MUST have the same name as the chart. Thus, the chart `nginx-lego` MUST be created in a directory called `nginx-lego/`. This is not merely a stylistic detail, but a requirement of the Helm Chart format. - -## Version Numbers - -Wherever possible, Helm uses [SemVer 2](http://semver.org) to represent version numbers. (Note that Docker image tags do not necessarily follow SemVer, and are thus considered an unfortunate exception to the rule.) - -When SemVer versions are stored in Kubernetes labels, we conventionally alter the `+` character to an `_` character, as labels do not allow the `+` sign as a value. - -## Formatting YAML - -YAML files should be indented using _two spaces_ (and never tabs). - -## Usage of the Words Helm and Chart - -There are a few small conventions followed for using the words Helm and helm. - -- Helm refers to the project, and is often used as an umbrella term -- `helm` refers to the client-side command -- The term 'chart' does not need to be capitalized, as it is not a proper noun. - -When in doubt, use _Helm_ (with an uppercase 'H'). diff --git a/docs/chart_best_practices/custom_resource_definitions.md b/docs/chart_best_practices/custom_resource_definitions.md deleted file mode 100644 index fc390e258..000000000 --- a/docs/chart_best_practices/custom_resource_definitions.md +++ /dev/null @@ -1,37 +0,0 @@ -# Custom Resource Definitions - -This section of the Best Practices Guide deals with creating and using Custom Resource Definition -objects. - -When working with Custom Resource Definitions (CRDs), it is important to distinguish -two different pieces: - -- There is a declaration of a CRD. This is the YAML file that has the kind `CustomResourceDefinition` -- Then there are resources that _use_ the CRD. Say a CRD defines `foo.example.com/v1`. Any resource - that has `apiVersion: example.com/v1` and kind `Foo` is a resource that uses the CRD. - -## Install a CRD Declaration Before Using the Resource - -Helm is optimized to load as many resources into Kubernetes as fast as possible. -By design, Kubernetes can take an entire set of manifests and bring them all -online (this is called the reconciliation loop). - -But there's a difference with CRDs. - -For a CRD, the declaration must be registered before any resources of that CRDs -kind(s) can be used. And the registration process sometimes takes a few seconds. - -### Method 1: Separate Charts - -One way to do this is to put the CRD definition in one chart, and then put any -resources that use that CRD in _another_ chart. - -In this method, each chart must be installed separately. - -### Method 2: Pre-install Hooks - -To package the two together, add a `pre-install` hook to the CRD definition so -that it is fully installed before the rest of the chart is executed. - -Note that if you create the CRD with a `pre-install` hook, that CRD definition -will not be uninstalled when `helm uninstall` is run. diff --git a/docs/chart_best_practices/labels.md b/docs/chart_best_practices/labels.md deleted file mode 100644 index 226d7fb1c..000000000 --- a/docs/chart_best_practices/labels.md +++ /dev/null @@ -1,36 +0,0 @@ -# Labels and Annotations - -This part of the Best Practices Guide discusses the best practices for using -labels and annotations in your chart. - -## Is it a Label or an Annotation? - -An item of metadata should be a label under the following conditions: - -- It is used by Kubernetes to identify this resource -- It is useful to expose to operators for the purpose of querying the system. - -For example, we suggest using `helm.sh/chart: NAME-VERSION` as a label so that operators -can conveniently find all of the instances of a particular chart to use. - -If an item of metadata is not used for querying, it should be set as an annotation -instead. - -Helm hooks are always annotations. - -## Standard Labels - -The following table defines common labels that Helm charts use. Helm itself never requires that a particular label be present. Labels that are marked REC -are recommended, and _should_ be placed onto a chart for global consistency. Those marked OPT are optional. These are idiomatic or commonly in use, but are not relied upon frequently for operational purposes. - -Name|Status|Description ------|------|---------- -`app.kubernetes.io/name` | REC | This should be the app name, reflecting the entire app. Usually `{{ template "name" . }}` is used for this. This is used by many Kubernetes manifests, and is not Helm-specific. -`helm.sh/chart` | REC | This should be the chart name and version: `{{ .Chart.Name }}-{{ .Chart.Version \| replace "+" "_" }}`. -`app.kubernetes.io/managed-by` | REC | This should always be set to `{{ .Release.Service }}`. It is for finding all things managed by Tiller. -`app.kubernetes.io/instance` | REC | This should be the `{{ .Release.Name }}`. It aid in differentiating between different instances of the same application. -`app.kubernetes.io/version` | OPT | The version of the app and can be set to `{{ .Chart.AppVersion }}`. -`app.kubernetes.io/component` | OPT | This is a common label for marking the different roles that pieces may play in an application. For example, `app.kubernetes.io/component: frontend`. -`app.kubernetes.io/part-of` | OPT | When multiple charts or pieces of software are used together to make one application. For example, application software and a database to produce a website. This can be set to the top level application being supported. - -You can find more information on the Kubernetes labels, prefixed with `app.kubernetes.io`, in the [Kubernetes documentation](https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/). diff --git a/docs/chart_best_practices/pods.md b/docs/chart_best_practices/pods.md deleted file mode 100644 index bc9b42dd9..000000000 --- a/docs/chart_best_practices/pods.md +++ /dev/null @@ -1,69 +0,0 @@ -# Pods and PodTemplates - -This part of the Best Practices Guide discusses formatting the Pod and PodTemplate -portions in chart manifests. - -The following (non-exhaustive) list of resources use PodTemplates: - -- Deployment -- ReplicationController -- ReplicaSet -- DaemonSet -- StatefulSet - -## Images - -A container image should use a fixed tag or the SHA of the image. It should not use the tags `latest`, `head`, `canary`, or other tags that are designed to be "floating". - - -Images _may_ be defined in the `values.yaml` file to make it easy to swap out images. - -``` -image: {{ .Values.redisImage | quote }} -``` - -An image and a tag _may_ be defined in `values.yaml` as two separate fields: - -``` -image: "{{ .Values.redisImage }}:{{ .Values.redisTag }}" -``` - -## ImagePullPolicy - -`helm create` sets the `imagePullPolicy` to `IfNotPresent` by default by doing the following in your `deployment.yaml`: - -```yaml -imagePullPolicy: {{ .Values.image.pullPolicy }} -``` - -And `values.yaml`: - -```yaml -pullPolicy: IfNotPresent -``` - -Similarly, Kubernetes defaults the `imagePullPolicy` to `IfNotPresent` if it is not defined at all. If you want a value other than `IfNotPresent`, simply update the value in `values.yaml` to your desired value. - - -## PodTemplates Should Declare Selectors - -All PodTemplate sections should specify a selector. For example: - -```yaml -selector: - matchLabels: - app.kubernetes.io/name: MyName -template: - metadata: - labels: - app.kubernetes.io/name: MyName -``` - -This is a good practice because it makes the relationship between the set and -the pod. - -But this is even more important for sets like Deployment. -Without this, the _entire_ set of labels is used to select matching pods, and -this will break if you use labels that change, like version or release date. - - diff --git a/docs/chart_best_practices/rbac.md b/docs/chart_best_practices/rbac.md deleted file mode 100644 index d699e4fdd..000000000 --- a/docs/chart_best_practices/rbac.md +++ /dev/null @@ -1,63 +0,0 @@ -# Role-Based Access Control - -This part of the Best Practices Guide discusses the creation and formatting of RBAC resources in chart manifests. - -RBAC resources are: - -- ServiceAccount (namespaced) -- Role (namespaced) -- ClusterRole -- RoleBinding (namespaced) -- ClusterRoleBinding - -## YAML Configuration - -RBAC and ServiceAccount configuration should happen under separate keys. They are separate things. Splitting these two concepts out in the YAML disambiguates them and make this clearer. - -```yaml -rbac: - # Specifies whether RBAC resources should be created - create: true - -serviceAccount: - # Specifies whether a ServiceAccount should be created - create: true - # The name of the ServiceAccount to use. - # If not set and create is true, a name is generated using the fullname template - name: -``` - -This structure can be extended for more complex charts that require multiple ServiceAccounts. - -```yaml -serviceAccounts: - client: - create: true - name: - server: - create: true - name: -``` - -## RBAC Resources Should be Created by Default - -`rbac.create` should be a boolean value controlling whether RBAC resources are created. The default should be `true`. Users who wish to manage RBAC access controls themselves can set this value to `false` (in which case see below). - -## Using RBAC Resources - -`serviceAccount.name` should set to the name of the ServiceAccount to be used by access-controlled resources created by the chart. If `serviceAccount.create` is true, then a ServiceAccount with this name should be created. If the name is not set, then a name is generated using the `fullname` template, If `serviceAccount.create` is false, then it should not be created, but it should still be associated with the same resources so that manually-created RBAC resources created later that reference it will function correctly. If `serviceAccount.create` is false and the name is not specified, then the default ServiceAccount is used. - -The following helper template should be used for the ServiceAccount. - -```yaml -{{/* -Create the name of the service account to use -*/}} -{{- define "mychart.serviceAccountName" -}} -{{- if .Values.serviceAccount.create -}} - {{ default (include "mychart.fullname" .) .Values.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.serviceAccount.name }} -{{- end -}} -{{- end -}} -``` diff --git a/docs/chart_best_practices/requirements.md b/docs/chart_best_practices/requirements.md deleted file mode 100644 index 1c5b88f53..000000000 --- a/docs/chart_best_practices/requirements.md +++ /dev/null @@ -1,47 +0,0 @@ -# Dependencies - -This section of the guide covers best practices for `dependencies` declared in `Chart.yaml`. - -## Versions - -Where possible, use version ranges instead of pinning to an exact version. The suggested default is to use a patch-level version match: - -```yaml -version: ~1.2.3 -``` - -This will match version `1.2.3` and any patches to that release. In other words, `~1.2.3` is equivalent to `>= 1.2.3, < 1.3.0` - -For the complete version matching syntax, please see the [semver documentation](https://github.com/Masterminds/semver#checking-version-constraints) - -### Repository URLs - -Where possible, use `https://` repository URLs, followed by `http://` URLs. - -If the repository has been added to the repository index file, the repository name can be used as an alias of URL. Use `alias:` or `@` followed by repository names. - -File URLs (`file://...`) are considered a "special case" for charts that are assembled by a fixed deployment pipeline. Charts that use `file://` are not allowed in the official Helm repository. - -## Conditions and Tags - -Conditions or tags should be added to any dependencies that _are optional_. - -The preferred form of a condition is: - -```yaml -condition: somechart.enabled -``` - -Where `somechart` is the chart name of the dependency. - -When multiple subcharts (dependencies) together provide an optional or swappable feature, those charts should share the same tags. - -For example, if both `nginx` and `memcached` together provided performance optimizations for the main app in the chart, and were required to both be present when that feature is enabled, then they might both have a -tags section like this: - -``` -tags: - - webaccelerator -``` - -This allows a user to turn that feature on and off with one tag. diff --git a/docs/chart_best_practices/templates.md b/docs/chart_best_practices/templates.md deleted file mode 100644 index 7b21c5fea..000000000 --- a/docs/chart_best_practices/templates.md +++ /dev/null @@ -1,198 +0,0 @@ -# Templates - -This part of the Best Practices Guide focuses on templates. - -## Structure of templates/ - -The templates directory should be structured as follows: - -- Template files should have the extension `.yaml` if they produce YAML output. The - extension `.tpl` may be used for template files that produce no formatted content. -- Template file names should use dashed notation (`my-example-configmap.yaml`), not camelcase. -- Each resource definition should be in its own template file. -- Template file names should reflect the resource kind in the name. e.g. `foo-pod.yaml`, - `bar-svc.yaml` - -## Names of Defined Templates - -Defined templates (templates created inside a `{{ define }} ` directive) are -globally accessible. That means that a chart and all of its subcharts will have -access to all of the templates created with `{{ define }}`. - -For that reason, _all defined template names should be namespaced._ - -Correct: - -```yaml -{{- define "nginx.fullname" }} -{{/* ... */}} -{{ end -}} -``` - -Incorrect: - -```yaml -{{- define "fullname" -}} -{{/* ... */}} -{{ end -}} -``` -It is highly recommended that new charts are created via `helm create` command as the template names are automatically defined as per this best practice. - -## Formatting Templates - -Templates should be indented using _two spaces_ (never tabs). - -Template directives should have whitespace after the opening braces and before the -closing braces: - -Correct: -``` -{{ .foo }} -{{ print "foo" }} -{{- print "bar" -}} -``` - -Incorrect: -``` -{{.foo}} -{{print "foo"}} -{{-print "bar"-}} -``` - -Templates should chomp whitespace where possible: - -``` -foo: - {{- range .Values.items }} - {{ . }} - {{ end -}} -``` - -Blocks (such as control structures) may be indented to indicate flow of the template code. - -``` -{{ if $foo -}} - {{- with .Bar }}Hello{{ end -}} -{{- end -}} -``` - -However, since YAML is a whitespace-oriented language, it is often not possible for code indentation to follow that convention. - -## Whitespace in Generated Templates - -It is preferable to keep the amount of whitespace in generated templates to -a minimum. In particular, numerous blank lines should not appear adjacent to each -other. But occasional empty lines (particularly between logical sections) is -fine. - -This is best: - -```yaml -apiVersion: batch/v1 -kind: Job -metadata: - name: example - labels: - first: first - second: second -``` - -This is okay: - -```yaml -apiVersion: batch/v1 -kind: Job - -metadata: - name: example - - labels: - first: first - second: second - -``` - -But this should be avoided: - -```yaml -apiVersion: batch/v1 -kind: Job - -metadata: - name: example - - - - - - labels: - first: first - - second: second - -``` - -## Comments (YAML Comments vs. Template Comments) - -Both YAML and Helm Templates have comment markers. - -YAML comments: -```yaml -# This is a comment -type: sprocket -``` - -Template Comments: -```yaml -{{- /* -This is a comment. -*/ -}} -type: frobnitz -``` - -Template comments should be used when documenting features of a template, such as explaining a defined template: - -```yaml -{{- /* -mychart.shortname provides a 6 char truncated version of the release name. -*/ -}} -{{ define "mychart.shortname" -}} -{{ .Release.Name | trunc 6 }} -{{- end -}} - -``` - -Inside of templates, YAML comments may be used when it is useful for Helm users to (possibly) see the comments during debugging. - -``` -# This may cause problems if the value is more than 100Gi -memory: {{ .Values.maxMem | quote }} -``` - -The comment above is visible when the user runs `helm install --debug`, while -comments specified in `{{- /* */ -}}` sections are not. - -## Use of JSON in Templates and Template Output - -YAML is a superset of JSON. In some cases, using a JSON syntax can be more -readable than other YAML representations. - -For example, this YAML is closer to the normal YAML method of expressing lists: - -```yaml -arguments: - - "--dirname" - - "/foo" -``` - -But it is easier to read when collapsed into a JSON list style: - -```yaml -arguments: ["--dirname", "/foo"] -``` - -Using JSON for increased legibility is good. However, JSON syntax should not -be used for representing more complex constructs. - -When dealing with pure JSON embedded inside of YAML (such as init container -configuration), it is of course appropriate to use the JSON format. diff --git a/docs/chart_best_practices/values.md b/docs/chart_best_practices/values.md deleted file mode 100644 index 2962e7d45..000000000 --- a/docs/chart_best_practices/values.md +++ /dev/null @@ -1,155 +0,0 @@ -# Values - -This part of the best practices guide covers using values. In this part of the -guide, we provide recommendations on how you should structure and use your -values, with focus on designing a chart's `values.yaml` file. - -## Naming Conventions - -Variables names should begin with a lowercase letter, and words should be -separated with camelcase: - -Correct: - -```yaml -chicken: true -chickenNoodleSoup: true -``` - -Incorrect: - -```yaml -Chicken: true # initial caps may conflict with built-ins -chicken-noodle-soup: true # do not use hyphens in the name -``` - -Note that all of Helm's built-in variables begin with an uppercase letter to -easily distinguish them from user-defined values: `.Release.Name`, -`.Capabilities.KubeVersion`. - -## Flat or Nested Values - -YAML is a flexible format, and values may be nested deeply or flattened. - -Nested: - -```yaml -server: - name: nginx - port: 80 -``` - -Flat: - -```yaml -serverName: nginx -serverPort: 80 -``` - -In most cases, flat should be favored over nested. The reason for this is that -it is simpler for template developers and users. - - -For optimal safety, a nested value must be checked at every level: - -``` -{{ if .Values.server }} - {{ default "none" .Values.server.name }} -{{ end }} -``` - -For every layer of nesting, an existence check must be done. But for flat -configuration, such checks can be skipped, making the template easier to read -and use. - -``` -{{ default "none" .Values.serverName }} -``` - -When there are a large number of related variables, and at least one of them -is non-optional, nested values may be used to improve readability. - -## Make Types Clear - -YAML's type coercion rules are sometimes counterintuitive. For example, -`foo: false` is not the same as `foo: "false"`. Large integers like `foo: 12345678` -will get converted to scientific notation in some cases. - -The easiest way to avoid type conversion errors is to be explicit about strings, -and implicit about everything else. Or, in short, _quote all strings_. - -Often, to avoid the integer casting issues, it is advantageous to store your -integers as strings as well, and use `{{ int $value }}` in the template to convert -from a string back to an integer. - -In most cases, explicit type tags are respected, so `foo: !!string 1234` should -treat `1234` as a string. _However_, the YAML parser consumes tags, so the type -data is lost after one parse. - -## Consider How Users Will Use Your Values - -There are three potential sources of values: - -- A chart's `values.yaml` file -- A values file supplied by `helm install -f` or `helm upgrade -f` -- The values passed to a `--set` or `--set-string` flag on `helm install` or `helm upgrade` - -When designing the structure of your values, keep in mind that users of your -chart may want to override them via either the `-f` flag or with the `--set` -option. - -Since `--set` is more limited in expressiveness, the first guidelines for writing -your `values.yaml` file is _make it easy to override from `--set`_. - -For this reason, it's often better to structure your values file using maps. - -Difficult to use with `--set`: - -```yaml -servers: - - name: foo - port: 80 - - name: bar - port: 81 -``` - -The above cannot be expressed with `--set` in Helm `<=2.4`. In Helm 2.5, the -accessing the port on foo is `--set servers[0].port=80`. Not only is it harder -for the user to figure out, but it is prone to errors if at some later time the -order of the `servers` is changed. - -Easy to use: - -```yaml -servers: - foo: - port: 80 - bar: - port: 81 -``` - -Accessing foo's port is much more obvious: `--set servers.foo.port=80`. - -## Document 'values.yaml' - -Every defined property in 'values.yaml' should be documented. The documentation string should begin with the name of the property that it describes, and then give at least a one-sentence description. - -Incorrect: - -``` -# the host name for the webserver -serverHost = example -serverPort = 9191 -``` - -Correct: - -``` -# serverHost is the host name for the webserver -serverHost = example -# serverPort is the HTTP listener port for the webserver -serverPort = 9191 - -``` - -Beginning each comment with the name of the parameter it documents makes it easy to grep out documentation, and will enable documentation tools to reliably correlate doc strings with the parameters they describe. diff --git a/docs/chart_repository.md b/docs/chart_repository.md deleted file mode 100644 index 5a6d6b7c8..000000000 --- a/docs/chart_repository.md +++ /dev/null @@ -1,294 +0,0 @@ -# The Chart Repository Guide - -This section explains how to create and work with Helm chart repositories. At a -high level, a chart repository is a location where packaged charts can be -stored and shared. - -The official chart repository is maintained by the -[Kubernetes Charts](https://github.com/helm/charts), and we welcome -participation. But Helm also makes it easy to create and run your own chart -repository. This guide explains how to do so. - -## Prerequisites - -* Go through the [Quickstart](quickstart.md) Guide -* Read through the [Charts](charts.md) document - -## Create a chart repository - -A _chart repository_ is an HTTP server that houses an `index.yaml` file and -optionally some packaged charts. When you're ready to share your charts, the -preferred way to do so is by uploading them to a chart repository. - -**Note:** For Helm 2.0.0, chart repositories do not have any intrinsic -authentication. There is an [issue tracking progress](https://github.com/helm/helm/issues/1038) -in GitHub. - -Because a chart repository can be any HTTP server that can serve YAML and tar -files and can answer GET requests, you have a plethora of options when it comes -down to hosting your own chart repository. For example, you can use a Google -Cloud Storage (GCS) bucket, Amazon S3 bucket, Github Pages, or even create your -own web server. - -### The chart repository structure - -A chart repository consists of packaged charts and a special file called -`index.yaml` which contains an index of all of the charts in the repository. -Frequently, the charts that `index.yaml` describes are also hosted on the same -server, as are the [provenance files](provenance.md). - -For example, the layout of the repository `https://example.com/charts` might -look like this: - -``` -charts/ - | - |- index.yaml - | - |- alpine-0.1.2.tgz - | - |- alpine-0.1.2.tgz.prov -``` - -In this case, the index file would contain information about one chart, the Alpine -chart, and provide the download URL `https://example.com/charts/alpine-0.1.2.tgz` -for that chart. - -It is not required that a chart package be located on the same server as the -`index.yaml` file. However, doing so is often the easiest. - -### The index file - -The index file is a yaml file called `index.yaml`. It -contains some metadata about the package, including the contents of a -chart's `Chart.yaml` file. A valid chart repository must have an index file. The -index file contains information about each chart in the chart repository. The -`helm repo index` command will generate an index file based on a given local -directory that contains packaged charts. - -This is an example of an index file: - -``` -apiVersion: v1 -entries: - alpine: - - created: 2016-10-06T16:23:20.499814565-06:00 - description: Deploy a basic Alpine Linux pod - digest: 99c76e403d752c84ead610644d4b1c2f2b453a74b921f422b9dcb8a7c8b559cd - home: https://helm.sh/helm - name: alpine - sources: - - https://github.com/helm/helm - urls: - - https://technosophos.github.io/tscharts/alpine-0.2.0.tgz - version: 0.2.0 - - created: 2016-10-06T16:23:20.499543808-06:00 - description: Deploy a basic Alpine Linux pod - digest: 515c58e5f79d8b2913a10cb400ebb6fa9c77fe813287afbacf1a0b897cd78727 - home: https://helm.sh/helm - name: alpine - sources: - - https://github.com/helm/helm - urls: - - https://technosophos.github.io/tscharts/alpine-0.1.0.tgz - version: 0.1.0 - nginx: - - created: 2016-10-06T16:23:20.499543808-06:00 - description: Create a basic nginx HTTP server - digest: aaff4545f79d8b2913a10cb400ebb6fa9c77fe813287afbacf1a0b897cdffffff - home: https://helm.sh/helm - name: nginx - sources: - - https://github.com/helm/charts - urls: - - https://technosophos.github.io/tscharts/nginx-1.1.0.tgz - version: 1.1.0 -generated: 2016-10-06T16:23:20.499029981-06:00 -``` - -A generated index and packages can be served from a basic webserver. You can test -things out locally with the `helm serve` command, which starts a local server. - -```console -$ helm serve --repo-path ./charts -Regenerating index. This may take a moment. -Now serving you on 127.0.0.1:8879 -``` - -The above starts a local webserver, serving the charts it finds in `./charts`. The -serve command will automatically generate an `index.yaml` file for you during -startup. - -## Hosting Chart Repositories - -This part shows several ways to serve a chart repository. - -### Google Cloud Storage - -The first step is to **create your GCS bucket**. We'll call ours -`fantastic-charts`. - -![Create a GCS Bucket](images/create-a-bucket.png) - -Next, make your bucket public by **editing the bucket permissions**. - -![Edit Permissions](images/edit-permissions.png) - -Insert this line item to **make your bucket public**: - -![Make Bucket Public](images/make-bucket-public.png) - -Congratulations, now you have an empty GCS bucket ready to serve charts! - -You may upload your chart repository using the Google Cloud Storage command line -tool, or using the GCS web UI. This is the technique the official Kubernetes -Charts repository hosts its charts, so you may want to take a -[peek at that project](https://github.com/helm/charts) if you get stuck. - -**Note:** A public GCS bucket can be accessed via simple HTTPS at this address -`https://bucket-name.storage.googleapis.com/`. - -### JFrog Artifactory - -You can also set up chart repositories using JFrog Artifactory. -Read more about chart repositories with JFrog Artifactory [here](https://www.jfrog.com/confluence/display/RTF/Helm+Chart+Repositories) - -### Github Pages example - -In a similar way you can create charts repository using GitHub Pages. - -GitHub allows you to serve static web pages in two different ways: - -- By configuring a project to serve the contents of its `docs/` directory -- By configuring a project to serve a particular branch - -We'll take the second approach, though the first is just as easy. - -The first step will be to **create your gh-pages branch**. You can do that -locally as. - -```console -$ git checkout -b gh-pages -``` - -Or via web browser using **Branch** button on your Github repository: - -![Create Github Pages branch](images/create-a-gh-page-button.png) - -Next, you'll want to make sure your **gh-pages branch** is set as Github Pages, -click on your repo **Settings** and scroll down to **Github pages** section and -set as per below: - -![Create Github Pages branch](images/set-a-gh-page.png) - -By default **Source** usually gets set to **gh-pages branch**. If this is not set by default, then select it. - -You can use a **custom domain** there if you wish so. - -And check that **Enforce HTTPS** is ticked, so the **HTTPS** will be used when -charts are served. - -In such setup you can use **master branch** to store your charts code, and -**gh-pages branch** as charts repository, e.g.: -`https://USERNAME.github.io/REPONAME`. The demonstration [TS Charts](https://github.com/technosophos/tscharts) -repository is accessible at `https://technosophos.github.io/tscharts/`. - -### Ordinary web servers - -To configure an ordinary web server to serve Helm charts, you merely need to do -the following: - -- Put your index and charts in a directory that the server can serve -- Make sure the `index.yaml` file can be accessed with no authentication requirement -- Make sure `yaml` files are served with the correct content type (`text/yaml` or - `text/x-yaml`) - -For example, if you want to serve your charts out of `$WEBROOT/charts`, make sure -there is a `charts/` directory in your web root, and put the index file and -charts inside of that folder. - - -## Managing Chart Repositories - -Now that you have a chart repository, the last part of this guide explains how -to maintain charts in that repository. - - -### Store charts in your chart repository - -Now that you have a chart repository, let's upload a chart and an index file to -the repository. Charts in a chart repository must be packaged -(`helm package chart-name/`) and versioned correctly (following -[SemVer 2](https://semver.org/) guidelines). - -These next steps compose an example workflow, but you are welcome to use -whatever workflow you fancy for storing and updating charts in your chart -repository. - -Once you have a packaged chart ready, create a new directory, and move your -packaged chart to that directory. - -```console -$ helm package docs/examples/alpine/ -$ mkdir fantastic-charts -$ mv alpine-0.1.0.tgz fantastic-charts/ -$ helm repo index fantastic-charts --url https://fantastic-charts.storage.googleapis.com -``` - -The last command takes the path of the local directory that you just created and -the URL of your remote chart repository and composes an `index.yaml` file inside the -given directory path. - -Now you can upload the chart and the index file to your chart repository using -a sync tool or manually. If you're using Google Cloud Storage, check out this -[example workflow](chart_repository_sync_example.md) using the gsutil client. For -GitHub, you can simply put the charts in the appropriate destination branch. - -### Add new charts to an existing repository - -Each time you want to add a new chart to your repository, you must regenerate -the index. The `helm repo index` command will completely rebuild the `index.yaml` -file from scratch, including only the charts that it finds locally. - -However, you can use the `--merge` flag to incrementally add new charts to an -existing `index.yaml` file (a great option when working with a remote repository -like GCS). Run `helm repo index --help` to learn more, - -Make sure that you upload both the revised `index.yaml` file and the chart. And -if you generated a provenance file, upload that too. - -### Share your charts with others - -When you're ready to share your charts, simply let someone know what the URL of -your repository is. - -From there, they will add the repository to their helm client via the `helm -repo add [NAME] [URL]` command with any name they would like to use to -reference the repository. - -```console -$ helm repo add fantastic-charts https://fantastic-charts.storage.googleapis.com -$ helm repo list -fantastic-charts https://fantastic-charts.storage.googleapis.com -``` - -If the charts are backed by HTTP basic authentication, you can also supply the -username and password here: - -```console -$ helm repo add fantastic-charts https://fantastic-charts.storage.googleapis.com --username my-username --password my-password -$ helm repo list -fantastic-charts https://fantastic-charts.storage.googleapis.com -``` - -**Note:** A repository will not be added if it does not contain a valid -`index.yaml`. - -After that, your users will be able to search through your charts. After you've updated -the repository, they can use the `helm repo update` command to get the latest -chart information. - -*Under the hood, the `helm repo add` and `helm repo update` commands are -fetching the index.yaml file and storing them in the -`$HELM_HOME/repository/cache/` directory. This is where the `helm search` -function finds information about charts.* diff --git a/docs/chart_repository_sync_example.md b/docs/chart_repository_sync_example.md deleted file mode 100644 index 8a83d7408..000000000 --- a/docs/chart_repository_sync_example.md +++ /dev/null @@ -1,74 +0,0 @@ -# Syncing Your Chart Repository -*Note: This example is specifically for a Google Cloud Storage (GCS) bucket which serves a chart repository.* - -## Prerequisites -* Install the [gsutil](https://cloud.google.com/storage/docs/gsutil) tool. *We rely heavily on the gsutil rsync functionality* -* Be sure to have access to the Helm binary -* _Optional: We recommend you set [object versioning](https://cloud.google.com/storage/docs/gsutil/addlhelp/ObjectVersioningandConcurrencyControl#top_of_page) on your GCS bucket in case you accidentally delete something._ - -## Set up a local chart repository directory -Create a local directory like we did in [the chart repository guide](chart_repository.md), and place your packaged charts in that directory. - -For example: -```console -$ mkdir fantastic-charts -$ mv alpine-0.1.0.tgz fantastic-charts/ -``` - -## Generate an updated index.yaml -Use Helm to generate an updated index.yaml file by passing in the directory path and the url of the remote repository to the `helm repo index` command like this: - -```console -$ helm repo index fantastic-charts/ --url https://fantastic-charts.storage.googleapis.com -``` -This will generate an updated index.yaml file and place in the `fantastic-charts/` directory. - -## Sync your local and remote chart repositories -Upload the contents of the directory to your GCS bucket by running `scripts/sync-repo.sh` and pass in the local directory name and the GCS bucket name. - -For example: -```console -$ pwd -/Users/me/code/go/src/helm.sh/helm -$ scripts/sync-repo.sh fantastic-charts/ fantastic-charts -Getting ready to sync your local directory (fantastic-charts/) to a remote repository at gs://fantastic-charts -Verifying Prerequisites.... -Thumbs up! Looks like you have gsutil. Let's continue. -Building synchronization state... -Starting synchronization -Would copy file://fantastic-charts/alpine-0.1.0.tgz to gs://fantastic-charts/alpine-0.1.0.tgz -Would copy file://fantastic-charts/index.yaml to gs://fantastic-charts/index.yaml -Are you sure you would like to continue with these changes?? [y/N]} y -Building synchronization state... -Starting synchronization -Copying file://fantastic-charts/alpine-0.1.0.tgz [Content-Type=application/x-tar]... -Uploading gs://fantastic-charts/alpine-0.1.0.tgz: 740 B/740 B -Copying file://fantastic-charts/index.yaml [Content-Type=application/octet-stream]... -Uploading gs://fantastic-charts/index.yaml: 347 B/347 B -Congratulations your remote chart repository now matches the contents of fantastic-charts/ -``` -## Updating your chart repository -You'll want to keep a local copy of the contents of your chart repository or use `gsutil rsync` to copy the contents of your remote chart repository to a local directory. - -For example: -```console -$ gsutil rsync -d -n gs://bucket-name local-dir/ # the -n flag does a dry run -Building synchronization state... -Starting synchronization -Would copy gs://bucket-name/alpine-0.1.0.tgz to file://local-dir/alpine-0.1.0.tgz -Would copy gs://bucket-name/index.yaml to file://local-dir/index.yaml - -$ gsutil rsync -d gs://bucket-name local-dir/ # performs the copy actions -Building synchronization state... -Starting synchronization -Copying gs://bucket-name/alpine-0.1.0.tgz... -Downloading file://local-dir/alpine-0.1.0.tgz: 740 B/740 B -Copying gs://bucket-name/index.yaml... -Downloading file://local-dir/index.yaml: 346 B/346 B -``` - - -Helpful Links: -* Documentation on [gsutil rsync](https://cloud.google.com/storage/docs/gsutil/commands/rsync#description) -* [The Chart Repository Guide](chart_repository.md) -* Documentation on [object versioning and concurrency control](https://cloud.google.com/storage/docs/gsutil/addlhelp/ObjectVersioningandConcurrencyControl#overview) in Google Cloud Storage diff --git a/docs/chart_template_guide/accessing_files.md b/docs/chart_template_guide/accessing_files.md deleted file mode 100644 index 3d46f3d1e..000000000 --- a/docs/chart_template_guide/accessing_files.md +++ /dev/null @@ -1,209 +0,0 @@ -# Accessing Files Inside Templates - -In the previous section we looked at several ways to create and access named templates. This makes it easy to import one template from within another template. But sometimes it is desirable to import a _file that is not a template_ and inject its contents without sending the contents through the template renderer. - -Helm provides access to files through the `.Files` object. Before we get going with the template examples, though, there are a few things to note about how this works: - -- It is okay to add extra files to your Helm chart. These files will be bundled. Be careful, though. Charts must be smaller than 1M because of the storage limitations of Kubernetes objects. -- Some files cannot be accessed through the `.Files` object, usually for security reasons. - - Files in `templates/` cannot be accessed. - - Files excluded using `.helmignore` cannot be accessed. -- Charts do not preserve UNIX mode information, so file-level permissions will have no impact on the availability of a file when it comes to the `.Files` object. - - - - - -- [Basic example](#basic-example) -- [Path helpers](#path-helpers) -- [Glob patterns](#glob-patterns) -- [ConfigMap and Secrets utility functions](#configmap-and-secrets-utility-functions) -- [Encoding](#encoding) -- [Lines](#lines) - - - -## Basic example - -With those caveats behind, let's write a template that reads three files into our ConfigMap. To get started, we will add three files to the chart, putting all three directly inside of the `mychart/` directory. - -`config1.toml`: - -```toml -message = Hello from config 1 -``` - -`config2.toml`: - -```toml -message = This is config 2 -``` - -`config3.toml`: - -```toml -message = Goodbye from config 3 -``` - -Each of these is a simple TOML file (think old-school Windows INI files). We know the names of these files, so we can use a `range` function to loop through them and inject their contents into our ConfigMap. - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap -data: - {{- $files := .Files }} - {{- range tuple "config1.toml" "config2.toml" "config3.toml" }} - {{ . }}: |- - {{ $files.Get . }} - {{- end }} -``` - -This config map uses several of the techniques discussed in previous sections. For example, we create a `$files` variable to hold a reference to the `.Files` object. We also use the `tuple` function to create a list of files that we loop through. Then we print each file name (`{{.}}: |-`) followed by the contents of the file `{{ $files.Get . }}`. - -Running this template will produce a single ConfigMap with the contents of all three files: - -```yaml -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: quieting-giraf-configmap -data: - config1.toml: |- - message = Hello from config 1 - - config2.toml: |- - message = This is config 2 - - config3.toml: |- - message = Goodbye from config 3 -``` - -## Path helpers - -When working with files, it can be very useful to perform some standard -operations on the file paths themselves. To help with this, Helm imports many of -the functions from Go's [path](https://golang.org/pkg/path/) package for your -use. They are all accessible with the same names as in the Go package, but -with a lowercase first letter. For example, `Base` becomes `base`, etc. - -The imported functions are: -- Base -- Dir -- Ext -- IsAbs -- Clean - -## Glob patterns - -As your chart grows, you may find you have a greater need to organize your -files more, and so we provide a `Files.Glob(pattern string)` method to assist -in extracting certain files with all the flexibility of [glob patterns](https://godoc.org/github.com/gobwas/glob). - -`.Glob` returns a `Files` type, so you may call any of the `Files` methods on -the returned object. - -For example, imagine the directory structure: - -``` -foo/: - foo.txt foo.yaml - -bar/: - bar.go bar.conf baz.yaml -``` - -You have multiple options with Globs: - - -```yaml -{{ range $path := .Files.Glob "**.yaml" }} -{{ $path }}: | -{{ .Files.Get $path }} -{{ end }} -``` - -Or - -```yaml -{{ range $path, $bytes := .Files.Glob "foo/*" }} -{{ $path }}: '{{ b64enc $bytes }}' -{{ end }} -``` - -## ConfigMap and Secrets utility functions - -(Not present in version 2.0.2 or prior) - -It is very common to want to place file content into both configmaps and -secrets, for mounting into your pods at run time. To help with this, we provide a -couple utility methods on the `Files` type. - -For further organization, it is especially useful to use these methods in -conjunction with the `Glob` method. - -Given the directory structure from the [Glob](#glob-patterns) example above: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: conf -data: -{{ (.Files.Glob "foo/*").AsConfig | indent 2 }} ---- -apiVersion: v1 -kind: Secret -metadata: - name: very-secret -type: Opaque -data: -{{ (.Files.Glob "bar/*").AsSecrets | indent 2 }} -``` - -## Encoding - -You can import a file and have the template base-64 encode it to ensure successful transmission: - -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: {{ .Release.Name }}-secret -type: Opaque -data: - token: |- - {{ .Files.Get "config1.toml" | b64enc }} -``` - -The above will take the same `config1.toml` file we used before and encode it: - -```yaml -# Source: mychart/templates/secret.yaml -apiVersion: v1 -kind: Secret -metadata: - name: lucky-turkey-secret -type: Opaque -data: - token: |- - bWVzc2FnZSA9IEhlbGxvIGZyb20gY29uZmlnIDEK -``` - -## Lines - -Sometimes it is desirable to access each line of a file in your template. We -provide a convenient `Lines` method for this. - -```yaml -data: - some-file.txt: {{ range .Files.Lines "foo/bar.txt" }} - {{ . }}{{ end }} -``` - -Currently, there is no way to pass files external to the chart during `helm install`. So if you are asking users to supply data, it must be loaded using `helm install -f` or `helm install --set`. - -This discussion wraps up our dive into the tools and techniques for writing Helm templates. In the next section we will see how you can use one special file, `templates/NOTES.txt`, to send post-installation instructions to the users of your chart. - diff --git a/docs/chart_template_guide/builtin_objects.md b/docs/chart_template_guide/builtin_objects.md deleted file mode 100644 index 6c4322399..000000000 --- a/docs/chart_template_guide/builtin_objects.md +++ /dev/null @@ -1,34 +0,0 @@ -# Built-in Objects - -Objects are passed into a template from the template engine. And your code can pass objects around (we'll see examples when we look at the `with` and `range` statements). There are even a few ways to create new objects within your templates, like with the `tuple` function we'll see later. - -Objects can be simple, and have just one value. Or they can contain other objects or functions. For example. the `Release` object contains several objects (like `Release.Name`) and the `Files` object has a few functions. - -In the previous section, we use `{{.Release.Name}}` to insert the name of a release into a template. `Release` is one of the top-level objects that you can access in your templates. - -- `Release`: This object describes the release itself. It has several objects inside of it: - - `Release.Name`: The release name - - `Release.Namespace`: The namespace to be released into (if the manifest doesn’t override) - - `Release.IsUpgrade`: This is set to `true` if the current operation is an upgrade or rollback. - - `Release.IsInstall`: This is set to `true` if the current operation is an install. -- `Values`: Values passed into the template from the `values.yaml` file and from user-supplied files. By default, `Values` is empty. -- `Chart`: The contents of the `Chart.yaml` file. Any data in `Chart.yaml` will be accessible here. For example `{{.Chart.Name}}-{{.Chart.Version}}` will print out the `mychart-0.1.0`. - - The available fields are listed in the [Charts Guide](https://github.com/helm/helm/blob/master/docs/charts.md#the-chartyaml-file) -- `Files`: This provides access to all non-special files in a chart. While you cannot use it to access templates, you can use it to access other files in the chart. See the section _Accessing Files_ for more. - - `Files.Get` is a function for getting a file by name (`.Files.Get config.ini`) - - `Files.GetBytes` is a function for getting the contents of a file as an array of bytes instead of as a string. This is useful for things like images. -- `Capabilities`: This provides information about what capabilities the Kubernetes cluster supports. - - `Capabilities.APIVersions` is a set of versions. - - `Capabilities.APIVersions.Has $version` indicates whether a version (e.g., `batch/v1`) or resource (e.g., `apps/v1/Deployment`) is available on the cluster. - - `Capabilities.Kube.Version` is the Kubernetes version. - - `Capabilities.Kube` is a short form for Kubernetes version. - - `Capabilities.Kube.Major` is the Kubernetes major version. - - `Capabilities.Kube.Minor` is the Kubernetes minor version. -- `Template`: Contains information about the current template that is being executed - - `Name`: A namespaced filepath to the current template (e.g. `mychart/templates/mytemplate.yaml`) - - `BasePath`: The namespaced path to the templates directory of the current chart (e.g. `mychart/templates`). - -The values are available to any top-level template. As we will see later, this does not necessarily mean that they will be available _everywhere_. - -The built-in values always begin with a capital letter. This is in keeping with Go's naming convention. When you create your own names, you are free to use a convention that suits your team. Some teams, like the [Kubernetes Charts](https://github.com/helm/charts) team, choose to use only initial lower case letters in order to distinguish local names from those built-in. In this guide, we follow that convention. - diff --git a/docs/chart_template_guide/control_structures.md b/docs/chart_template_guide/control_structures.md deleted file mode 100644 index 3c945a849..000000000 --- a/docs/chart_template_guide/control_structures.md +++ /dev/null @@ -1,354 +0,0 @@ -# Flow Control - -Control structures (called "actions" in template parlance) provide you, the template author, with the ability to control the flow of a template's generation. Helm's template language provides the following control structures: - -- `if`/`else` for creating conditional blocks -- `with` to specify a scope -- `range`, which provides a "for each"-style loop - -In addition to these, it provides a few actions for declaring and using named template segments: - -- `define` declares a new named template inside of your template -- `template` imports a named template -- `block` declares a special kind of fillable template area - -In this section, we'll talk about `if`, `with`, and `range`. The others are covered in the "Named Templates" section later in this guide. - -## If/Else - -The first control structure we'll look at is for conditionally including blocks of text in a template. This is the `if`/`else` block. - -The basic structure for a conditional looks like this: - -``` -{{ if PIPELINE }} - # Do something -{{ else if OTHER PIPELINE }} - # Do something else -{{ else }} - # Default case -{{ end }} -``` - -Notice that we're now talking about _pipelines_ instead of values. The reason for this is to make it clear that control structures can execute an entire pipeline, not just evaluate a value. - -A pipeline is evaluated as _false_ if the value is: - -- a boolean false -- a numeric zero -- an empty string -- a `nil` (empty or null) -- an empty collection (`map`, `slice`, `tuple`, `dict`, `array`) - -Under all other conditions, the condition is true. - -Let's add a simple conditional to our ConfigMap. We'll add another setting if the drink is set to coffee: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap -data: - myvalue: "Hello World" - drink: {{ .Values.favorite.drink | default "tea" | quote }} - food: {{ .Values.favorite.food | upper | quote }} - {{ if eq .Values.favorite.drink "coffee" }}mug: true{{ end }} -``` - -Since we commented out `drink: coffee` in our last example, the output should not include a `mug: true` flag. But if we add that line back into our `values.yaml` file, the output should look like this: - -```yaml -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: eyewitness-elk-configmap -data: - myvalue: "Hello World" - drink: "coffee" - food: "PIZZA" - mug: true -``` - -## Controlling Whitespace - -While we're looking at conditionals, we should take a quick look at the way whitespace is controlled in templates. Let's take the previous example and format it to be a little easier to read: - -``` -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap -data: - myvalue: "Hello World" - drink: {{ .Values.favorite.drink | default "tea" | quote }} - food: {{ .Values.favorite.food | upper | quote }} - {{if eq .Values.favorite.drink "coffee"}} - mug: true - {{end}} -``` - -Initially, this looks good. But if we run it through the template engine, we'll get an unfortunate result: - -```console -$ helm install --dry-run --debug ./mychart -SERVER: "localhost:44134" -CHART PATH: /Users/mattbutcher/Code/Go/src/helm.sh/helm/_scratch/mychart -Error: YAML parse error on mychart/templates/configmap.yaml: error converting YAML to JSON: yaml: line 9: did not find expected key -``` - -What happened? We generated incorrect YAML because of the whitespacing above. - -```yaml -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: eyewitness-elk-configmap -data: - myvalue: "Hello World" - drink: "coffee" - food: "PIZZA" - mug: true -``` - -`mug` is incorrectly indented. Let's simply out-dent that one line, and re-run: - -``` -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap -data: - myvalue: "Hello World" - drink: {{ .Values.favorite.drink | default "tea" | quote }} - food: {{ .Values.favorite.food | upper | quote }} - {{if eq .Values.favorite.drink "coffee"}} - mug: true - {{end}} -``` - -When we sent that, we'll get YAML that is valid, but still looks a little funny: - -```yaml -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: telling-chimp-configmap -data: - myvalue: "Hello World" - drink: "coffee" - food: "PIZZA" - - mug: true - -``` - -Notice that we received a few empty lines in our YAML. Why? When the template engine runs, it _removes_ the contents inside of `{{` and `}}`, but it leaves the remaining whitespace exactly as is. - -YAML ascribes meaning to whitespace, so managing the whitespace becomes pretty important. Fortunately, Helm templates have a few tools to help. - -First, the curly brace syntax of template declarations can be modified with special characters to tell the template engine to chomp whitespace. `{{- ` (with the dash and space added) indicates that whitespace should be chomped left, while ` -}}` means whitespace to the right should be consumed. _Be careful! Newlines are whitespace!_ - -> Make sure there is a space between the `-` and the rest of your directive. `{{- 3 }}` means "trim left whitespace and print 3" while `{{-3}}` means "print -3". - -Using this syntax, we can modify our template to get rid of those new lines: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap -data: - myvalue: "Hello World" - drink: {{ .Values.favorite.drink | default "tea" | quote }} - food: {{ .Values.favorite.food | upper | quote }} - {{- if eq .Values.favorite.drink "coffee"}} - mug: true - {{- end}} -``` - -Just for the sake of making this point clear, let's adjust the above, and substitute an `*` for each whitespace that will be deleted following this rule. an `*` at the end of the line indicates a newline character that would be removed - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap -data: - myvalue: "Hello World" - drink: {{ .Values.favorite.drink | default "tea" | quote }} - food: {{ .Values.favorite.food | upper | quote }}* -**{{- if eq .Values.favorite.drink "coffee"}} - mug: true* -**{{- end}} - -``` - -Keeping that in mind, we can run our template through Helm and see the result: - -```yaml -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: clunky-cat-configmap -data: - myvalue: "Hello World" - drink: "coffee" - food: "PIZZA" - mug: true -``` - -Be careful with the chomping modifiers. It is easy to accidentally do things like this: - -```yaml - food: {{ .Values.favorite.food | upper | quote }} - {{- if eq .Values.favorite.drink "coffee" -}} - mug: true - {{- end -}} - -``` - -That will produce `food: "PIZZA"mug:true` because it consumed newlines on both sides. - -> For the details on whitespace control in templates, see the [Official Go template documentation](https://godoc.org/text/template) - -Finally, sometimes it's easier to tell the template system how to indent for you instead of trying to master the spacing of template directives. For that reason, you may sometimes find it useful to use the `indent` function (`{{indent 2 "mug:true"}}`). - -## Modifying scope using `with` - -The next control structure to look at is the `with` action. This controls variable scoping. Recall that `.` is a reference to _the current scope_. So `.Values` tells the template to find the `Values` object in the current scope. - -The syntax for `with` is similar to a simple `if` statement: - -``` -{{ with PIPELINE }} - # restricted scope -{{ end }} -``` - -Scopes can be changed. `with` can allow you to set the current scope (`.`) to a particular object. For example, we've been working with `.Values.favorites`. Let's rewrite our ConfigMap to alter the `.` scope to point to `.Values.favorites`: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap -data: - myvalue: "Hello World" - {{- with .Values.favorite }} - drink: {{ .drink | default "tea" | quote }} - food: {{ .food | upper | quote }} - {{- end }} -``` - -(Note that we removed the `if` conditional from the previous exercise) - -Notice that now we can reference `.drink` and `.food` without qualifying them. That is because the `with` statement sets `.` to point to `.Values.favorite`. The `.` is reset to its previous scope after `{{ end }}`. - -But here's a note of caution! Inside of the restricted scope, you will not be able to access the other objects from the parent scope. This, for example, will fail: - -```yaml - {{- with .Values.favorite }} - drink: {{ .drink | default "tea" | quote }} - food: {{ .food | upper | quote }} - release: {{ .Release.Name }} - {{- end }} -``` - -It will produce an error because `Release.Name` is not inside of the restricted scope for `.`. However, if we swap the last two lines, all will work as expected because the scope is reset after `{{end}}`. - -```yaml - {{- with .Values.favorite }} - drink: {{ .drink | default "tea" | quote }} - food: {{ .food | upper | quote }} - {{- end }} - release: {{ .Release.Name }} -``` - -After looking a `range`, we will take a look at template variables, which offer one solution to the scoping issue above. - -## Looping with the `range` action - -Many programming languages have support for looping using `for` loops, `foreach` loops, or similar functional mechanisms. In Helm's template language, the way to iterate through a collection is to use the `range` operator. - -To start, let's add a list of pizza toppings to our `values.yaml` file: - -```yaml -favorite: - drink: coffee - food: pizza -pizzaToppings: - - mushrooms - - cheese - - peppers - - onions -``` - -Now we have a list (called a `slice` in templates) of `pizzaToppings`. We can modify our template to print this list into our ConfigMap: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap -data: - myvalue: "Hello World" - {{- with .Values.favorite }} - drink: {{ .drink | default "tea" | quote }} - food: {{ .food | upper | quote }} - {{- end }} - toppings: |- - {{- range .Values.pizzaToppings }} - - {{ . | title | quote }} - {{- end }} - -``` - -Let's take a closer look at the `toppings:` list. The `range` function will "range over" (iterate through) the `pizzaToppings` list. But now something interesting happens. Just like `with` sets the scope of `.`, so does a `range` operator. Each time through the loop, `.` is set to the current pizza topping. That is, the first time, `.` is set to `mushrooms`. The second iteration it is set to `cheese`, and so on. - -We can send the value of `.` directly down a pipeline, so when we do `{{ . | title | quote }}`, it sends `.` to `title` (title case function) and then to `quote`. If we run this template, the output will be: - -```yaml -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: edgy-dragonfly-configmap -data: - myvalue: "Hello World" - drink: "coffee" - food: "PIZZA" - toppings: |- - - "Mushrooms" - - "Cheese" - - "Peppers" - - "Onions" -``` - -Now, in this example we've done something tricky. The `toppings: |-` line is declaring a multi-line string. So our list of toppings is actually not a YAML list. It's a big string. Why would we do this? Because the data in ConfigMaps `data` is composed of key/value pairs, where both the key and the value are simple strings. To understand why this is the case, take a look at the [Kubernetes ConfigMap docs](http://kubernetes.io/docs/user-guide/configmap/). For us, though, this detail doesn't matter much. - -> The `|-` marker in YAML takes a multi-line string. This can be a useful technique for embedding big blocks of data inside of your manifests, as exemplified here. - -Sometimes it's useful to be able to quickly make a list inside of your template, and then iterate over that list. Helm templates have a function to make this easy: `tuple`. In computer science, a tuple is a list-like collection of fixed size, but with arbitrary data types. This roughly conveys the way a `tuple` is used. - -```yaml - sizes: |- - {{- range tuple "small" "medium" "large" }} - - {{ . }} - {{- end }} -``` - -The above will produce this: - -```yaml - sizes: |- - - small - - medium - - large -``` - -In addition to lists and tuples, `range` can be used to iterate over collections that have a key and a value (like a `map` or `dict`). We'll see how to do that in the next section when we introduce template variables. diff --git a/docs/chart_template_guide/data_types.md b/docs/chart_template_guide/data_types.md deleted file mode 100644 index 2e6a9f15b..000000000 --- a/docs/chart_template_guide/data_types.md +++ /dev/null @@ -1,14 +0,0 @@ -# Appendix: Go Data Types and Templates - -The Helm template language is implemented in the strongly typed Go programming language. For that reason, variables in templates are _typed_. For the most part, variables will be exposed as one of the following types: - -- string: A string of text -- bool: a `true` or `false` -- int: An integer value (there are also 8, 16, 32, and 64 bit signed and unsigned variants of this) -- float64: a 64-bit floating point value (there are also 8, 16, and 32 bit varieties of this) -- a byte slice (`[]byte`), often used to hold (potentially) binary data -- struct: an object with properties and methods -- a slice (indexed list) of one of the previous types -- a string-keyed map (`map[string]interface{}`) where the value is one of the previous types - -There are many other types in Go, and sometimes you will have to convert between them in your templates. The easiest way to debug an object's type is to pass it through `printf "%t"` in a template, which will print the type. Also see the `typeOf` and `kindOf` functions. \ No newline at end of file diff --git a/docs/chart_template_guide/debugging.md b/docs/chart_template_guide/debugging.md deleted file mode 100644 index 050a2e3ca..000000000 --- a/docs/chart_template_guide/debugging.md +++ /dev/null @@ -1,30 +0,0 @@ -# Debugging Templates - -Debugging templates can be tricky because the rendered templates are sent to the Kubernetes API server, which may reject the YAML files for reasons other than formatting. - -There are a few commands that can help you debug. - -- `helm lint` is your go-to tool for verifying that your chart follows best practices -- `helm install --dry-run --debug`: We've seen this trick already. It's a great way to have the server render your templates, then return the resulting manifest file. -- `helm get manifest`: This is a good way to see what templates are installed on the server. - -When your YAML is failing to parse, but you want to see what is generated, one -easy way to retrieve the YAML is to comment out the problem section in the template, -and then re-run `helm install --dry-run --debug`: - -```YAML -apiVersion: v1 -# some: problem section -# {{ .Values.foo | quote }} -``` - -The above will be rendered and returned with the comments intact: - -```YAML -apiVersion: v1 -# some: problem section -# "bar" -``` - -This provides a quick way of viewing the generated content without YAML parse -errors blocking. diff --git a/docs/chart_template_guide/functions_and_pipelines.md b/docs/chart_template_guide/functions_and_pipelines.md deleted file mode 100644 index 54eb8e24f..000000000 --- a/docs/chart_template_guide/functions_and_pipelines.md +++ /dev/null @@ -1,155 +0,0 @@ -# Template Functions and Pipelines - -So far, we've seen how to place information into a template. But that information is placed into the template unmodified. Sometimes we want to transform the supplied data in a way that makes it more useable to us. - -Let's start with a best practice: When injecting strings from the `.Values` object into the template, we ought to quote these strings. We can do that by calling the `quote` function in the template directive: - -``` -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap -data: - myvalue: "Hello World" - drink: {{ quote .Values.favorite.drink }} - food: {{ quote .Values.favorite.food }} -``` - -Template functions follow the syntax `functionName arg1 arg2...`. In the snippet above, `quote .Values.favorite.drink` calls the `quote` function and passes it a single argument. - -Helm has over 60 available functions. Some of them are defined by the [Go template language](https://godoc.org/text/template) itself. Most of the others are part of the [Sprig template library](https://godoc.org/github.com/Masterminds/sprig). We'll see many of them as we progress through the examples. - -> While we talk about the "Helm template language" as if it is Helm-specific, it is actually a combination of the Go template language, some extra functions, and a variety of wrappers to expose certain objects to the templates. Many resources on Go templates may be helpful as you learn about templating. - -## Pipelines - -One of the powerful features of the template language is its concept of _pipelines_. Drawing on a concept from UNIX, pipelines are a tool for chaining together a series of template commands to compactly express a series of transformations. In other words, pipelines are an efficient way of getting several things done in sequence. Let's rewrite the above example using a pipeline. - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap -data: - myvalue: "Hello World" - drink: {{ .Values.favorite.drink | quote }} - food: {{ .Values.favorite.food | quote }} -``` - -In this example, instead of calling `quote ARGUMENT`, we inverted the order. We "sent" the argument to the function using a pipeline (`|`): `.Values.favorite.drink | quote`. Using pipelines, we can chain several functions together: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap -data: - myvalue: "Hello World" - drink: {{ .Values.favorite.drink | quote }} - food: {{ .Values.favorite.food | upper | quote }} -``` - -> Inverting the order is a common practice in templates. You will see `.val | quote` more often than `quote .val`. Either practice is fine. - -When evaluated, that template will produce this: - -```yaml -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: trendsetting-p-configmap -data: - myvalue: "Hello World" - drink: "coffee" - food: "PIZZA" -``` - -Note that our original `pizza` has now been transformed to `"PIZZA"`. - -When pipelining arguments like this, the result of the first evaluation (`.Values.favorite.drink`) is sent as the _last argument to the function_. We can modify the drink example above to illustrate with a function that takes two arguments: `repeat COUNT STRING`: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap -data: - myvalue: "Hello World" - drink: {{ .Values.favorite.drink | repeat 5 | quote }} - food: {{ .Values.favorite.food | upper | quote }} -``` - -The `repeat` function will echo the given string the given number of times, so we will get this for output: - -```yaml -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: melting-porcup-configmap -data: - myvalue: "Hello World" - drink: "coffeecoffeecoffeecoffeecoffee" - food: "PIZZA" -``` - -## Using the `default` function - -One function frequently used in templates is the `default` function: `default DEFAULT_VALUE GIVEN_VALUE`. This function allows you to specify a default value inside of the template, in case the value is omitted. Let's use it to modify the drink example above: - -```yaml -drink: {{ .Values.favorite.drink | default "tea" | quote }} -``` - -If we run this as normal, we'll get our `coffee`: - -``` -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: virtuous-mink-configmap -data: - myvalue: "Hello World" - drink: "coffee" - food: "PIZZA" -``` - -Now, we will remove the favorite drink setting from `values.yaml`: - -```yaml -favorite: - #drink: coffee - food: pizza -``` - -Now re-running `helm install --dry-run --debug ./mychart` will produce this YAML: - -```yaml -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: fair-worm-configmap -data: - myvalue: "Hello World" - drink: "tea" - food: "PIZZA" -``` - -In an actual chart, all static default values should live in the values.yaml, and should not be repeated using the `default` command (otherwise they would be redundant). However, the `default` command is perfect for computed values, which can not be declared inside values.yaml. For example: - -```yaml -drink: {{ .Values.favorite.drink | default (printf "%s-tea" (include "fullname" .)) }} -``` - -In some places, an `if` conditional guard may be better suited than `default`. We'll see those in the next section. - -Template functions and pipelines are a powerful way to transform information and then insert it into your YAML. But sometimes it's necessary to add some template logic that is a little more sophisticated than just inserting a string. In the next section we will look at the control structures provided by the template language. - -## Operators are functions - -For templates, the operators (`eq`, `ne`, `lt`, `gt`, `and`, `or` and so on) are all implemented as functions. In pipelines, operations can be grouped with parentheses (`(`, and `)`). - -Now we can turn from functions and pipelines to flow control with conditions, loops, and scope modifiers. diff --git a/docs/chart_template_guide/getting_started.md b/docs/chart_template_guide/getting_started.md deleted file mode 100644 index c2bda06bb..000000000 --- a/docs/chart_template_guide/getting_started.md +++ /dev/null @@ -1,213 +0,0 @@ -# Getting Started with a Chart Template - -In this section of the guide, we'll create a chart and then add a first template. The chart we created here will be used throughout the rest of the guide. - -To get going, let's take a brief look at a Helm chart. - -## Charts - -As described in the [Charts Guide](../charts.md), Helm charts are structured like -this: - -``` -mychart/ - Chart.yaml - values.yaml - charts/ - templates/ - ... -``` - -The `templates/` directory is for template files. When Helm evaluates a chart, -it will send all of the files in the `templates/` directory through the -template rendering engine. It then collects the results of those templates -and sends them on to Kubernetes. - -The `values.yaml` file is also important to templates. This file contains the -_default values_ for a chart. These values may be overridden by users during -`helm install` or `helm upgrade`. - -The `Chart.yaml` file contains a description of the chart. You can access it -from within a template. The `charts/` directory _may_ contain other charts (which -we call _subcharts_). Later in this guide we will see how those work when it -comes to template rendering. - -## A Starter Chart - -For this guide, we'll create a simple chart called `mychart`, and then we'll -create some templates inside of the chart. - -```console -$ helm create mychart -Creating mychart -``` - -From here on, we'll be working in the `mychart` directory. - -### A Quick Glimpse of `mychart/templates/` - -If you take a look at the `mychart/templates/` directory, you'll notice a few files -already there. - -- `NOTES.txt`: The "help text" for your chart. This will be displayed to your users - when they run `helm install`. -- `deployment.yaml`: A basic manifest for creating a Kubernetes [deployment](http://kubernetes.io/docs/user-guide/deployments/) -- `service.yaml`: A basic manifest for creating a [service endpoint](http://kubernetes.io/docs/user-guide/services/) for your deployment -- `_helpers.tpl`: A place to put template helpers that you can re-use throughout the chart - -And what we're going to do is... _remove them all!_ That way we can work through our tutorial from scratch. We'll actually create our own `NOTES.txt` and `_helpers.tpl` as we go. - -```console -$ rm -rf mychart/templates/*.* -``` - -When you're writing production grade charts, having basic versions of these charts can be really useful. So in your day-to-day chart authoring, you probably won't want to remove them. - -## A First Template - -The first template we are going to create will be a `ConfigMap`. In Kubernetes, -a ConfigMap is simply a container for storing configuration data. Other things, -like pods, can access the data in a ConfigMap. - -Because ConfigMaps are basic resources, they make a great starting point for us. - -Let's begin by creating a file called `mychart/templates/configmap.yaml`: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: mychart-configmap -data: - myvalue: "Hello World" -``` - -**TIP:** Template names do not follow a rigid naming pattern. However, we recommend -using the suffix `.yaml` for YAML files and `.tpl` for helpers. - -The YAML file above is a bare-bones ConfigMap, having the minimal necessary fields. -In virtue of the fact that this file is in the `templates/` directory, it will -be sent through the template engine. - -It is just fine to put a plain YAML file like this in the `templates/` directory. -When Helm reads this template, it will simply send it to Kubernetes as-is. - -With this simple template, we now have an installable chart. And we can install -it like this: - -```console -$ helm install ./mychart -NAME: full-coral -LAST DEPLOYED: Tue Nov 1 17:36:01 2016 -NAMESPACE: default -STATUS: DEPLOYED - -RESOURCES: -==> v1/ConfigMap -NAME DATA AGE -mychart-configmap 1 1m -``` - -In the output above, we can see that our ConfigMap was created. Using Helm, we -can retrieve the release and see the actual template that was loaded. - -```console -$ helm get manifest full-coral - ---- -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: mychart-configmap -data: - myvalue: "Hello World" -``` - -The `helm get manifest` command takes a release name (`full-coral`) and prints -out all of the Kubernetes resources that were uploaded to the server. Each file -begins with `---` to indicate the start of a YAML document, and then is followed -by an automatically generated comment line that tells us what template file -generated this YAML document. - -From there on, we can see that the YAML data is exactly what we put in our -`configmap.yaml` file. - -Now we can uninstall our release: `helm uninstall full-coral`. - -### Adding a Simple Template Call - -Hard-coding the `name:` into a resource is usually considered to be bad practice. -Names should be unique to a release. So we might want to generate a name field -by inserting the release name. - -**TIP:** The `name:` field is limited to 63 characters because of limitations to -the DNS system. For that reason, release names are limited to 53 characters. -Kubernetes 1.3 and earlier limited to only 24 characters (thus 14 character names). - -Let's alter `configmap.yaml` accordingly. - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap -data: - myvalue: "Hello World" -``` - -The big change comes in the value of the `name:` field, which is now -`{{ .Release.Name }}-configmap`. - -> A template directive is enclosed in `{{` and `}}` blocks. - -The template directive `{{ .Release.Name }}` injects the release name into the template. The values that are passed into a template can be thought of as _namespaced objects_, where a dot (`.`) separates each namespaced element. - -The leading dot before `Release` indicates that we start with the top-most namespace for this scope (we'll talk about scope in a bit). So we could read `.Release.Name` as "start at the top namespace, find the `Release` object, then look inside of it for an object called `Name`". - -The `Release` object is one of the built-in objects for Helm, and we'll cover it in more depth later. But for now, it is sufficient to say that this will display the release name that the library assigns to our release. - -Now when we install our resource, we'll immediately see the result of using this template directive: - -```console -$ helm install ./mychart -NAME: clunky-serval -LAST DEPLOYED: Tue Nov 1 17:45:37 2016 -NAMESPACE: default -STATUS: DEPLOYED - -RESOURCES: -==> v1/ConfigMap -NAME DATA AGE -clunky-serval-configmap 1 1m -``` - -Note that in the `RESOURCES` section, the name we see there is `clunky-serval-configmap` -instead of `mychart-configmap`. - -You can run `helm get manifest clunky-serval` to see the entire generated YAML. - -At this point, we've seen templates at their most basic: YAML files that have template directives embedded in `{{` and `}}`. In the next part, we'll take a deeper look into templates. But before moving on, there's one quick trick that can make building templates faster: When you want to test the template rendering, but not actually install anything, you can use `helm install --debug --dry-run ./mychart`. This will render the templates. But instead of installing the chart, it will return the rendered template to you so you can see the output: - -```console -$ helm install --debug --dry-run ./mychart -SERVER: "localhost:44134" -CHART PATH: /Users/mattbutcher/Code/Go/src/helm.sh/helm/_scratch/mychart -NAME: goodly-guppy -TARGET NAMESPACE: default -CHART: mychart 0.1.0 -MANIFEST: ---- -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: goodly-guppy-configmap -data: - myvalue: "Hello World" - -``` - -Using `--dry-run` will make it easier to test your code, but it won't ensure that Kubernetes itself will accept the templates you generate. It's best not to assume that your chart will install just because `--dry-run` works. - -In the next few sections, we'll take the basic chart we defined here and explore the Helm template language in detail. And we'll get started with built-in objects. diff --git a/docs/chart_template_guide/index.md b/docs/chart_template_guide/index.md deleted file mode 100644 index c2bcc8f42..000000000 --- a/docs/chart_template_guide/index.md +++ /dev/null @@ -1,16 +0,0 @@ -# The Chart Template Developer's Guide - -This guide provides an introduction to Helm's chart templates, with emphasis on -the template language. - -Templates generate manifest files, which are YAML-formatted resource descriptions -that Kubernetes can understand. We'll look at how templates are structured, -how they can be used, how to write Go templates, and how to debug your work. - -This guide focuses on the following concepts: - -- The Helm template language -- Using values -- Techniques for working with templates - -This guide is oriented toward learning the ins and outs of the Helm template language. Other guides provide introductory material, examples, and best practices. \ No newline at end of file diff --git a/docs/chart_template_guide/named_templates.md b/docs/chart_template_guide/named_templates.md deleted file mode 100644 index d214f867c..000000000 --- a/docs/chart_template_guide/named_templates.md +++ /dev/null @@ -1,264 +0,0 @@ -# Named Templates - -It is time to move beyond one template, and begin to create others. In this section, we will see how to define _named templates_ in one file, and then use them elsewhere. A _named template_ (sometimes called a _partial_ or a _subtemplate_) is simply a template defined inside of a file, and given a name. We'll see two ways to create them, and a few different ways to use them. - -In the "Flow Control" section we introduced three actions for declaring and managing templates: `define`, `template`, and `block`. In this section, we'll cover those three actions, and also introduce a special-purpose `include` function that works similarly to the `template` action. - -An important detail to keep in mind when naming templates: **template names are global**. If you declare two templates with the same name, whichever one is loaded last will be the one used. Because templates in subcharts are compiled together with top-level templates, you should be careful to name your templates with _chart-specific names_. - -One popular naming convention is to prefix each defined template with the name of the chart: `{{ define "mychart.labels" }}`. By using the specific chart name as a prefix we can avoid any conflicts that may arise due to two different charts that implement templates of the same name. - -## Partials and `_` files - -So far, we've used one file, and that one file has contained a single template. But Helm's template language allows you to create named embedded templates, that can be accessed by name elsewhere. - -Before we get to the nuts-and-bolts of writing those templates, there is file naming convention that deserves mention: - -* Most files in `templates/` are treated as if they contain Kubernetes manifests -* The `NOTES.txt` is one exception -* But files whose name begins with an underscore (`_`) are assumed to _not_ have a manifest inside. These files are not rendered to Kubernetes object definitions, but are available everywhere within other chart templates for use. - -These files are used to store partials and helpers. In fact, when we first created `mychart`, we saw a file called `_helpers.tpl`. That file is the default location for template partials. - -## Declaring and using templates with `define` and `template` - -The `define` action allows us to create a named template inside of a template file. Its syntax goes like this: - -```yaml -{{ define "MY.NAME" }} - # body of template here -{{ end }} -``` - -For example, we can define a template to encapsulate a Kubernetes block of labels: - -```yaml -{{- define "mychart.labels" }} - labels: - generator: helm - date: {{ now | htmlDate }} -{{- end }} -``` - -Now we can embed this template inside of our existing ConfigMap, and then include it with the `template` action: - -```yaml -{{- define "mychart.labels" }} - labels: - generator: helm - date: {{ now | htmlDate }} -{{- end }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap - {{- template "mychart.labels" }} -data: - myvalue: "Hello World" - {{- range $key, $val := .Values.favorite }} - {{ $key }}: {{ $val | quote }} - {{- end }} -``` - -When the template engine reads this file, it will store away the reference to `mychart.labels` until `template "mychart.labels"` is called. Then it will render that template inline. So the result will look like this: - -```yaml -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: running-panda-configmap - labels: - generator: helm - date: 2016-11-02 -data: - myvalue: "Hello World" - drink: "coffee" - food: "pizza" -``` - -Conventionally, Helm charts put these templates inside of a partials file, usually `_helpers.tpl`. Let's move this function there: - -```yaml -{{/* Generate basic labels */}} -{{- define "mychart.labels" }} - labels: - generator: helm - date: {{ now | htmlDate }} -{{- end }} -``` - -By convention, `define` functions should have a simple documentation block (`{{/* ... */}}`) describing what they do. - -Even though this definition is in `_helpers.tpl`, it can still be accessed in `configmap.yaml`: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap - {{- template "mychart.labels" }} -data: - myvalue: "Hello World" - {{- range $key, $val := .Values.favorite }} - {{ $key }}: {{ $val | quote }} - {{- end }} -``` - -As mentioned above, **template names are global**. As a result of this, if two templates are declared with the same name the last occurrence will be the one that is used. Since templates in subcharts are compiled together with top-level templates, it is best to name your templates with _chart specific names_. A popular naming convention is to prefix each defined template with the name of the chart: `{{ define "mychart.labels" }}`. - -## Setting the scope of a template - -In the template we defined above, we did not use any objects. We just used functions. Let's modify our defined template to include the chart name and chart version: - -```yaml -{{/* Generate basic labels */}} -{{- define "mychart.labels" }} - labels: - generator: helm - date: {{ now | htmlDate }} - chart: {{ .Chart.Name }} - version: {{ .Chart.Version }} -{{- end }} -``` - -If we render this, the result will not be what we expect: - -```yaml -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: moldy-jaguar-configmap - labels: - generator: helm - date: 2016-11-02 - chart: - version: -``` - -What happened to the name and version? They weren't in the scope for our defined template. When a named template (created with `define`) is rendered, it will receive the scope passed in by the `template` call. In our example, we included the template like this: - -```yaml -{{- template "mychart.labels" }} -``` - -No scope was passed in, so within the template we cannot access anything in `.`. This is easy enough to fix, though. We simply pass a scope to the template: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap - {{- template "mychart.labels" . }} -``` - -Note that we pass `.` at the end of the `template` call. We could just as easily pass `.Values` or `.Values.favorite` or whatever scope we want. But what we want is the top-level scope. - -Now when we execute this template with `helm install --dry-run --debug ./mychart`, we get this: - -```yaml -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: plinking-anaco-configmap - labels: - generator: helm - date: 2016-11-02 - chart: mychart - version: 0.1.0 -``` - -Now `{{ .Chart.Name }}` resolves to `mychart`, and `{{ .Chart.Version }}` resolves to `0.1.0`. - -## The `include` function - -Say we've defined a simple template that looks like this: - -```yaml -{{- define "mychart.app" -}} -app_name: {{ .Chart.Name }} -app_version: "{{ .Chart.Version }}" -{{- end -}} -``` - -Now say I want to insert this both into the `labels:` section of my template, and also the `data:` section: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap - labels: - {{ template "mychart.app" .}} -data: - myvalue: "Hello World" - {{- range $key, $val := .Values.favorite }} - {{ $key }}: {{ $val | quote }} - {{- end }} -{{ template "mychart.app" . }} -``` - -The output will not be what we expect: - -```yaml -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: measly-whippet-configmap - labels: - app_name: mychart -app_version: "0.1.0+1478129847" -data: - myvalue: "Hello World" - drink: "coffee" - food: "pizza" - app_name: mychart -app_version: "0.1.0+1478129847" -``` - -Note that the indentation on `app_version` is wrong in both places. Why? Because the template that is substituted in has the text aligned to the right. Because `template` is an action, and not a function, there is no way to pass the output of a `template` call to other functions; the data is simply inserted inline. - -To work around this case, Helm provides an alternative to `template` that will import the contents of a template into the present pipeline where it can be passed along to other functions in the pipeline. - -Here's the example above, corrected to use `indent` to indent the `mychart_app` template correctly: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap - labels: -{{ include "mychart.app" . | indent 4 }} -data: - myvalue: "Hello World" - {{- range $key, $val := .Values.favorite }} - {{ $key }}: {{ $val | quote }} - {{- end }} -{{ include "mychart.app" . | indent 2 }} -``` - -Now the produced YAML is correctly indented for each section: - -```yaml -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: edgy-mole-configmap - labels: - app_name: mychart - app_version: "0.1.0+1478129987" -data: - myvalue: "Hello World" - drink: "coffee" - food: "pizza" - app_name: mychart - app_version: "0.1.0+1478129987" -``` - -> It is considered preferable to use `include` over `template` in Helm templates simply so that the output formatting can be handled better for YAML documents. - -Sometimes we want to import content, but not as templates. That is, we want to import files verbatim. We can achieve this by accessing files through the `.Files` object described in the next section. diff --git a/docs/chart_template_guide/notes_files.md b/docs/chart_template_guide/notes_files.md deleted file mode 100644 index 5a8b78ca4..000000000 --- a/docs/chart_template_guide/notes_files.md +++ /dev/null @@ -1,45 +0,0 @@ -# Creating a NOTES.txt File - -In this section we are going to look at Helm's tool for providing instructions to your chart users. At the end of a `chart install` or `chart upgrade`, Helm can print out a block of helpful information for users. This information is highly customizable using templates. - -To add installation notes to your chart, simply create a `templates/NOTES.txt` file. This file is plain text, but it is processed like as a template, and has all the normal template functions and objects available. - -Let's create a simple `NOTES.txt` file: - -``` -Thank you for installing {{ .Chart.Name }}. - -Your release is named {{ .Release.Name }}. - -To learn more about the release, try: - - $ helm status {{ .Release.Name }} - $ helm get {{ .Release.Name }} - -``` - -Now if we run `helm install ./mychart` we will see this message at the bottom: - -``` -RESOURCES: -==> v1/Secret -NAME TYPE DATA AGE -rude-cardinal-secret Opaque 1 0s - -==> v1/ConfigMap -NAME DATA AGE -rude-cardinal-configmap 3 0s - - -NOTES: -Thank you for installing mychart. - -Your release is named rude-cardinal. - -To learn more about the release, try: - - $ helm status rude-cardinal - $ helm get rude-cardinal -``` - -Using `NOTES.txt` this way is a great way to give your users detailed information about how to use their newly installed chart. Creating a `NOTES.txt` file is strongly recommended, though it is not required. diff --git a/docs/chart_template_guide/subcharts_and_globals.md b/docs/chart_template_guide/subcharts_and_globals.md deleted file mode 100644 index 413e841b4..000000000 --- a/docs/chart_template_guide/subcharts_and_globals.md +++ /dev/null @@ -1,207 +0,0 @@ -# Subcharts and Global Values - -To this point we have been working only with one chart. But charts can have dependencies, called _subcharts_, that also have their own values and templates. In this section we will create a subchart and see the different ways we can access values from within templates. - -Before we dive into the code, there are a few important details to learn about subcharts. - -1. A subchart is considered "stand-alone", which means a subchart can never explicitly depend on its parent chart. -2. For that reason, a subchart cannot access the values of its parent. -3. A parent chart can override values for subcharts. -4. Helm has a concept of _global values_ that can be accessed by all charts. - -As we walk through the examples in this section, many of these concepts will become clearer. - -## Creating a Subchart - -For these exercises, we'll start with the `mychart/` chart we created at the beginning of this guide, and we'll add a new chart inside of it. - -```console -$ cd mychart/charts -$ helm create mysubchart -Creating mysubchart -$ rm -rf mysubchart/templates/*.* -``` - -Notice that just as before, we deleted all of the base templates so that we can start from scratch. In this guide, we are focused on how templates work, not on managing dependencies. But the [Charts Guide](../charts.md) has more information on how subcharts work. - -## Adding Values and a Template to the Subchart - -Next, let's create a simple template and values file for our `mysubchart` chart. There should already be a `values.yaml` in `mychart/charts/mysubchart`. We'll set it up like this: - -```yaml -dessert: cake -``` - -Next, we'll create a new ConfigMap template in `mychart/charts/mysubchart/templates/configmap.yaml`: - -``` -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-cfgmap2 -data: - dessert: {{ .Values.dessert }} -``` - -Because every subchart is a _stand-alone chart_, we can test `mysubchart` on its own: - -```console -$ helm install --dry-run --debug mychart/charts/mysubchart -SERVER: "localhost:44134" -CHART PATH: /Users/mattbutcher/Code/Go/src/helm.sh/helm/_scratch/mychart/charts/mysubchart -NAME: newbie-elk -TARGET NAMESPACE: default -CHART: mysubchart 0.1.0 -MANIFEST: ---- -# Source: mysubchart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: newbie-elk-cfgmap2 -data: - dessert: cake -``` - -## Overriding Values from a Parent Chart - -Our original chart, `mychart` is now the _parent_ chart of `mysubchart`. This relationship is based entirely on the fact that `mysubchart` is within `mychart/charts`. - -Because `mychart` is a parent, we can specify configuration in `mychart` and have that configuration pushed into `mysubchart`. For example, we can modify `mychart/values.yaml` like this: - -```yaml -favorite: - drink: coffee - food: pizza -pizzaToppings: - - mushrooms - - cheese - - peppers - - onions - -mysubchart: - dessert: ice cream -``` - -Note the last two lines. Any directives inside of the `mysubchart` section will be sent to the `mysubchart` chart. So if we run `helm install --dry-run --debug mychart`, one of the things we will see is the `mysubchart` ConfigMap: - -```yaml -# Source: mychart/charts/mysubchart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: unhinged-bee-cfgmap2 -data: - dessert: ice cream -``` - -The value at the top level has now overridden the value of the subchart. - -There's an important detail to notice here. We didn't change the template of `mychart/charts/mysubchart/templates/configmap.yaml` to point to `.Values.mysubchart.dessert`. From that template's perspective, the value is still located at `.Values.dessert`. As the template engine passes values along, it sets the scope. So for the `mysubchart` templates, only values specifically for `mysubchart` will be available in `.Values`. - -Sometimes, though, you do want certain values to be available to all of the templates. This is accomplished using global chart values. - -## Global Chart Values - -Global values are values that can be accessed from any chart or subchart by exactly the same name. Globals require explicit declaration. You can't use an existing non-global as if it were a global. - -The Values data type has a reserved section called `Values.global` where global values can be set. Let's set one in our `mychart/values.yaml` file. - -```yaml -favorite: - drink: coffee - food: pizza -pizzaToppings: - - mushrooms - - cheese - - peppers - - onions - -mysubchart: - dessert: ice cream - -global: - salad: caesar -``` - -Because of the way globals work, both `mychart/templates/configmap.yaml` and `mysubchart/templates/configmap.yaml` should be able to access that value as `{{ .Values.global.salad}}`. - -`mychart/templates/configmap.yaml`: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap -data: - salad: {{ .Values.global.salad }} -``` - -`mysubchart/templates/configmap.yaml`: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-cfgmap2 -data: - dessert: {{ .Values.dessert }} - salad: {{ .Values.global.salad }} -``` - -Now if we run a dry run install, we'll see the same value in both outputs: - -```yaml -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: silly-snake-configmap -data: - salad: caesar - ---- -# Source: mychart/charts/mysubchart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: silly-snake-cfgmap2 -data: - dessert: ice cream - salad: caesar -``` - -Globals are useful for passing information like this, though it does take some planning to make sure the right templates are configured to use globals. - -## Sharing Templates with Subcharts - -Parent charts and subcharts can share templates. Any defined block in any chart is -available to other charts. - -For example, we can define a simple template like this: - -```yaml -{{- define "labels" }}from: mychart{{ end }} -``` - -Recall how the labels on templates are _globally shared_. Thus, the `labels` chart -can be included from any other chart. - -While chart developers have a choice between `include` and `template`, one advantage -of using `include` is that `include` can dynamically reference templates: - -```yaml -{{ include $mytemplate }} -``` - -The above will dereference `$mytemplate`. The `template` function, in contrast, -will only accept a string literal. - -## Avoid Using Blocks - -The Go template language provides a `block` keyword that allows developers to provide -a default implementation which is overridden later. In Helm charts, blocks are not -the best tool for overriding because it if multiple implementations of the same block -are provided, the one selected is unpredictable. - -The suggestion is to instead use `include`. diff --git a/docs/chart_template_guide/values_files.md b/docs/chart_template_guide/values_files.md deleted file mode 100644 index 5b201ad87..000000000 --- a/docs/chart_template_guide/values_files.md +++ /dev/null @@ -1,132 +0,0 @@ -# Values Files - -In the previous section we looked at the built-in objects that Helm templates offer. One of the four built-in objects is `Values`. This object provides access to values passed into the chart. Its contents come from four sources: - -- The `values.yaml` file in the chart -- If this is a subchart, the `values.yaml` file of a parent chart -- A values file if passed into `helm install` or `helm upgrade` with the `-f` flag (`helm install -f myvals.yaml ./mychart`) -- Individual parameters passed with `--set` (such as `helm install --set foo=bar ./mychart`) - -The list above is in order of specificity: `values.yaml` is the default, which can be overridden by a parent chart's `values.yaml`, which can in turn be overridden by a user-supplied values file, which can in turn be overridden by `--set` parameters. - -Values files are plain YAML files. Let's edit `mychart/values.yaml` and then edit our ConfigMap template. - -Removing the defaults in `values.yaml`, we'll set just one parameter: - -```yaml -favoriteDrink: coffee -``` - -Now we can use this inside of a template: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap -data: - myvalue: "Hello World" - drink: {{ .Values.favoriteDrink }} -``` - -Notice on the last line we access `favoriteDrink` as an attribute of `Values`: `{{ .Values.favoriteDrink}}`. - -Let's see how this renders. - -```console -$ helm install --dry-run --debug ./mychart -SERVER: "localhost:44134" -CHART PATH: /Users/mattbutcher/Code/Go/src/helm.sh/helm/_scratch/mychart -NAME: geared-marsupi -TARGET NAMESPACE: default -CHART: mychart 0.1.0 -MANIFEST: ---- -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: geared-marsupi-configmap -data: - myvalue: "Hello World" - drink: coffee -``` - -Because `favoriteDrink` is set in the default `values.yaml` file to `coffee`, that's the value displayed in the template. We can easily override that by adding a `--set` flag in our call to `helm install`: - -``` -helm install --dry-run --debug --set favoriteDrink=slurm ./mychart -SERVER: "localhost:44134" -CHART PATH: /Users/mattbutcher/Code/Go/src/helm.sh/helm/_scratch/mychart -NAME: solid-vulture -TARGET NAMESPACE: default -CHART: mychart 0.1.0 -MANIFEST: ---- -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: solid-vulture-configmap -data: - myvalue: "Hello World" - drink: slurm -``` - -Since `--set` has a higher precedence than the default `values.yaml` file, our template generates `drink: slurm`. - -Values files can contain more structured content, too. For example, we could create a `favorite` section in our `values.yaml` file, and then add several keys there: - -```yaml -favorite: - drink: coffee - food: pizza -``` - -Now we would have to modify the template slightly: - -``` -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap -data: - myvalue: "Hello World" - drink: {{ .Values.favorite.drink }} - food: {{ .Values.favorite.food }} -``` - -While structuring data this way is possible, the recommendation is that you keep your values trees shallow, favoring flatness. When we look at assigning values to subcharts, we'll see how values are named using a tree structure. - -## Deleting a default key - -If you need to delete a key from the default values, you may override the value of the key to be `null`, in which case Helm will remove the key from the overridden values merge. - -For example, the stable Drupal chart allows configuring the liveness probe, in case you configure a custom image. Here are the default values: -```yaml -livenessProbe: - httpGet: - path: /user/login - port: http - initialDelaySeconds: 120 -``` - -If you try to override the livenessProbe handler to `exec` instead of `httpGet` using `--set livenessProbe.exec.command=[cat,docroot/CHANGELOG.txt]`, Helm will coalesce the default and overridden keys together, resulting in the following YAML: -```yaml -livenessProbe: - httpGet: - path: /user/login - port: http - exec: - command: - - cat - - docroot/CHANGELOG.txt - initialDelaySeconds: 120 -``` - -However, Kubernetes would then fail because you can not declare more than one livenessProbe handler. To overcome this, you may instruct Helm to delete the `livenessProbe.httpGet` by setting it to null: -```sh -helm install stable/drupal --set image=my-registry/drupal:0.1.0 --set livenessProbe.exec.command=[cat,docroot/CHANGELOG.txt] --set livenessProbe.httpGet=null -``` - -At this point, we've seen several built-in objects, and used them to inject information into a template. Now we will take a look at another aspect of the template engine: functions and pipelines. diff --git a/docs/chart_template_guide/variables.md b/docs/chart_template_guide/variables.md deleted file mode 100644 index d7961d2a8..000000000 --- a/docs/chart_template_guide/variables.md +++ /dev/null @@ -1,131 +0,0 @@ -# Variables - -With functions, pipelines, objects, and control structures under our belts, we can turn to one of the more basic ideas in many programming languages: variables. In templates, they are less frequently used. But we will see how to use them to simplify code, and to make better use of `with` and `range`. - -In an earlier example, we saw that this code will fail: - -```yaml - {{- with .Values.favorite }} - drink: {{ .drink | default "tea" | quote }} - food: {{ .food | upper | quote }} - release: {{ .Release.Name }} - {{- end }} -``` - -`Release.Name` is not inside of the scope that's restricted in the `with` block. One way to work around scoping issues is to assign objects to variables that can be accessed without respect to the present scope. - -In Helm templates, a variable is a named reference to another object. It follows the form `$name`. Variables are assigned with a special assignment operator: `:=`. We can rewrite the above to use a variable for `Release.Name`. - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap -data: - myvalue: "Hello World" - {{- $relname := .Release.Name -}} - {{- with .Values.favorite }} - drink: {{ .drink | default "tea" | quote }} - food: {{ .food | upper | quote }} - release: {{ $relname }} - {{- end }} -``` - -Notice that before we start the `with` block, we assign `$relname := .Release.Name`. Now inside of the `with` block, the `$relname` variable still points to the release name. - -Running that will produce this: - -```yaml -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: viable-badger-configmap -data: - myvalue: "Hello World" - drink: "coffee" - food: "PIZZA" - release: viable-badger -``` - -Variables are particularly useful in `range` loops. They can be used on list-like objects to capture both the index and the value: - -```yaml - toppings: |- - {{- range $index, $topping := .Values.pizzaToppings }} - {{ $index }}: {{ $topping }} - {{- end }} - -``` - -Note that `range` comes first, then the variables, then the assignment operator, then the list. This will assign the integer index (starting from zero) to `$index` and the value to `$topping`. Running it will produce: - -```yaml - toppings: |- - 0: mushrooms - 1: cheese - 2: peppers - 3: onions -``` - -For data structures that have both a key and a value, we can use `range` to get both. For example, we can loop through `.Values.favorite` like this: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap -data: - myvalue: "Hello World" - {{- range $key, $val := .Values.favorite }} - {{ $key }}: {{ $val | quote }} - {{- end}} -``` - -Now on the first iteration, `$key` will be `drink` and `$val` will be `coffee`, and on the second, `$key` will be `food` and `$val` will be `pizza`. Running the above will generate this: - -```yaml -# Source: mychart/templates/configmap.yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: eager-rabbit-configmap -data: - myvalue: "Hello World" - drink: "coffee" - food: "pizza" -``` - -Variables are normally not "global". They are scoped to the block in which they are declared. Earlier, we assigned `$relname` in the top level of the template. That variable will be in scope for the entire template. But in our last example, `$key` and `$val` will only be in scope inside of the `{{range...}}{{end}}` block. - -However, there is one variable that is always global - `$` - this -variable will always point to the root context. This can be very -useful when you are looping in a range need to know the chart's release -name. - -An example illustrating this: -```yaml -{{- range .Values.tlsSecrets }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ .name }} - labels: - # Many helm templates would use `.` below, but that will not work, - # however `$` will work here - app.kubernetes.io/name: {{ template "fullname" $ }} - # I cannot reference .Chart.Name, but I can do $.Chart.Name - helm.sh/chart: "{{ $.Chart.Name }}-{{ $.Chart.Version }}" - app.kubernetes.io/instance: "{{ $.Release.Name }}" - # Value from appVersion in Chart.yaml - app.kubernetes.io/version: "{{ $.Chart.AppVersion }}" - app.kubernetes.io/managed-by: "{{ $.Release.Service }}" -type: kubernetes.io/tls -data: - tls.crt: {{ .certificate }} - tls.key: {{ .key }} ---- -{{- end }} -``` - -So far we have looked at just one template declared in just one file. But one of the powerful features of the Helm template language is its ability to declare multiple templates and use them together. We'll turn to that in the next section. diff --git a/docs/chart_template_guide/wrapping_up.md b/docs/chart_template_guide/wrapping_up.md deleted file mode 100755 index 5c5f3282f..000000000 --- a/docs/chart_template_guide/wrapping_up.md +++ /dev/null @@ -1,20 +0,0 @@ -# Wrapping Up - -This guide is intended to give you, the chart developer, a strong understanding of how to use Helm's template language. The guide focuses on the technical aspects of template development. - -But there are many things this guide has not covered when it comes to the practical day-to-day development of charts. Here are some useful pointers to other documentation that will help you as you create new charts: - -- The [Kubernetes Charts project](https://github.com/helm/charts) is an indispensable source of charts. That project is also sets the standard for best practices in chart development. -- The Kubernetes [User's Guide](http://kubernetes.io/docs/user-guide/) provides detailed examples of the various resource kinds that you can use, from ConfigMaps and Secrets to DaemonSets and Deployments. -- The Helm [Charts Guide](../charts.md) explains the workflow of using charts. -- The Helm [Chart Hooks Guide](../charts_hooks.md) explains how to create lifecycle hooks. -- The Helm [Charts Tips and Tricks](../charts_tips_and_tricks.md) article provides some useful tips for writing charts. -- The [Sprig documentation](https://github.com/Masterminds/sprig) documents more than sixty of the template functions. -- The [Go template docs](https://godoc.org/text/template) explain the template syntax in detail. -- The [Schelm tool](https://github.com/databus23/schelm) is a nice helper utility for debugging charts. - -Sometimes it's easier to ask a few questions and get answers from experienced developers. The best place to do that is in the Kubernetes `#Helm` Slack channel: - -- [Kubernetes Slack](https://slack.k8s.io/): `#helm` - -Finally, if you find errors or omissions in this document, want to suggest some new content, or would like to contribute, visit [The Helm Project](https://github.com/helm/helm). diff --git a/docs/chart_template_guide/yaml_techniques.md b/docs/chart_template_guide/yaml_techniques.md deleted file mode 100644 index 44c41f903..000000000 --- a/docs/chart_template_guide/yaml_techniques.md +++ /dev/null @@ -1,349 +0,0 @@ -# YAML Techniques - -Most of this guide has been focused on writing the template language. Here, -we'll look at the YAML format. YAML has some useful features that we, as -template authors, can use to make our templates less error prone and easier -to read. - -## Scalars and Collections - -According to the [YAML spec](http://yaml.org/spec/1.2/spec.html), there are two -types of collections, and many scalar types. - -The two types of collections are maps and sequences: - -```yaml -map: - one: 1 - two: 2 - three: 3 - -sequence: - - one - - two - - three -``` - -Scalar values are individual values (as opposed to collections) - -### Scalar Types in YAML - -In Helm's dialect of YAML, the scalar data type of a value is determined by a -complex set of rules, including the Kubernetes schema for resource definitions. -But when inferring types, the following rules tend to hold true. - -If an integer or float is an unquoted bare word, it is typically treated as -a numeric type: - -```yaml -count: 1 -size: 2.34 -``` - -But if they are quoted, they are treated as strings: - -```yaml -count: "1" # <-- string, not int -size: '2.34' # <-- string, not float -``` - -The same is true of booleans: - -```yaml -isGood: true # bool -answer: "true" # string -``` - -The word for an empty value is `null` (not `nil`). - -Note that `port: "80"` is valid YAML, and will pass through both the -template engine and the YAML parser, but will fail if Kubernetes expects -`port` to be an integer. - -In some cases, you can force a particular type inference using YAML node tags: - -```yaml -coffee: "yes, please" -age: !!str 21 -port: !!int "80" -``` - -In the above, `!!str` tells the parser that `age` is a string, even if it looks -like an int. And `port` is treated as an int, even though it is quoted. - - -## Strings in YAML - -Much of the data that we place in YAML documents are strings. YAML has more than -one way to represent a string. This section explains the ways and demonstrates -how to use some of them. - -There are three "inline" ways of declaring a string: - -```yaml -way1: bare words -way2: "double-quoted strings" -way3: 'single-quoted strings' -``` - -All inline styles must be on one line. - -- Bare words are unquoted, and are not escaped. For this reason, you have to - be careful what characters you use. -- Double-quoted strings can have specific characters escaped with `\`. For - example `"\"Hello\", she said"`. You can escape line breaks with `\n`. -- Single-quoted strings are "literal" strings, and do not use the `\` to - escape characters. The only escape sequence is `''`, which is decoded as - a single `'`. - -In addition to the one-line strings, you can declare multi-line strings: - -```yaml -coffee: | - Latte - Cappuccino - Espresso -``` - -The above will treat the value of `coffee` as a single string equivalent to -`Latte\nCappuccino\nEspresso\n`. - -Note that the first line after the `|` must be correctly indented. So we could -break the example above by doing this: - -```yaml -coffee: | - Latte - Cappuccino - Espresso - -``` - -Because `Latte` is incorrectly indented, we'd get an error like this: - -``` -Error parsing file: error converting YAML to JSON: yaml: line 7: did not find expected key -``` - -In templates, it is sometimes safer to put a fake "first line" of content in a -multi-line document just for protection from the above error: - -```yaml -coffee: | - # Commented first line - Latte - Cappuccino - Espresso - -``` - -Note that whatever that first line is, it will be preserved in the output of the -string. So if you are, for example, using this technique to inject a file's contents -into a ConfigMap, the comment should be of the type expected by whatever is -reading that entry. - -### Controlling Spaces in Multi-line Strings - -In the example above, we used `|` to indicate a multi-line string. But notice -that the content of our string was followed with a trailing `\n`. If we want -the YAML processor to strip off the trailing newline, we can add a `-` after the -`|`: - -```yaml -coffee: |- - Latte - Cappuccino - Espresso -``` - -Now the `coffee` value will be: `Latte\nCappuccino\nEspresso` (with no trailing -`\n`). - -Other times, we might want all trailing whitespace to be preserved. We can do -this with the `|+` notation: - -```yaml -coffee: |+ - Latte - Cappuccino - Espresso - - -another: value -``` - -Now the value of `coffee` will be `Latte\nCappuccino\nEspresso\n\n\n`. - -Indentation inside of a text block is preserved, and results in the preservation -of line breaks, too: - -``` -coffee: |- - Latte - 12 oz - 16 oz - Cappuccino - Espresso -``` - -In the above case, `coffee` will be `Latte\n 12 oz\n 16 oz\nCappuccino\nEspresso`. - -### Indenting and Templates - -When writing templates, you may find yourself wanting to inject the contents of -a file into the template. As we saw in previous chapters, there are two ways -of doing this: - -- Use `{{ .Files.Get "FILENAME" }}` to get the contents of a file in the chart. -- Use `{{ include "TEMPLATE" . }}` to render a template and then place its - contents into the chart. - -When inserting files into YAML, it's good to understand the multi-line rules above. -Often times, the easiest way to insert a static file is to do something like -this: - -```yaml -myfile: | -{{ .Files.Get "myfile.txt" | indent 2 }} -``` - -Note how we do the indentation above: `indent 2` tells the template engine to -indent every line in "myfile.txt" with two spaces. Note that we do not indent -that template line. That's because if we did, the file content of the first line -would be indented twice. - -### Folded Multi-line Strings - -Sometimes you want to represent a string in your YAML with multiple lines, but -want it to be treated as one long line when it is interpreted. This is called -"folding". To declare a folded block, use `>` instead of `|`: - -```yaml -coffee: > - Latte - Cappuccino - Espresso - - -``` - -The value of `coffee` above will be `Latte Cappuccino Espresso\n`. Note that all -but the last line feed will be converted to spaces. You can combine the whitespace -controls with the folded text marker, so `>-` will replace or trim all newlines. - -Note that in the folded syntax, indenting text will cause lines to be preserved. - -```yaml -coffee: >- - Latte - 12 oz - 16 oz - Cappuccino - Espresso -``` - -The above will produce `Latte\n 12 oz\n 16 oz\nCappuccino Espresso`. Note that -both the spacing and the newlines are still there. - -## Embedding Multiple Documents in One File - -It is possible to place more than one YAML documents into a single file. This -is done by prefixing a new document with `---` and ending the document with -`...` - -```yaml - ---- -document:1 -... ---- -document: 2 -... -``` - -In many cases, either the `---` or the `...` may be omitted. - -Some files in Helm cannot contain more than one doc. If, for example, more -than one document is provided inside of a `values.yaml` file, only the first -will be used. - -Template files, however, may have more than one document. When this happens, -the file (and all of its documents) is treated as one object during -template rendering. But then the resulting YAML is split into multiple -documents before it is fed to Kubernetes. - -We recommend only using multiple documents per file when it is absolutely -necessary. Having multiple documents in a file can be difficult to debug. - -## YAML is a Superset of JSON - -Because YAML is a superset of JSON, any valid JSON document _should_ be valid -YAML. - -```json -{ - "coffee": "yes, please", - "coffees": [ - "Latte", "Cappuccino", "Espresso" - ] -} -``` - -The above is another way of representing this: - -```yaml -coffee: yes, please -coffees: -- Latte -- Cappuccino -- Espresso -``` - -And the two can be mixed (with care): - -```yaml -coffee: "yes, please" -coffees: [ "Latte", "Cappuccino", "Espresso"] -``` - -All three of these should parse into the same internal representation. - -While this means that files such as `values.yaml` may contain JSON data, Helm -does not treat the file extension `.json` as a valid suffix. - -## YAML Anchors - -The YAML spec provides a way to store a reference to a value, and later -refer to that value by reference. YAML refers to this as "anchoring": - -```yaml -coffee: "yes, please" -favorite: &favoriteCoffee "Cappucino" -coffees: - - Latte - - *favoriteCoffee - - Espresso -``` - -In the above, `&favoriteCoffee` sets a reference to `Cappuccino`. Later, that -reference is used as `*favoriteCoffee`. So `coffees` becomes -`Latte, Cappuccino, Espresso`. - -While there are a few cases where anchors are useful, there is one aspect of -them that can cause subtle bugs: The first time the YAML is consumed, the -reference is expanded and then discarded. - -So if we were to decode and then re-encode the example above, the resulting -YAML would be: - -```YAML -coffee: yes, please -favorite: Cappucino -coffees: -- Latte -- Cappucino -- Espresso -``` - -Because Helm and Kubernetes often read, modify, and then rewrite YAML files, -the anchors will be lost. diff --git a/docs/chart_tests.md b/docs/chart_tests.md deleted file mode 100644 index d1cfe5017..000000000 --- a/docs/chart_tests.md +++ /dev/null @@ -1,83 +0,0 @@ -# Chart Tests - -A chart contains a number of Kubernetes resources and components that work together. As a chart author, you may want to write some tests that validate that your chart works as expected when it is installed. These tests also help the chart consumer understand what your chart is supposed to do. - -A **test** in a helm chart lives under the `templates/` directory and is a pod definition that specifies a container with a given command to run. The container should exit successfully (exit 0) for a test to be considered a success. The pod definition must contain one of the helm test hook annotations: `helm.sh/hook: test-success` or `helm.sh/hook: test-failure`. - -Example tests: -- Validate that your configuration from the values.yaml file was properly injected. - - Make sure your username and password work correctly - - Make sure an incorrect username and password does not work -- Assert that your services are up and correctly load balancing -- etc. - -You can run the pre-defined tests in Helm on a release using the command `helm test `. For a chart consumer, this is a great way to sanity check that their release of a chart (or application) works as expected. - -## A Breakdown of the Helm Test Hooks - -In Helm, there are two test hooks: `test-success` and `test-failure` - -`test-success` indicates that test pod should complete successfully. In other words, the containers in the pod should exit 0. -`test-failure` is a way to assert that a test pod should not complete successfully. If the containers in the pod do not exit 0, that indicates success. - -## Example Test - -Here is an example of a helm test pod definition in an example mariadb chart: - -``` -mariadb/ - Chart.yaml - README.md - values.yaml - charts/ - templates/ - templates/tests/test-mariadb-connection.yaml -``` -In `wordpress/templates/tests/test-mariadb-connection.yaml`: -``` -apiVersion: v1 -kind: Pod -metadata: - name: "{{ .Release.Name }}-credentials-test" - annotations: - "helm.sh/hook": test-success -spec: - containers: - - name: {{ .Release.Name }}-credentials-test - image: {{ .Values.image }} - env: - - name: MARIADB_HOST - value: {{ template "mariadb.fullname" . }} - - name: MARIADB_PORT - value: "3306" - - name: WORDPRESS_DATABASE_NAME - value: {{ default "" .Values.mariadb.mariadbDatabase | quote }} - - name: WORDPRESS_DATABASE_USER - value: {{ default "" .Values.mariadb.mariadbUser | quote }} - - name: WORDPRESS_DATABASE_PASSWORD - valueFrom: - secretKeyRef: - name: {{ template "mariadb.fullname" . }} - key: mariadb-password - command: ["sh", "-c", "mysql --host=$MARIADB_HOST --port=$MARIADB_PORT --user=$WORDPRESS_DATABASE_USER --password=$WORDPRESS_DATABASE_PASSWORD"] - restartPolicy: Never -``` - -## Steps to Run a Test Suite on a Release -1. `$ helm install mariadb` -``` -NAME: quirky-walrus -LAST DEPLOYED: Mon Feb 13 13:50:43 2017 -NAMESPACE: default -STATUS: DEPLOYED -``` - -2. `$ helm test quirky-walrus` -``` -RUNNING: quirky-walrus-credentials-test -SUCCESS: quirky-walrus-credentials-test -``` - -## Notes -- You can define as many tests as you would like in a single yaml file or spread across several yaml files in the `templates/` directory -- You are welcome to nest your test suite under a `tests/` directory like `/templates/tests/` for more isolation diff --git a/docs/charts.md b/docs/charts.md deleted file mode 100644 index ed4823fac..000000000 --- a/docs/charts.md +++ /dev/null @@ -1,935 +0,0 @@ -# Charts - -Helm uses a packaging format called _charts_. A chart is a collection of files -that describe a related set of Kubernetes resources. A single chart -might be used to deploy something simple, like a memcached pod, or -something complex, like a full web app stack with HTTP servers, -databases, caches, and so on. - -Charts are created as files laid out in a particular directory tree, -then they can be packaged into versioned archives to be deployed. - -This document explains the chart format, and provides basic guidance for -building charts with Helm. - -## The Chart File Structure - -A chart is organized as a collection of files inside of a directory. The -directory name is the name of the chart (without versioning information). Thus, -a chart describing WordPress would be stored in the `wordpress/` directory. - -Inside of this directory, Helm will expect a structure that matches this: - -``` -wordpress/ - Chart.yaml # A YAML file containing information about the chart - LICENSE # OPTIONAL: A plain text file containing the license for the chart - README.md # OPTIONAL: A human-readable README file - values.yaml # The default configuration values for this chart - values.schema.json # OPTIONAL: A JSON Schema for imposing a structure on the values.yaml file - charts/ # A directory containing any charts upon which this chart depends. - templates/ # A directory of templates that, when combined with values, - # will generate valid Kubernetes manifest files. - templates/NOTES.txt # OPTIONAL: A plain text file containing short usage notes -``` - -Helm reserves use of the `charts/` and `templates/` directories, and of -the listed file names. Other files will be left as they are. - -## The Chart.yaml File - -The `Chart.yaml` file is required for a chart. It contains the following fields: - -```yaml -name: The name of the chart (required) -version: A SemVer 2 version (required) -kubeVersion: A SemVer range of compatible Kubernetes versions (optional) -description: A single-sentence description of this project (optional) -type: It is the type of chart (optional) -keywords: - - A list of keywords about this project (optional) -home: The URL of this project's home page (optional) -sources: - - A list of URLs to source code for this project (optional) -dependencies: # A list of the chart requirements (optional) - - name: The name of the chart (nginx) - version: The version of the chart ("1.2.3") - repository: The repository URL ("https://example.com/charts") -maintainers: # (optional) - - name: The maintainer's name (required for each maintainer) - email: The maintainer's email (optional for each maintainer) - url: A URL for the maintainer (optional for each maintainer) -icon: A URL to an SVG or PNG image to be used as an icon (optional). -appVersion: The version of the app that this contains (optional). This needn't be SemVer. -deprecated: Whether this chart is deprecated (optional, boolean) -``` - -Other fields will be silently ignored. - -### Charts and Versioning - -Every chart must have a version number. A version must follow the -[SemVer 2](http://semver.org/) standard. Unlike Helm Classic, Kubernetes -Helm uses version numbers as release markers. Packages in repositories -are identified by name plus version. - -For example, an `nginx` chart whose version field is set to `version: -1.2.3` will be named: - -``` -nginx-1.2.3.tgz -``` - -More complex SemVer 2 names are also supported, such as -`version: 1.2.3-alpha.1+ef365`. But non-SemVer names are explicitly -disallowed by the system. - -**NOTE:** Whereas Helm Classic and Deployment Manager were both -very GitHub oriented when it came to charts, Kubernetes Helm does not -rely upon or require GitHub or even Git. Consequently, it does not use -Git SHAs for versioning at all. - -The `version` field inside of the `Chart.yaml` is used by many of the -Helm tools, including the CLI. When generating a -package, the `helm package` command will use the version that it finds -in the `Chart.yaml` as a token in the package name. The system assumes -that the version number in the chart package name matches the version number in -the `Chart.yaml`. Failure to meet this assumption will cause an error. - -### The appVersion field - -Note that the `appVersion` field is not related to the `version` field. It is -a way of specifying the version of the application. For example, the `drupal` -chart may have an `appVersion: 8.2.1`, indicating that the version of Drupal -included in the chart (by default) is `8.2.1`. This field is informational, and -has no impact on chart version calculations. - -### Deprecating Charts - -When managing charts in a Chart Repository, it is sometimes necessary to -deprecate a chart. The optional `deprecated` field in `Chart.yaml` can be used -to mark a chart as deprecated. If the **latest** version of a chart in the -repository is marked as deprecated, then the chart as a whole is considered to -be deprecated. The chart name can later be reused by publishing a newer version -that is not marked as deprecated. The workflow for deprecating charts, as -followed by the [kubernetes/charts](https://github.com/helm/charts) -project is: - - Update chart's `Chart.yaml` to mark the chart as deprecated, bumping the - version - - Release the new chart version in the Chart Repository - - Remove the chart from the source repository (e.g. git) - -### Chart Types - -The `type` field defines the type of chart. There are 2 types: `application` -and `library`. Application is the default type and it is the standard chart -which can be operated on fully. The [library or helper chart](https://github.com/helm/charts/tree/master/incubator/common) -provides utilities or functions for the chart builder. A library chart differs -from an application chart because it has no resource object and is therefore not -installable. - -**Note:** An application chart can be used as a library chart. This is enabled by setting the -type to `library`. The chart will then be rendered as a library chart where all utilities and -functions can be leveraged. All resource objects of the chart will not be rendered. - -## Chart LICENSE, README and NOTES - -Charts can also contain files that describe the installation, configuration, usage and license of a -chart. A README for a chart should be formatted in Markdown (README.md), and should generally -contain: - -- A description of the application or service the chart provides -- Any prerequisites or requirements to run the chart -- Descriptions of options in `values.yaml` and default values -- Any other information that may be relevant to the installation or configuration of the chart - -The chart can also contain a short plain text `templates/NOTES.txt` file that will be printed out -after installation, and when viewing the status of a release. This file is evaluated as a -[template](#templates-and-values), and can be used to display usage notes, next steps, or any other -information relevant to a release of the chart. For example, instructions could be provided for -connecting to a database, or accessing a web UI. Since this file is printed to STDOUT when running -`helm install` or `helm status`, it is recommended to keep the content brief and point to the README -for greater detail. - -## Chart Dependencies - -In Helm, one chart may depend on any number of other charts. -These dependencies can be dynamically linked using the `dependencies` field in `Chart.yaml` or brought in to the `charts/` directory and managed manually. - -### Managing Dependencies with the `dependencies` field - -The charts required by the current chart are defined as a list in the `dependencies` field. - -```yaml -dependencies: - - name: apache - version: 1.2.3 - repository: http://example.com/charts - - name: mysql - version: 3.2.1 - repository: http://another.example.com/charts -``` - -- The `name` field is the name of the chart you want. -- The `version` field is the version of the chart you want. -- The `repository` field is the full URL to the chart repository. Note - that you must also use `helm repo add` to add that repo locally. - -Once you have defined dependencies, you can run `helm dependency update` -and it will use your dependency file to download all the specified -charts into your `charts/` directory for you. - -```console -$ helm dep up foochart -Hang tight while we grab the latest from your chart repositories... -...Successfully got an update from the "local" chart repository -...Successfully got an update from the "stable" chart repository -...Successfully got an update from the "example" chart repository -...Successfully got an update from the "another" chart repository -Update Complete. Happy Helming! -Saving 2 charts -Downloading apache from repo http://example.com/charts -Downloading mysql from repo http://another.example.com/charts -``` - -When `helm dependency update` retrieves charts, it will store them as -chart archives in the `charts/` directory. So for the example above, one -would expect to see the following files in the charts directory: - -``` -charts/ - apache-1.2.3.tgz - mysql-3.2.1.tgz -``` - -#### Alias field in dependencies - -In addition to the other fields above, each requirements entry may contain -the optional field `alias`. - -Adding an alias for a dependency chart would put -a chart in dependencies using alias as name of new dependency. - -One can use `alias` in cases where they need to access a chart -with other name(s). - -```yaml -# parentchart/Chart.yaml -dependencies: - - name: subchart - repository: http://localhost:10191 - version: 0.1.0 - alias: new-subchart-1 - - name: subchart - repository: http://localhost:10191 - version: 0.1.0 - alias: new-subchart-2 - - name: subchart - repository: http://localhost:10191 - version: 0.1.0 -``` - -In the above example we will get 3 dependencies in all for `parentchart` -``` -subchart -new-subchart-1 -new-subchart-2 -``` - -The manual way of achieving this is by copy/pasting the same chart in the -`charts/` directory multiple times with different names. - -#### Tags and Condition fields in dependencies - -In addition to the other fields above, each requirements entry may contain -the optional fields `tags` and `condition`. - -All charts are loaded by default. If `tags` or `condition` fields are present, -they will be evaluated and used to control loading for the chart(s) they are applied to. - -Condition - The condition field holds one or more YAML paths (delimited by commas). -If this path exists in the top parent's values and resolves to a boolean value, -the chart will be enabled or disabled based on that boolean value. Only the first -valid path found in the list is evaluated and if no paths exist then the condition has no effect. - -Tags - The tags field is a YAML list of labels to associate with this chart. -In the top parent's values, all charts with tags can be enabled or disabled by -specifying the tag and a boolean value. - -```` -# parentchart/Chart.yaml -dependencies: - - name: subchart1 - repository: http://localhost:10191 - version: 0.1.0 - condition: subchart1.enabled, global.subchart1.enabled - tags: - - front-end - - subchart1 - - - name: subchart2 - repository: http://localhost:10191 - version: 0.1.0 - condition: subchart2.enabled,global.subchart2.enabled - tags: - - back-end - - subchart2 - -```` -```` -# parentchart/values.yaml - -subchart1: - enabled: true -tags: - front-end: false - back-end: true -```` - -In the above example all charts with the tag `front-end` would be disabled but since the -`subchart1.enabled` path evaluates to 'true' in the parent's values, the condition will override the -`front-end` tag and `subchart1` will be enabled. - -Since `subchart2` is tagged with `back-end` and that tag evaluates to `true`, `subchart2` will be -enabled. Also notes that although `subchart2` has a condition specified, there -is no corresponding path and value in the parent's values so that condition has no effect. - -##### Using the CLI with Tags and Conditions - -The `--set` parameter can be used as usual to alter tag and condition values. - -```` -helm install --set tags.front-end=true --set subchart2.enabled=false - -```` - -##### Tags and Condition Resolution - - - * **Conditions (when set in values) always override tags.** The first condition - path that exists wins and subsequent ones for that chart are ignored. - * Tags are evaluated as 'if any of the chart's tags are true then enable the chart'. - * Tags and conditions values must be set in the top parent's values. - * The `tags:` key in values must be a top level key. Globals and nested `tags:` tables - are not currently supported. - -#### Importing Child Values via dependencies - -In some cases it is desirable to allow a child chart's values to propagate to the parent chart and be -shared as common defaults. An additional benefit of using the `exports` format is that it will enable future -tooling to introspect user-settable values. - -The keys containing the values to be imported can be specified in the parent chart's `dependencies` in the field `input-values` -using a YAML list. Each item in the list is a key which is imported from the child chart's `exports` field. - -To import values not contained in the `exports` key, use the [child-parent](#using-the-child-parent-format) format. -Examples of both formats are described below. - -##### Using the exports format - -If a child chart's `values.yaml` file contains an `exports` field at the root, its contents may be imported -directly into the parent's values by specifying the keys to import as in the example below: - -```yaml -# parent's Chart.yaml file - -dependencies: - - name: subchart - repository: http://localhost:10191 - version: 0.1.0 - import-values: - - data -``` -```yaml -# child's values.yaml file -... -exports: - data: - myint: 99 -``` - -Since we are specifying the key `data` in our import list, Helm looks in the `exports` field of the child -chart for `data` key and imports its contents. - -The final parent values would contain our exported field: - -```yaml -# parent's values file -... -myint: 99 - -``` - -Please note the parent key `data` is not contained in the parent's final values. If you need to specify the -parent key, use the 'child-parent' format. - -##### Using the child-parent format - -To access values that are not contained in the `exports` key of the child chart's values, you will need to -specify the source key of the values to be imported (`child`) and the destination path in the parent chart's -values (`parent`). - -The `import-values` in the example below instructs Helm to take any values found at `child:` path and copy them -to the parent's values at the path specified in `parent:` - -```yaml -# parent's Chart.yaml file -dependencies: - - name: subchart1 - repository: http://localhost:10191 - version: 0.1.0 - ... - import-values: - - child: default.data - parent: myimports -``` -In the above example, values found at `default.data` in the subchart1's values will be imported -to the `myimports` key in the parent chart's values as detailed below: - -```yaml -# parent's values.yaml file - -myimports: - myint: 0 - mybool: false - mystring: "helm rocks!" - -``` -```yaml -# subchart1's values.yaml file - -default: - data: - myint: 999 - mybool: true - -``` -The parent chart's resulting values would be: - -```yaml -# parent's final values - -myimports: - myint: 999 - mybool: true - mystring: "helm rocks!" - -``` - -The parent's final values now contains the `myint` and `mybool` fields imported from subchart1. - -### Managing Dependencies manually via the `charts/` directory - -If more control over dependencies is desired, these dependencies can -be expressed explicitly by copying the dependency charts into the -`charts/` directory. - -A dependency can be either a chart archive (`foo-1.2.3.tgz`) or an -unpacked chart directory. But its name cannot start with `_` or `.`. -Such files are ignored by the chart loader. - -For example, if the WordPress chart depends on the Apache chart, the -Apache chart (of the correct version) is supplied in the WordPress -chart's `charts/` directory: - -``` -wordpress: - Chart.yaml - # ... - charts/ - apache/ - Chart.yaml - # ... - mysql/ - Chart.yaml - # ... -``` - -The example above shows how the WordPress chart expresses its dependency -on Apache and MySQL by including those charts inside of its `charts/` -directory. - -**TIP:** _To drop a dependency into your `charts/` directory, use the -`helm pull` command_ - -### Operational aspects of using dependencies - -The above sections explain how to specify chart dependencies, but how does this affect -chart installation using `helm install` and `helm upgrade`? - -Suppose that a chart named "A" creates the following Kubernetes objects - -- namespace "A-Namespace" -- statefulset "A-StatefulSet" -- service "A-Service" - -Furthermore, A is dependent on chart B that creates objects - -- namespace "B-Namespace" -- replicaset "B-ReplicaSet" -- service "B-Service" - -After installation/upgrade of chart A a single Helm release is created/modified. The release will -create/update all of the above Kubernetes objects in the following order: - -- A-Namespace -- B-Namespace -- A-StatefulSet -- B-ReplicaSet -- A-Service -- B-Service - -This is because when Helm installs/upgrades charts, -the Kubernetes objects from the charts and all its dependencies are - -- aggregrated into a single set; then -- sorted by type followed by name; and then -- created/updated in that order. - -Hence a single release is created with all the objects for the chart and its dependencies. - -The install order of Kubernetes types is given by the enumeration InstallOrder in kind_sorter.go -(see [the Helm source file](https://github.com/helm/helm/blob/dev-v3/pkg/tiller/kind_sorter.go#L26)). - -## Templates and Values - -Helm Chart templates are written in the -[Go template language](https://golang.org/pkg/text/template/), with the -addition of 50 or so add-on template -functions [from the Sprig library](https://github.com/Masterminds/sprig) and a -few other [specialized functions](charts_tips_and_tricks.md). - -All template files are stored in a chart's `templates/` folder. When -Helm renders the charts, it will pass every file in that directory -through the template engine. - -Values for the templates are supplied two ways: - - - Chart developers may supply a file called `values.yaml` inside of a - chart. This file can contain default values. - - Chart users may supply a YAML file that contains values. This can be - provided on the command line with `helm install`. - -When a user supplies custom values, these values will override the -values in the chart's `values.yaml` file. - -### Template Files - -Template files follow the standard conventions for writing Go templates -(see [the text/template Go package documentation](https://golang.org/pkg/text/template/) -for details). -An example template file might look something like this: - -```yaml -apiVersion: v1 -kind: ReplicationController -metadata: - name: deis-database - namespace: deis - labels: - app.kubernetes.io/managed-by: deis -spec: - replicas: 1 - selector: - app.kubernetes.io/name: deis-database - template: - metadata: - labels: - app.kubernetes.io/name: 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}} -``` - -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 (usually defined in a -`values.yaml` file): - -- `imageRegistry`: The source registry for the Docker image. -- `dockerTag`: The tag for the docker image. -- `pullPolicy`: The Kubernetes pull policy. -- `storage`: The storage backend, whose default is set to `"minio"` - -All of these values are defined by the template author. Helm does not -require or dictate parameters. - -To see many working charts, check out the [Kubernetes Charts -project](https://github.com/helm/charts) - -### 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_. - -- `Release.Name`: The name of the release (not the chart) -- `Release.Namespace`: The namespace the chart was released to. -- `Release.Service`: The service that conducted the release. -- `Release.IsUpgrade`: This is set to true if the current operation is an upgrade or rollback. -- `Release.IsInstall`: This is set to true if the current operation is an - install. -- `Chart`: The contents of the `Chart.yaml`. Thus, the chart version is - obtainable as `Chart.Version` and the maintainers are in - `Chart.Maintainers`. -- `Files`: A map-like object containing all non-special files in the chart. This - will not give you access to templates, but will give you access to additional - files that are present (unless they are excluded using `.helmignore`). Files can be - accessed using `{{index .Files "file.name"}}` or using the `{{.Files.Get name}}` or - `{{.Files.GetString name}}` functions. You can also access the contents of the file - as `[]byte` using `{{.Files.GetBytes}}` -- `Capabilities`: A map-like object that contains information about the versions - of Kubernetes (`{{.Capabilities.KubeVersion}}` and the supported Kubernetes - API versions (`{{.Capabilities.APIVersions.Has "batch/v1"`) - -**NOTE:** Any unknown Chart.yaml fields will be dropped. They will not -be accessible inside of the `Chart` object. Thus, Chart.yaml cannot be -used to pass arbitrarily structured data into the template. The values -file can be used for that, though. - -### Values files - -Considering the template in the previous section, a `values.yaml` file -that supplies the necessary values would look like this: - -```yaml -imageRegistry: "quay.io/deis" -dockerTag: "latest" -pullPolicy: "Always" -storage: "s3" -``` - -A values file is formatted in YAML. A chart may include a default -`values.yaml` file. The Helm install command allows a user to override -values by supplying additional YAML values: - -```console -$ helm install --values=myvals.yaml wordpress -``` - -When values are passed in this way, they will be merged into the default -values file. For example, consider a `myvals.yaml` file that looks like -this: - -```yaml -storage: "gcs" -``` - -When this is merged with the `values.yaml` in the chart, the resulting -generated content will be: - -```yaml -imageRegistry: "quay.io/deis" -dockerTag: "latest" -pullPolicy: "Always" -storage: "gcs" -``` - -Note that only the last field was overridden. - -**NOTE:** The default values file included inside of a chart _must_ be named -`values.yaml`. But files specified on the command line can be named -anything. - -**NOTE:** If the `--set` flag is used on `helm install` or `helm upgrade`, those -values are simply converted to YAML on the client side. - -**NOTE:** If any required entries in the values file exist, they can be declared -as required in the chart template by using the ['required' function](charts_tips_and_tricks.md) - -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: - app.kubernetes.io/managed-by: deis -spec: - replicas: 1 - selector: - app.kubernetes.io/name: deis-database - template: - metadata: - labels: - app.kubernetes.io/name: 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 -any of the charts that are included in that chart's `charts/` directory. -Or, to phrase it differently, a values file can supply values to the -chart as well as to any of its dependencies. For example, the -demonstration WordPress chart above has both `mysql` and `apache` as -dependencies. The values file could supply values to all of these -components: - -```yaml -title: "My WordPress Site" # Sent to the WordPress template - -mysql: - max_connections: 100 # Sent to MySQL - password: "secret" - -apache: - port: 8080 # Passed to Apache -``` - -Charts at a higher level have access to all of the variables defined -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 `.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 -`.Values.password`. - -#### Global Values - -As of 2.0.0-Alpha.2, Helm supports special "global" value. Consider -this modified version of the previous example: - -```yaml -title: "My WordPress Site" # Sent to the WordPress template - -global: - app: MyWordPress - -mysql: - max_connections: 100 # Sent to MySQL - password: "secret" - -apache: - port: 8080 # Passed to Apache -``` - -The above adds a `global` section with the value `app: MyWordPress`. -This value is available to _all_ charts as `.Values.global.app`. - -For example, the `mysql` templates may access `app` as `{{.Values.global.app}}`, and -so can the `apache` chart. Effectively, the values file above is -regenerated like this: - -```yaml -title: "My WordPress Site" # Sent to the WordPress template - -global: - app: MyWordPress - -mysql: - global: - app: MyWordPress - max_connections: 100 # Sent to MySQL - password: "secret" - -apache: - global: - app: MyWordPress - port: 8080 # Passed to Apache -``` - -This provides a way of sharing one top-level variable with all -subcharts, which is useful for things like setting `metadata` properties -like labels. - -If a subchart declares a global variable, that global will be passed -_downward_ (to the subchart's subcharts), but not _upward_ to the parent -chart. There is no way for a subchart to influence the values of the -parent chart. - -Also, global variables of parent charts take precedence over the global variables from subcharts. - -### Schema Files - -Sometimes, a chart maintainer might want to define a structure on their values. -This can be done by defining a schema in the `values.schema.json` file. A -schema is represented as a [JSON Schema](https://json-schema.org/). -It might look something like this: - -```json -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "properties": { - "image": { - "description": "Container Image", - "properties": { - "repo": { - "type": "string" - }, - "tag": { - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Service name", - "type": "string" - }, - "port": { - "description": "Port", - "minimum": 0, - "type": "integer" - }, - "protocol": { - "type": "string" - } - }, - "required": [ - "protocol", - "port" - ], - "title": "Values", - "type": "object" -} -``` - -This schema will be applied to the values to validate it. Validation occurs -when any of the following commands are invoked: - -* `helm install` -* `helm upgrade` -* `helm lint` -* `helm template` - -An example of a -`values.yaml` file that meets the requirements of this schema might look -something like this: - -```yaml -name: frontend -protocol: https -port: 443 -``` - -Note that the schema is applied to the final `.Values` object, and not just to -the `values.yaml` file. This means that the following `yaml` file is valid, -given that the chart is installed with the appropriate `--set` option shown -below. - -```yaml -name: frontend -protocol: https -``` - -```` -helm install --set port=443 -```` - -Furthermore, the final `.Values` object is checked against *all* subchart -schemas. This means that restrictions on a subchart can't be circumvented by a -parent chart. This also works backwards - if a subchart has a requirement that -is not met in the subchart's `values.yaml` file, the parent chart *must* -satisfy those restrictions in order to be valid. - -### References - -When it comes to writing templates, values, and schema files, there are several -standard references that will help you out. - -- [Go templates](https://godoc.org/text/template) -- [Extra template functions](https://godoc.org/github.com/Masterminds/sprig) -- [The YAML format](http://yaml.org/spec/) -- [JSON Schema](https://json-schema.org/) - -## Using Helm to Manage Charts - -The `helm` tool has several commands for working with charts. - -It can create a new chart for you: - -```console -$ helm create mychart -Created mychart/ -``` - -Once you have edited a chart, `helm` can package it into a chart archive -for you: - -```console -$ helm package mychart -Archived mychart-0.1.-.tgz -``` - -You can also use `helm` to help you find issues with your chart's -formatting or information: - -```console -$ helm lint mychart -No issues found -``` - -## Chart Repositories - -A _chart repository_ is an HTTP server that houses one or more packaged -charts. While `helm` can be used to manage local chart directories, when -it comes to sharing charts, the preferred mechanism is a chart -repository. - -Any HTTP server that can serve YAML files and tar files and can answer -GET requests can be used as a repository server. - -Helm comes with built-in package server for developer testing (`helm -serve`). The Helm team has tested other servers, including Google Cloud -Storage with website mode enabled, and S3 with website mode enabled. - -A repository is characterized primarily by the presence of a special -file called `index.yaml` that has a list of all of the packages supplied -by the repository, together with metadata that allows retrieving and -verifying those packages. - -On the client side, repositories are managed with the `helm repo` -commands. However, Helm does not provide tools for uploading charts to -remote repository servers. This is because doing so would add -substantial requirements to an implementing server, and thus raise the -barrier for setting up a repository. - -## Chart Starter Packs - -The `helm create` command takes an optional `--starter` option that lets you -specify a "starter chart". - -Starters are just regular charts, but are located in `$HELM_HOME/starters`. -As a chart developer, you may author charts that are specifically designed -to be used as starters. Such charts should be designed with the following -considerations in mind: - -- The `Chart.yaml` will be overwritten by the generator. -- Users will expect to modify such a chart's contents, so documentation - should indicate how users can do so. -- All occurrences of `` will be replaced with the specified chart - name so that starter charts can be used as templates. - -Currently the only way to add a chart to `$HELM_HOME/starters` is to manually -copy it there. In your chart's documentation, you may want to explain that -process. diff --git a/docs/charts_hooks.md b/docs/charts_hooks.md deleted file mode 100644 index 1284b9c2f..000000000 --- a/docs/charts_hooks.md +++ /dev/null @@ -1,199 +0,0 @@ -# Hooks - -Helm provides a _hook_ mechanism to allow chart developers to intervene -at certain points in a release's life cycle. For example, you can use -hooks to: - -- Load a ConfigMap or Secret during install before any other charts are - loaded. -- Execute a Job to back up a database before installing a new chart, - and then execute a second job after the upgrade in order to restore - data. -- Run a Job before deleting a release to gracefully take a service out - of rotation before removing it. - -Hooks work like regular templates, but they have special annotations -that cause Helm to utilize them differently. In this section, we cover -the basic usage pattern for hooks. - -## The Available Hooks - -The following hooks are defined: - -- pre-install: Executes after templates are rendered, but before any - resources are created in Kubernetes. -- post-install: Executes after all resources are loaded into Kubernetes -- pre-delete: Executes on a deletion request before any resources are - deleted from Kubernetes. -- post-delete: Executes on a deletion request after all of the release's - resources have been deleted. -- pre-upgrade: Executes on an upgrade request after templates are - rendered, but before any resources are loaded into Kubernetes (e.g. - before a Kubernetes apply operation). -- post-upgrade: Executes on an upgrade after all resources have been - upgraded. -- pre-rollback: Executes on a rollback request after templates are - rendered, but before any resources have been rolled back. -- post-rollback: Executes on a rollback request after all resources - have been modified. - -## Hooks and the Release Lifecycle - -Hooks allow you, the chart developer, an opportunity to perform -operations at strategic points in a release lifecycle. For example, -consider the lifecycle for a `helm install`. By default, the lifecycle -looks like this: - -1. User runs `helm install foo` -2. The Helm library install API is called -3. After some verification, the library renders the `foo` templates -4. The library loads the resulting resources into Kubernetes -5. The library returns the release object (and other data) to the client -6. The client exits - -Helm defines two hooks for the `install` lifecycle: `pre-install` and -`post-install`. If the developer of the `foo` chart implements both -hooks, the lifecycle is altered like this: - -1. User runs `helm install foo` -2. The Helm library install API is called -3. After some verification, the library renders the `foo` templates -4. The library prepares to execute the `pre-install` hooks (loading hook resources into - Kubernetes) -5. The library sorts hooks by weight (assigning a weight of 0 by default) and by name for those hooks with the same weight in ascending order. -6. The library then loads the hook with the lowest weight first (negative to positive) -7. The library waits until the hook is "Ready" (except for CRDs) -8. The library loads the resulting resources into Kubernetes. Note that if the `--wait` -flag is set, the library will wait until all resources are in a ready state -and will not run the `post-install` hook until they are ready. -9. The library executes the `post-install` hook (loading hook resources) -10. The library waits until the hook is "Ready" -11. The library returns the release object (and other data) to the client -12. The client exits - -What does it mean to wait until a hook is ready? This depends on the -resource declared in the hook. If the resources is a `Job` kind, the library - will wait until the job successfully runs to completion. And if the job -fails, the release will fail. This is a _blocking operation_, so the -Helm client will pause while the Job is run. - -For all other kinds, as soon as Kubernetes marks the resource as loaded -(added or updated), the resource is considered "Ready". When many -resources are declared in a hook, the resources are executed serially. If they -have hook weights (see below), they are executed in weighted order. Otherwise, -ordering is not guaranteed. (In Helm 2.3.0 and after, they are sorted -alphabetically. That behavior, though, is not considered binding and could change -in the future.) It is considered good practice to add a hook weight, and set it -to `0` if weight is not important. - - -### Hook resources are not managed with corresponding releases - -The resources that a hook creates are not tracked or managed as part of the -release. Once Helm verifies that the hook has reached its ready state, it -will leave the hook resource alone. - -Practically speaking, this means that if you create resources in a hook, you -cannot rely upon `helm uninstall` to remove the resources. To destroy such -resources, you need to either write code to perform this operation in a `pre-delete` -or `post-delete` hook or add `"helm.sh/hook-delete-policy"` annotation to the hook template file. - -## Writing a Hook - -Hooks are just Kubernetes manifest files with special annotations in the -`metadata` section. Because they are template files, you can use all of -the normal template features, including reading `.Values`, `.Release`, -and `.Template`. - -For example, this template, stored in `templates/post-install-job.yaml`, -declares a job to be run on `post-install`: - -```yaml -apiVersion: batch/v1 -kind: Job -metadata: - name: "{{.Release.Name}}" - labels: - app.kubernetes.io/managed-by: {{.Release.Service | quote }} - app.kubernetes.io/instance: {{.Release.Name | quote }} - app.kubernetes.io/version: {{ .Chart.AppVersion }} - helm.sh/chart: "{{.Chart.Name}}-{{.Chart.Version}}" - annotations: - # This is what defines this resource as a hook. Without this line, the - # job is considered part of the release. - "helm.sh/hook": post-install - "helm.sh/hook-weight": "-5" - "helm.sh/hook-delete-policy": hook-succeeded -spec: - template: - metadata: - name: "{{.Release.Name}}" - labels: - app.kubernetes.io/managed-by: {{.Release.Service | quote }} - app.kubernetes.io/instance: {{.Release.Name | quote }} - helm.sh/chart: "{{.Chart.Name}}-{{.Chart.Version}}" - spec: - restartPolicy: Never - containers: - - name: post-install-job - image: "alpine:3.3" - command: ["/bin/sleep","{{default "10" .Values.sleepyTime}}"] - -``` - -What makes this template a hook is the annotation: - -``` - annotations: - "helm.sh/hook": post-install -``` - -One resource can implement multiple hooks: - -``` - annotations: - "helm.sh/hook": post-install,post-upgrade -``` - -Similarly, there is no limit to the number of different resources that -may implement a given hook. For example, one could declare both a secret -and a config map as a pre-install hook. - -When subcharts declare hooks, those are also evaluated. There is no way -for a top-level chart to disable the hooks declared by subcharts. - -It is possible to define a weight for a hook which will help build a -deterministic executing order. Weights are defined using the following annotation: - -``` - annotations: - "helm.sh/hook-weight": "5" -``` - -Hook weights can be positive or negative numbers but must be represented as -strings. When Helm starts the execution cycle of hooks of a particular Kind it -will sort those hooks in ascending order. - -It is also possible to define policies that determine when to delete corresponding hook resources. Hook deletion policies are defined using the following annotation: - -``` - annotations: - "helm.sh/hook-delete-policy": hook-succeeded -``` - -You can choose one or more defined annotation values: -* `"hook-succeeded"` specifies Helm should delete the hook after the hook is successfully executed. -* `"hook-failed"` specifies Helm should delete the hook if the hook failed during execution. -* `"before-hook-creation"` specifies Helm should delete the previous hook before the new hook is launched. - -### Automatically uninstall hook from previous release - -When helm release being updated it is possible, that hook resource already exists in cluster. By default helm will try to create resource and fail with `"... already exists"` error. - -One might choose `"helm.sh/hook-delete-policy": "before-hook-creation"` over `"helm.sh/hook-delete-policy": "hook-succeeded,hook-failed"` because: - -* It is convenient to keep failed hook job resource in kubernetes for example for manual debug. -* It may be necessary to keep succeeded hook resource in kubernetes for some reason. -* At the same time it is not desirable to do manual resource deletion before helm release upgrade. - -`"helm.sh/hook-delete-policy": "before-hook-creation"` annotation on hook causes Helm to remove the hook from previous release if there is one before the new hook is launched and can be used with another policy. diff --git a/docs/charts_tips_and_tricks.md b/docs/charts_tips_and_tricks.md deleted file mode 100644 index 14a70a138..000000000 --- a/docs/charts_tips_and_tricks.md +++ /dev/null @@ -1,248 +0,0 @@ -# Chart Development Tips and Tricks - -This guide covers some of the tips and tricks Helm chart developers have -learned while building production-quality charts. - -## Know Your Template Functions - -Helm uses [Go templates](https://godoc.org/text/template) for templating -your resource files. While Go ships several built-in functions, we have -added many others. - -First, we added all of the functions in the -[Sprig library](https://godoc.org/github.com/Masterminds/sprig). - -We also added two special template functions: `include` and `required`. The `include` -function allows you to bring in another template, and then pass the results to other -template functions. - -For example, this template snippet includes a template called `mytpl`, then -lowercases the result, then wraps that in double quotes. - -```yaml -value: {{include "mytpl" . | lower | quote}} -``` - -The `required` function allows you to declare a particular -values entry as required for template rendering. If the value is empty, the template -rendering will fail with a user submitted error message. - -The following example of the `required` function declares an entry for .Values.who -is required, and will print an error message when that entry is missing: - -```yaml -value: {{required "A valid .Values.who entry required!" .Values.who }} -``` - -## Quote Strings, Don't Quote Integers - -When you are working with string data, you are always safer quoting the -strings than leaving them as bare words: - -``` -name: {{.Values.MyName | quote }} -``` - -But when working with integers _do not quote the values._ That can, in -many cases, cause parsing errors inside of Kubernetes. - -``` -port: {{ .Values.Port }} -``` - -This remark does not apply to env variables values which are expected to be string, even if they represent integers: - -``` -env: - -name: HOST - value: "http://host" - -name: PORT - value: "1234" -``` - -## Using the 'include' Function - -Go provides a way of including one template in another using a built-in -`template` directive. However, the built-in function cannot be used in -Go template pipelines. - -To make it possible to include a template, and then perform an operation -on that template's output, Helm has a special `include` function: - -``` -{{ include "toYaml" $value | indent 2 }} -``` - -The above includes a template called `toYaml`, passes it `$value`, and -then passes the output of that template to the `indent` function. - -Because YAML ascribes significance to indentation levels and whitespace, -this is one great way to include snippets of code, but handle -indentation in a relevant context. - -## Using the 'required' function - -Go provides a way for setting template options to control behavior -when a map is indexed with a key that's not present in the map. This -is typically set with template.Options("missingkey=option"), where option -can be default, zero, or error. While setting this option to error will -stop execution with an error, this would apply to every missing key in the -map. There may be situations where a chart developer wants to enforce this -behavior for select values in the values.yml file. - -The `required` function gives developers the ability to declare a value entry -as required for template rendering. If the entry is empty in values.yml, the -template will not render and will return an error message supplied by the -developer. - -For example: - -``` -{{ required "A valid foo is required!" .Values.foo }} -``` - -The above will render the template when .Values.foo is defined, but will fail -to render and exit when .Values.foo is undefined. - -## Creating Image Pull Secrets -Image pull secrets are essentially a combination of _registry_, _username_, and _password_. You may need them in an application you are deploying, but to create them requires running _base64_ a couple of times. We can write a helper template to compose the Docker configuration file for use as the Secret's payload. Here is an example: - -First, assume that the credentials are defined in the `values.yaml` file like so: -``` -imageCredentials: - registry: quay.io - username: someone - password: sillyness -``` - -We then define our helper template as follows: -``` -{{- define "imagePullSecret" }} -{{- printf "{\"auths\": {\"%s\": {\"auth\": \"%s\"}}}" .Values.imageCredentials.registry (printf "%s:%s" .Values.imageCredentials.username .Values.imageCredentials.password | b64enc) | b64enc }} -{{- end }} -``` - -Finally, we use the helper template in a larger template to create the Secret manifest: -``` -apiVersion: v1 -kind: Secret -metadata: - name: myregistrykey -type: kubernetes.io/dockerconfigjson -data: - .dockerconfigjson: {{ template "imagePullSecret" . }} -``` - -## Automatically Roll Deployments When ConfigMaps or Secrets change - -Often times configmaps or secrets are injected as configuration -files in containers. -Depending on the application a restart may be required should those -be updated with a subsequent `helm upgrade`, but if the -deployment spec itself didn't change the application keeps running -with the old configuration resulting in an inconsistent deployment. - -The `sha256sum` function can be used to ensure a deployment's -annotation section is updated if another file changes: - -```yaml -kind: Deployment -spec: - template: - metadata: - annotations: - checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} -[...] -``` - -See also the `helm upgrade --recreate-pods` flag for a slightly -different way of addressing this issue. - -## Tell Helm Not To Uninstall a Resource - -Sometimes there are resources that should not be uninstalled when Helm runs a -`helm uninstall`. Chart developers can add an annotation to a resource to prevent -it from being uninstalled. - -```yaml -kind: Secret -metadata: - annotations: - "helm.sh/resource-policy": keep -[...] -``` - -(Quotation marks are required) - -The annotation `"helm.sh/resource-policy": keep` instructs Helm to skip this -resource during a `helm uninstall` operation. _However_, this resource becomes -orphaned. Helm will no longer manage it in any way. This can lead to problems -if using `helm install --replace` on a release that has already been uninstalled, but -has kept resources. - -## Using "Partials" and Template Includes - -Sometimes you want to create some reusable parts in your chart, whether -they're blocks or template partials. And often, it's cleaner to keep -these in their own files. - -In the `templates/` directory, any file that begins with an -underscore(`_`) is not expected to output a Kubernetes manifest file. So -by convention, helper templates and partials are placed in a -`_helpers.tpl` file. - -## Complex Charts with Many Dependencies - -Many of the charts in the [official charts repository](https://github.com/helm/charts) -are "building blocks" for creating more advanced applications. But charts may be -used to create instances of large-scale applications. In such cases, a single -umbrella chart may have multiple subcharts, each of which functions as a piece -of the whole. - -The current best practice for composing a complex application from discrete parts -is to create a top-level umbrella chart that -exposes the global configurations, and then use the `charts/` subdirectory to -embed each of the components. - -Two strong design patterns are illustrated by these projects: - -**SAP's [OpenStack chart](https://github.com/sapcc/openstack-helm):** This chart -installs a full OpenStack IaaS on Kubernetes. All of the charts are collected -together in one GitHub repository. - -**Deis's [Workflow](https://github.com/deis/workflow/tree/master/charts/workflow):** -This chart exposes the entire Deis PaaS system with one chart. But it's different -from the SAP chart in that this umbrella chart is built from each component, and -each component is tracked in a different Git repository. Check out the -`requirements.yaml` file to see how this chart is composed by their CI/CD -pipeline. - -Both of these charts illustrate proven techniques for standing up complex environments -using Helm. - -## YAML is a Superset of JSON - -According to the YAML specification, YAML is a superset of JSON. That -means that any valid JSON structure ought to be valid in YAML. - -This has an advantage: Sometimes template developers may find it easier -to express a datastructure with a JSON-like syntax rather than deal with -YAML's whitespace sensitivity. - -As a best practice, templates should follow a YAML-like syntax _unless_ -the JSON syntax substantially reduces the risk of a formatting issue. - -## Be Careful with Generating Random Values - -There are functions in Helm that allow you to generate random data, -cryptographic keys, and so on. These are fine to use. But be aware that -during upgrades, templates are re-executed. When a template run -generates data that differs from the last run, that will trigger an -update of that resource. - -## Upgrade a release idempotently - -In order to use the same command when installing and upgrading a release, use the following command: -```shell -helm upgrade --install --values -``` diff --git a/docs/developers.md b/docs/developers.md deleted file mode 100644 index a520a8266..000000000 --- a/docs/developers.md +++ /dev/null @@ -1,148 +0,0 @@ -# Developers Guide - -This guide explains how to set up your environment for developing on -Helm. - -## Prerequisites - -- The latest version of Go -- The latest version of Dep -- A Kubernetes cluster w/ kubectl (optional) -- Git - -## Building Helm - -We use Make to build our programs. The simplest way to get started is: - -```console -$ make -``` - -NOTE: This will fail if not running from the path `$GOPATH/src/helm.sh/helm`. The -directory `helm.sh` should not be a symlink or `build` will not find the relevant -packages. - -If required, this will first install dependencies, rebuild the `vendor/` tree, and -validate configuration. It will then compile `helm` and place it in `bin/helm`. - -To run all the tests (without running the tests for `vendor/`), run -`make test`. - -To run Helm locally, you can run `bin/helm`. - -- Helm is known to run on macOS and most Linux distributions, including Alpine. - -### Man pages - -Man pages and Markdown documentation are not pre-built in `docs/` but you can -generate the documentation using `make docs`. - -To expose the Helm man pages to your `man` client, you can put the files in your -`$MANPATH`: - -``` -$ export MANPATH=$GOPATH/src/helm.sh/helm/docs/man:$MANPATH -$ man helm -``` - - -## Docker Images - -To build Docker images, use `make docker-build`. - -Pre-build images are already available in the official Kubernetes Helm -GCR registry. - -## Running a Local Cluster - -For development, we highly recommend using the -[Kubernetes Minikube](https://github.com/kubernetes/minikube) -developer-oriented distribution. - -## Contribution Guidelines - -We welcome contributions. This project has set up some guidelines in -order to ensure that (a) code quality remains high, (b) the project -remains consistent, and (c) contributions follow the open source legal -requirements. Our intent is not to burden contributors, but to build -elegant and high-quality open source code so that our users will benefit. - -Make sure you have read and understood the main CONTRIBUTING guide: - -https://github.com/helm/helm/blob/master/CONTRIBUTING.md - -### Structure of the Code - -The code for the Helm project is organized as follows: - -- The individual programs are located in `cmd/`. Code inside of `cmd/` - is not designed for library re-use. -- Shared libraries are stored in `pkg/`. -- The `scripts/` directory contains a number of utility scripts. Most of these - are used by the CI/CD pipeline. -- The `docs/` folder is used for documentation and examples. - -Go dependencies are managed with -[Dep](https://github.com/golang/dep) and stored in the -`vendor/` directory. - -### Git Conventions - -We use Git for our version control system. The `master` branch is the -home of the current development candidate. Releases are tagged. - -We accept changes to the code via GitHub Pull Requests (PRs). One -workflow for doing this is as follows: - -1. Go to your `$GOPATH/src` directory, then `mkdir helm.sh; cd helm.sh` and `git clone` the - `github.com/helm/helm` repository. -2. Fork that repository into your GitHub account -3. Add your repository as a remote for `$GOPATH/src/helm.sh/helm` -4. Create a new working branch (`git checkout -b feat/my-feature`) and - do your work on that branch. -5. When you are ready for us to review, push your branch to GitHub, and - then open a new pull request with us. - -For Git commit messages, we follow the [Semantic Commit Messages](http://karma-runner.github.io/0.13/dev/git-commit-msg.html): - -``` -fix(helm): add --foo flag to 'helm install' - -When 'helm install --foo bar' is run, this will print "foo" in the -output regardless of the outcome of the installation. - -Closes #1234 -``` - -Common commit types: - -- fix: Fix a bug or error -- feat: Add a new feature -- docs: Change documentation -- test: Improve testing -- ref: refactor existing code - -Common scopes: - -- helm: The Helm CLI -- pkg/lint: The lint package. Follow a similar convention for any - package -- `*`: two or more scopes - -Read more: -- The [Deis Guidelines](https://github.com/deis/workflow/blob/master/src/contributing/submitting-a-pull-request.md) - were the inspiration for this section. -- Karma Runner [defines](http://karma-runner.github.io/0.13/dev/git-commit-msg.html) the semantic commit message idea. - -### Go Conventions - -We follow the Go coding style standards very closely. Typically, running -`go fmt` will make your code beautiful for you. - -We also typically follow the conventions recommended by `go lint` and -`gometalinter`. Run `make test-style` to test the style conformance. - -Read more: - -- Effective Go [introduces formatting](https://golang.org/doc/effective_go.html#formatting). -- The Go Wiki has a great article on [formatting](https://github.com/golang/go/wiki/CodeReviewComments). diff --git a/docs/examples/README.md b/docs/examples/README.md deleted file mode 100644 index 723040ca8..000000000 --- a/docs/examples/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# Helm Examples - -This directory contains example charts to help you get started with -chart development. - -## Alpine - -The `alpine` chart is very simple, and is a good starting point. - -It simply deploys a single pod running Alpine Linux. - -## Nginx - -The `nginx` chart shows how to compose several resources into one chart, -and it illustrates more complex template usage. - -It deploys a `deployment` (which creates a `replica set`), a `config -map`, and a `service`. The replica set starts an nginx pod. The config -map stores the files that the nginx server can serve. diff --git a/docs/examples/alpine/Chart.yaml b/docs/examples/alpine/Chart.yaml deleted file mode 100644 index a2403f594..000000000 --- a/docs/examples/alpine/Chart.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v1 -name: alpine -description: Deploy a basic Alpine Linux pod -version: 0.1.0 -home: https://github.com/helm/helm -sources: - - https://github.com/helm/helm -appVersion: 3.3 diff --git a/docs/examples/alpine/README.md b/docs/examples/alpine/README.md deleted file mode 100644 index 3e354724c..000000000 --- a/docs/examples/alpine/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Alpine: A simple Helm chart - -Run a single pod of Alpine Linux. - -The `templates/` directory contains a very simple pod resource with a -couple of parameters. - -The `values.yaml` file contains the default values for the -`alpine-pod.yaml` template. - -You can install this example using `helm install docs/examples/alpine`. diff --git a/docs/examples/alpine/templates/_helpers.tpl b/docs/examples/alpine/templates/_helpers.tpl deleted file mode 100644 index 3e9c25bed..000000000 --- a/docs/examples/alpine/templates/_helpers.tpl +++ /dev/null @@ -1,16 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "alpine.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "alpine.fullname" -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} diff --git a/docs/examples/alpine/templates/alpine-pod.yaml b/docs/examples/alpine/templates/alpine-pod.yaml deleted file mode 100644 index 0f48e4059..000000000 --- a/docs/examples/alpine/templates/alpine-pod.yaml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: {{ template "alpine.fullname" . }} - labels: - # The "app.kubernetes.io/managed-by" label is used to track which tool deployed a given chart. - # It is useful for admins who want to see what releases a particular tool - # is responsible for. - app.kubernetes.io/managed-by: {{ .Release.Service }} - # The "app.kubernetes.io/instance" convention makes it easy to tie a release to all of the - # Kubernetes resources that were created as part of that release. - app.kubernetes.io/instance: {{ .Release.Name | quote }} - app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} - # This makes it easy to audit chart usage. - helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} - app.kubernetes.io/name: {{ template "alpine.name" . }} -spec: - # This shows how to use a simple value. This will look for a passed-in value called restartPolicy. - restartPolicy: {{ .Values.restartPolicy }} - containers: - - name: waiter - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - command: ["/bin/sleep", "9000"] diff --git a/docs/examples/alpine/values.yaml b/docs/examples/alpine/values.yaml deleted file mode 100644 index afe8cc6c0..000000000 --- a/docs/examples/alpine/values.yaml +++ /dev/null @@ -1,6 +0,0 @@ -image: - repository: alpine - tag: 3.3 - pullPolicy: IfNotPresent - -restartPolicy: Never diff --git a/docs/examples/nginx/.helmignore b/docs/examples/nginx/.helmignore deleted file mode 100644 index 435b756d8..000000000 --- a/docs/examples/nginx/.helmignore +++ /dev/null @@ -1,5 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -.git diff --git a/docs/examples/nginx/Chart.yaml b/docs/examples/nginx/Chart.yaml deleted file mode 100644 index a6a942435..000000000 --- a/docs/examples/nginx/Chart.yaml +++ /dev/null @@ -1,16 +0,0 @@ -apiVersion: v1 -name: nginx -description: A basic NGINX HTTP server -version: 0.1.0 -kubeVersion: ">=1.2.0" -keywords: - - http - - nginx - - www - - web -home: https://github.com/helm/helm -sources: - - https://hub.docker.com/_/nginx/ -maintainers: - - name: technosophos - email: mbutcher@deis.com diff --git a/docs/examples/nginx/README.md b/docs/examples/nginx/README.md deleted file mode 100644 index e7a02e578..000000000 --- a/docs/examples/nginx/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# nginx: An advanced example chart - -This Helm chart provides examples of some of Helm's more powerful -features. - -**This is not a production-grade chart. It is an example.** - -The chart installs a simple nginx server according to the following -pattern: - -- A `ConfigMap` is used to store the files the server will serve. - ([templates/configmap.yaml](templates/configmap.yaml)) -- A `Deployment` is used to create a Replica Set of nginx pods. - ([templates/deployment.yaml](templates/deployment.yaml)) -- A `Service` is used to create a gateway to the pods running in the - replica set ([templates/service.yaml](templates/service.yaml)) - -The [values.yaml](values.yaml) exposes a few of the configuration options in the -charts, though there are some that are not exposed there (like -`.image`). - -The [templates/_helpers.tpl](templates/_helpers.tpl) file contains helper templates. The leading -underscore (`_`) on the filename is semantic. It tells the template renderer -that this file does not contain a manifest. That file declares some -templates that are used elsewhere in the chart. - -Helpers (usually called "partials" in template languages) are an -advanced way for developers to structure their templates for optimal -reuse. - -You can deploy this chart with `helm install docs/examples/nginx`. Or -you can see how this chart would render with `helm install --dry-run ---debug docs/examples/nginx`. diff --git a/docs/examples/nginx/charts/alpine/Chart.yaml b/docs/examples/nginx/charts/alpine/Chart.yaml deleted file mode 100644 index a2403f594..000000000 --- a/docs/examples/nginx/charts/alpine/Chart.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v1 -name: alpine -description: Deploy a basic Alpine Linux pod -version: 0.1.0 -home: https://github.com/helm/helm -sources: - - https://github.com/helm/helm -appVersion: 3.3 diff --git a/docs/examples/nginx/charts/alpine/README.md b/docs/examples/nginx/charts/alpine/README.md deleted file mode 100644 index 3e354724c..000000000 --- a/docs/examples/nginx/charts/alpine/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Alpine: A simple Helm chart - -Run a single pod of Alpine Linux. - -The `templates/` directory contains a very simple pod resource with a -couple of parameters. - -The `values.yaml` file contains the default values for the -`alpine-pod.yaml` template. - -You can install this example using `helm install docs/examples/alpine`. diff --git a/docs/examples/nginx/charts/alpine/templates/_helpers.tpl b/docs/examples/nginx/charts/alpine/templates/_helpers.tpl deleted file mode 100644 index 3e9c25bed..000000000 --- a/docs/examples/nginx/charts/alpine/templates/_helpers.tpl +++ /dev/null @@ -1,16 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "alpine.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "alpine.fullname" -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} diff --git a/docs/examples/nginx/charts/alpine/templates/alpine-pod.yaml b/docs/examples/nginx/charts/alpine/templates/alpine-pod.yaml deleted file mode 100644 index a1a5f15da..000000000 --- a/docs/examples/nginx/charts/alpine/templates/alpine-pod.yaml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: {{ template "alpine.fullname" . }} - labels: - # The "app.kubernetes.io/managed-by" label is used to track which tool - # deployed a given chart. It is useful for admins who want to see what - # releases a particular tool is responsible for. - app.kubernetes.io/managed-by: {{.Release.Service | quote }} - # The "app.kubernetes.io/instance" convention makes it easy to tie a release - # to all of the Kubernetes resources that were created as part of that - # release. - app.kubernetes.io/instance: {{.Release.Name | quote }} - # This makes it easy to audit chart usage. - helm.sh/chart: "{{.Chart.Name}}-{{.Chart.Version}}" - app.kubernetes.io/name: {{ template "alpine.name" . }} -spec: - # This shows how to use a simple value. This will look for a passed-in value called restartPolicy. - restartPolicy: {{ .Values.restartPolicy }} - containers: - - name: waiter - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - command: ["/bin/sleep", "9000"] diff --git a/docs/examples/nginx/charts/alpine/values.yaml b/docs/examples/nginx/charts/alpine/values.yaml deleted file mode 100644 index afe8cc6c0..000000000 --- a/docs/examples/nginx/charts/alpine/values.yaml +++ /dev/null @@ -1,6 +0,0 @@ -image: - repository: alpine - tag: 3.3 - pullPolicy: IfNotPresent - -restartPolicy: Never diff --git a/docs/examples/nginx/templates/NOTES.txt b/docs/examples/nginx/templates/NOTES.txt deleted file mode 100644 index 4bdf443f6..000000000 --- a/docs/examples/nginx/templates/NOTES.txt +++ /dev/null @@ -1 +0,0 @@ -Sample notes for {{ .Chart.Name }} \ No newline at end of file diff --git a/docs/examples/nginx/templates/_helpers.tpl b/docs/examples/nginx/templates/_helpers.tpl deleted file mode 100644 index 2ec6ba757..000000000 --- a/docs/examples/nginx/templates/_helpers.tpl +++ /dev/null @@ -1,16 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "nginx.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "nginx.fullname" -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} diff --git a/docs/examples/nginx/templates/configmap.yaml b/docs/examples/nginx/templates/configmap.yaml deleted file mode 100644 index 0141cbc69..000000000 --- a/docs/examples/nginx/templates/configmap.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# This is a simple example of using a config map to create a single page static site. -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "nginx.fullname" . }} - labels: - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/instance: {{ .Release.Name }} - helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} - app.kubernetes.io/name: {{ template "nginx.name" . }} -data: - # When the config map is mounted as a volume, these will be created as files. - index.html: {{ .Values.index | quote }} - test.txt: test diff --git a/docs/examples/nginx/templates/deployment.yaml b/docs/examples/nginx/templates/deployment.yaml deleted file mode 100644 index 08850935a..000000000 --- a/docs/examples/nginx/templates/deployment.yaml +++ /dev/null @@ -1,57 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - # This uses a "fullname" template (see _helpers) - # Basing names on .Release.Name means that the same chart can be installed - # multiple times into the same namespace. - name: {{ template "nginx.fullname" . }} - labels: - # The "app.kubernetes.io/managed-by" label is used to track which tool deployed a given chart. - # It is useful for admins who want to see what releases a particular tool - # is responsible for. - app.kubernetes.io/managed-by: {{ .Release.Service }} - # The "app.kubernetes.io/instance" convention makes it easy to tie a release to all of the - # Kubernetes resources that were created as part of that release. - app.kubernetes.io/instance: {{ .Release.Name }} - # This makes it easy to audit chart usage. - helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} - app.kubernetes.io/name: {{ template "nginx.name" . }} -spec: - replicas: {{ .Values.replicaCount }} - template: - metadata: -{{- if .Values.podAnnotations }} - # Allows custom annotations to be specified - annotations: -{{ toYaml .Values.podAnnotations | indent 8 }} -{{- end }} - labels: - app.kubernetes.io/name: {{ template "nginx.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - spec: - containers: - - name: {{ template "nginx.name" . }} - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - ports: - - name: http - containerPort: 80 - protocol: TCP - # This (and the volumes section below) mount the config map as a volume. - volumeMounts: - - mountPath: /usr/share/nginx/html - name: wwwdata-volume - resources: -# Allow chart users to specify resources. Usually, no default should be set, so this is left to be a conscious -# choice to the chart users and avoids that charts don't run out of the box on, e. g., Minikube when high resource -# requests are specified by default. -{{ toYaml .Values.resources | indent 12 }} - {{- if .Values.nodeSelector }} - nodeSelector: - # Node selectors can be important on mixed Windows/Linux clusters. -{{ toYaml .Values.nodeSelector | indent 8 }} - {{- end }} - volumes: - - name: wwwdata-volume - configMap: - name: {{ template "nginx.fullname" . }} diff --git a/docs/examples/nginx/templates/post-install-job.yaml b/docs/examples/nginx/templates/post-install-job.yaml deleted file mode 100644 index 6e32086ab..000000000 --- a/docs/examples/nginx/templates/post-install-job.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ template "nginx.fullname" . }} - labels: - # The "app.kubernetes.io/managed-by" label is used to track which tool deployed a given chart. - # It is useful for admins who want to see what releases a particular tool - # is responsible for. - app.kubernetes.io/managed-by: {{ .Release.Service }} - # The "app.kubernetes.io/instance" convention makes it easy to tie a release to all of the - # Kubernetes resources that were created as part of that release. - app.kubernetes.io/instance: {{ .Release.Name }} - # This makes it easy to audit chart usage. - helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} - app.kubernetes.io/name: {{ template "nginx.name" . }} - annotations: - # This is what defines this resource as a hook. Without this line, the - # job is considered part of the release. - "helm.sh/hook": post-install -spec: - template: - metadata: - name: {{ template "nginx.fullname" . }} - labels: - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/name: {{ template "nginx.name" . }} - spec: - # This shows how to use a simple value. This will look for a passed-in value - # called restartPolicy. If it is not found, it will use the default value. - # {{ default "Never" .restartPolicy }} is a slightly optimized version of the - # more conventional syntax: {{ .restartPolicy | default "Never" }} - restartPolicy: {{ .Values.restartPolicy }} - containers: - - name: post-install-job - image: "alpine:3.3" - # All we're going to do is sleep for a while, then exit. - command: ["/bin/sleep", "{{ .Values.sleepyTime }}"] diff --git a/docs/examples/nginx/templates/pre-install-secret.yaml b/docs/examples/nginx/templates/pre-install-secret.yaml deleted file mode 100644 index 07a9504b5..000000000 --- a/docs/examples/nginx/templates/pre-install-secret.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# This shows a secret as a pre-install hook. -# A pre-install hook is run before the rest of the chart is loaded. -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "nginx.fullname" . }} - labels: - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/instance: {{ .Release.Name }} - helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} - app.kubernetes.io/name: {{ template "nginx.name" . }} - # This declares the resource to be a hook. By convention, we also name the - # file "pre-install-XXX.yaml", but Helm itself doesn't care about file names. - annotations: - "helm.sh/hook": pre-install -type: Opaque -data: - password: {{ b64enc "secret" }} - username: {{ b64enc "user1" }} diff --git a/docs/examples/nginx/templates/service-test.yaml b/docs/examples/nginx/templates/service-test.yaml deleted file mode 100644 index ffb37e9f4..000000000 --- a/docs/examples/nginx/templates/service-test.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: "{{ template "nginx.fullname" . }}-service-test" - labels: - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/instance: {{ .Release.Name }} - helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} - app.kubernetes.io/name: {{ template "nginx.name" . }} - annotations: - "helm.sh/hook": test-success -spec: - containers: - - name: curl - image: radial/busyboxplus:curl - command: ['curl'] - args: ['{{ template "nginx.fullname" . }}:{{ .Values.service.port }}'] - restartPolicy: Never diff --git a/docs/examples/nginx/templates/service.yaml b/docs/examples/nginx/templates/service.yaml deleted file mode 100644 index 03f7aa2c6..000000000 --- a/docs/examples/nginx/templates/service.yaml +++ /dev/null @@ -1,39 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: -{{- if .Values.service.annotations }} - annotations: -{{ toYaml .Values.service.annotations | indent 4 }} -{{- end }} - labels: - app.kubernetes.io/name: {{ template "nginx.name" . }} - helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/instance: {{ .Release.Name }} - name: {{ template "nginx.fullname" . }} -spec: -# Provides options for the service so chart users have the full choice - type: "{{ .Values.service.type }}" - clusterIP: "{{ .Values.service.clusterIP }}" -{{- if .Values.service.externalIPs }} - externalIPs: -{{ toYaml .Values.service.externalIPs | indent 4 }} -{{- end }} -{{- if .Values.service.loadBalancerIP }} - loadBalancerIP: "{{ .Values.service.loadBalancerIP }}" -{{- end }} -{{- if .Values.service.loadBalancerSourceRanges }} - loadBalancerSourceRanges: -{{ toYaml .Values.service.loadBalancerSourceRanges | indent 4 }} -{{- end }} - ports: - - name: http - port: {{ .Values.service.port }} - protocol: TCP - targetPort: http - {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePort))) }} - nodePort: {{ .Values.service.nodePort }} - {{- end }} - selector: - app.kubernetes.io/name: {{ template "nginx.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} diff --git a/docs/examples/nginx/values.yaml b/docs/examples/nginx/values.yaml deleted file mode 100644 index b40208cce..000000000 --- a/docs/examples/nginx/values.yaml +++ /dev/null @@ -1,34 +0,0 @@ -# Default values for nginx. -# This is a YAML-formatted file. -# Declare name/value pairs to be passed into your templates. - -replicaCount: 1 -restartPolicy: Never - -# Evaluated by the post-install hook -sleepyTime: "10" - -index: >- -

Hello

-

This is a test

- -image: - repository: nginx - tag: 1.11.0 - pullPolicy: IfNotPresent - -service: - annotations: {} - clusterIP: "" - externalIPs: [] - loadBalancerIP: "" - loadBalancerSourceRanges: [] - type: ClusterIP - port: 8888 - nodePort: "" - -podAnnotations: {} - -resources: {} - -nodeSelector: {} diff --git a/docs/faq.md b/docs/faq.md deleted file mode 100644 index 6deef53b0..000000000 --- a/docs/faq.md +++ /dev/null @@ -1,255 +0,0 @@ -# Frequently Asked Questions - -This page provides help with the most common questions about Helm. - -**We'd love your help** making this document better. To add, correct, or remove -information, [file an issue](https://github.com/helm/helm/issues) or -send us a pull request. - -## Changes since Helm 2 - -Here's an exhaustive list of all the major changes introduced in Helm 3. - -### Removal of Tiller - -During the Helm 2 development cycle, we introduced Tiller. Tiller played an important role for teams working on a shared -cluster - it made it possible for multiple different operators to interact with the same set of releases. - -With role-based access controls (RBAC) enabled by default in Kubernetes 1.6, locking down Tiller for use in a production -scenario became more difficult to manage. Due to the vast number of possible security policies, our stance was to -provide a permissive default configuration. This allowed first-time users to start experimenting with Helm and -Kubernetes without having to dive headfirst into the security controls. Unfortunately, this permissive configuration -could grant a user a broad range of permissions they weren’t intended to have. DevOps and SREs had to learn additional -operational steps when installing Tiller into a multi-tenant cluster. - -After hearing how community members were using Helm in certain scenarios, we found that Tiller’s release management -system did not need to rely upon an in-cluster operator to maintain state or act as a central hub for Helm release -information. Instead, we could simply fetch information from the Kubernetes API server, render the Charts client-side, -and store a record of the installation in Kubernetes. - -Tiller’s primary goal could be accomplished without Tiller, so one of the first decisions we made regarding Helm 3 was -to completely remove Tiller. - -With Tiller gone, the security model for Helm is radically simplified. Helm 3 now supports all the modern security, -identity, and authorization features of modern Kubernetes. Helm’s permissions are evaluated using your [kubeconfig file](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/). -Cluster administrators can restrict user permissions at whatever granularity they see fit. Releases are still recorded -in-cluster, and the rest of Helm’s functionality remains. - -### Release Names are now scoped to the Namespace - -With the removal of Tiller, the information about each release had to go somewhere. In Helm 2, this was stored in the -same namespace as Tiller. In practice, this meant that once a name was used by a release, no other release could use -that same name, even if it was deployed in a different namespace. - -In Helm 3, release information about a particular release is now stored in the same namespace as the release itself. -This means that users can now `helm install wordpress stable/wordpress` in two separate namespaces, and each can be -referred with `helm list` by changing the current namespace context. - -### Go import path changes - -In Helm 3, Helm switched the Go import path over from `k8s.io/helm` to `helm.sh/helm`. If you intend -to upgrade to the Helm 3 Go client libraries, make sure to change your import paths. - -### Capabilities - -The `.Capabilities` built-in object available during the rendering stage has been simplified. - -[Built-in Objects](chart_template_guide/builtin_objects.md) - -### Validating Chart Values with JSONSchema - -A JSON Schema can now be imposed upon chart values. This ensures that values provided by the user follow the schema -laid out by the chart maintainer, providing better error reporting when the user provides an incorrect set of values for -a chart. - -Validation occurs when any of the following commands are invoked: - -* `helm install` -* `helm upgrade` -* `helm template` -* `helm lint` - -See the documentation on [Schema files](charts.md#schema-files) for more information. - -### Consolidation of requirements.yaml into Chart.yaml - -The Chart dependency management system moved from requirements.yaml and requirements.lock to Chart.yaml and Chart.lock, -meaning that charts that relied on the `helm dependency` subcommands will need some tweaking to work in Helm 3. - -In Helm 2, this is how a requirements.yaml looked: - -``` -dependencies: -- name: mariadb - version: 5.x.x - repository: https://kubernetes-charts.storage.googleapis.com/ - condition: mariadb.enabled - tags: - - database -``` - -In Helm 3, the dependency is expressed the same way, but now from your Chart.yaml: - -``` -dependencies: -- name: mariadb - version: 5.x.x - repository: https://kubernetes-charts.storage.googleapis.com/ - condition: mariadb.enabled - tags: - - database -``` - -Charts are still downloaded and placed in the charts/ directory, so subcharts vendored into the charts/ directory will continue to work without modification. - -### Name (or --generate-name) is now required on install - -In Helm 2, if no name was provided, an auto-generated name would be given. In production, this proved to be more of a -nuisance than a helpful feature. In Helm 3, Helm will throw an error if no name is provided with `helm install`. - -For those who still wish to have a name auto-generated for you, you can use the `--generate-name` flag to create one for -you. - -### Pushing Charts to OCI Registries - -At a high level, a Chart Repository is a location where Charts can be stored and shared. The Helm client packs and ships -Helm Charts to a Chart Repository. Simply put, a Chart Repository is a basic HTTP server that houses an index.yaml file -and some packaged charts. - -While there are several benefits to the Chart Repository API meeting the most basic storage requirements, a few -drawbacks have started to show: - -- Chart Repositories have a very hard time abstracting most of the security implementations required in a production environment. Having a standard API for authentication and authorization is very important in production scenarios. -- Helm’s Chart provenance tools used for signing and verifying the integrity and origin of a chart are an optional piece of the Chart publishing process. -- In multi-tenant scenarios, the same Chart can be uploaded by another tenant, costing twice the storage cost to store the same content. Smarter chart repositories have been designed to handle this, but it’s not a part of the formal specification. -- Using a single index file for search, metadata information, and fetching Charts has made it difficult or clunky to design around in secure multi-tenant implementations. - -Docker’s Distribution project (also known as Docker Registry v2) is the successor to the Docker Registry project. Many -major cloud vendors have a product offering of the Distribution project, and with so many vendors offering the same -product, the Distribution project has benefited from many years of hardening, security best practices, and -battle-testing. - -Please have a look at `helm help chart` and `helm help registry` for more information on how to package a chart and -push it to a Docker registry. - -For more info, please see [this page](./registries.md). - -### Removal of helm serve - -`helm serve` ran a local Chart Repository on your machine for development purposes. However, it didn't receive much -uptake as a development tool and had numerous issues with its design. In the end, we decided to remove it and split it -out as a plugin. - -### Library chart support - -Helm 3 supports a class of chart called a “library chart”. This is a chart that is shared by other charts, but does not -create any release artifacts of its own. A library chart’s templates can only declare `define` elements. Globally scoped -non-`define` content is simply ignored. This allows users to re-use and share snippets of code that can be re-used across -many charts, avoiding redundancy and keeping charts [DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself). - -Library charts are declared in the dependencies directive in Chart.yaml, and are installed and managed like any other -chart. - -``` -dependencies: - - name: mylib - version: 1.x.x - repository: quay.io -``` - -We’re very excited to see the use cases this feature opens up for chart developers, as well as any best practices that -arise from consuming library charts. - -### CLI Command Renames - -In order to better align the verbiage from other package managers, `helm delete` was re-named to -`helm uninstall`. `helm delete` is still retained as an alias to `helm uninstall`, so either form -can be used. - -In Helm 2, in order to purge the release ledger, the `--purge` flag had to be provided. This -functionality is now enabled by default. To retain the previous behaviour, use -`helm uninstall --keep-history`. - -Additionally, several other commands were re-named to accommodate the same conventions: - -- `helm inspect` -> `helm show` -- `helm fetch` -> `helm pull` - -These commands have also retained their older verbs as aliases, so you can continue to use them in either form. - -### Automatically creating namespaces - -When creating a release in a namespace that does not exist, Helm 2 created the -namespace. Helm 3 follows the behavior of other Kubernetes objects and returns -an error if the namespace does not exist. - -## Installing - -### Why aren't there Debian/Fedora/... native packages of Helm? - -We'd love to provide these or point you toward a trusted provider. If you're -interested in helping, we'd love it. This is how the Homebrew formula was -started. - -### Why do you provide a `curl ...|bash` script? - -There is a script in our repository (`scripts/get`) that can be executed as -a `curl ..|bash` script. The transfers are all protected by HTTPS, and the script -does some auditing of the packages it fetches. However, the script has all the -usual dangers of any shell script. - -We provide it because it is useful, but we suggest that users carefully read the -script first. What we'd really like, though, are better packaged releases of -Helm. - -### How do I put the Helm client files somewhere other than ~/.helm? - -Set the `$HELM_HOME` environment variable, and then run `helm init`: - -```console -export HELM_HOME=/some/path -helm init --client-only -``` - -Note that if you have existing repositories, you will need to re-add them -with `helm repo add...`. - - -## Uninstalling - -### I want to delete my local Helm. Where are all its files? - -Along with the `helm` binary, Helm stores some files in `$HELM_HOME`, which is -located by default in `~/.helm`. - - -## Troubleshooting - -### On GKE (Google Container Engine) I get "No SSH tunnels currently open" - -``` -Error: Error forwarding ports: error upgrading connection: No SSH tunnels currently open. Were the targets able to accept an ssh-key for user "gke-[redacted]"? -``` - -Another variation of the error message is: - - -``` -Unable to connect to the server: x509: certificate signed by unknown authority - -``` - -The issue is that your local Kubernetes config file must have the correct credentials. - -When you create a cluster on GKE, it will give you credentials, including SSL -certificates and certificate authorities. These need to be stored in a Kubernetes -config file (Default: `~/.kube/config` so that `kubectl` and `helm` can access -them. - -### Why do I get a `unsupported protocol scheme ""` error when trying to pull a chart from my custom repo?** - -(Helm < 2.5.0) This is likely caused by you creating your chart repo index without specifying the `--url` flag. -Try recreating your `index.yaml` file with a command like `helm repo index --url http://my-repo/charts .`, -and then re-uploading it to your custom charts repo. - -This behavior was changed in Helm 2.5.0. diff --git a/docs/glossary.md b/docs/glossary.md deleted file mode 100644 index c95e8561e..000000000 --- a/docs/glossary.md +++ /dev/null @@ -1,168 +0,0 @@ -# Helm Glossary - -Helm uses a few special terms to describe components of the -architecture. - -## Chart - -A Helm package that contains information sufficient for installing a set -of Kubernetes resources into a Kubernetes cluster. - -Charts contain a `Chart.yaml` file as well as templates, default values -(`values.yaml`), and dependencies. - -Charts are developed in a well-defined directory structure, and then -packaged into an archive format called a _chart archive_. - -## Chart Archive - -A _chart archive_ is a tarred and gzipped (and optionally signed) chart. - -## Chart Dependency (Subcharts) - -Charts may depend upon other charts. There are two ways a dependency may -occur: - -- Soft dependency: A chart may simply not function without another chart - being installed in a cluster. Helm does not provide tooling for this - case. In this case, dependencies may be managed separately. -- Hard dependency: A chart may contain (inside of its `charts/` - directory) another chart upon which it depends. In this case, - installing the chart will install all of its dependencies. In this - case, a chart and its dependencies are managed as a collection. - -When a chart is packaged (via `helm package`) all of its hard dependencies -are bundled with it. - -## Chart Version - -Charts are versioned according to the [SemVer 2 -spec](http://semver.org). A version number is required on every chart. - -## Chart.yaml - -Information about a chart is stored in a special file called -`Chart.yaml`. Every chart must have this file. - -## Helm (and helm) - -Helm is the package manager for Kubernetes. As an operating system -package manager makes it easy to install tools on an OS, Helm makes it -easy to install applications and resources into Kubernetes clusters. - -While _Helm_ is the name of the project, the command line client is also -named `helm`. By convention, when speaking of the project, _Helm_ is -capitalized. When speaking of the client, _helm_ is in lowercase. - -## Helm Home (HELM_HOME) - -The Helm client stores information in a local directory referred to as -_helm home_. By default, this is in the `$HOME/.helm` directory. - -This directory contains configuration and cache data, and is created by -`helm init`. - -## Kube Config (KUBECONFIG) - -The Helm client learns about Kubernetes clusters by using files in the _Kube -config_ file format. By default, Helm attempts to find this file in the -place where `kubectl` creates it (`$HOME/.kube/config`). - -## Lint (Linting) - -To _lint_ a chart is to validate that it follows the conventions and -requirements of the Helm chart standard. Helm provides tools to do this, -notably the `helm lint` command. - -## Provenance (Provenance file) - -Helm charts may be accompanied by a _provenance file_ which provides -information about where the chart came from and what it contains. - -Provenance files are one part of the Helm security story. A provenance contains -a cryptographic hash of the chart archive file, the Chart.yaml data, and -a signature block (an OpenPGP "clearsign" block). When coupled with a -keychain, this provides chart users with the ability to: - -- Validate that a chart was signed by a trusted party -- Validate that the chart file has not been tampered with -- Validate the contents of a chart metadata (`Chart.yaml`) -- Quickly match a chart to its provenance data - -Provenance files have the `.prov` extension, and can be served from a -chart repository server or any other HTTP server. - -## Release - -When a chart is installed, the Helm library creates a _release_ -to track that installation. - -A single chart may be installed many times into the same cluster, and -create many different releases. For example, one can install three -PostgreSQL databases by running `helm install` three times with a -different release name. - -(Prior to 2.0.0-Alpha.1, releases were called _deployments_. But this -caused confusion with the Kubernetes _Deployment_ kind.) - -## Release Number (Release Version) - -A single release can be updated multiple times. A sequential counter is -used to track releases as they change. After a first `helm install`, a -release will have _release number_ 1. Each time a release is upgraded or -rolled back, the release number will be incremented. - -## Rollback - -A release can be upgraded to a newer chart or configuration. But since -release history is stored, a release can also be _rolled back_ to a -previous release number. This is done with the `helm rollback` command. - -Importantly, a rolled back release will receive a new release number. - -Operation | Release Number -----------|--------------- -install | release 1 -upgrade | release 2 -upgrade | release 3 -rollback 1| release 4 (but running the same config as release 1) - -The above table illustrates how release numbers increment across -install, upgrade, and rollback. - -## Helm Library - -It interacts directly with the Kubernetes API server to install, -upgrade, query, and remove Kubernetes resources. - -## Repository (Repo, Chart Repository) - -Helm charts may be stored on dedicated HTTP servers called _chart -repositories_ (_repositories_, or just _repos_). - -A chart repository server is a simple HTTP server that can serve an -`index.yaml` file that describes a batch of charts, and provides -information on where each chart can be downloaded from. (Many chart -repositories serve the charts as well as the `index.yaml` file.) - -A Helm client can point to zero or more chart repositories. By default, -Helm clients point to the `stable` official Kubernetes chart -repository. - -## Values (Values Files, values.yaml) - -Values provide a way to override template defaults with your own -information. - -Helm Charts are "parameterized", which means the chart developer may -expose configuration that can be overridden at installation time. For -example, a chart may expose a `username` field that allows setting a -user name for a service. - -These exposed variables are called _values_ in Helm parlance. - -Values can be set during `helm install` and `helm upgrade` operations, -either by passing them in directly, or by uploading a `values.yaml` -file. - - diff --git a/docs/history.md b/docs/history.md deleted file mode 100644 index a1cda57c1..000000000 --- a/docs/history.md +++ /dev/null @@ -1,28 +0,0 @@ -## The History of the Project - -Kubernetes Helm is the merged result of [Helm -Classic](https://github.com/helm/helm) and the Kubernetes port of GCS Deployment -Manager. The project was jointly started by Google and Deis, though it -is now part of the CNCF. Many companies now contribute regularly to Helm. - -Differences from Helm Classic: - -- Helm now has both a client (`helm`) and a library. In version 2 it had a server (`tiller`) but the capability is now contained within the library. -- Helm's chart format has changed for the better: - - Dependencies are immutable and stored inside of a chart's `charts/` - directory. - - Charts are strongly versioned using [SemVer 2](http://semver.org/spec/v2.0.0.html) - - Charts can be loaded from directories or from chart archive files - - Helm supports Go templates without requiring you to run `generate` - or `template` commands. - - Helm makes it easy to configure your releases -- and share the - configuration with the rest of your team. -- Helm chart repositories now use plain HTTP(S) instead of Git/GitHub. - There is no longer any GitHub dependency. - - A chart server is a simple HTTP server - - Charts are referenced by version - - The `helm serve` command will run a local chart server, though you - can easily use object storage (S3, GCS) or a regular web server. - - And you can still load charts from a local directory. -- The Helm workspace is gone. You can now work anywhere on your - filesystem that you want to work. diff --git a/docs/images/create-a-bucket.png b/docs/images/create-a-bucket.png deleted file mode 100644 index f7f5dbfdc322ce695c2cd7868148b01acc203ebc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51471 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 diff --git a/docs/images/create-a-gh-page-button.png b/docs/images/create-a-gh-page-button.png deleted file mode 100644 index b9d43a7059b37dbb4c5cc2df3fef55cf0d5d2833..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30225 zcmbTdV{|S{*ESj_E6Iv&+qP}nwr$(CZQHhOuV}^Q$==WNz3+F%`FHw9kGf|~RL$zy zRo8Wo4wsV={SAo$2><}_TU<;?0RRAy=chdf0rqpx0sQR(0D$6bE+{A`E+~j6=U{7M zZeP2&I)0kOXf)z0w@u1buz@-nOWT z0-kSS*}mS>hxKJ~67b7A-r2j(c{H$Lp^${cuiV@Pavk-ksZ_k`cnUv^qyi95I?qTk&tWGhp*u%e=C z*XOXX%`IEY*QPC#KJ+3mzH7W=YnQO3;2a$v`!9H=7ra=A2YR=zQT;Vs95X(vCf{a< z+osTwua=m>AJ01V{xK!K)^^*?qpP!XW~w+>O`JRoD!!_wMrD6>-vy;zj_GeU_SWJ@DyXA%SGw&5P}q96AV5Pe5cv<;Na7d zu#w=SugWm#ZkZnve~%6;3Vj5au-{0pf{r^4bPB!&6$KzNfOs&buR%|^4suOdjj{^! z34#SC)1P{9WgkEW$}|{pU%^hf4R8zW3g$UfbP#rcaS!wc(ha){dj|?PaJEl%Zx@aX z1h79gPQVOL3SI^Rk^s^k&K^NNs!XJb;0k{Pt}#q`NR|j^JUWT5f^a&nW(>dxhyh#O zuS%!|@0xHl9%`(X3@HMcI6#3vy{k=Y2AH(S zXu;yV>AdQE_UY&;=mW`b>fgB0T+#H=oYHL47}9{#$QhhWvF0e|E%eZ6`cWJsV26?7 z16d!ZmBG$KV1}^zk#){%?`x=Q%o-XRfEvsioEvx>N*e?lU>iIe z>KnFfBw1`T0Dt@=2aWeD?6liV+nBjm6B*yTON}G!OkxUg( z6IN3HM3!2?iYGGoaJMW5hBd({CH6>#v&;(@QdJ(uX$W z8g~o6#Xr;}VL}Wa4;xQCgIE+U>6E$$VdIa}AsvA%juQI91uPRl?RL^a&slTl|tADM})~hu1oNDQx8LpYU z8qMj~ndO=38SbCeAA%o?G;j4FPtyEpI8u7kbB@hEKVGd zki0-&j8lv|K`}8u;XENpAwaQ1QA~kYF;&r0L8|<|6ld{fL2l8y)KgAbIa^sP}z30cDioZ2CL^o(R7B)UMUbc2xT<>S^XJ36=5uPy4lSrdjR32;| za~6aii#}X6VzsO_{NeY?4V4ufC|p0BRorIWWZa27HL-ObwG3sce_?ll$ zplzaMtOeV~<8bH%%%EW5QF+Q;7sDfp5I7y2?81Ixag&yJ|bHJITBHZSAMhm+n{0 zm)#f8my8#fcaSIBU($~nz$#!RP$A$Vpe=AQXg1I_XcNL192&G6xfd-Kg%+I@CKa0% zt`IvBs}bE2RukoK@HEmi%%F(M18iSlFM4Ql*nB8?z>1iKn1O(fIEVUEMCnM#Es-&Mkmce&H8szKXvf0 zs9Q`CPCBoJLla9j4L67PLE1 zM|0wFF0+%y>%*&+l8f8ZB35?Rxz@NbCm5FU$G14{r?2TBA|3r+}D4^j+T6Iu}dEzBr%#kt_R z!ePYnycxP2FSNh7oiCMROUF%*X7j?A=~(+1Ytt@u4((mUNYErJ{$-=S;m-+xM0E^5RKkgk;p@k#*U&Ta!jJ za`V^j{BERA*r(aI`R)C%%-W0$5qrjmCpkc=4V|wq0FNr5pDVB*9S}guRqo@RFAJOV zEnwl(OdL}aG$;78P#FIFm~0vG1IRSx6qO5b=uqM*)u|!+1R5zs)6@plc-5m-B-TNe zQH{Wrz7A0?LN6}8WS;y@{Tw)gRFF)PPE^X<@jJ<_j)RJY)LV^IVW<_1|dF^db<2xFeV(l_j>*CR3!;Ayn6z z+YL4i?IxbXH6vdUgUq8Ir57{OKQF~;o9QcQPYmvw>+0vKXNw0LLf3a_xt!OY+xLTB zL@~@E3@SJR_zI*FL>rWSq%+iHIB$v)h89K}hA%||l5k#iH9Yw;wIb)0vbBn# za;I7LiPt!&dgJorb>w4IO`1ntALZBLjFOP|2&w8X#GQiha`8S*u*$+D9MuPMkYs$3UCIWs}d=CF)M=gQwE#ZC(c-kL$6k z%a6$K;`om-=8Es#`6+##c?0_aH^L6Sw?$~~C`%A>6WWxI(rQQm31e!8Wx(Y5uV0i{i;8Lhd1VFc@T^T(OD;OR2! zT`<6dmQs{IV5u6b60Hu;2i)#BrB68bQuh+KGWeyhMshPRDR0WJtRPLGE})N~ zu%S_*JrJJQJqY#a!4W2r@lngMj?u8PY*}h)PR#9&yN92(uvMjf3iY9<3wELMp}sh; z4o>9WZ)>Nw@1z?H7L2pGQ#{Ej$#xu6oOq;otS?edIu2j^0aF8v!o;SO5tb4d5}GsH z9J`MD^6QIttH>9ra;fW-!<9^x)s|f~LMtUY(>*FGs=B_N`QLADhm|F*)0Nbj)tuI4 znJ+FUFf*DTt>UgkoX8zb9n+p$S0Ou+?Y<}c%C?@ndxPm;v%q2eEBFg_3t?Yn$A+Qw zsiaqjII`TNT_oMP?!2V3@w#!PHJ=RwPF>x}_ch`Eow=p(tUVP3)Z)6X#`+e`fzp=grL8ux@ zB%ztVcohzF2b2dsgHUHn$8iOyklF~@NFNf1$OMp(Q4tYQZJ(k~$!H7d%Mbt+|r4*zQrwOKk zsko@ItEZ}(fA)Lh%b`ng7=aid86i_1R2x+oRu$J0ZZ_Bl9kXlLSz8^YnOj%srw(j32{A!Ra z$gU8HVDgQp7lg7gPerS^oUUAlLRw(#i|0k>|aan&9>9$vYi|Hk?z zG1z(0nUBk5P4vXVBf)M6ImqUI4(D2LGE1;9K zs8$uKzE;`8vQuC?sHgj&~WtGr#NQW*Eu9VY(CgNs622bAPBDp>JJd=|0D1^@I(Y;u2rPAq$wqI z+3l7nlu#6dBw?Y}Aw(jlq8y`gmF!h1&|*-QP~6Z3SxdnmEtAb3D4keFTv%Orn1@;A zD%87`w`sS7W=&vYp^swZvs5tEFle#hF_*z0_xN9ukuY^7tZ zn|5+_;3{wL&Q{VQg7e^2i52+Y>UK_Q?KAG0XCmA_k5Zf#o(bG2To>GB+(c~D>^R>O zCS|5>ZbaT^@BKB+7FX3>Okc0h*R_tRk;v*Q+>qX0T;Gq`r_JvPrSDB3SvW8lKPow} zj6PsGP!)WpA*gb`7CDF{810~rd~`Gr#31xR0loG*m^Dl`z#7=tKwbY{5jc3GA>$!P z1^Dy;ETP*x0=eh8ty8xLwC0qV!q<@7kq1NNy5uITrcygQEru&Z9td8^)=-;(ophf7 zeb_-PLx@ALMR_2~{1Ej__bB2pd7;*&;)W`jqBXvk@f>dmF=b=y`**~`^cB+gMk(3nleA-)WA@`- zDroWz3LbR{u2uW~>Pu7Mzr?c=KQNB@wfSl_%$f2xD<)$Gw25=qp~1eP-zl5H6G1erOzD(@SRAlT{r#SkGC1qZ(}9* zE0wtV-v{5{>|eTHF~0u0x42)NU)PFa=CFF4DMNS=0r7=h|P@pkQcujCDgRM)Ei>U|Z19=94MI=Y;Nf;JI2l!1mP8d+!Q^2cms&v<68YLTG?SdQ;*f`rh+S1!P-3Z)Y z-9=wuZYS@1@lzn!AQpb{AWR^&5YQ*&ge!%GgqMdC4vP}ch=Yljixn2I>@?UI2hTxsw?d?Tu5BBjCCb{B^I7zU8`jWfNc6*0kH$o{Hrp$ zPb5S*dh~RZWh9a)iP)Yr_3{soTs%R}MuLgm%lLfX!}Vw*V_5p{(xwI+6V5+f?1^cy zlx<2y-YykJyX-sn&l3a`FEl*eS-QtMgkHv<7P{NPAw?poCdn!_ENj!rG2xrr*~;5z zuH9FYj{@F=pT@xRf+U1qg}Wm;F|9I4yqrwPJb&*eELrq;%=f1Z78i~nU-0VBzg~}0 zb80ttm0Avcw?2-)(R@K)ch7(a&Vc>A+8Y~1fB>?g`eL)Pv;Rh9XXB!l505|rbO?OE zqJDF((gDOt1}u|LK3S%he!cVFegjzf=}fdQ5NrJ~(%I%pYEEj>QXGc1)-?J?wg$#D zZq{}`1T_Evmm9}V)7sccAJ5I&%EpnyjhoZq@$m4t9E?mj6of?nYyR_#o50M;$&Q1T*45RO#+8xA*1?pPo}HbYmX3jz zfr0u*gWA#E#!26e+QyOaKTiISA0cB$LkDv^Cv#gHynp=a8`wHKaT5^y6X<`g|BTbv z&HR5O**N}pT0aw{{ilbPo`#P0e|-O#a{VLakTZ8Pwo(%^w>GwM{E5NCNYBRgum1n1 z=YJ#qUzY0sYsoEw z@Ihq87*>;~uczE!r;jMWEAs;i2#{#+1N~y`bfraYdmz}0YT)ENo=Ug9_VFyaj8cJN zKXN3M$@0s|!7*Y$Z)$GNFD@qjIF=ltwS)t@WNGZZytFbhHpV9;1pa(~UR4Y1biFPR zPb3-mTut)>Uoit&`}Dop1I%Ex)hWD?$2oRpGB$w?uCK4Z8B`_Zl{R-*o95%oeps8N zVrOrc8(t6Wzv6UlMg(-RUFY`6&K5Z^^rN$La(2!yEG%qz(=pAn@Yp6kP$WYlu7H%B z#TLzLA&?`wrC&H4QsuPi7V@fMscN6Z7Tt3e$&))UoW_6TU6~!#o)+e7*emkX(2_2C z7%o1%#q!Sx=DX1HZg1f`oW9!~;%ft`OE_+f=X{nKRWza)kc|T#(E!+t{eEZt$DeWn%gB+Ib zQp&a%N@YW?i{{a|4Zsn^N2;|I={>fHKuA?txg`r^F$x51@d-%Ujh-cbHzs_!SXy>C zAmRd((9pny&*l_3U#!$w&%wD4UhSvq`qU^)NkvNs`KM7(Hwgt7AHMv7s(0HLPqN}_ z780nGEvRDJ>cEWdZS@Jjr6nqRkcjLIIX$&2QWk7sZN_KDJm*)PTS<#yk?589%-EL~ z+DjbA-P`qnwG8Q57Mm1!f03v(RBffPvzZqdGcneN{WFur2ZPC7#2c9PlKAc7lKtLI+O!4htI_j9+VI-~my1$d`R*h>x% z7+J;Wxg~3e5zpUzgoG&1K>nVshN-@A#TAh-pP_x0RhU=UYY@AsRZV~6M5G%A;Lm*1!hAOJz zSuQY9Nxyu*jR1FU?)gb0x3V|_lKX2C?JPD)J}%!`buv~)^=j4A&gW4g>UimWAIYIV zt$yt|(TS|(V%EKhf$@BK&}c;+vo-6J!x%Y@t~zq}kx4i?e6+ie*DU{yydr6>e>|n` zD?{%3;|tLm0@fzWpn?O4QkCv+0_OL@lU&aLr$fmTs_ETOl%%k9L8g(O;Kc{;jiXz` z4w#x>6UN?vm%f|PZi zvMX49$9tJ>q8jQMStw6{iid=Sg++y~b^YkiCVs2FffWQb2D-@=PyCiS0i~iLVFsFY zfTpW}{oRl~8&eA@g44+BJs?E4Ag@l!)4m{9DXnM@@lZaXdTf8IfZgGnGJZ^a&h^!{ zoYC0+!2$yRs;%DY^=2^JQ}H-+M-TP~EC#DRADMc#@29(3axC*8F}pzC-3=E51U~=h zxBxd`AXrG4ryWe?$<&bVNA6&LK0FQxcK<^5YS7a2XHQ>+ZVcXZ|8H*2CH}cv-J5Y* zg)P^Yoo6hJ2P}Vhn-I2EU&0g|2vL&>N8_JEN)ay21%MdzMhJVQk6>6n@YYra!O@Ft z8lx?$JZan)7Z$1j&0cFX?;+b~#YNhQH*38|6eg?8;cgDMXOgksh+AH(k>F*$-V`X8W( zO%-`Dr!zS!GD=u&wgogaGT=tT8hfO%p)t6W+G4yuAf5-V^R>ZMU%s8OJUTYexJMMj z9Gx77oExr)Obx1PBPIh-u0p|}5x9IzyF9n*n(uK9S7$I zYTXQn7@OsP18tgg#}c{@h9_|p^4H4VUT-fC_@Q0e{!^lkwE^ucokp;`LKj$ujRBkd+ub2j1)Fc>Lll(OF5v!|`m^E9H z46k-?vnrog>K-iYTb?x7FQ9kczrasxPzrNgD}0CW-8xs z^E`Afk=ZXv2Xv-%U7@prWXL4v{YWcSic)yn?*d0IX9$w?e3dEM^M9&k(AI2`5Rf_O zR$2$Lq;m<|u9f;cfA{2yQInWxLzTbgvw=`Vy=*jD0J1*g48W3I>a@}I$GW?`_lYcjY7gc!&DegPn^=}elI)Nkk=Sb zPtQnD{Xnm4x76lvjW4*%M%QQNAM_v?X0llUXD0V+MRlLbi+l1&P~R}@4$!0&Qc}_GO^g> zfWB^*K?ci*>Vwo4VH#?&X0`wHpn@0Hoyx@@&Df>c$3;!a!{5r(JU)?sX741sM%3HQ z!tu&dh*f@_yeGuvstdHcPOl@~|KTP-CA;f<%O$uJ7#VJ9v_Al>Tg_csdU2 zh$MlMbGW3=PD%oil#JIZzG28#&b}!)R*@5-h=D5l6Eb|UBRI)HzD92g6GN7m*^Cy{ z+}n1zzQ`7|{f65jm-xcV%QW1w{29h3Y))`S9*3{hDc|Uha%l`%R9brA9szXn7)G2d z(wJkjNZBZ4AwCdwnvvg{H;ppyC+?(Q6IhMGsZXr!qm|uoBa3} zX|XZlGg>)P{~MZOE(N#>!%`JadfK)97`3s9OEzZhl__XhD*o%bcU&DET{-30?Uz0+ zNn4r%b6LCiqn|%B!Z(s9o}n%s)Dl3+wD11kA~&J! z_L%O>p8lF--2%y0?9-x;aI~}I^Rg;3UgSW&;Ky6xt=?GFCGga^I6uO#(LNAPHs(dO zE}q9xcwxv~nR@=1EU9^tg)}vYC4`vmjt)Y0VrMZ!`5Bb`G@rFU{l2rI;i{7 zT;Gw!pcjKhloUS?`y`s|ohw-T+Z!4z{ghmMD4EdR0Q;MaE`;wQw7z_C;C=ldd`p^f zy&XRp`>(YtR}^{LsCgHFMj0Bt3tYgku&!v{p3D$-#~vXg8+@ePKLIsR9p`#y$a511 zzrETWjCS-4HQVGJSv;OSUUFdghmL{M_&<{ld3mX&Zs}cYVqua9-`H<;R!inu9s2c- zoA2{z;6h>UB9Llwu1AxMze9OpZAZIaJITkeVq8e*kRT|KE>>+u&v;u88=b!=6WiN# zHFJgpYOBx|s#Y@tMom9$+r+jx{Cjril+tcr_6@kO%B~aIt#iFYK1*c{4@q$a$&}ge z6q96x$D_Hsp}XIH4|OEQ>TNImk_q592RYzKhT?9;45j5E>!%e-K5l+iLc1LvA=YF4 z&2_okiyK>rYryyIv(#0r+qp2F1dM&@aMS1Smhl3l*=jR9{0&NwIdG@xGGR3^9`tsa z=ICH1g<=Gr#fj_pce7P6=MG56wwG`SopKQZbs`X_n>u~62=*S`nWWcf5d1YON52Q4 zL*+|N89u~gX^UQ9c07l!cqc8oQf2SGadtkaxdgN{)@QL~aQFexN9XO=3DqaMJqvfe z+Y^Ar#(CjlCe^Ma*0(jG46h77V{9y4_89Ham zGfEXwKcs?&xbRE*$O;L=d_%qy%eIN$86GFUv%HM9)Ycs~*t+nb>AIBEyA@$UHu!#L zZK%91_V}t}UOz#~77X|1GBG>L=~GHtuP7;avX*l;$o^82&Fd*%&)Z07##mol@or&j zG<0|th8j7T*F*=N0pD2K+9vHh-T>hyF*%Edr0PfMS8cv4yOay2sqOmx| z@XKHW8D7clVt|wx%+Zn;M9Gs0txd+rQn|v?il7gV!V1&4xiX82X7Z$H=;kr1vOjVy zi%0(5v9h@@uE&StTgIui1CT0A|Hot=pAR&_5a@ZbyQjaKb*-(dXsSDX4@pQ3Qe}=g zUi#qy9xzoAh!=Iapf>3v^6aGEox>KVtP%NZx70j<9)r*f~Md6?B)(aek_5 zh%Kp>tdSOls7u{dUMrZamRQRbeO%F3Msli#%%(KTz;>%V+Nto{sbU93ml+_eQmzo5 zjPdpsywGIZ)us1txA9~3oSA|`h8z2NRSU#og1aV)=hGlO)?ZN(prW0(zhY6VBUgA^ zkz9J&d|0x=0wkj2Te(`&{usH~QeB)L_EsFUPC8_*3EZ3_5~)VKzuX=q7@$k; zniGnP38z)PFg9eT>m?#@N=SBlr8h*~E?{SC@b>q)%3;BnbT^D}@uV)P|H~3%BS2(;S zy#jx*(EXl8m|uH4I|i!_w5H~!05yk;F8XafGjy@CV}-tQn}ji6-`t!W9(RkGm^efM zw6Ky|O2LC-tm3m|uq9;T!5Ta4Z8@U4zE6rccZ{~#YMXZ$|kXi{y+nSbX)|G(VQM*ROz~%=E

iM6KS2Zo4QhTLT@5OQK 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 diff --git a/docs/images/make-bucket-public.png b/docs/images/make-bucket-public.png deleted file mode 100644 index f8a5e17f02b62f312325975638ea9bcaa2d7cb9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15768 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 MvASaMBlD2|15`@6hX4Qo diff --git a/docs/images/nothing.png b/docs/images/nothing.png deleted file mode 100644 index f41c11bf3e16b8792eca8695fd9180608a8406bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275670 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�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%0AcIt7?-X-J{v*f)w4i8Ug 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�`9#9^~(jYThLX%)E)xV(IUlm?gDlioVLtExW4r;CaaY)!L# z$aqv%*x3%a^m(I0*cNdosPb+w9HA!agEJ&OhA{bU26h(Kdi^tC& zu*?VKNqG}J)bW>?%9{t1@$>bbD+f$rm3kU0xxa_k+?;fys8GnveI>|mv^)G=lA&V@kcy9+@Q?|48(Y`yTq$kLTKA=&#>E_V>520GsT`Xi;++2 zh-#g2oJC@~lmR74mY2y8(lC6+R*sttC`*EcH0wyxw4`xW^)*Xkq?0CDHwN|21u=Co zs|Jjy$!w)pdDh3{0YnR?af_U@X82+sYn9-mqbN`J5`jd%ThW0o{~Bh1BxRl_Zy5B0 z(9k=t`h0ukDOpk_h8(6QN+e=s%vJQxb*wkgTnnVTO3Bu%^O!84Hu7ykHd$w|a=jRJ zKFS&ww0R0!O|8|y*hHJk zy6&)mSOo5@Ygw_92GHXk5AVLmasPnb=1h&R?W<;JanH!rQJSh+tV6rASp{qz-Hq95 z4>V3S`+BzOcjQ@ee?QA+`rPY&=$*_Gmt^$;C;tfd;b)+mgU$!=@Abd?#5)e(<@h^} zd7y8;knwYOa?#uO_p-BO@aF2W!)6Fh_M}kX%O5=;u(FWd9XBbqjn3n~Iy2ry|kGqFEe7yOHA3wgs_wRqe(Uw;7Im}$QSJA|4TKro4w&Z!JZ>;eTbZ-XGfYL0$vQtw zm`Ziu6A4tyvm#lRb?UTC5GV}-1*2dXCe3uKuW@TLlpY7uueWlY43uiVK22wHq?CPB zXJbaIvpu;mt33{qv4A0#F^w2(YoQ`8P4~Q$Go$Hf{tr^6PO~7P$fnmK<%*n?99!-8 zwH)lSMoE)FV~WSU(NRAU)LCRis+O54C6r;5_P|z=k&v_I^;)iwPB8I*O#=){qzbC~ zZz2#08JsD*@R_5simHfid{^bO?f^T>!!%(WCKNwbsbIU&0UeYT(AIy=EI|3 zJ)7W95DIZUZF5H5kAyteTCe&CdsiMeD+u%qQ{S&UEWJX8?)wl81k}W#am)IG-n2t{ ztIT%or0u;sWY`T@bjo%|aUT5>R^elG+gnnkP}<1<;my+7L%4H>@o ztJ`{d%(c!gpLs`^8TNZHC?xev+97n`8U6L{{6m1@Fqb|P$Bme^EthnHp9IY&ulhJ2 zus=THe*b`*`x|_^`G^nKA8>tpjs5-+1jfa7hrjyf=lJ&R*LZ#PLdaI!FqRQRE?BB4 zX_5{bN+1kHJAzo9iV8)g1We;7nHC!A{3t`ER4TjApU4oHSl5dicoC*M>+~&_K2i^a z8#fh0k*v{m&Pi1qRo$%e?4KciM9!N9ZbnI(HanCuD%xme$lCW~vMB}0?J4PVh}|lT zD})QIRh%P))nR!w7ST8=(UNiyl&3MsLPC28RKZ9tDF0}9@L)@|MYqc z9TdNu9C4JEY(~kcAX9d=HNZ$)3c9C^fe1@GfNOO~K!N~aOD=UmX05FU0e{%quSh2e z!#MhbM^hH13ba5c*a!m=Fda}IL_s8dm?>j_e8k~6W3w5BOkm`Utm9KH64GqERTe>- zR8+Z$dL2jMC6O9bhtDPfxPbLQB~>mW(>V?ieoEa*r>xS3Mx^Mz#dX{*Kmw7gdf6yd z0;#w`S~(Ihv{fN6Z7ouDGNKajYQ^LAJJi4XuXy?W11`6h*u1(z+HUkvYsTxh9D|@> zP{S^cIg_<>v8KV19QbUO=T}QB`%WpLq>Q?M#C&{!OS8&T^H#jIvk49$d|pRhxo2u8 zHR0;WMmU{-qe^L&;s&7Gvp!#OSacuzu^I5g=kmCA#bhYb8tw2*_hkK7b@~%$z0TJ0 z)VbTwJbMq%E@tGXUk+=gAl?zli1OtUrayr`#NaA<5O4zN>%NKi-=7Je{8RU!&2j*F zFmVcY^ypNcPvr_DOD(lxe>`A++~a=#h@1Oce7?KJ{rwH@_YZhHKH_+I#8QvQDdA#! zhF^T~1-`g?iB~UP;pN#CHse;Fqt?So9bA?JDgk~~I28$5rS!NdTuLPE!Ze}Kh`Anc zI6MHT*o*^2O_G!tYx_{)>O|mrz`X2{^Cbiw@0N&=3(Pawx7B|Fl#fBp4~xrljrA zqDca^?@MDp8?E&qDW`&*#9vk@Z%hqmvLMBe0>KsIVxnZVcMwFeZbo88No0N0y)}zf z8BH?OgJ)S*$d_m&%V8&A&?#O0oLY@h+qY8bq?;stmEa^9U}_>8sZo=>ue?^^CD9{=VzC?M^$?yERC#KSd9K!~5CK42E|a zlN$-m%etd8)G)xk>vfgucFppTtw)z54d~0$L;Mk zZtiaIuz$eec);;^#C$w}0Zc=|tKAOgufD*=ZikDr3tXOG;(U9Csf;RD+FWyk2+BpN z;8sxxC}jXQ;~i-)jMmOYKqLsCBy}=iEa}*djO1K*rJqCpk6B87v0)XTX-FY0zj@_2JW2!g2dTrCY{pRiEffr+Bq{Z zAW|C&fuXA*uM)IWgYQ=numLU<_NC3z?1+;kG?v{PoNe4E`GGiF=lz z%9QM)M;i>rTxT(|sYrPsWf>jI3l4XmP=Ea!oc(x*-L%7az6F&5l{7;%XzbMd2ZG=# zAGWN}er8ap`rkO2D>_++&=UMG$Rss+mZlch9{1Sa-O7C%x)JNvs)x=o$T0t7&L}vh zQ>XQu6N|`%T{!#xCJ!2H6&T?I{XntG!pglikLvq-JMOY_x`tNJ%6K)q7i$4Ucny<7 zlU-m#o=XOKV7fw}Pf!-P(Iz*bG4gLM1ZNS&aL|Q2F)8(XwAVXZ*9d{`xKA@_GhAKu z&8|0&D)sVG%$_WZ(?0FSLbg55N9+%KJnZjr|8R%L!z1?l1NMhU+}z*b_Td4EfbBS9 zJ5G3U`2rWab8NMpY#JwQHY3JCCm3qom;ga2RnG!8Vp?~F1?)0}B!SZ4Nl>k`CqD$q zR6BAc#I0c{DESg-GnVB5ZVQ%W2AD8S8?j{osAvY4HXvk_Ty$7dlVr%slT?t>D0(53 zkWv%J$xT$|U?`~W**c?2z6ij&YOEdEdZ4M>K(b6yTg05)R+aB#E5qtH#11DG&P3DT zplG&glhP#VGA(tpvm}WRi%n!V!>)TATp zc-*751>5NiIS;UY{$9S)QK)JMWW+4_U@oXAn~WP5iCCiK_s`5iI84&w$bc)+8L8U^ zjY3&AhV+(*1B?>Q@6!xS>l((oG_w-xn#^F+T8B6acIKf8&|6Qm!Um1KEzIBy+d#E7 zVb!BKWStu!yHRPuz6e~;Ra(#HT5&w?G3+i-sOWe+VK2h?jYvsgf}GW2F>EJGI=K5L&dmLwoO?!+>fU~oA=^2kggx2DpJ(2;y{G;;2T z#4>#^EkGjwoDwoM)a8KXyFX(5yFcP;PdNKhnC*y~%a&n8nD+F()T#C?d9^(d>z!yP zaH{{m!QcILt7tkWY=#l({s#NcA5rTOsf=pCgF9O#cxyDn_OIQ?Pi3H|KX(U39mcg= zGpD`=w&VM(*CMu>`E;#QVi$$iu8@ND`-i2HGZ=?kMCdv==eANT><-&P>U8q>tPsQ@ zK#_A`!A3gqz+o;T8B%bH-t-{B?vK!UD3+S8R1_`Sj-NqK_xg%A0I6Lbmkym@-(BP8 z?i%;^cQ_m#ML8=cjAcN{885e6ygon2)!8MkE(JE92I&Qt)*|JK>%BqipHdUI>sRut zB|zv)lr+#FBgc|n<9rkpGiMKsdvMbNqL|T;bt>6}!(oqBt4w}`+71{QDuYTwtqW>9 zsx4l`X(9o6)IRl$L=AwO z6{c^k!km|#H$PiVNvx`WF5hA#D#+Q?Nv#xPZFM#ot?wzfQ_RvD-R$fsGOTvR4jogM zf)-Abrj&_+kSJK+dMO$}B|(lC&D4z~cs%X_5+SoAAF)3iFyw;mcn$(#X^Qw((RV3% z1I~t1*|}Y$E1^{-nj13E@j3#8J)g4gD}Khb8M~#pLYf;zUmJ%k;BtLolqFfFPT^QX z)zHu<@DO1Ajuy2wjp|GZ2)bECpg=_DYprNGAzRxVQHQ%&af=xSu;@JWCG z&G0jXK*(q^BUk(Rxmj%K=NRsI8&o5hWF=4?>mo0H8H2x1WH& z|258ke~ruO9MjbW(q@vDJkv}Led}(NgEJw7GQo+XIYo8-HJ(+&4X;BpA=2!ywtVh1 zOvv+$$4~FE91j?#GdCU_oZTrAY_+L>g3R^Y&rem>R_btAQPfuC6u)hbD+PDReppWe zqaN@+4Ma|}WDB0+Cor+I^9cygq&r4yVd_vMhktkIzQgxxINkR^h`gBl&sTHZY5jW7 z$PJw{9*PF+=Io%WYc)Zeuop?Emi08QSlARM)q!XhcRU_(cYlMMyBj?2r6+to?g0p4 z=*4b}-FAob-8s%TTVVj_0!j%(8Fb*0)wD%InJWvw!b?XCY85b1A`kuyZ_z;2NMz8x z-Bis>jdRyV(UNA>=RyqT8Le9D+L_vrgmKuSO^X`zjCwp^t}{xRkje;T>9jFnEkOFB z84W`@gQ#ORfNCgfDEY35v(70amkE>y45gqo;nh@!;A`KLcJ7imTE?Odu=;tiZB%R3 z`a0{-5IeIOCeddB0GbG*kRqz3kZPfK8EgxxZSI9J!A(Dak-*u4Z#y*-EF=Qv`Jk=R zqcZeOqr{&|KLb{_)rXeL@PAYG-+huKN0uP?L{-hq-GgUjW-*W^+q*k^AKr(Q9WjSG-MxEfM*X_>1@*r_&7R`syU>(cqUA92$f0o4& zG}8{%vkHlP;Rf73V_8nfIb$=4!?)3_A&9UX+bO{uaBrV)s&N=gUWX&NPXU}o5y})L( z!8D9A#V@qsMizwGda#Lecp%XUAX8(aqXylpf}(|}b+s04X+|!8Q4C5qwM)_jhsD|L zpB}N@Y_ORoQ5}*9vcyoaloOWa z5k$a{HlSLyyGSRi7#9cyr_&R1ow42SBE)r7YPx0d3H zc{$>EI$(PdF~tc$0!7JuO@7PHYaFyzjuu1))@Ruzk|_xSd@2hb507{_JmTWw2D#c` zCl+aMwE@L^hF)K_44wi~vJvFu!c>gbeL~c%Z?C)1kFT}AO9ow73ypk`5ekw|jWqktfUKKQdhx-FY$Y9bQp=2G*&~F4G>&Ry z2~EL>wSLoJAulh$j57cVh%tI}S=BfKz@V*os2K=@lnSV|g)|rwh$K)Kk-%0yAch!J zXUyM!h54sH!PQrh@3ov`&r@BWgwUGnOK+Q$9kTwFl8M zG2yi|a$x`cP1ZA@jrov(C9{y!_Qxl@e|p6G$M<;m_zwHS0Xfg$S`bMPt>Ey#w5JX! zVl#}m-Ckk3-(a`dVl!p?Bm^K$O%OY*H z8BSV_B`ZCF>kPuI8Sx3s2@D}|)mkOFQe<%{GinuC)DUJc7Jw$iFzFz!AY)a*t;_pN zAKrpS`Tkatl|dtY@YIkES4PwQTe+#Z$-tQ+_hbQt+U?-$%-W)?urwv*n^Z@M#5Pqe zTLP5=;;_L0AcPUjp(Rq50o$`Bf=Rv#>2N`*GJ`%vQY{kM7t^#6-UfjCo0qt~xtD}8 z1Y|DYQc)O4#6V=vzRm9X-U`9L(`CiaMqjmZZ1cf_fRL;184{j6(_n>?Yw-^V6oD{! zR4zte68W$e<4uJSHIu8#W~>^qcA#cJo0F|IJAwRzv-ScdTx@R;iDV)W70EDk zx(&bx+X!&PQVNo`rNxkt(ncaT)kU@zFao6Rq=O1r1zdnZ>qXF{QXX=kiXlRnoEZwo z*k&*&a;;A055Szh8Pw3SO@kuk!Ri=9YcbM>euJ#MKeAQ~X~d954Jv9w1}d=Z-(dgS zpCkS3_qaJQEFt7R=lL;5{=dxJd)V6@r}^Ep3?Bx}vftDC z_WRnr8uJz>H3n?#VJJ7Rjq#v$U z%j*ITd&HJm=)*3WfuEKm-ab9x)w}QU?W^zb-J4f<|L_j;d_n}{dUt`F%S%k-gxxgZ zVza?+v%zMZFpU$YVL+gO6bB5$ph-tm>1dtEz>J!+!~ek`a5mwmpu$c%$*>EOT8m)o zma(Nah`82*oHK$-cJKfIfB;EEK~!SWl9{i){6A6v#j^xnUlWL=&1|QN_Z1)-Fbr2n zN$R@eK+^SwfKsewY{GW8al>B$L^fd*Vf2?eBSuC{q>0o5P||K1ox-L9E-^+a5tfV+ z6gABZj)X{qsMYD@OUsC5GfFF%lZ=TFm^J8A#8!{E=FGY*L8MU4XLK+=k+dPR1_q{o z(q`+x1fnM(R4L=*s7?^%LlRw-eT8#c0`+-K42Hb#E4mu~x&m&PW#qc#7W7c6;} z7Dz5gwOUkKUEexq=|xO~k+ufZT)f7tCI*d|pbyRAegY^+q*k*d8kT*-=jU3zwK3q$ z+>|2G+%$|xVbmBGAj&$J9$wEF!-P^Hb!Zbua4`c}5Fw1KZoNjDtOvECqEtp@0$15A z^3YUBr{qS;^K9G>du(+|j}jG*RAweBdyAOcRcZ`QbFid(0A>JsvXXZrD9M6?DehJO zoV*k8^`@05cZ*m}jA6EMeK zJBQJnj_v`6-BiRvpXEpq%e(h@dh^-H`HgkeRE%rc&w4F?%KQk)zGdF?;XaFr}nKa zIBzAE_Ramh_g4uYw$cX&09>D7&L_M-KHuu-tv1Nz}}Xbq@y&QRP%Q z2uezZ6rdZP(gHrKcblUq6^azZ4pC9)w`PZPWxS}YLoFEvColmK2{A_LVQ1+NuiD;4 zRcyK!Ot>LZt6ihzGH{pZ)GB)KZIxlY?AG%x{r6G9IdYfKzNZasB97e?Z1#y@c2pgq zcb%A`ot2D2*NFvBD2Yr+H^AEdB+<1%(W7Yzz^jQ&kzY-u01j>5NefH>>r-#%vvy^K z!M7(XYAuZ<7R*)O3$+w1%TWU^LRkt@$ue|4M2l7R#VjN5KuL{{sRI!ZZ1R;tY1(cE z+dLY1L{wCjEe-m>3Re{?I_HRT+tjcqkAzU5%x~EM0=d*;*GDLnff`|K`O3xH<;W&X z`3B4&mez_GClF~LBCGHWnK6{hsoFjg0;G4duZ!EIyK3Cp5Zb~+YbpJ%w+(CNq-usK ztzXgsP^ws>|7ySV z0Ym3#{(mLSofG2xUOE$hZlv6Japw{Y%|XlZ`|+w>$+-It;A7DVb%*yn;yMq){&X82 z&}4!?LLzkZsLRazQj7juICE+^|L!0TB(m;rYKHfiXS{oQk1xOZ8o&DeukoAT{|2wV z`v%MDgsaO7{P|~J;Lm^XBYg4c=eWPS!{ug&K^=1N+0_-O6^pXBYf-0bUP__XoEI=x zjA7E}sy)Vb-Ie`}%8(^}2EJ!n$mP$#*Sr%s(Vd^-;K5j}8O(&Jty;gZDneusw>a!tv$ptFW%Wyd z#FbH~fH7-3wc1USgS9KC0E&Y++A5zXtopw7t2^*uM{+E23@TZ_z)E}}rer?Hu$r0xtdB|U9%M(9*F z#W`0Etg>8{60AEOk^Tr`A`6y_B+pWcl`aHF=GchVwkN9)I1Lf665LPYAb}r%wB#8? zgNl_XG!Oz{4?kCL+Y&;Uru~+wLF)jX)sj0%8zf&PW|CgKYEdC|MoFVtg>eH|L>yv5 z3Q0l(*OL^PLum`MsGDW78HBCwTEse8NUCv$0tgvP3~H1qnjymLXB`>NG;?LKb(vj= zfOUMVku$XSlGVan1m~HHHWs)bjazkxjy!i@)`2(z>9{zF!g=-@Ln(lYe0-0`-~J5v zpFhX_>lrtfY7EcNO=rP*UOoD-+Ir36dv^H&?99DQ{NSe@Sj#d9s0RHT z+95oNF%6(OHko6Imef1UQ5PDP$oe`zpahxFqU0vG{1M2?lqlL+sDgagi zfc}}g{#ff_2K@b{GL~h*!_y;v|J_&k`7i$!zx>TF@#gg_5EysY*Z9$2{T2T5$A5+& zy!afqm)F>g8>AEk0=K%q_xj4>r65RH2;_CwcCMg*-$Xx5cGDccnh4FhiYi71pR#B_ zq2EK?Ew1moRxfUheZ)MhLpGb-Da~C!ctcJgzO9IEJ4iaTB+)6IFOZ3Er3$BFo=*S~Hes{w z2naSLr?`)`@KA)4M5JaMH%K%%%8*P&s8*jLrqGNyy93C+Y6Smu{7Q^acF+*S* zQ2`w7HMfUt1c4DTNkosnF6_pc;q4A2a8qzrufZBNa?a}U>{H#uu@{%+v#hNR4S+r{ z4K#GbT^gcpF@fF@sz=-igb)XaHZXgSWvz@;ma&2|*EmQ|qb@tNW@hPGfa)z91Zbxq zunuw1@1lspq=c2^I^2D}XpoQv7`5#2`1;qFfBsY4efb7AaVzuAcN<}VvQ>QAnRGAF z8EZHC?JnS7ZHAfM=bLRTeMCJU$5q|Th;|nnAYFF zy5Emn#z!Ffk163fB& z9$WWM4GKQ2K`X(+2oD`jGQmOK*+9zuF4Nr`O#9XqD5``$vY13~@3f-p5Q#F)T zL~??nua?xb$(qJXXaTD~&c=u7ZG_*ywBPNId;IRzSJ-VX@q_1II7;a)id`V@=SQDS zW1mC(kAArz#~EoDwY$R@|3!UD6=Ye1(h#l8o%MWbDcg^;SPp4VOb8T_vkWvF$DMF% zNLDp4Ax+cda(%gqLYpbXNfZW^KC@^N4FKFgBfnzp9E}6V%mRzE*1>}kXf)!A(Rxx% zaK&mU`k;$x2}g~TWO`7^vp#fvKw8tPRjya&(2B$Dp+Mcx^`hLS5nNRgUl2np3l4XX6f9#`5RnGac!olmYAEEIvu?iVBWj5fLX1*w zP*RWh-yjU&2$Z^@czppHv|OU~7>82{2-w;F{cd_2Q@yB2JR^ELmVd$3?r5rkxG)Z?B}JvA%R*$Ok@z|NmFD zbh{5nNV{yX8GnOy?KO>*w7cW1>&DAY7n;oV!=osS))C`l=4iF}`X!omBvaf0POt6*%?gxL^ zXi6UprDQH^M`cCtNKp~1?=~mh`sqz8gETYCwK!{DWm2~$Hj)6m>3HbVT2-7XBnqt)hEo$Q#W8_07#V40vB-zA%Ru8HAGT-*onO802AwK zlKX9~P?f51j%orBlq@%Z5D`Pm3r8PmDN@DO%7~$2hzZ0&MA9_q5P4eRhNU)~ zq`GdoiH<;Z!*|=OE>mjF{eZNR$P98Nl`&k9z&3c$x^D>Ni$q;k5lH$}OU;;<15hhy z+(}<#S#X;7D5Xf08-v3UQbZE!{^@j3B1iOy(M@D`Sc?)Iq<>pBVbQybQJq1x2ocVn z6;T^0Cr~683J6gGiR0;rR3kQ4qc%Oe#iTZ-GusD<0ZQK8_PY5LPd$ z7{8*^+Cm6Any(8*KjhSGfK5h^x(oh{)_VfcBDFYoYH;CnI*X@D-V>fy=!U z)Zgev(tb%^JKA1>%_o(0-)}-S4UQ(2;?8l3{;PUdyZC6U@l@ zg!yzt3K5%ei%QamzAQ690YjQZ2OgbW3{{xR%YrlvPW<)Z9B4BwBmq*vt7v7#2nqv2 zkTz8ju2K>(6Tn$B=Ku~BC{=7(5PJdw@-pLae8gtjBBp>+g*9I*W8e+aAT4tdlkBjX*nar zq*C5CQLYr^JY$LxKYH;6Hscn9+MX^1?#jV-CL82s=Slvp`twO4X_+H(CA2!TuTaZEQv1 z9YpV;bc3lGMp#*98}Pyk%ZsrpT)i$S5wD7IDCq<=fP!)Z)G*h&;PC!ioc`_KaP_NK z*m1<>>Jr1Hw5ds5vGWOzy03eO@h2RbIe*W3StTAFopChYL+zH6cMv{Pt0`NSYc<*4 zOY3uD*E!&o2#Gn!cF?H1hGr~2zy<6(t@UG7>N&gL&H?z}yTguXNI~Ode1P>+7vTe) zY-qdI^&P<14rkvTxEYxC?E3p7SmUP$Q$0WeTFcN#!XuJ^dR@uWzIoiX$i;(Kt)QBYv|5aGXdHu!#YEe*md6J z?G`noOi;;gr3cEHJRC5@Ns>X9f<`Jed#!*q!ZI-wne*Bt4mPhz4qi@T$ zE@wD_(LS4OUAw@dzp@pgZdtrigs8h7GF|p{uv8UJFI+G$3l7I8ynlF$SFgUsH{X1P zx9{F!DH+o+;(z=6bNt}tr+D$~IWD(5Y^Nfa*lo9n=pba$ zHYIMsO34MNKqL{2TJnM+CY+8(91jPCJ8_!DcY^Kt=(_S!&z1}@*Nm(pCxN08t|BTC zN?A~AK}v)6<*UG!ubaZbHjv36=r|&9MXigpjEB}uG^7bc0ksN?KE?nJSyxBoTK#~b zB9MHywAS2P^Il&VQ@*K zYPMgU`IrVUf)DqJiZa`^EsG5Mn!=_-P|Pp%=ezkNSO4??r`=~|Rt|;1efBw35kRqf z0`kboAZ8i+>UNaX28wGp zBc1Ig8`&rXsjCRIPRRKrnz+NJt7&ND1V*h3@|+RJjeJHWY&TmBN}{PQ6{~e6Zu7s{ zAa1l)k6N>+F)376ml^Zn0RSOxwm=-35$zCOMmO_U54CMZ|5Xh}DaH|Kq=wpMqOBLU zpu(a#(Q)?{7OmxrjG{!GwJwTgNQ7@S!$1{WPB?x0CHSYm!1eE+aFw>$+}(Ra zt*ALo@|)vsGom?ew2am7&B#RmzL)b&+rzu7db?%WJu2z{Y6yy3Z2z-tson*wb6Wde z4={jk@4>&%KfiyStpazS%7d-ybW>i1KmMvoyV4?;O>xGZI8Pz@Ne?~ zQ8zgnfz+<41#QfI2H(NWWZwgKK&y4spmbSgoaQ|ahbO#y{|?_jyv5u1Z*h2fL|sl8 zi16bV&vAeM5;vFExZGV}GY#OH5d$NIioh8t76oeAs%yKnADc$lYQyZ8#E?BJa|uL% zg>4L`4g(bQtXubX3|jx~f;zVcTEkb4i~tDQj->E> zE*UXEOJHOZK-}q`@(ix#@Wqa7x0gt1^vM{^MG!|v715Qe^sGW`7o%btc2bJtg5`9; zJU?ki&=%2^*31F5J#CWNK)|4*V39_YBAY)1X$LmPMI@z?kP<+OuCV$GWKqwv_GLpg z4H;2HlngcHtRy#CCtLp($f-Q9Wwi{M`e!GvbBL`Qs0C1l1T`hQreOg zz8)!oBOx!dM3X9x0$W&>S(T_vYV)NOPzboad5&q^I9zA3S#OM;)TTy{RDj28a`G6F zmm`jccZgv`95?W`Cvyhogey9Non$SH2E)}_l>m{Dk^}{!z!W=2Xq%2#*B}qEppDWq zXkJDs%80)#Q6He$4HSN_K*=~heuszO{40iE{}GotVfXwN)9np{NxW7W<4NJHXS{b% z)CTd`=ILcqdquQ!AJG4iKloe)^c}+OGIF%fU%i{pAZM?=E6n8%?*mkN<AuTIQmYpk?B6+m3opElg;r}~YU`~+(6yLRgYGRza?D^w(Cg44ph2gORJ4r8 zgRm}B^qNTHZ9dlP-w%fh+J}SW+n?jmbW!C1aV7s5xT@ zlXMX&@@ev@wioi8k+ZZ&g%H405g_fhMUyiM36T;e&FF<09~9=#x{bWyOp^||#>xSX zA+o$Kkl4jiW+4qjiERW(sn^aeb&j%EVxx9WL#tbRuYmHtLNtC9L#A;mVOse~(m5n+ zN2bmltXvvA0I}9LR-O1>1=4+kU#59?Zdb(XcGW;F&~88_D>7{s!;qP#x3N0M-1#=W z?_3p;p$HK+YuB0zF^*-%ckjLh(ST2%ZDjPQj_)+~V+?~FNL?6P+7OaNNT_b)NNYDz zAt8s62~aYb^oz?uRH#8S?ja2hE1*^cir8#MKa4$0>dHYnpEtxLHIytyrPQL3yEsZP zqs%Ad;|b&CgcPHSXSA#fItMO9Lu6JlUY zU3A;g97zY|^1sh^UjxD2AG&~`hv@wq&55DG;U83x*O%2YHhaB(aPRQ#pfpE_E>mp* z)%vG{mwTs9Z7)I%dJpmTXs|n4BmL;Q5}}njxfcq{;LFy)a({zEm8%$n zI{04xYym7d>;9K=R?b<549zo+rzbo;JYfI$9;f48_jN!@2}2rie{+j3UVe^gyTxv^ z!)BNO&Uk$HJpzDDN*J^!8X;m#Qfdk+#^E8q>G9i*Qf<%B?$?;~mNhjXQp#GStaXo! zIt}$6JyM9JFyr0hdpsN;admNtaoXs>ByQ|@T{`2(JKx39o!uw>=EuK2%*-CP`Fd zP@VydJ7u3O_Z(WwlJkaE`whIZsidXZ9w{`g1~WSJK@{QaqiR=nYLS09OHRmbR%J$B zP5@Voal()`8pO#9QbobzX^+?MU*r1X)`?kC^JZlqn{Y}HiPWkZ!& z^^{;NIUwpBS?zNs-FWV_;n1JMncVLMfluXg7!(!C1W8Y=3F^ZP@p@o^$t=p3 zHMGVS_hap9a!H|))Vd6>v8ok9Y#-I46ho2~0kZhKG0MBx#NaaSoHliW7aBknSmw^I zxv&}?*};ACHu*ryI7$@+Y*}XHB_o%N)9Hxg(-Tg|CzR7sGVrpX<^_3KkjsJ)B6hnA zTwh&cv$?=#+G4ZWV!OS-G);=GiGG4i?#kFaOCT_YlpH9JdY(#N9OZJ@RQr${x1f5^ zYeBnJ8CHf%OC=&@8XZzM^J&@_P#D~l!DOs4;oZ}FynT9)%iVQ@OHDr;?EUKi;gn|- zW{hbR$Ls@^EC3aQJm};$ux75h4~8gHAz2M@MsedEf{b!zs#^0F?R5~qr7BqsKxZ4| zXtd8`)^^)krOSsVNmg{&N=hTR2Bcwd*q<3#mLra*Beq-Vw~s+)sHZq+;!+h34j9Jh z>+0=}tS~vG1vk>5WsIZ`YzA@armO|;lCo!MXOc)-+@#g2VxEtvdBHdcqEKZP*%@-z z^KaO%sg;ZRVI~$t_obb7EKIsObY@=oq#GFuoObXcHH2T zyDxCHyT%X)Ff&q!0ykBOk_!q>^IjsJT*P7PM6_CgCC}h8JA;zqfD}iK^121r0WAjE zST?*YCseK&hC#B>Qdf&D15}_

Z4|G*Sz^ZXbN0Kuj``s1||7HWxRDF{-Hjf+3FH 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�(HlM>xKUc0xkn-;v+f}B|;VQmgJ+}YUu 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 Eg8w$+)c^nh diff --git a/docs/images/set-a-gh-page.png b/docs/images/set-a-gh-page.png deleted file mode 100644 index ee9dccd69350a8c1b2022db2bae645d0081a35ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130550 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 p|C5}jg6{xk&#douM#y1_&=T?02TlM diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index b39140637..000000000 --- a/docs/index.md +++ /dev/null @@ -1,36 +0,0 @@ -# Helm Documentation - -- [Quick Start](quickstart.md) - Read me first! -- [Installing Helm](install.md) - Install Helm - - [Kubernetes Distribution Notes](kubernetes_distros.md) - - [Frequently Asked Questions](install_faq.md) -- [Using Helm](using_helm.md) - Learn the Helm tools - - [Plugins](plugins.md) - - [Role-based Access Control](rbac.md) -- [Developing Charts](charts.md) - An introduction to chart development - - [Chart Lifecycle Hooks](charts_hooks.md) - - [Chart Tips and Tricks](charts_tips_and_tricks.md) - - [Chart Repository Guide](chart_repository.md) - - [Syncing your Chart Repository](chart_repository_sync_example.md) - - [Signing Charts](provenance.md) - - [Writing Tests for Charts](chart_tests.md) -- [Chart Template Developer's Guide](chart_template_guide/index.md) - Master Helm templates - - [Getting Started with Templates](chart_template_guide/getting_started.md) - - [Built-in Objects](chart_template_guide/builtin_objects.md) - - [Values Files](chart_template_guide/values_files.md) - - [Functions and Pipelines](chart_template_guide/functions_and_pipelines.md) - - [Flow Control (if/else, with, range, whitespace management)](chart_template_guide/control_structures.md) - - [Variables](chart_template_guide/variables.md) - - [Named Templates (Partials)](chart_template_guide/named_templates.md) - - [Accessing Files Inside Templates](chart_template_guide/accessing_files.md) - - [Creating a NOTES.txt File](chart_template_guide/notes_files.md) - - [Subcharts and Global Values](chart_template_guide/subcharts_and_globals.md) - - [Debugging Templates](chart_template_guide/debugging.md) - - [Wrapping Up](chart_template_guide/wrapping_up.md) - - [Appendix A: YAML Techniques](chart_template_guide/yaml_techniques.md) - - [Appendix B: Go Data Types](chart_template_guide/data_types.md) -- [Related Projects](related.md) - More Helm tools, articles, and plugins -- [Architecture](architecture.md) - Overview of the Helm design -- [Developers](developers.md) - About the developers -- [History](history.md) - A brief history of the project -- [Glossary](glossary.md) - Decode the Helm vocabulary diff --git a/docs/install.md b/docs/install.md deleted file mode 100755 index 02ec93775..000000000 --- a/docs/install.md +++ /dev/null @@ -1,103 +0,0 @@ -# Installing Helm - -There are two parts to Helm: The Helm client (`helm`) and the Helm -library. This guide shows how to install both together. - - -## Installing Helm - -Helm can be installed either from source, or from pre-built binary releases. - -### From the Binary Releases - -Every [release](https://github.com/helm/helm/releases) of Helm -provides binary releases for a variety of OSes. These binary versions -can be manually downloaded and installed. - -1. Download your [desired version](https://github.com/helm/helm/releases) -2. Unpack it (`tar -zxvf helm-v2.0.0-linux-amd64.tgz`) -3. Find the `helm` binary in the unpacked directory, and move it to its - desired destination (`mv linux-amd64/helm /usr/local/bin/helm`) - -From there, you should be able to run the client: `helm help`. - -### From Homebrew (macOS) - -Members of the Kubernetes community have contributed a Helm formula build to -Homebrew. This formula is generally up to date. - -``` -brew install kubernetes-helm -``` - -(Note: There is also a formula for emacs-helm, which is a different -project.) - -### From Chocolatey (Windows) - -Members of the Kubernetes community have contributed a [Helm package](https://chocolatey.org/packages/kubernetes-helm) build to -[Chocolatey](https://chocolatey.org/). This package is generally up to date. - -``` -choco install kubernetes-helm -``` - -## From Script - -Helm now has an installer script that will automatically grab the latest version -of Helm and [install it locally](https://raw.githubusercontent.com/helm/helm/master/scripts/get). - -You can fetch that script, and then execute it locally. It's well documented so -that you can read through it and understand what it is doing before you run it. - -``` -$ curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > get_helm.sh -$ chmod 700 get_helm.sh -$ ./get_helm.sh -``` - -Yes, you can `curl https://raw.githubusercontent.com/helm/helm/master/scripts/get | bash` that if you want to live on the edge. - -### From Canary Builds - -"Canary" builds are versions of the Helm software that are built from -the latest master branch. They are not official releases, and may not be -stable. However, they offer the opportunity to test the cutting edge -features. - -Canary Helm binaries are stored at [get.helm.sh](https://get.helm.sh). -Here are links to the common builds: - -- [Linux AMD64](https://get.helm.sh/helm-canary-linux-amd64.tar.gz) -- [macOS AMD64](https://get.helm.sh/helm-canary-darwin-amd64.tar.gz) -- [Experimental Windows AMD64](https://get.helm.sh/helm-canary-windows-amd64.zip) - -### From Source (Linux, macOS) - -Building Helm from source is slightly more work, but is the best way to -go if you want to test the latest (pre-release) Helm version. - -You must have a working Go environment with -[dep](https://github.com/golang/dep) installed. - -```console -$ cd $GOPATH -$ mkdir -p src/helm.sh -$ cd src/helm.sh -$ git clone https://github.com/helm/helm.git -$ cd helm -$ make -``` - -If required, it will first install dependencies, rebuild the -`vendor/` tree, and validate configuration. It will then compile `helm` and -place it in `bin/helm`. - -## Conclusion - -In most cases, installation is as simple as getting a pre-built `helm` binary -and running `helm init`. This document covers additional cases for those -who want to do more sophisticated things with Helm. - -Once you have the Helm Client successfully installed, you can -move on to using Helm to manage charts. diff --git a/docs/kubernetes_distros.md b/docs/kubernetes_distros.md deleted file mode 100644 index c8eac9536..000000000 --- a/docs/kubernetes_distros.md +++ /dev/null @@ -1,46 +0,0 @@ -# Kubernetes Distribution Guide - -This document captures information about using Helm in specific Kubernetes -environments. - -We are trying to add more details to this document. Please contribute via Pull -Requests if you can. - -## MiniKube - -Helm is tested and known to work with [minikube](https://github.com/kubernetes/minikube). -It requires no additional configuration. - -## `scripts/local-cluster` and Hyperkube - -Hyperkube configured via `scripts/local-cluster.sh` is known to work. For raw -Hyperkube you may need to do some manual configuration. - -## GKE - -Google's GKE hosted Kubernetes platform is known to work with Helm, and requires -no additional configuration. - -## Ubuntu with 'kubeadm' - -Kubernetes bootstrapped with `kubeadm` is known to work on the following Linux -distributions: - -- Ubuntu 16.04 -- Fedora release 25 - -Some versions of Helm (v2.0.0-beta2) require you to `export KUBECONFIG=/etc/kubernetes/admin.conf` -or create a `~/.kube/config`. - -## Openshift - -Helm works straightforward on OpenShift Online, OpenShift Dedicated, OpenShift Container Platform (version >= 3.6) or OpenShift Origin (version >= 3.6). To learn more read [this blog](https://blog.openshift.com/getting-started-helm-openshift/) post. - -## Platform9 - -Helm is pre-installed with [Platform9 Managed Kubernetes](https://platform9.com/managed-kubernetes/?utm_source=helm_distro_notes). Platform9 provides access to all official Helm charts through the App Catalog UI and native Kubernetes CLI. Additional repositories can be manually added. Further details are available in this [Platform9 App Catalog article](https://platform9.com/support/deploying-kubernetes-apps-platform9-managed-kubernetes/?utm_source=helm_distro_notes). - -## DC/OS - -Helm has been tested and is working on Mesospheres DC/OS 1.11 Kubernetes platform, and requires no additional configuration. - diff --git a/docs/logos/helm_logo_transparent.png b/docs/logos/helm_logo_transparent.png deleted file mode 100644 index cd5526281f0748d17b05086438a16cfedbc893d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36682 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 n_dOQxx>-SG9tv{!C-kGgTe~DWM4ffvx5u diff --git a/docs/plugins.md b/docs/plugins.md deleted file mode 100644 index 23bd9a3b4..000000000 --- a/docs/plugins.md +++ /dev/null @@ -1,207 +0,0 @@ -# The Helm Plugins Guide - -Helm 2.1.0 introduced the concept of a client-side Helm _plugin_. A plugin is a -tool that can be accessed through the `helm` CLI, but which is not part of the -built-in Helm codebase. - -Existing plugins can be found on [related](related.md#helm-plugins) section or by searching [Github](https://github.com/search?q=topic%3Ahelm-plugin&type=Repositories). - -This guide explains how to use and create plugins. - -## An Overview - -Helm plugins are add-on tools that integrate seamlessly with Helm. They provide -a way to extend the core feature set of Helm, but without requiring every new -feature to be written in Go and added to the core tool. - -Helm plugins have the following features: - -- They can be added and removed from a Helm installation without impacting the - core Helm tool. -- They can be written in any programming language. -- They integrate with Helm, and will show up in `helm help` and other places. - -Helm plugins live in `$(helm home)/plugins`. - -The Helm plugin model is partially modeled on Git's plugin model. To that end, -you may sometimes hear `helm` referred to as the _porcelain_ layer, with -plugins being the _plumbing_. This is a shorthand way of suggesting that -Helm provides the user experience and top level processing logic, while the -plugins do the "detail work" of performing a desired action. - -## Installing a Plugin - -Plugins are installed using the `$ helm plugin install ` command. You can pass in a path to a plugin on your local file system or a url of a remote VCS repo. The `helm plugin install` command clones or copies the plugin at the path/url given into `$ (helm home)/plugins` - -```console -$ helm plugin install https://github.com/technosophos/helm-template -``` - -If you have a plugin tar distribution, simply untar the plugin into the `$(helm home)/plugins` directory. You can also install tarball plugins directly from url by issuing `helm plugin install http://domain/path/to/plugin.tar.gz` - -Alternatively, a set of plugins can be installed during the `helm init` process by using the `--plugins ` flag, where `file.yaml` looks like this: - -``` -plugins: -- name: helm-template - url: https://github.com/technosophos/helm-template -- name: helm-diff - url: https://github.com/databus23/helm-diff - version: 2.11.0+3 -``` - -The `name` field only exists to allow you to easily identify plugins, and does not serve a functional purpose. If a plugin specified in the file is already installed, it maintains its current version. - -## Building Plugins - -In many ways, a plugin is similar to a chart. Each plugin has a top-level -directory, and then a `plugin.yaml` file. - -``` -$(helm home)/plugins/ - |- keybase/ - | - |- plugin.yaml - |- keybase.sh - -``` - -In the example above, the `keybase` plugin is contained inside of a directory -named `keybase`. It has two files: `plugin.yaml` (required) and an executable -script, `keybase.sh` (optional). - -The core of a plugin is a simple YAML file named `plugin.yaml`. -Here is a plugin YAML for a plugin that adds support for Keybase operations: - -``` -name: "last" -version: "0.1.0" -usage: "get the last release name" -description: "get the last release name"" -ignoreFlags: false -command: "$HELM_BIN --host $TILLER_HOST list --short --max 1 --date -r" -platformCommand: - - os: linux - arch: i386 - command: "$HELM_BIN list --short --max 1 --date -r" - - os: linux - arch: amd64 - command: "$HELM_BIN list --short --max 1 --date -r" - - os: windows - arch: amd64 - command: "$HELM_BIN list --short --max 1 --date -r" -``` - -The `name` is the name of the plugin. When Helm executes it plugin, this is the -name it will use (e.g. `helm NAME` will invoke this plugin). - -_`name` should match the directory name._ In our example above, that means the -plugin with `name: keybase` should be contained in a directory named `keybase`. - -Restrictions on `name`: - -- `name` cannot duplicate one of the existing `helm` top-level commands. -- `name` must be restricted to the characters ASCII a-z, A-Z, 0-9, `_` and `-`. - -`version` is the SemVer 2 version of the plugin. -`usage` and `description` are both used to generate the help text of a command. - -The `ignoreFlags` switch tells Helm to _not_ pass flags to the plugin. So if a -plugin is called with `helm myplugin --foo` and `ignoreFlags: true`, then `--foo` -is silently discarded. - -Finally, and most importantly, `platformCommand` or `command` is the command -that this plugin will execute when it is called. The `platformCommand` section -defines the OS/Architecture specific variations of a command. The following -rules will apply in deciding which command to use: - -- If `platformCommand` is present, it will be searched first. -- If both `os` and `arch` match the current platform, search will stop and the -command will be used. -- If `os` matches and there is no more specific `arch` match, the command -will be used. -- If no `platformCommand` match is found, the default `command` will be used. -- If no matches are found in `platformCommand` and no `command` is present, -Helm will exit with an error. - -Environment variables are interpolated before the plugin is executed. The -pattern above illustrates the preferred way to indicate where the plugin -program lives. - -There are some strategies for working with plugin commands: - -- If a plugin includes an executable, the executable for a -`platformCommand:` or a `command:` should be packaged in the plugin directory. -- The `platformCommand:` or `command:` line will have any environment -variables expanded before execution. `$HELM_PLUGIN_DIR` will point to the -plugin directory. -- The command itself is not executed in a shell. So you can't oneline a shell script. -- Helm injects lots of configuration into environment variables. Take a look at - the environment to see what information is available. -- Helm makes no assumptions about the language of the plugin. You can write it - in whatever you prefer. -- Commands are responsible for implementing specific help text for `-h` and `--help`. - Helm will use `usage` and `description` for `helm help` and `helm help myplugin`, - but will not handle `helm myplugin --help`. - -## Downloader Plugins -By default, Helm is able to pull Charts using HTTP/S. As of Helm 2.4.0, plugins -can have a special capability to download Charts from arbitrary sources. - -Plugins shall declare this special capability in the `plugin.yaml` file (top level): - -``` -downloaders: -- command: "bin/mydownloader" - protocols: - - "myprotocol" - - "myprotocols" -``` - -If such plugin is installed, Helm can interact with the repository using the specified -protocol scheme by invoking the `command`. The special repository shall be added -similarly to the regular ones: `helm repo add favorite myprotocol://example.com/` -The rules for the special repos are the same to the regular ones: Helm must be able -to download the `index.yaml` file in order to discover and cache the list of -available Charts. - -The defined command will be invoked with the following scheme: -`command certFile keyFile caFile full-URL`. The SSL credentials are coming from the -repo definition, stored in `$HELM_HOME/repository/repositories.yaml`. Downloader -plugin is expected to dump the raw content to stdout and report errors on stderr. - -The downloader command also supports sub-commands or arguments, allowing you to specify -for example `bin/mydownloader subcommand -d` in the `plugin.yaml`. This is useful -if you want to use the same executable for the main plugin command and the downloader -command, but with a different sub-command for each. - -## Environment Variables - -When Helm executes a plugin, it passes the outer environment to the plugin, and -also injects some additional environment variables. - -Variables like `KUBECONFIG` are set for the plugin if they are set in the -outer environment. - -The following variables are guaranteed to be set: - -- `HELM_PLUGIN`: The path to the plugins directory -- `HELM_PLUGIN_NAME`: The name of the plugin, as invoked by `helm`. So - `helm myplug` will have the short name `myplug`. -- `HELM_PLUGIN_DIR`: The directory that contains the plugin. -- `HELM_BIN`: The path to the `helm` command (as executed by the user). -- `HELM_HOME`: The path to the Helm home. -- `HELM_PATH_*`: Paths to important Helm files and directories are stored in - environment variables prefixed by `HELM_PATH`. - -## A Note on Flag Parsing - -When executing a plugin, Helm will parse global flags for its own use. Some of -these flags are _not_ passed on to the plugin. - -- `--debug`: If this is specified, `$HELM_DEBUG` is set to `1` -- `--home`: This is converted to `$HELM_HOME` -- `--kube-context`: This is simply dropped. - -Plugins _should_ display help text and then exit for `-h` and `--help`. In all -other cases, plugins may use flags as appropriate. diff --git a/docs/provenance.md b/docs/provenance.md deleted file mode 100644 index be1d64b7a..000000000 --- a/docs/provenance.md +++ /dev/null @@ -1,277 +0,0 @@ -# Helm Provenance and Integrity - -Helm has provenance tools which help chart users verify the integrity and origin -of a package. Using industry-standard tools based on PKI, GnuPG, and well-respected -package managers, Helm can generate and verify signature files. - -## Overview - -Integrity is established by comparing a chart to a provenance record. Provenance -records are stored in _provenance files_, which are stored alongside a packaged -chart. For example, if a chart is named `myapp-1.2.3.tgz`, its provenance file -will be `myapp-1.2.3.tgz.prov`. - -Provenance files are generated at packaging time (`helm package --sign ...`), and -can be checked by multiple commands, notable `helm install --verify`. - -## The Workflow - -This section describes a potential workflow for using provenance data effectively. - -Prerequisites: - -- A valid PGP keypair in a binary (not ASCII-armored) format -- The `helm` command line tool -- GnuPG command line tools (optional) -- Keybase command line tools (optional) - -**NOTE:** If your PGP private key has a passphrase, you will be prompted to enter -that passphrase for any commands that support the `--sign` option. - -Creating a new chart is the same as before: - -``` -$ helm create mychart -Creating mychart -``` - -Once ready to package, add the `--sign` flag to `helm package`. Also, specify -the name under which the signing key is known and the keyring containing the corresponding private key: - -``` -$ helm package --sign --key 'helm signing key' --keyring path/to/keyring.secret mychart -``` - -**TIP:** for GnuPG users, your secret keyring is in `~/.gnupg/secring.gpg`. You can -use `gpg --list-secret-keys` to list the keys you have. - -**Warning:** the GnuPG v2 store your secret keyring using a new format 'kbx' on the default location '~/.gnupg/pubring.kbx'. Please use the following command to convert your keyring to the legacy gpg format: - -``` -$ gpg --export-secret-keys >~/.gnupg/secring.gpg -``` - -At this point, you should see both `mychart-0.1.0.tgz` and `mychart-0.1.0.tgz.prov`. -Both files should eventually be uploaded to your desired chart repository. - -You can verify a chart using `helm verify`: - -``` -$ helm verify mychart-0.1.0.tgz -``` - -A failed verification looks like this: - -``` -$ helm verify topchart-0.1.0.tgz -Error: sha256 sum does not match for topchart-0.1.0.tgz: "sha256:1939fbf7c1023d2f6b865d137bbb600e0c42061c3235528b1e8c82f4450c12a7" != "sha256:5a391a90de56778dd3274e47d789a2c84e0e106e1a37ef8cfa51fd60ac9e623a" -``` - -To verify during an install, use the `--verify` flag. - -``` -$ helm install --verify mychart-0.1.0.tgz -``` - -If the keyring (containing the public key associated with the signed chart) is not in the default location, you may need to point to the -keyring with `--keyring PATH` as in the `helm package` example. - -If verification fails, the install will be aborted before the chart is even rendered. - - -### Using Keybase.io credentials - -The [Keybase.io](https://keybase.io) service makes it easy to establish a chain of -trust for a cryptographic identity. Keybase credentials can be used to sign charts. - -Prerequisites: - -- A configured Keybase.io account -- GnuPG installed locally -- The `keybase` CLI installed locally - -#### Signing packages - -The first step is to import your keybase keys into your local GnuPG keyring: - -``` -$ keybase pgp export -s | gpg --import -``` - -This will convert your Keybase key into the OpenPGP format, and then import it -locally into your `~/.gnupg/secring.gpg` file. - -You can double check by running `gpg --list-secret-keys`. - -``` -$ gpg --list-secret-keys 1 ↵ -/Users/mattbutcher/.gnupg/secring.gpg -------------------------------------- -sec 2048R/1FC18762 2016-07-25 -uid technosophos (keybase.io/technosophos) -ssb 2048R/D125E546 2016-07-25 -``` - -Note that your secret key will have an identifier string: - -``` -technosophos (keybase.io/technosophos) -``` - -That is the full name of your key. - -Next, you can package and sign a chart with `helm package`. Make sure you use at -least part of that name string in `--key`. - -``` -$ helm package --sign --key technosophos --keyring ~/.gnupg/secring.gpg mychart -``` - -As a result, the `package` command should produce both a `.tgz` file and a `.tgz.prov` -file. - -#### Verifying packages - -You can also use a similar technique to verify a chart signed by someone else's -Keybase key. Say you want to verify a package signed by `keybase.io/technosophos`. -To do this, use the `keybase` tool: - -``` -$ keybase follow technosophos -$ keybase pgp pull -``` - -The first command above tracks the user `technosophos`. Next `keybase pgp pull` -downloads the OpenPGP keys of all of the accounts you follow, placing them in -your GnuPG keyring (`~/.gnupg/pubring.gpg`). - -At this point, you can now use `helm verify` or any of the commands with a `--verify` -flag: - -``` -$ helm verify somechart-1.2.3.tgz -``` - -### Reasons a chart may not verify - -These are common reasons for failure. - -- The prov file is missing or corrupt. This indicates that something is misconfigured - or that the original maintainer did not create a provenance file. -- The key used to sign the file is not in your keyring. This indicate that the - entity who signed the chart is not someone you've already signaled that you trust. -- The verification of the prov file failed. This indicates that something is wrong - with either the chart or the provenance data. -- The file hashes in the provenance file do not match the hash of the archive file. This - indicates that the archive has been tampered with. - -If a verification fails, there is reason to distrust the package. - -## The Provenance File -The provenance file contains a chart’s YAML file plus several pieces of -verification information. Provenance files are designed to be automatically -generated. - - -The following pieces of provenance data are added: - - -* The chart file (Chart.yaml) is included to give both humans and tools an easy - view into the contents of the chart. -* The signature (SHA256, just like Docker) of the chart package (the .tgz file) - is included, and may be used to verify the integrity of the chart package. -* The entire body is signed using the algorithm used by PGP (see - [http://keybase.io] for an emerging way of making crypto signing and - verification easy). - -The combination of this gives users the following assurances: - -* The package itself has not been tampered with (checksum package tgz). -* The entity who released this package is known (via the GnuPG/PGP signature). - -The format of the file looks something like this: - -``` ------BEGIN PGP SIGNED MESSAGE----- -name: nginx -description: The nginx web server as a replication controller and service pair. -version: 0.5.1 -keywords: - - https - - http - - web server - - proxy -source: -- https://github.com/foo/bar -home: http://nginx.com - -... -files: - nginx-0.5.1.tgz: “sha256:9f5270f50fc842cfcb717f817e95178f” ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.9 (GNU/Linux) - -iEYEARECAAYFAkjilUEACgQkB01zfu119ZnHuQCdGCcg2YxF3XFscJLS4lzHlvte -WkQAmQGHuuoLEJuKhRNo+Wy7mhE7u1YG -=eifq ------END PGP SIGNATURE----- -``` - -Note that the YAML section contains two documents (separated by `...\n`). The -first is the Chart.yaml. The second is the checksums, a map of filenames to -SHA-256 digests (value shown is fake/truncated) - -The signature block is a standard PGP signature, which provides [tamper -resistance](http://www.rossde.com/PGP/pgp_signatures.html). - -## Chart Repositories - -Chart repositories serve as a centralized collection of Helm charts. - -Chart repositories must make it possible to serve provenance files over HTTP via -a specific request, and must make them available at the same URI path as the chart. - -For example, if the base URL for a package is `https://example.com/charts/mychart-1.2.3.tgz`, -the provenance file, if it exists, MUST be accessible at `https://example.com/charts/mychart-1.2.3.tgz.prov`. - -From the end user's perspective, `helm install --verify myrepo/mychart-1.2.3` -should result in the download of both the chart and the provenance file with no -additional user configuration or action. - -## Establishing Authority and Authenticity - -When dealing with chain-of-trust systems, it is important to be able to -establish the authority of a signer. Or, to put this plainly, the system -above hinges on the fact that you trust the person who signed the chart. -That, in turn, means you need to trust the public key of the signer. - -One of the design decisions with Kubernetes Helm has been that the Helm -project would not insert itself into the chain of trust as a necessary -party. We don't want to be "the certificate authority" for all chart -signers. Instead, we strongly favor a decentralized model, which is part -of the reason we chose OpenPGP as our foundational technology. -So when it comes to establishing authority, we have left this -step more-or-less undefined in Helm 2.0.0. - -However, we have some pointers and recommendations for those interested -in using the provenance system: - -- The [Keybase](https://keybase.io) platform provides a public - centralized repository for trust information. - - You can use Keybase to store your keys or to get the public keys of others. - - Keybase also has fabulous documentation available - - While we haven't tested it, Keybase's "secure website" feature could - be used to serve Helm charts. -- The [official Kubernetes Charts project](https://github.com/helm/charts) - is trying to solve this problem for the official chart repository. - - There is a long issue there [detailing the current thoughts](https://github.com/helm/charts/issues/23). - - The basic idea is that an official "chart reviewer" signs charts with - her or his key, and the resulting provenance file is then uploaded - to the chart repository. - - There has been some work on the idea that a list of valid signing - keys may be included in the `index.yaml` file of a repository. - -Finally, chain-of-trust is an evolving feature of Helm, and some -community members have proposed adapting part of the OSI model for -signatures. This is an open line of inquiry in the Helm team. If you're -interested, jump on in. diff --git a/docs/quickstart.md b/docs/quickstart.md deleted file mode 100644 index 1206ab8c6..000000000 --- a/docs/quickstart.md +++ /dev/null @@ -1,114 +0,0 @@ -# Quickstart Guide - -This guide covers how you can quickly get started using Helm. - -## Prerequisites - -The following prerequisites are required for a successful and properly secured use of Helm. - -1. A Kubernetes cluster -2. Deciding what security configurations to apply to your installation, if any -3. Installing and configuring Helm. - - -### Install Kubernetes or have access to a cluster -- You must have Kubernetes installed. For the latest release of Helm, we recommend the latest stable release of Kubernetes, which in most cases is the second-latest minor release. -- You should also have a local configured copy of `kubectl`. - -NOTE: Kubernetes versions prior to 1.6 have limited or no support for role-based access controls (RBAC). - - -### Understand your Security Context - -As with all powerful tools, ensure you are installing it correctly for your scenario. - -If you're using Helm on a cluster that you completely control, like minikube or a cluster on a private network in which sharing is not a concern, the default installation -- which applies no security configuration -- is fine, and it's definitely the easiest. To install Helm without additional security steps, [install Helm](#Install-Helm) and then [initialize Helm](#initialize-helm). - -However, if your cluster is exposed to a larger network or if you share your cluster with others -- production clusters fall into this category -- you must take extra steps to secure your installation to prevent careless or malicious actors from damaging the cluster or its data. To apply configurations that secure Helm for use in production environments and other multi-tenant scenarios, see [Securing a Helm installation](securing_installation.md) - -If your cluster has Role-Based Access Control (RBAC) enabled, you may want -to [configure a service account and rules](rbac.md) before proceeding. - -## Install Helm - -Download a binary release of the Helm client. You can use tools like -`homebrew`, or look at [the official releases page](https://github.com/helm/helm/releases). - -For more details, or for other options, see [the installation -guide](install.md). - -## Initialize Helm - -Once you have Helm ready, you can initialize the local CLI: - -```console -$ helm init -``` - - -## Install an Example Chart - -To install a chart, you can run the `helm install` command. Helm has -several ways to find and install a chart, but the easiest is to use one -of the official `stable` charts. - -```console -$ helm repo update # Make sure we get the latest list of charts -$ helm install stable/mysql -Released smiling-penguin -``` - -In the example above, the `stable/mysql` chart was released, and the name of -our new release is `smiling-penguin`. You get a simple idea of the -features of this MySQL chart by running `helm inspect stable/mysql`. - -Whenever you install a chart, a new release is created. So one chart can -be installed multiple times into the same cluster. And each can be -independently managed and upgraded. - -The `helm install` command is a very powerful command with many -capabilities. To learn more about it, check out the [Using Helm -Guide](using_helm.md) - -## Learn About Releases - -It's easy to see what has been released using Helm: - -```console -$ helm ls -NAME VERSION UPDATED                   STATUS   CHART -smiling-penguin 1 Wed Sep 28 12:59:46 2016 DEPLOYED mysql-0.1.0 -``` - -The `helm list` function will show you a list of all deployed releases. - -## Uninstall a Release - -To uninstall a release, use the `helm uninstall` command: - -```console -$ helm uninstall smiling-penguin -Removed smiling-penguin -``` - -This will uninstall `smiling-penguin` from Kubernetes, but you will -still be able to request information about that release: - -```console -$ helm status smiling-penguin -Status: UNINSTALLED -... -``` - -Because Helm tracks your releases even after you've uninstalled them, you -can audit a cluster's history, and even undelete a release (with `helm -rollback`). - -## Reading the Help Text - -To learn more about the available Helm commands, use `helm help` or type -a command followed by the `-h` flag: - -```console -$ helm get -h -``` diff --git a/docs/registries.md b/docs/registries.md deleted file mode 100644 index d9a824554..000000000 --- a/docs/registries.md +++ /dev/null @@ -1,175 +0,0 @@ -# Registries - -Helm 3 uses OCI for package distribution. Chart packages are stored and shared across OCI-based registries. - -## Running a registry - -Starting a registry for test purposes is trivial. As long as you have Docker installed, run the following command: -``` -docker run -dp 5000:5000 --restart=always --name registry registry -``` - -This will start a registry server at `localhost:5000`. - -Use `docker logs -f registry` to see the logs and `docker rm -f registry` to stop. - -If you wish to persist storage, you can add `-v $(pwd)/registry:/var/lib/registry` to the command above. - -For more configuration options, please see [the docs](https://docs.docker.com/registry/deploying/). - -### Auth - -If you wish to enable auth on the registry, you can do the following- - -First, create file `auth.htpasswd` with username and password combo: -``` -htpasswd -cB -b auth.htpasswd myuser mypass -``` - -Then, start the server, mounting that file and setting the `REGISTRY_AUTH` env var: -``` -docker run -dp 5000:5000 --restart=always --name registry \ - -v $(pwd)/auth.htpasswd:/etc/docker/registry/auth.htpasswd \ - -e REGISTRY_AUTH="{htpasswd: {realm: localhost, path: /etc/docker/registry/auth.htpasswd}}" \ - registry -``` - -## Commands for working with registries - -Commands are available under both `helm registry` and `helm chart` that allow you to work with registries and local cache. - -### The `registry` subcommand - -#### `login` - -login to a registry (with manual password entry) - -``` -$ helm registry login -u myuser localhost:5000 -Password: -Login succeeded -``` - -#### `logout` - -logout from a registry - -``` -$ helm registry logout localhost:5000 -Logout succeeded -``` - -### The `chart` subcommand - -#### `save` - -save a chart directory to local cache - -``` -$ helm chart save mychart/ localhost:5000/myrepo/mychart:2.7.0 -Name: mychart -Version: 2.7.0 -Meta: sha256:ca9588a9340fb83a62777cd177dae4ba5ab52061a1618ce2e21930b86c412d9e -Content: sha256:a66666c6b35ee25aa8ecd7d0e871389b5a2a0576295d6c366aefe836001cb90d -2.7.0: saved -``` - -#### `list` - -list all saved charts - -``` -$ helm chart list -REF NAME VERSION DIGEST SIZE CREATED -localhost:5000/myrepo/mychart:2.7.0 mychart 2.7.0 84059d7 454 B 27 seconds -localhost:5000/stable/acs-engine-autoscaler:2.2.2 acs-engine-autoscaler 2.2.2 d8d6762 4.3 KiB 2 hours -localhost:5000/stable/aerospike:0.2.1 aerospike 0.2.1 4aff638 3.7 KiB 2 hours -localhost:5000/stable/airflow:0.13.0 airflow 0.13.0 c46cc43 28.1 KiB 2 hours -localhost:5000/stable/anchore-engine:0.10.0 anchore-engine 0.10.0 3f3dcd7 34.3 KiB 2 hours -... -``` - -#### `export` - -export a chart to directory - -``` -$ helm chart export localhost:5000/myrepo/mychart:2.7.0 -Name: mychart -Version: 2.7.0 -Meta: sha256:3344059bb81c49cc6f2599a379da0a6c14313cf969f7b821aca18e489ba3991b -Content: sha256:84059d7403f496a1c63caf97fdc5e939ea39e561adbd98d0aa864d1b9fc9653f -Exported to mychart/ -``` - -#### `push` - -push a chart to remote - -``` -$ helm chart push localhost:5000/myrepo/mychart:2.7.0 -The push refers to repository [localhost:5000/myrepo/mychart] -Name: mychart -Version: 2.7.0 -Meta: sha256:ca9588a9340fb83a62777cd177dae4ba5ab52061a1618ce2e21930b86c412d9e -Content: sha256:a66666c6b35ee25aa8ecd7d0e871389b5a2a0576295d6c366aefe836001cb90d -2.7.0: pushed to remote (2 layers, 478 B total) -``` - -#### `remove` - -remove a chart from cache - -``` -$ helm chart remove localhost:5000/myrepo/mychart:2.7.0 -2.7.0: removed -``` - -#### `pull` - -pull a chart from remote - -``` -$ helm chart pull localhost:5000/myrepo/mychart:2.7.0 -2.7.0: Pulling from localhost:5000/myrepo/mychart -Name: mychart -Version: 2.7.0 -Meta: sha256:ca9588a9340fb83a62777cd177dae4ba5ab52061a1618ce2e21930b86c412d9e -Content: sha256:a66666c6b35ee25aa8ecd7d0e871389b5a2a0576295d6c366aefe836001cb90d -Status: Chart is up to date for localhost:5000/myrepo/mychart:2.7.0 -``` - -## Where are my charts? - -Charts stored using the commands above will be cached on disk at `~/.helm/registry` (or somewhere else depending on `$HELM_HOME`). - -Chart content (tarball) and chart metadata (json) are stored as separate content-addressable blobs. This prevents storing the same content twice when, for example, you are simply modifying some fields in `Chart.yaml`. They are joined together and converted back into regular chart format when using the `export` command. - -The chart name and chart version are treated as "first-class" properties and stored separately. They are extracted out of `Chart.yaml` prior to building the metadata blob. - -The following shows an example of a single chart stored in the cache (`localhost:5000/myrepo/mychart:2.7.0`): -``` -$ tree ~/.helm/registry -/Users/me/.helm/registry -├── blobs -│   └── sha256 -│   ├── 3344059bb81c49cc6f2599a379da0a6c14313cf969f7b821aca18e489ba3991b -│   └── 84059d7403f496a1c63caf97fdc5e939ea39e561adbd98d0aa864d1b9fc9653f -├── charts -│ └── mychart -│ └── versions -│ └── 2.7.0 -└── refs - └── localhost_5000 - └── myrepo - └── mychart - └── tags - └── 2.7.0 - ├── chart -> /Users/me/.helm/registry/charts/mychart/versions/2.7.0 - ├── content -> /Users/me/.helm/registry/blobs/sha256/3344059bb81c49cc6f2599a379da0a6c14313cf969f7b821aca18e489ba3991b - └── meta -> /Users/me/.helm/registry/blobs/sha256/84059d7403f496a1c63caf97fdc5e939ea39e561adbd98d0aa864d1b9fc9653f -``` - -## Migrating from chart repos - -Migrating from classic [chart repositories](./chart_repository.md) (index.yaml-based repos) is as simple as a `helm fetch` (Helm 2 CLI), `helm chart save`, `helm chart push`. diff --git a/docs/related.md b/docs/related.md deleted file mode 100644 index 883c1b82d..000000000 --- a/docs/related.md +++ /dev/null @@ -1,82 +0,0 @@ -# Related Projects and Documentation - -The Helm community has produced many extra tools, plugins, and documentation about -Helm. We love to hear about these projects. If you have anything you'd like to -add to this list, please open an [issue](https://github.com/helm/helm/issues) -or [pull request](https://github.com/helm/helm/pulls). - -## Article, Blogs, How-Tos, and Extra Documentation -- [Using Helm to Deploy to Kubernetes](https://daemonza.github.io/2017/02/20/using-helm-to-deploy-to-kubernetes/) -- [Honestbee's Helm Chart Conventions](https://gist.github.com/so0k/f927a4b60003cedd101a0911757c605a) -- [Deploying Kubernetes Applications with Helm](http://cloudacademy.com/blog/deploying-kubernetes-applications-with-helm/) -- [Releasing backward-incompatible changes: Kubernetes, Jenkins, Prometheus Operator, Helm and Traefik](https://medium.com/@enxebre/releasing-backward-incompatible-changes-kubernetes-jenkins-plugin-prometheus-operator-helm-self-6263ca61a1b1#.e0c7elxhq) -- [CI/CD with Kubernetes, Helm & Wercker ](http://www.slideshare.net/Diacode/cicd-with-kubernetes-helm-wercker-madscalability) -- [The missing CI/CD Kubernetes component: Helm package manager](https://hackernoon.com/the-missing-ci-cd-kubernetes-component-helm-package-manager-1fe002aac680#.691sk2zhu) -- [The Workflow "Umbrella" Helm Chart](https://deis.com/blog/2017/workflow-chart-assembly) -- [GitLab, Consumer Driven Contracts, Helm and Kubernetes](https://medium.com/@enxebre/gitlab-consumer-driven-contracts-helm-and-kubernetes-b7235a60a1cb#.xwp1y4tgi) -- [Writing a Helm Chart](https://www.influxdata.com/packaged-kubernetes-deployments-writing-helm-chart/) -- [Creating a Helm Plugin in 3 Steps](http://technosophos.com/2017/03/21/creating-a-helm-plugin.html) - -## Video, Audio, and Podcast - -- [CI/CD with Jenkins, Kubernetes, and Helm](https://www.youtube.com/watch?v=NVoln4HdZOY): AKA "The Infamous Croc Hunter Video". -- [KubeCon2016: Delivering Kubernetes-Native Applications by Michelle Noorali](https://www.youtube.com/watch?v=zBc1goRfk3k&index=49&list=PLj6h78yzYM2PqgIGU1Qmi8nY7dqn9PCr4) -- [Helm with Michelle Noorali and Matthew Butcher](https://gcppodcast.com/post/episode-50-helm-with-michelle-noorali-and-matthew-butcher/): The official Google CloudPlatform Podcast interviews Michelle and Matt about Helm. - -## Helm Plugins - -- [Technosophos's Helm Plugins](https://github.com/technosophos/helm-plugins) - Plugins for GitHub, Keybase, and GPG -- [helm-template](https://github.com/technosophos/helm-template) - Debug/render templates client-side -- [Helm Value Store](https://github.com/skuid/helm-value-store) - Plugin for working with Helm deployment values -- [Helm Diff](https://github.com/databus23/helm-diff) - Preview `helm upgrade` as a coloured diff -- [helm-env](https://github.com/adamreese/helm-env) - Plugin to show current environment -- [helm-last](https://github.com/adamreese/helm-last) - Plugin to show the latest release -- [helm-nuke](https://github.com/adamreese/helm-nuke) - Plugin to destroy all releases -- [App Registry](https://github.com/app-registry/helm-plugin) - Plugin to manage charts via the [App Registry specification](https://github.com/app-registry/spec) -- [helm-secrets](https://github.com/futuresimple/helm-secrets) - Plugin to manage and store secrets safely -- [helm-edit](https://github.com/mstrzele/helm-edit) - Plugin for editing release's values -- [helm-gcs](https://github.com/nouney/helm-gcs) - Plugin to manage repositories on Google Cloud Storage -- [helm-github](https://github.com/sagansystems/helm-github) - Plugin to install Helm Charts from Github repositories -- [helm-monitor](https://github.com/ContainerSolutions/helm-monitor) - Plugin to monitor a release and rollback based on Prometheus/ElasticSearch query -- [helm-k8comp](https://github.com/cststack/k8comp) - Plugin to create Helm Charts from hiera using k8comp -- [helm-hashtag](https://github.com/balboah/helm-hashtag) - Plugin for tracking docker tag hash digests as values -- [helm-unittest](https://github.com/lrills/helm-unittest) - Plugin for unit testing chart locally with YAML - -We also encourage GitHub authors to use the [helm-plugin](https://github.com/search?q=topic%3Ahelm-plugin&type=Repositories) -tag on their plugin repositories. - -## Additional Tools - -Tools layered on top of Helm. - -- [Quay App Registry](https://coreos.com/blog/quay-application-registry-for-kubernetes.html) - Open Kubernetes application registry, including a Helm access client -- [Chartify](https://github.com/appscode/chartify) - Generate Helm charts from existing Kubernetes resources. -- [VIM-Kubernetes](https://github.com/andrewstuart/vim-kubernetes) - VIM plugin for Kubernetes and Helm -- [Landscaper](https://github.com/Eneco/landscaper/) - "Landscaper takes a set of Helm Chart references with values (a desired state), and realizes this in a Kubernetes cluster." -- [Helmfile](https://github.com/roboll/helmfile) - Helmfile is a declarative spec for deploying helm charts -- [Autohelm](https://github.com/reactiveops/autohelm) - Autohelm is _another_ simple declarative spec for deploying helm charts. Written in python and supports git urls as a source for helm charts. -- [Helmsman](https://github.com/Praqma/helmsman) - Helmsman is a helm-charts-as-code tool which enables installing/upgrading/protecting/moving/deleting releases from version controlled desired state files (described in a simple TOML format). -- [Schelm](https://github.com/databus23/schelm) - Render a Helm manifest to a directory -- [Drone.io Helm Plugin](http://plugins.drone.io/ipedrazas/drone-helm/) - Run Helm inside of the Drone CI/CD system -- [Cog](https://github.com/ohaiwalt/cog-helm) - Helm chart to deploy Cog on Kubernetes -- [Monocular](https://github.com/helm/monocular) - Web UI for Helm Chart repositories -- [Helm Chart Publisher](https://github.com/luizbafilho/helm-chart-publisher) - HTTP API for publishing Helm Charts in an easy way -- [Armada](https://github.com/att-comdev/armada) - Manage prefixed releases throughout various Kubernetes namespaces, and removes completed jobs for complex deployments. Used by the [Openstack-Helm](https://github.com/openstack/openstack-helm) team. -- [ChartMuseum](https://github.com/chartmuseum/chartmuseum) - Helm Chart Repository with support for Amazon S3 and Google Cloud Storage -- [Codefresh](https://codefresh.io) - Kubernetes native CI/CD and management platform with UI dashboards for managing Helm charts and releases - -## Helm Included - -Platforms, distributions, and services that include Helm support. - -- [Kubernetic](https://kubernetic.com/) - Kubernetes Desktop Client -- [Cabin](http://www.skippbox.com/cabin/) - Mobile App for Managing Kubernetes -- [Qstack](https://qstack.com) -- [Fabric8](https://fabric8.io) - Integrated development platform for Kubernetes -- [Jenkins X](http://jenkins-x.io/) - open source automated CI/CD for Kubernetes which uses Helm for [promoting](http://jenkins-x.io/about/features/#promotion) applications through [environments via GitOps](http://jenkins-x.io/about/features/#environments) - -## Misc - -Grab bag of useful things for Chart authors and Helm users - -- [Await](https://github.com/saltside/await) - Docker image to "await" different conditions--especially useful for init containers. [More Info](http://blog.slashdeploy.com/2017/02/16/introducing-await/) diff --git a/docs/release_checklist.md b/docs/release_checklist.md deleted file mode 100644 index 56928a8b8..000000000 --- a/docs/release_checklist.md +++ /dev/null @@ -1,240 +0,0 @@ -# Release Checklist - -**IMPORTANT**: If your experience deviates from this document, please document the changes to keep it up-to-date. - -## A Maintainer's Guide to Releasing Helm - -So you're in charge of a new release for helm? Cool. Here's what to do... - -![TODO: Nothing](images/nothing.png) - -Just kidding! :trollface: - -All releases will be of the form vX.Y.Z where X is the major version number, Y is the minor version number and Z is the patch release number. This project strictly follows [semantic versioning](http://semver.org/) so following this step is critical. - -It is important to note that this document assumes that the git remote in your repository that corresponds to "https://github.com/helm/helm" is named "upstream". If yours is not (for example, if you've chosen to name it "origin" or something similar instead), be sure to adjust the listed snippets for your local environment accordingly. If you are not sure what your upstream remote is named, use a command like `git remote -v` to find out. - -If you don't have an upstream remote, you can add one easily using something like: - -```shell -git remote add upstream git@github.com:helm/helm.git -``` - -In this doc, we are going to reference a few environment variables as well, which you may want to set for convenience. For major/minor releases, use the following: - -```shell -export RELEASE_NAME=vX.Y.0 -export RELEASE_BRANCH_NAME="release-$RELEASE_NAME" -export RELEASE_CANDIDATE_NAME="$RELEASE_NAME-rc1" -``` - -If you are creating a patch release, you may want to use the following instead: - -```shell -export PREVIOUS_PATCH_RELEASE=vX.Y.Z -export RELEASE_NAME=vX.Y.Z+1 -export RELEASE_BRANCH_NAME="release-X.Y" -export RELEASE_CANDIDATE_NAME="$RELEASE_NAME-rc1" -``` - -## 1. Create the Release Branch - -### Major/Minor Releases - -Major releases are for new feature additions and behavioral changes *that break backwards compatibility*. Minor releases are for new feature additions that do not break backwards compatibility. To create a major or minor release, start by creating a `release-vX.Y.0` branch from master. - -```shell -git fetch upstream -git checkout upstream/master -git checkout -b $RELEASE_BRANCH_NAME -``` - -This new branch is going to be the base for the release, which we are going to iterate upon later. - -### Patch releases - -Patch releases are a few critical cherry-picked fixes to existing releases. Start by creating a `release-vX.Y.Z` branch from the latest patch release. - -```shell -git fetch upstream --tags -git checkout $PREVIOUS_PATCH_RELEASE -git checkout -b $RELEASE_BRANCH_NAME -``` - -From here, we can cherry-pick the commits we want to bring into the patch release: - -```shell -# get the commits ids we want to cherry-pick -git log --oneline -# cherry-pick the commits starting from the oldest one, without including merge commits -git cherry-pick -x -git cherry-pick -x -``` - -This new branch is going to be the base for the release, which we are going to iterate upon later. - -## 2. Change the Version Number in Git - -When doing a minor release, make sure to update pkg/version/version.go with the new release version. - -```shell -$ git diff pkg/version/version.go -diff --git a/pkg/version/version.go b/pkg/version/version.go -index 2109a0a..6f5a1a4 100644 ---- a/pkg/version/version.go -+++ b/pkg/version/version.go -@@ -26,7 +26,7 @@ var ( - // Increment major number for new feature additions and behavioral changes. - // Increment minor number for bug fixes and performance enhancements. - // Increment patch number for critical fixes to existing releases. -- Version = "v2.6" -+ Version = "v2.7" - - // BuildMetadata is extra build time data - BuildMetadata = "unreleased" -``` - -For patch releases, the old version number will be the latest patch release, so just bump the patch number, incrementing Z by one. - -```shell -git add . -git commit -m "bump version to $RELEASE_CANDIDATE_NAME" -``` - -## 3. Commit and Push the Release Branch - -In order for others to start testing, we can now push the release branch upstream and start the test process. - -```shell -git push upstream $RELEASE_BRANCH_NAME -``` - -Make sure to check [helm on CircleCI](https://circleci.com/gh/helm/helm) and make sure the release passed CI before proceeding. - -If anyone is available, let others peer-review the branch before continuing to ensure that all the proper changes have been made and all of the commits for the release are there. - -## 4. Create a Release Candidate - -Now that the release branch is out and ready, it is time to start creating and iterating on release candidates. - -```shell -git tag --sign --annotate "${RELEASE_CANDIDATE_NAME}" --message "Helm release ${RELEASE_CANDIDATE_NAME}" -git push upstream $RELEASE_CANDIDATE_NAME -``` - -CircleCI will automatically create a tagged release image and client binary to test with. - -After CircleCI finishes building the artifacts, use the following commands to fetch the client for testing: - -linux/amd64, using /bin/bash: - -```shell -wget https://get.helm.sh/helm-$RELEASE_CANDIDATE_NAME-linux-amd64.tar.gz -``` - -darwin/amd64, using Terminal.app: - -```shell -wget https://get.helm.sh/helm-$RELEASE_CANDIDATE_NAME-darwin-amd64.tar.gz -``` - -windows/amd64, using PowerShell: - -```shell -PS C:\> Invoke-WebRequest -Uri "https://get.helm.sh/helm-$RELEASE_CANDIDATE_NAME-windows-amd64.tar.gz" -OutFile "helm-$ReleaseCandidateName-windows-amd64.tar.gz" -``` - -Then, unpack and move the binary to somewhere on your $PATH, or move it somewhere and add it to your $PATH (e.g. /usr/local/bin/helm for linux/macOS, C:\Program Files\helm\helm.exe for Windows). - -## 5. Iterate on Successive Release Candidates - -Spend several days explicitly investing time and resources to try and break helm in every possible way, documenting any findings pertinent to the release. This time should be spent testing and finding ways in which the release might have caused various features or upgrade environments to have issues, not coding. During this time, the release is in code freeze, and any additional code changes will be pushed out to the next release. - -During this phase, the $RELEASE_BRANCH_NAME branch will keep evolving as you will produce new release candidates. The frequency of new candidates is up to the release manager: use your best judgement taking into account the severity of reported issues, testers' availability, and the release deadline date. Generally speaking, it is better to let a release roll over the deadline than to ship a broken release. - -Each time you'll want to produce a new release candidate, you will start by adding commits to the branch by cherry-picking from master: - -```shell -git cherry-pick -x -``` - -You will also want to update the release version number and the CHANGELOG as we did in steps 2 and 3 as separate commits. - -After that, tag it and notify users of the new release candidate: - -```shell -export RELEASE_CANDIDATE_NAME="$RELEASE_NAME-rc2" -git tag --sign --annotate "${RELEASE_CANDIDATE_NAME}" --message "Helm release ${RELEASE_CANDIDATE_NAME}" -git push upstream $RELEASE_CANDIDATE_NAME -``` - -From here on just repeat this process, continuously testing until you're happy with the release candidate. - -## 6. Finalize the Release - -When you're finally happy with the quality of a release candidate, you can move on and create the real thing. Double-check one last time to make sure everything is in order, then finally push the release tag. - -```shell -git checkout $RELEASE_BRANCH_NAME -git tag --sign --annotate "${RELEASE_NAME}" --message "Helm release ${RELEASE_NAME}" -git push upstream $RELEASE_NAME -``` - -## 7. Write the Release Notes - -We will auto-generate a changelog based on the commits that occurred during a release cycle, but it is usually more beneficial to the end-user if the release notes are hand-written by a human being/marketing team/dog. - -If you're releasing a major/minor release, listing notable user-facing features is usually sufficient. For patch releases, do the same, but make note of the symptoms and who is affected. - -An example release note for a minor release would look like this: - -```markdown -## vX.Y.Z - -Helm vX.Y.Z is a feature release. This release, we focused on . Users are encouraged to upgrade for the best experience. - -The community keeps growing, and we'd love to see you there. - -- Join the discussion in [Kubernetes Slack](https://slack.k8s.io/): - - `#helm-users` for questions and just to hang out - - `#helm-dev` for discussing PRs, code, and bugs -- Hang out at the Public Developer Call: Thursday, 9:30 Pacific via [Zoom](https://zoom.us/j/4526666954) -- Test, debug, and contribute charts: [GitHub/kubernetes/charts](https://github.com/helm/charts) - -## Installation and Upgrading - -Download Helm X.Y. The common platform binaries are here: - -- [OSX](https://get.helm.sh/helm-vX.Y.Z-darwin-amd64.tar.gz) -- [Linux](https://get.helm.sh/helm-vX.Y.Z-linux-amd64.tar.gz) -- [Windows](https://get.helm.sh/helm-vX.Y.Z-windows-amd64.tar.gz) - -The [Quickstart Guide](https://docs.helm.sh/using_helm/#quickstart-guide) will get you going from there. For **upgrade instructions** or detailed installation notes, check the [install guide](https://docs.helm.sh/using_helm/#installing-helm). You can also use a [script to install](https://raw.githubusercontent.com/helm/helm/master/scripts/get) on any system with `bash`. - -## What's Next - -- vX.Y.Z+1 will contain only bug fixes. -- vX.Y+1.Z is the next feature release. This release will focus on ... - -## Changelog - -- chore(*): bump version to v2.7.0 08c1144f5eb3e3b636d9775617287cc26e53dba4 (Adam Reese) -- fix circle not building tags f4f932fabd197f7e6d608c8672b33a483b4b76fa (Matthew Fisher) -``` - -The changelog at the bottom of the release notes can be generated with this command: - -```shell -PREVIOUS_RELEASE=vX.Y.Z -git log --no-merges --pretty=format:'- %s %H (%aN)' $RELEASE_NAME $PREVIOUS_RELEASE -``` - -Once finished, go into GitHub and edit the release notes for the tagged release with the notes written here. - -## 9. Evangelize - -Congratulations! You're done. Go grab yourself a $DRINK_OF_CHOICE. You've earned it. - -After enjoying a nice $DRINK_OF_CHOICE, go forth and announce the glad tidings of the new release in Slack and on Twitter. You should also notify any key partners in the helm community such as the homebrew formula maintainers, the owners of incubator projects (e.g. ChartMuseum) and any other interested parties. - -Optionally, write a blog post about the new release and showcase some of the new features on there! diff --git a/docs/using_helm.md b/docs/using_helm.md deleted file mode 100755 index e119890af..000000000 --- a/docs/using_helm.md +++ /dev/null @@ -1,505 +0,0 @@ -# Using Helm - -This guide explains the basics of using Helm to manage -packages on your Kubernetes cluster. It assumes that you have already -[installed](install.md) the Helm client and library (typically by `helm -init`). - -If you are simply interested in running a few quick commands, you may -wish to begin with the [Quickstart Guide](quickstart.md). This chapter -covers the particulars of Helm commands, and explains how to use Helm. - -## Three Big Concepts - -A *Chart* is a Helm package. It contains all of the resource definitions -necessary to run an application, tool, or service inside of a Kubernetes -cluster. Think of it like the Kubernetes equivalent of a Homebrew formula, -an Apt dpkg, or a Yum RPM file. - -A *Repository* is the place where charts can be collected and shared. -It's like Perl's [CPAN archive](http://www.cpan.org) or the -[Fedora Package Database](https://admin.fedoraproject.org/pkgdb/), but for -Kubernetes packages. - -A *Release* is an instance of a chart running in a Kubernetes cluster. -One chart can often be installed many times into the same cluster. And -each time it is installed, a new _release_ is created. Consider a MySQL -chart. If you want two databases running in your cluster, you can -install that chart twice. Each one will have its own _release_, which -will in turn have its own _release name_. - -With these concepts in mind, we can now explain Helm like this: - -Helm installs _charts_ into Kubernetes, creating a new _release_ for -each installation. And to find new charts, you can search Helm chart -_repositories_. - -## 'helm search': Finding Charts - -When you first install Helm, it is preconfigured to talk to the official -Kubernetes charts repository. This repository contains a number of -carefully curated and maintained charts. This chart repository is named -`stable` by default. - -You can see which charts are available by running `helm search`: - -``` -$ helm search -NAME VERSION DESCRIPTION -stable/drupal 0.3.2 One of the most versatile open source content m... -stable/jenkins 0.1.0 A Jenkins Helm chart for Kubernetes. -stable/mariadb 0.5.1 Chart for MariaDB -stable/mysql 0.1.0 Chart for MySQL -... -``` - -With no filter, `helm search` shows you all of the available charts. You -can narrow down your results by searching with a filter: - -``` -$ helm search mysql -NAME VERSION DESCRIPTION -stable/mysql 0.1.0 Chart for MySQL -stable/mariadb 0.5.1 Chart for MariaDB -``` - -Now you will only see the results that match your filter. - -Why is -`mariadb` in the list? Because its package description relates it to -MySQL. We can use `helm inspect chart` to see this: - -``` -$ helm inspect stable/mariadb -Fetched stable/mariadb to mariadb-0.5.1.tgz -description: Chart for MariaDB -home: https://mariadb.org -keywords: -- mariadb -- mysql -- database -- sql -... -``` - -Search is a good way to find available packages. Once you have found a -package you want to install, you can use `helm install` to install it. - -## 'helm install': Installing a Package - -To install a new package, use the `helm install` command. At its -simplest, it takes only one argument: The name of the chart. - -``` -$ helm install --generate-name stable/mariadb -Fetched stable/mariadb-0.3.0 to /Users/mattbutcher/Code/Go/src/helm.sh/helm/mariadb-0.3.0.tgz -happy-panda -Last Deployed: Wed Sep 28 12:32:28 2016 -Namespace: default -Status: DEPLOYED - -Resources: -==> extensions/Deployment -NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE -happy-panda-mariadb 1 0 0 0 1s - -==> v1/Secret -NAME TYPE DATA AGE -happy-panda-mariadb Opaque 2 1s - -==> v1/Service -NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE -happy-panda-mariadb 10.0.0.70 3306/TCP 1s - - -Notes: -MariaDB can be accessed via port 3306 on the following DNS name from within your cluster: -happy-panda-mariadb.default.svc.cluster.local - -To connect to your database run the following command: - - kubectl run happy-panda-mariadb-client --rm --tty -i --image bitnami/mariadb --command -- mysql -h happy-panda-mariadb -``` - -Now the `mariadb` chart is installed. Note that installing a chart -creates a new _release_ object. The release above is named -`happy-panda`. (If you want to use your own release name, simply use the -`--name` flag on `helm install`.) - -During installation, the `helm` client will print useful information -about which resources were created, what the state of the release is, -and also whether there are additional configuration steps you can or -should take. - -Helm does not wait until all of the resources are running before it -exits. Many charts require Docker images that are over 600M in size, and -may take a long time to install into the cluster. - -To keep track of a release's state, or to re-read configuration -information, you can use `helm status`: - -``` -$ helm status happy-panda -Last Deployed: Wed Sep 28 12:32:28 2016 -Namespace: default -Status: DEPLOYED - -Resources: -==> v1/Service -NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE -happy-panda-mariadb 10.0.0.70 3306/TCP 4m - -==> extensions/Deployment -NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE -happy-panda-mariadb 1 1 1 1 4m - -==> v1/Secret -NAME TYPE DATA AGE -happy-panda-mariadb Opaque 2 4m - - -Notes: -MariaDB can be accessed via port 3306 on the following DNS name from within your cluster: -happy-panda-mariadb.default.svc.cluster.local - -To connect to your database run the following command: - - kubectl run happy-panda-mariadb-client --rm --tty -i --image bitnami/mariadb --command -- mysql -h happy-panda-mariadb -``` - -The above shows the current state of your release. - -### Customizing the Chart Before Installing - -Installing the way we have here will only use the default configuration -options for this chart. Many times, you will want to customize the chart -to use your preferred configuration. - -To see what options are configurable on a chart, use `helm inspect -values`: - -```console -helm inspect values stable/mariadb -Fetched stable/mariadb-0.3.0.tgz to /Users/mattbutcher/Code/Go/src/helm.sh/helm/mariadb-0.3.0.tgz -## Bitnami MariaDB image version -## ref: https://hub.docker.com/r/bitnami/mariadb/tags/ -## -## Default: none -imageTag: 10.1.14-r3 - -## Specify a imagePullPolicy -## Default to 'Always' if imageTag is 'latest', else set to 'IfNotPresent' -## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images -## -# imagePullPolicy: - -## Specify password for root user -## ref: https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#setting-the-root-password-on-first-run -## -# mariadbRootPassword: - -## Create a database user -## ref: https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#creating-a-database-user-on-first-run -## -# mariadbUser: -# mariadbPassword: - -## Create a database -## ref: https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#creating-a-database-on-first-run -## -# mariadbDatabase: -``` - -You can then override any of these settings in a YAML formatted file, -and then pass that file during installation. - -```console -$ echo '{mariadbUser: user0, mariadbDatabase: user0db}' > config.yaml -$ helm install -f config.yaml stable/mariadb -``` - -The above will create a default MariaDB user with the name `user0`, and -grant this user access to a newly created `user0db` database, but will -accept all the rest of the defaults for that chart. - -There are two ways to pass configuration data during install: - -- `--values` (or `-f`): Specify a YAML file with overrides. This can be specified multiple times - and the rightmost file will take precedence -- `--set`: Specify overrides on the command line. - -If both are used, `--set` values are merged into `--values` with higher precedence. -Overrides specified with `--set` are persisted in a configmap. Values that have been -`--set` can be viewed for a given release with `helm get values `. -Values that have been `--set` can be cleared by running `helm upgrade` with `--reset-values` -specified. - -#### The Format and Limitations of `--set` - -The `--set` option takes zero or more name/value pairs. At its simplest, it is -used like this: `--set name=value`. The YAML equivalent of that is: - -```yaml -name: value -``` - -Multiple values are separated by `,` characters. So `--set a=b,c=d` becomes: - -```yaml -a: b -c: d -``` - -More complex expressions are supported. For example, `--set outer.inner=value` is -translated into this: -```yaml -outer: - inner: value -``` - -Lists can be expressed by enclosing values in `{` and `}`. For example, -`--set name={a, b, c}` translates to: - -```yaml -name: - - a - - b - - c -``` - -As of Helm 2.5.0, it is possible to access list items using an array index syntax. -For example, `--set servers[0].port=80` becomes: - -```yaml -servers: - - port: 80 -``` - -Multiple values can be set this way. The line `--set servers[0].port=80,servers[0].host=example` becomes: - -```yaml -servers: - - port: 80 - host: example -``` - -Sometimes you need to use special characters in your `--set` lines. You can use -a backslash to escape the characters; `--set name=value1\,value2` will become: - -```yaml -name: "value1,value2" -``` - -Similarly, you can escape dot sequences as well, which may come in handy when charts use the -`toYaml` function to parse annotations, labels and node selectors. The syntax for -`--set nodeSelector."kubernetes\.io/role"=master` becomes: - -```yaml -nodeSelector: - kubernetes.io/role: master -``` - -Deeply nested data structures can be difficult to express using `--set`. Chart -designers are encouraged to consider the `--set` usage when designing the format -of a `values.yaml` file. - -### More Installation Methods - -The `helm install` command can install from several sources: - -- A chart repository (as we've seen above) -- A local chart archive (`helm install foo-0.1.1.tgz`) -- An unpacked chart directory (`helm install path/to/foo`) -- A full URL (`helm install https://example.com/charts/foo-1.2.3.tgz`) - -## 'helm upgrade' and 'helm rollback': Upgrading a Release, and Recovering on Failure - -When a new version of a chart is released, or when you want to change -the configuration of your release, you can use the `helm upgrade` -command. - -An upgrade takes an existing release and upgrades it according to the -information you provide. Because Kubernetes charts can be large and -complex, Helm tries to perform the least invasive upgrade. It will only -update things that have changed since the last release. - -```console -$ helm upgrade -f panda.yaml happy-panda stable/mariadb -Fetched stable/mariadb-0.3.0.tgz to /Users/mattbutcher/Code/Go/src/helm.sh/helm/mariadb-0.3.0.tgz -happy-panda has been upgraded. Happy Helming! -Last Deployed: Wed Sep 28 12:47:54 2016 -Namespace: default -Status: DEPLOYED -... -``` - -In the above case, the `happy-panda` release is upgraded with the same -chart, but with a new YAML file: - -```yaml -mariadbUser: user1 -``` - -We can use `helm get values` to see whether that new setting took -effect. - -```console -$ helm get values happy-panda -mariadbUser: user1 -``` - -The `helm get` command is a useful tool for looking at a release in the -cluster. And as we can see above, it shows that our new values from -`panda.yaml` were deployed to the cluster. - -Now, if something does not go as planned during a release, it is easy to -roll back to a previous release using `helm rollback [RELEASE] [REVISION]`. - -```console -$ helm rollback happy-panda 1 -``` - -The above rolls back our happy-panda to its very first release version. -A release version is an incremental revision. Every time an install, -upgrade, or rollback happens, the revision number is incremented by 1. -The first revision number is always 1. And we can use `helm history [RELEASE]` -to see revision numbers for a certain release. - -## Helpful Options for Install/Upgrade/Rollback -There are several other helpful options you can specify for customizing the -behavior of Helm during an install/upgrade/rollback. Please note that this -is not a full list of cli flags. To see a description of all flags, just run -`helm --help`. - -- `--timeout`: A value in seconds to wait for Kubernetes commands to complete - This defaults to 300 (5 minutes) -- `--wait`: Waits until all Pods are in a ready state, PVCs are bound, Deployments - have minimum (`Desired` minus `maxUnavailable`) Pods in ready state and - Services have an IP address (and Ingress if a `LoadBalancer`) before - marking the release as successful. It will wait for as long as the - `--timeout` value. If timeout is reached, the release will be marked as - `FAILED`. Note: In scenario where Deployment has `replicas` set to 1 and - `maxUnavailable` is not set to 0 as part of rolling update strategy, - `--wait` will return as ready as it has satisfied the minimum Pod in ready condition. -- `--no-hooks`: This skips running hooks for the command -- `--recreate-pods` (only available for `upgrade` and `rollback`): This flag - will cause all pods to be recreated (with the exception of pods belonging to - deployments) - -## 'helm uninstall': Uninstalling a Release - -When it is time to uninstall or uninstall a release from the cluster, use -the `helm uninstall` command: - -``` -$ helm uninstall happy-panda -``` - -This will remove the release from the cluster. You can see all of your -currently deployed releases with the `helm list` command: - -``` -$ helm list -NAME VERSION UPDATED STATUS CHART -inky-cat 1 Wed Sep 28 12:59:46 2016 DEPLOYED alpine-0.1.0 -``` - -From the output above, we can see that the `happy-panda` release was -uninstalled. - -However, Helm always keeps records of what releases happened. Need to -see the uninstalled releases? `helm list --uninstalled` shows those, and `helm -list --all` shows all of the releases (uninstalled and currently deployed, -as well as releases that failed): - -```console -⇒ helm list --all -NAME VERSION UPDATED STATUS CHART -happy-panda 2 Wed Sep 28 12:47:54 2016 UNINSTALLED mariadb-0.3.0 -inky-cat 1 Wed Sep 28 12:59:46 2016 DEPLOYED alpine-0.1.0 -kindred-angelf 2 Tue Sep 27 16:16:10 2016 UNINSTALLED alpine-0.1.0 -``` - -Because Helm keeps records of uninstalled releases, a release name cannot -be re-used. (If you _really_ need to re-use a release name, you can use -the `--replace` flag, but it will simply re-use the existing release and -replace its resources.) - -Note that because releases are preserved in this way, you can rollback a -uninstalled resource, and have it re-activate. - -## 'helm repo': Working with Repositories - -So far, we've been installing charts only from the `stable` repository. -But you can configure `helm` to use other repositories. Helm provides -several repository tools under the `helm repo` command. - -You can see which repositories are configured using `helm repo list`: - -```console -$ helm repo list -NAME URL -stable https://kubernetes-charts.storage.googleapis.com -local http://localhost:8879/charts -mumoshu https://mumoshu.github.io/charts -``` - -And new repositories can be added with `helm repo add`: - -```console -$ helm repo add dev https://example.com/dev-charts -``` - -Because chart repositories change frequently, at any point you can make -sure your Helm client is up to date by running `helm repo update`. - -## Creating Your Own Charts - -The [Chart Development Guide](charts.md) explains how to develop your own -charts. But you can get started quickly by using the `helm create` -command: - -```console -$ helm create deis-workflow -Creating deis-workflow -``` - -Now there is a chart in `./deis-workflow`. You can edit it and create -your own templates. - -As you edit your chart, you can validate that it is well-formatted by -running `helm lint`. - -When it's time to package the chart up for distribution, you can run the -`helm package` command: - -```console -$ helm package deis-workflow -deis-workflow-0.1.0.tgz -``` - -And that chart can now easily be installed by `helm install`: - -```console -$ helm install ./deis-workflow-0.1.0.tgz -... -``` - -Charts that are archived can be loaded into chart repositories. See the -documentation for your chart repository server to learn how to upload. - -Note: The `stable` repository is managed on the [Kubernetes Charts -GitHub repository](https://github.com/helm/charts). That project -accepts chart source code, and (after audit) packages those for you. - -## Conclusion - -This chapter has covered the basic usage patterns of the `helm` client, -including searching, installation, upgrading, and uninstalling. It has also -covered useful utility commands like `helm status`, `helm get`, and -`helm repo`. - -For more information on these commands, take a look at Helm's built-in -help: `helm help`. - -In the next chapter, we look at the process of developing charts. diff --git a/pkg/chart/loader/testdata/frobnitz.v1/charts/alpine/README.md b/pkg/chart/loader/testdata/frobnitz.v1/charts/alpine/README.md index a7c84fc41..b30b949dd 100644 --- a/pkg/chart/loader/testdata/frobnitz.v1/charts/alpine/README.md +++ b/pkg/chart/loader/testdata/frobnitz.v1/charts/alpine/README.md @@ -6,4 +6,4 @@ couple of parameters. The `values.toml` file contains the default values for the `alpine-pod.yaml` template. -You can install this example using `helm install docs/examples/alpine`. +You can install this example using `helm install ./alpine`. diff --git a/pkg/chart/loader/testdata/frobnitz/charts/alpine/README.md b/pkg/chart/loader/testdata/frobnitz/charts/alpine/README.md index a7c84fc41..b30b949dd 100644 --- a/pkg/chart/loader/testdata/frobnitz/charts/alpine/README.md +++ b/pkg/chart/loader/testdata/frobnitz/charts/alpine/README.md @@ -6,4 +6,4 @@ couple of parameters. The `values.toml` file contains the default values for the `alpine-pod.yaml` template. -You can install this example using `helm install docs/examples/alpine`. +You can install this example using `helm install ./alpine`. diff --git a/pkg/chart/loader/testdata/frobnitz_backslash/charts/alpine/README.md b/pkg/chart/loader/testdata/frobnitz_backslash/charts/alpine/README.md index a7c84fc41..b30b949dd 100755 --- a/pkg/chart/loader/testdata/frobnitz_backslash/charts/alpine/README.md +++ b/pkg/chart/loader/testdata/frobnitz_backslash/charts/alpine/README.md @@ -6,4 +6,4 @@ couple of parameters. The `values.toml` file contains the default values for the `alpine-pod.yaml` template. -You can install this example using `helm install docs/examples/alpine`. +You can install this example using `helm install ./alpine`. diff --git a/pkg/chart/metadata.go b/pkg/chart/metadata.go index 8c2c586ab..627ee19f3 100644 --- a/pkg/chart/metadata.go +++ b/pkg/chart/metadata.go @@ -26,8 +26,6 @@ type Maintainer struct { } // Metadata for a Chart file. This models the structure of a Chart.yaml file. -// -// Spec: https://helm.sh/helm/blob/master/docs/design/chart_format.md#the-chart-file type Metadata struct { // The name of the chart Name string `json:"name,omitempty"` diff --git a/pkg/chartutil/testdata/dependent-chart-alias/charts/alpine/README.md b/pkg/chartutil/testdata/dependent-chart-alias/charts/alpine/README.md index a7c84fc41..b30b949dd 100644 --- a/pkg/chartutil/testdata/dependent-chart-alias/charts/alpine/README.md +++ b/pkg/chartutil/testdata/dependent-chart-alias/charts/alpine/README.md @@ -6,4 +6,4 @@ couple of parameters. The `values.toml` file contains the default values for the `alpine-pod.yaml` template. -You can install this example using `helm install docs/examples/alpine`. +You can install this example using `helm install ./alpine`. diff --git a/pkg/chartutil/testdata/dependent-chart-helmignore/charts/alpine/README.md b/pkg/chartutil/testdata/dependent-chart-helmignore/charts/alpine/README.md index a7c84fc41..b30b949dd 100644 --- a/pkg/chartutil/testdata/dependent-chart-helmignore/charts/alpine/README.md +++ b/pkg/chartutil/testdata/dependent-chart-helmignore/charts/alpine/README.md @@ -6,4 +6,4 @@ couple of parameters. The `values.toml` file contains the default values for the `alpine-pod.yaml` template. -You can install this example using `helm install docs/examples/alpine`. +You can install this example using `helm install ./alpine`. diff --git a/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/alpine/README.md b/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/alpine/README.md index a7c84fc41..b30b949dd 100644 --- a/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/alpine/README.md +++ b/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/alpine/README.md @@ -6,4 +6,4 @@ couple of parameters. The `values.toml` file contains the default values for the `alpine-pod.yaml` template. -You can install this example using `helm install docs/examples/alpine`. +You can install this example using `helm install ./alpine`. diff --git a/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/README.md b/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/README.md index a7c84fc41..b30b949dd 100644 --- a/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/README.md +++ b/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/README.md @@ -6,4 +6,4 @@ couple of parameters. The `values.toml` file contains the default values for the `alpine-pod.yaml` template. -You can install this example using `helm install docs/examples/alpine`. +You can install this example using `helm install ./alpine`. diff --git a/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/README.md b/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/README.md index a7c84fc41..b30b949dd 100644 --- a/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/README.md +++ b/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/README.md @@ -6,4 +6,4 @@ couple of parameters. The `values.toml` file contains the default values for the `alpine-pod.yaml` template. -You can install this example using `helm install docs/examples/alpine`. +You can install this example using `helm install ./alpine`. diff --git a/pkg/chartutil/testdata/frobnitz/charts/alpine/README.md b/pkg/chartutil/testdata/frobnitz/charts/alpine/README.md index a7c84fc41..b30b949dd 100644 --- a/pkg/chartutil/testdata/frobnitz/charts/alpine/README.md +++ b/pkg/chartutil/testdata/frobnitz/charts/alpine/README.md @@ -6,4 +6,4 @@ couple of parameters. The `values.toml` file contains the default values for the `alpine-pod.yaml` template. -You can install this example using `helm install docs/examples/alpine`. +You can install this example using `helm install ./alpine`. diff --git a/pkg/chartutil/testdata/frobnitz_backslash/charts/alpine/README.md b/pkg/chartutil/testdata/frobnitz_backslash/charts/alpine/README.md index a7c84fc41..b30b949dd 100755 --- a/pkg/chartutil/testdata/frobnitz_backslash/charts/alpine/README.md +++ b/pkg/chartutil/testdata/frobnitz_backslash/charts/alpine/README.md @@ -6,4 +6,4 @@ couple of parameters. The `values.toml` file contains the default values for the `alpine-pod.yaml` template. -You can install this example using `helm install docs/examples/alpine`. +You can install this example using `helm install ./alpine`. diff --git a/pkg/downloader/testdata/signtest/alpine/README.md b/pkg/downloader/testdata/signtest/alpine/README.md index 5bd595747..28bebae07 100644 --- a/pkg/downloader/testdata/signtest/alpine/README.md +++ b/pkg/downloader/testdata/signtest/alpine/README.md @@ -6,4 +6,4 @@ couple of parameters. The `values.yaml` file contains the default values for the `alpine-pod.yaml` template. -You can install this example using `helm install docs/examples/alpine`. +You can install this example using `helm install ./alpine`. diff --git a/scripts/update-docs.sh b/scripts/update-docs.sh deleted file mode 100755 index 6d85e13a3..000000000 --- a/scripts/update-docs.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env bash - -# Copyright The Helm Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -euo pipefail - -source scripts/util.sh - -if LANG=C sed --help 2>&1 | grep -q GNU; then - SED="sed" -elif which gsed &>/dev/null; then - SED="gsed" -else - echo "Failed to find GNU sed as sed or gsed. If you are on Mac: brew install gnu-sed." >&2 - exit 1 -fi - -kube::util::ensure-temp-dir - -export HELM_NO_PLUGINS=1 - -# Reset Helm Home because it is used in the generation of docs. -OLD_HELM_HOME=${HELM_HOME:-} -HELM_HOME="$HOME/.helm" -bin/helm init -mkdir -p docs/helm -mkdir -p ${KUBE_TEMP}/docs/helm -bin/helm docs --dir ${KUBE_TEMP}/docs/helm -HELM_HOME=$OLD_HELM_HOME - -FILES=$(find ${KUBE_TEMP} -type f) - -${SED} -i -e "s:${HOME}:~:" ${FILES} - -for i in ${FILES}; do - ret=0 - truepath=$(echo ${i} | ${SED} "s:${KUBE_TEMP}/::") - diff -NauprB -I 'Auto generated' "${i}" "${truepath}" > /dev/null || ret=$? - if [[ $ret -ne 0 ]]; then - echo "${truepath} changed. Updating.." - cp "${i}" "${truepath}" - fi -done diff --git a/scripts/verify-docs.sh b/scripts/verify-docs.sh deleted file mode 100755 index 2a87fe5e1..000000000 --- a/scripts/verify-docs.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env bash - -# Copyright The Helm Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -euo pipefail - -source scripts/util.sh - -if LANG=C sed --help 2>&1 | grep -q GNU; then - SED="sed" -elif which gsed &>/dev/null; then - SED="gsed" -else - echo "Failed to find GNU sed as sed or gsed. If you are on Mac: brew install gnu-sed." >&2 - exit 1 -fi - -kube::util::ensure-temp-dir - -export HELM_NO_PLUGINS=1 - -# Reset Helm Home because it is used in the generation of docs. -OLD_HELM_HOME=${HELM_HOME:-} -HELM_HOME="$HOME/.helm" -bin/helm init -mkdir -p ${KUBE_TEMP}/docs/helm -bin/helm docs --dir ${KUBE_TEMP}/docs/helm -HELM_HOME=$OLD_HELM_HOME - - -FILES=$(find ${KUBE_TEMP} -type f) - -${SED} -i -e "s:${HOME}:~:" ${FILES} -ret=0 -for i in ${FILES}; do - diff -NauprB -I 'Auto generated' ${i} $(echo ${i} | ${SED} "s:${KUBE_TEMP}/::") || ret=$? -done -if [[ $ret -eq 0 ]]; then - echo "helm docs up to date." -else - echo "helm docs are out of date. Please run \"make docs\"" - exit 1 -fi