Skip to content
GitLab
Explore
Projects
Groups
Topics
Snippets
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
1105 Внедрение механизмов обеспечения безопасности цепочки поставки программных проектов
Legacy
scanned-projects
helm
Commits
a21029a8
Commit
a21029a8
authored
8 years ago
by
Matt Butcher
Browse files
Options
Download
Patches
Plain Diff
docs(charts): add documentation for hooks.
Closes #938
parent
cd230ab1
main
Release
add-codeql
dependabot/go_modules/github.com/docker/distribution-2.8.2incompatible
dependabot/go_modules/github.com/lib/pq-1.10.9
dependabot/go_modules/github.com/rubenv/sql-migrate-1.4.0
dependabot/go_modules/golang.org/x/crypto-0.9.0
dependabot/go_modules/golang.org/x/term-0.8.0
dependabot/go_modules/k8s.io/klog/v2-2.100.1
dev-v2
feat-v3/event-emitter-lua
kube-update-test
release-2.0
release-2.1
release-2.10
release-2.11
release-2.12
release-2.13
release-2.14
release-2.15
release-2.16
release-2.17
release-2.2
release-2.3
release-2.4
release-2.5
release-2.6
release-2.7
release-2.8
release-2.9
release-3.0
release-3.1
release-3.10
release-3.11
release-3.12
release-3.2
release-3.3
release-3.4
release-3.5
release-3.6
release-3.6.1
release-3.6.2
release-3.7
release-3.8
release-3.9
release-v3.0.0-beta.4
v3.12.0
v3.12.0-rc.1
v3.12.0-dev.1
v3.11.3
v3.11.2
v3.11.1
v3.11.0
v3.11.0-rc.2
v3.11.0-rc.1
v3.10.3
v3.10.2
v3.10.1
v3.10.0
v3.10.0-rc.1
v3.9.4
v3.9.3
v3.9.2
v3.9.1
v3.9.0
v3.9.0-rc.1
v3.8.2
v3.8.1
v3.8.0
v3.8.0-rc.2
v3.8.0-rc.1
v3.7.2
v3.7.1
v3.7.0
v3.7.0-rc.3
v3.7.0-rc.2
v3.7.0-rc.1
v3.6.3
v3.6.2
v3.6.1
v3.6.0
v3.6.0-rc.1
v3.5.4
v3.5.3
v3.5.2
v3.5.1
v3.5.0
v3.5.0-rc.2
v3.5.0-rc.1
v3.4.2
v3.4.1
v3.4.0
v3.4.0-rc.1
v3.3.4
v3.3.3
v3.3.2
v3.3.1
v3.3.0
v3.3.0-rc.2
v3.3.0-rc.1
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.2.0
v3.2.0-rc.1
v3.1.3
v3.1.2
v3.1.1
v3.1.0
v3.1.0-rc.3
v3.1.0-rc.2
v3.1.0-rc.1
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v3.0.0-rc.4
v3.0.0-rc.3
v3.0.0-rc.2
v3.0.0-rc.1
v3.0.0-beta.5
v3.0.0-beta.4
v3.0.0-beta.3
v3.0.0-beta.2
v3.0.0-beta.1
v3.0.0-alpha.2
v3.0.0-alpha.1
v2.17.0
v2.17.0-rc.1
v2.16.12
v2.16.11
v2.16.10
v2.16.9
v2.16.8
v2.16.7
v2.16.6
v2.16.5
v2.16.4
v2.16.3
v2.16.2
v2.16.1
v2.16.0
v2.16.0-rc.2
v2.16.0-rc.1
v2.15.2
v2.15.1
v2.15.0
v2.15.0-rc.2
v2.15.0-rc.1
v2.14.3
v2.14.2
v2.14.1
v2.14.0
v2.14.0-rc.2
v2.14.0-rc.1
v2.13.1
v2.13.1-rc.1
v2.13.0
v2.13.0-rc.2
v2.13.0-rc.1
v2.12.3
v2.12.2
v2.12.1
v2.12.0
v2.12.0-rc.2
v2.12.0-rc.1
v2.11.0
v2.11.0-rc.4
v2.11.0-rc.3
v2.11.0-rc.2
v2.11.0-rc.1
v2.10.0
v2.10.0-rc.3
v2.10.0-rc.2
v2.10.0-rc.1
v2.9.1
v2.9.0
v2.9.0-rc5
v2.9.0-rc4
v2.9.0-rc3
v2.9.0-rc2
v2.9.0-rc1
v2.8.2
v2.8.2-rc1
v2.8.1
v2.8.0
v2.8.0-rc.1
v2.7.2
v2.7.1
v2.7.0
v2.7.0-rc1
v2.6.2
v2.6.1
v2.6.0
v2.5.1
v2.5.0
v2.4.2
v2.4.1
v2.4.0
v2.3.1
v2.3.0
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.3
v2.1.2
v2.1.1
v2.1.0
v2.0.2
v2.0.1
v2.0.0
v2.0.0-rc.2
v2.0.0-rc.1
v2.0.0-beta.2
v2.0.0-beta.1
v2.0.0-alpha.5
v2.0.0-alpha.4
v2.0.0-alpha.3
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
docs/charts.md
+139
-0
docs/charts.md
with
139 additions
and
0 deletions
+139
-0
docs/charts.md
+
139
−
0
View file @
a21029a8
...
...
@@ -355,6 +355,145 @@ standard references that will help you out.
-
[
Extra template functions
](
https://godoc.org/github.com/Masterminds/sprig
)
-
[
The YAML format
](
)
## 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 backup 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 kuberntes apply operation).
-
post-upgrade: Executes on an upgrade after all resources have been
upgraded.
### 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.
Chart is loaded into Tiller
3.
After some verification, Tiller renders the
`foo`
templates
4.
Tiller loads the resulting resources into Kubernetes
5.
Tiller returns the release name (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.
Chart is loaded into Tiller
3.
After some verification, Tiller renders the
`foo`
templates
4.
Tiller executes the
`pre-install`
hook (loading hook resources into
Kubernetes)
5.
Tiller waits until the hook is "Ready"
6.
Tiller loads the resulting resources into Kubernetes
7.
Tiller executes the
`post-install`
hook (loading hook resources)
8.
Tiller waits until the hook is "Ready"
9.
Tiller returns the release name (and other data) to the client
10.
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, Tiller
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,
but the order of their execution is not guaranteed.
### Writing a Hook
Hooks are just Kubernetes manfiest 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
:
heritage
:
{{
.Release.Service | quote
}}
release
:
{{
.Release.Name | quote
}}
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
spec
:
template
:
metadata
:
name
:
"
{{.Release.Name}}"
labels
:
heritage
:
{{
.Release.Service | quote
}}
release
:
{{
.Release.Name | quote
}}
chart
:
"
{{.Chart.Name}}-{{.Chart.Version}}"
spec
:
restartPolicy
:
Never
containers
:
-
name
:
{{
template "fullname" .
}}
-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
as a config map as a pre-install hook. It is important to keep in mind,
though, that there are no ordering guarantees about hooks.
When subcharts declare hooks, those are also evaluated. There is no way
for a top-level chart to disable the hooks declared by subcharts. And
again, there is no guaranteed ordering.
## Using Helm to Manage Charts
The
`helm`
tool has several commands for working with charts.
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Topics
Snippets