
This reverts commit c75898cd6aca7299481e0ed99c262770308af155. Airship 2 ended up using the Flux helm-controller instead: https://github.com/fluxcd/helm-controller So this is no longer needed. Removing it to get rid of tech debt to ease introduction of Helm 3 support. This retains the part of the commit which extracts the chart download logic to its own handler as this is still useful. Change-Id: Icb468be2d4916620fd78df250fd038ab58840182
26 KiB
v2 Authoring
Danger
EXPERIMENTAL: v2 docs are still experimental and WILL have breaking changes before they are finalized.
armada/Manifest/v2
keyword | type | action |
---|---|---|
release_prefix |
string | appends to the front of all charts released by the manifest in order to manage releases throughout their lifecycle |
chart_groups |
array | A list of the metadata.name of each
ChartGroup to deploy in order. |
Manifest Example
---
schema: armada/Manifest/v2
metadata:
schema: metadata/Document/v1
name: simple-armada
data:
release_prefix: armada
chart_groups:
- chart_group
armada/ChartGroup/v2
keyword | type | action |
---|---|---|
description | string | description of chart set |
chart_group | array | A list of the metadata.name of each Chart
to deploy. |
sequenced | bool | If true , deploys each chart in sequence, else in
parallel. Default false . |
Chart Group Example
---
schema: armada/ChartGroup/v2
metadata:
schema: metadata/Document/v1
name: blog-group
data:
description: Deploys Simple Service
chart_group:
- chart1
- chart2
armada/Chart/v2
Chart
keyword | type | action |
---|---|---|
release | string | name of the release (Armada will prepend with
release-prefix during processing) |
namespace | string | namespace of your chart |
wait | object | See Wait. |
protected | object | do not delete FAILED releases when encountered from previous run (provide the 'continue_processing' bool to continue or halt execution (default: halt)) |
test | object | See Test. |
upgrade | object | See Upgrade. |
delete | object | See Delete. |
values | object | (optional) override any default values in the charts |
source | object | provide a path to a git repo , local dir ,
or tarball url chart |
dependencies | object | (optional) Override the builtin chart dependencies with a list of Chart documents to use as dependencies instead. NOTE: Builtin ".tgz" dependencies are not yet supported. |
Wait
keyword | type | action |
---|---|---|
timeout | int | time (in seconds) to wait for chart to deploy |
resources | dict | array | Wait Resource s to wait on. Defaults
to all supported resource types (see Wait
Resource dict - Maps resource types to one of:
array - Lists all Wait
Resource s to use, completely overriding the default. Can be set to
See also Wait Resources Examples. |
labels | object | Base mapping of labels to wait on. They are added to any labels in
each item in the resources array. |
native | boolean | See Wait Native. |
Wait Resource
keyword | type | action |
---|---|---|
type | string | K8s resource type, supports: 'deployment', 'daemonset', 'statefulset', 'pod', 'job'. NOTE: Omit when Wait |
labels | object | Kubernetes labels specific to this resource. Wait .labels are included with these, so
only define this if additional labels are needed to identify the
targeted resources. |
min_ready | int | string | Only for controller type s. Amount of pods in a
controller which must be ready. Can be integer or percent string e.g.
80% . Default 100% . |
allow_async_updates | boolean | Only for daemonset and statefulset types.
Whether to wait for async update strategies, i.e. OnDelete or
partitioned RollingUpdate. Defaults to false in order to
fail fast in cases where the async update is not expected to complete
until same point later on. |
required | boolean | Whether to require the resource to be found. Defaults to
true for explicit items in `wait.resources .
See wait.resources for its overall defaults. |
Wait Resources Examples
wait:
# ...
# Disable all waiting.
resources: []
wait:
# ...
# Disable waiting for a given type (job).
resources:
job: false
wait:
# ...
# Use min_ready < 100%.
resources:
daemonset:
min_ready: 80%
wait:
resources:
# Multiple configs for same type.
daemonset:
- labels:
component: one
min_ready: 80%
- labels:
component: two
min_ready: 50%
wait:
# ...
resources:
- type: daemonset
labels:
component: critical
min_ready: 100%
- type: daemonset
labels:
component: best_effort
min_ready: 80%
# ... (re-include any other resource types needed when using list)
Wait Native
Config for the native helm (install|upgrade) --wait
flag.
keyword | type | action |
---|---|---|
enabled | boolean | defaults to false |
Test
Run helm tests on the chart after install/upgrade.
keyword | type | action |
---|---|---|
enabled | bool | whether to enable/disable helm tests for this chart (default True) |
timeout | int | time (in sec) to wait for completion of Helm tests. Default 300. |
options | object | See Test Options. |
Note
Armada will attempt to run helm tests by default. They may be
disabled by setting the enabled
key to
false
.
Test Options
Test options to pass through directly to helm.
keyword | type | action |
---|---|---|
cleanup | bool | Same as Helm CLI. |
Note
If cleanup is true
this prevents being able to debug a
test in the event of failure.
Historically, the preferred way to achieve test cleanup has been to add a pre-upgrade delete action on the test pod.
This still works, however it is usually no longer necessary as Armada
now automatically cleans up any test pods which match the
wait.labels
of the chart, immediately before running tests.
Similar suggestions have been made for how
helm test --cleanup
itself ought to work (https://github.com/helm/helm/issues/3279).
Upgrade
keyword | type | action |
---|---|---|
options | object | See Upgrade - Options. |
pre | object | See Upgrade - Pre. |
Upgrade - Options
Upgrade options to pass through directly to helm.
keyword | type | action |
---|---|---|
no_hooks | boolean | Same as Helm CLI. |
force | boolean | Same as Helm CLI. |
recreate_pods | boolean | Same as Helm CLI. |
Upgrade - Pre
keyword | type | action |
---|---|---|
delete | array | List of Upgrade - Pre - Delete. |
Upgrade - Pre - Delete
keyword | type | action |
---|---|---|
type | string | type of kubernetes resource to delete supported types are: 'pod', 'job', 'cronjob'. |
labels | object | k:v mapping of labels to select Kubernetes resources |
Chart Example
---
schema: armada/Chart/v2
metadata:
schema: metadata/Document/v1
name: blog-1
data:
release: blog-1
namespace: default
wait:
timeout: 100
protected:
continue_processing: false
test:
enabled: true
upgrade:
pre:
delete:
- name: test-job
type: job
labels:
foo: bar
component: bar
rak1: enabled
source:
type: git
location: https://github.com/namespace/repo
reference: master
Delete
keyword | type | action |
---|---|---|
timeout | integer | time (in seconds) to wait for chart to be deleted |
Source
keyword | type | action |
---|---|---|
type | string | source to build the chart: git , local , or
tar |
location | string | url or path to the chart's parent
directory |
subpath | string | (optional) relative path to target chart from parent (.
if not specified) |
reference | string | (optional) branch, commit, or reference in the repo
(master if not specified) |
proxy_server | string | (optional) proxy server URL for downloading git or
tar charts |
Source Example
# type git
---
schema: armada/Chart/v2
metadata:
schema: metadata/Document/v1
name: blog-1
data:
release: blog-1
namespace: default
wait:
timeout: 100
labels:
component: blog
source:
type: git
location: https://github.com/namespace/repo
proxy_server: http://my.proxy.server:8888
# type local
---
schema: armada/Chart/v2
metadata:
schema: metadata/Document/v1
name: blog-1
data:
release: blog-1
namespace: default
wait:
timeout: 100
source:
type: local
location: /path/to/charts
subpath: chart
reference: master
# type tar
---
schema: armada/Chart/v2
metadata:
schema: metadata/Document/v1
name: blog-1
data:
release: blog-1
namespace: default
wait:
timeout: 100
source:
type: tar
location: https://localhost:8879/charts/chart-0.1.0.tgz
subpath: mariadb
Simple Example
---
schema: armada/Chart/v2
metadata:
schema: metadata/Document/v1
name: blog-1
data:
release: blog-1
namespace: default
source:
type: git
location: https://github.com/namespace/repo
subpath: blog-1
reference: new-feat
---
schema: armada/ChartGroup/v2
metadata:
schema: metadata/Document/v1
name: blog-group
data:
description: Deploys Simple Service
chart_group:
- blog-1
---
schema: armada/Manifest/v2
metadata:
schema: metadata/Document/v1
name: simple-armada
data:
release_prefix: armada
chart_groups:
- blog-group
Multichart Example
---
schema: armada/Chart/v2
metadata:
schema: metadata/Document/v1
name: blog-1
data:
release: blog-1
namespace: default
source:
type: git
location: https://github.com/namespace/repo
subpath: blog1
reference: master
---
schema: armada/Chart/v2
metadata:
schema: metadata/Document/v1
name: blog-2
data:
release: blog-2
namespace: default
source:
type: tar
location: https://github.com/namespace/repo/blog2.tgz
subpath: blog2
---
schema: armada/Chart/v2
metadata:
schema: metadata/Document/v1
name: blog-3
data:
release: blog-3
namespace: default
source:
type: local
location: /home/user/namespace/repo/blog3
---
schema: armada/ChartGroup/v2
metadata:
schema: metadata/Document/v1
name: blog-group-1
data:
description: Deploys Simple Service
chart_group:
- blog-2
---
schema: armada/ChartGroup/v2
metadata:
schema: metadata/Document/v1
name: blog-group-2
data:
description: Deploys Simple Service
chart_group:
- blog-1
- blog-3
---
schema: armada/Manifest/v2
metadata:
schema: metadata/Document/v1
name: simple-armada
data:
release_prefix: armada
chart_groups:
- blog-group-1
- blog-group-2
Dependency Override Example
---
schema: armada/Chart/v2
metadata:
schema: metadata/Document/v1
name: blog-1
data:
release: blog-1
namespace: default
source:
type: git
location: https://github.com/namespace/repo
subpath: blog-1
reference: new-feat
dependencies:
- blog-dep-1
---
schema: armada/Chart/v2
metadata:
schema: metadata/Document/v1
name: blog-1-dep
data:
release: blog-1-dep
namespace: default
source:
type: git
location: https://github.com/namespace/dep-repo
subpath: blog-1-dep
reference: new-feat
---
schema: armada/ChartGroup/v2
metadata:
schema: metadata/Document/v1
name: blog-group
data:
description: Deploys Simple Service
chart_group:
- blog-1
---
schema: armada/Manifest/v2
metadata:
schema: metadata/Document/v1
name: simple-armada
data:
release_prefix: armada
chart_groups:
- blog-group
References
For working examples please check the examples in our repo here.