Document parameters in a single markdown file [#8]
I was unhappy with the comments-in-yaml approach; it required duplicating a lot of information and it was hard to find a balance between "usefully thorough" and "readably concise.""
This commit is contained in:
parent
59a591eda5
commit
ef66bc0f92
|
@ -10,7 +10,7 @@ The plugin is inpsired by [drone-helm](https://github.com/ipedrazas/drone-helm),
|
||||||
|
|
||||||
## Example configuration
|
## Example configuration
|
||||||
|
|
||||||
The examples below give a minimal and sufficient configuration for each use-case. For a full description of each command's settings, see [docs/lint_settings.yml](docs/lint_settings.yml), [docs/upgrade_settings.yml](docs/upgrade_settings.yml), and [docs/uninstall_settings.yml](docs/uninstall_settings.yml).
|
The examples below give a minimal and sufficient configuration for each use-case. For a full description of each command's settings, see [docs/parameter_reference.md](docs/parameter_reference.md).
|
||||||
|
|
||||||
### Linting
|
### Linting
|
||||||
|
|
||||||
|
|
|
@ -1,37 +0,0 @@
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: default
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: lint
|
|
||||||
image: pelotech/drone-helm3
|
|
||||||
settings:
|
|
||||||
# Helm_command must be set to "lint" in order to lint :)
|
|
||||||
helm_command: lint
|
|
||||||
|
|
||||||
# Mandatory; must be a path to a chart directory.
|
|
||||||
chart: ./charts/bloge
|
|
||||||
|
|
||||||
# Produce debug output from drone-helm itself and send --debug to all helm commands.
|
|
||||||
debug: true
|
|
||||||
|
|
||||||
# The string given here will be passed verbatim to --set.
|
|
||||||
values: some=local,helm=values
|
|
||||||
|
|
||||||
# The string given here will be passed verbatim to --set-string.
|
|
||||||
string_values: "notAnInt=5"
|
|
||||||
|
|
||||||
# Each file will be passed to --values. Filenames must not contain commas.
|
|
||||||
values_files: "values/underrides.yml,values/overrides.yml"
|
|
||||||
|
|
||||||
# Call `helm dependency update` before linting.
|
|
||||||
# Note: this setting is on the v1.0 roadmap, but not yet implemented.
|
|
||||||
update_dependencies: true
|
|
||||||
|
|
||||||
# Call `helm repo add` for each repo before linting. Repo names and urls must not contain commas.
|
|
||||||
# Note: this setting is on the v1.0 roadmap, but not yet implemented.
|
|
||||||
repos: "eDeath=https://github.com/bug/e-death,idMaker=https://github.com/nmarks/id-maker"
|
|
||||||
|
|
||||||
# Give the --namespace flag to all helm commands.
|
|
||||||
namespace: my_kube_subset
|
|
133
docs/parameter_reference.md
Normal file
133
docs/parameter_reference.md
Normal file
|
@ -0,0 +1,133 @@
|
||||||
|
# Parameter reference
|
||||||
|
|
||||||
|
## Something here about how to specify non-string types
|
||||||
|
|
||||||
|
* boolean
|
||||||
|
* list\<string\>
|
||||||
|
* duration
|
||||||
|
|
||||||
|
## Mention that everything can be settings or environment
|
||||||
|
|
||||||
|
## Global
|
||||||
|
| Param name | Type | Purpose |
|
||||||
|
|---------------------|-----------------|---------|
|
||||||
|
| helm_command | string | Indicates the operation to perform. Recommended, but not required. Valid options are `upgrade`, `uninstall`, `lint`, and `help`. |
|
||||||
|
| update_dependencies | boolean | Calls `helm dependency update` before running the main command. **Not currently implemented**; see [#25](https://github.com/pelotech/drone-helm3/issues/25).|
|
||||||
|
| helm_repos | list\<string\> | Calls `helm repo add $repo` before running the main command. Each string should be formatted as `repo_name=https://repo.url/`. **Not currently implemented**; see [#26](https://github.com/pelotech/drone-helm3/issues/26). |
|
||||||
|
| namespace | string | Kubernetes namespace to use for this operation. |
|
||||||
|
| prefix | string | Expect environment variables to be prefixed with the given string. For more details, see "Using the prefix setting" below. **Not currently implemented**; see [#19](https://github.com/pelotech/drone-helm3/issues/19). |
|
||||||
|
| debug | boolean | Generate debug output within drone-helm3 and pass `--debug` to all helm commands. Use with care, since the debug output may include secrets. |
|
||||||
|
|
||||||
|
## Linting
|
||||||
|
|
||||||
|
Linting is only triggered when the `helm_command` setting is "lint".
|
||||||
|
|
||||||
|
| Param name | Type | Required | Purpose |
|
||||||
|
|---------------|----------------|----------|---------|
|
||||||
|
| chart | string | yes | The chart to be linted. Must be a local path. |
|
||||||
|
| values | list\<string\> | | Chart values to use as the `--set` argument to `helm lint`. |
|
||||||
|
| string_values | list\<string\> | | Chart values to use as the `--set-string` argument to `helm lint`. |
|
||||||
|
| values_files | list\<string\> | | Values to use as `--values` arguments to `helm lint`. |
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Installations are triggered when the `helm_command` setting is "upgrade." They can also be triggered when the build was triggered by a `push`, `tag`, `deployment`, `pull_request`, `promote`, or `rollback` Drone event.
|
||||||
|
|
||||||
|
| Param name | Type | Required | Purpose |
|
||||||
|
|------------------------|----------------|----------|---------|
|
||||||
|
| chart | string | yes | The chart to use for this installation. |
|
||||||
|
| release | string | yes | The release name for helm to use. |
|
||||||
|
| api_server | string | yes | API endpoint for the Kubernetes cluster. |
|
||||||
|
| kubernetes_token | string | yes | Token for authenticating to Kubernetes. |
|
||||||
|
| service_account | string | | Service account for authenticating to Kubernetes. Default is `helm`. |
|
||||||
|
| kubernetes_certificate | string | | Base64 encoded TLS certificate used by the Kubernetes cluster's certificate authority. |
|
||||||
|
| chart_version | string | | Specific chart version to install. |
|
||||||
|
| dry_run | boolean | | Pass `--dry-run` to `helm upgrade`. |
|
||||||
|
| wait | boolean | | Wait until kubernetes resources are in a ready state before marking the installation successful. |
|
||||||
|
| timeout | duration | | Timeout for any *individual* Kubernetes operation. The installation's full runtime may exceed this duration. |
|
||||||
|
| force | boolean | | Pass `--force` to `helm upgrade`. |
|
||||||
|
| values | list\<string\> | | Chart values to use as the `--set` argument to `helm upgrade`. |
|
||||||
|
| string_values | list\<string\> | | Chart values to use as the `--set-string` argument to `helm upgrade`. |
|
||||||
|
| values_files | list\<string\> | | Values to use as `--values` arguments to `helm upgrade`. |
|
||||||
|
| reuse_values | boolean | | Reuse the values from a previous release. |
|
||||||
|
| skip_tls_verify | boolean | | Connect to the Kubernetes cluster without checking for a valid TLS certificate. Not recommended in production. |
|
||||||
|
|
||||||
|
## Uninstallation
|
||||||
|
|
||||||
|
Uninstallations are triggered when the `helm_command` setting is "uninstall" or "delete." They can also be triggered when the build was triggered by a `delete` Drone event.
|
||||||
|
|
||||||
|
| Param name | Type | Required | Purpose |
|
||||||
|
|------------------------|----------|----------|---------|
|
||||||
|
| release | string | yes | The release name for helm to use. |
|
||||||
|
| api_server | string | yes | API endpoint for the Kubernetes cluster. |
|
||||||
|
| kubernetes_token | string | yes | Token for authenticating to Kubernetes. |
|
||||||
|
| service_account | string | | Service account for authenticating to Kubernetes. Default is `helm`. |
|
||||||
|
| kubernetes_certificate | string | | Base64 encoded TLS certificate used by the Kubernetes cluster's certificate authority. |
|
||||||
|
| dry_run | boolean | | Pass `--dry-run` to `helm uninstall`. |
|
||||||
|
| timeout | duration | | Timeout for any *individual* Kubernetes operation. The uninstallation's full runtime may exceed this duration. |
|
||||||
|
| skip_tls_verify | boolean | | Connect to the Kubernetes cluster without checking for a valid TLS certificate. Not recommended in production. |
|
||||||
|
|
||||||
|
### Formatting non-string values
|
||||||
|
|
||||||
|
* Booleans can be yaml's `true` and `false` literals or the strings `"true"` and `"false"`.
|
||||||
|
* Durations are strings formatted with the syntax accepted by [golang's ParseDuration function](https://golang.org/pkg/time/#ParseDuration) (e.g. 5m30s)
|
||||||
|
* List\<string\>s can be a yaml sequence or a comma-separated string.
|
||||||
|
|
||||||
|
All of the following are equivalent:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
values: "foo=1,bar=2"
|
||||||
|
values: ["foo=1", "bar=2"]
|
||||||
|
values:
|
||||||
|
- foo=1
|
||||||
|
- bar=2
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that **list members must not contain commas**. Both of the following are equivalent:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
values_files: [ "./over_9,000.yml" ]
|
||||||
|
values_files: [ "./over_9", "000.yml" ]
|
||||||
|
```
|
||||||
|
|
||||||
|
### Using the `prefix` setting
|
||||||
|
|
||||||
|
Because the prefix setting is meta-configuration, it has some inherent edge-cases. Here is what it does in the cases we've thought of:
|
||||||
|
|
||||||
|
Unlike the other settings, it must be declared in the `settings` block, not `environment`.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
settings:
|
||||||
|
prefix: helm # drone-helm3 will look for environment variables called HELM_VARNAME
|
||||||
|
environment:
|
||||||
|
prefix: armet # no effect
|
||||||
|
```
|
||||||
|
|
||||||
|
It does not apply to configuration in the `settings` block, only in `environment`.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
settings:
|
||||||
|
prefix: helm
|
||||||
|
helm_timeout: 5m # no effect
|
||||||
|
environment:
|
||||||
|
helm_timeout: 2m # timeout will be 2 minutes
|
||||||
|
```
|
||||||
|
|
||||||
|
If the environment contains a variable in non-prefixed form, it will still be applied.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
settings:
|
||||||
|
prefix: helm
|
||||||
|
environment:
|
||||||
|
timeout: 2m # timeout will be 2 minutes
|
||||||
|
```
|
||||||
|
|
||||||
|
If the environment contains both the prefixed and non-prefixed forms, drone-helm3 will use the prefixed form.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
settings:
|
||||||
|
prefix: helm
|
||||||
|
environment:
|
||||||
|
timeout: 5m # overridden
|
||||||
|
helm_timeout: 2m # timeout will be 2 minutes
|
||||||
|
```
|
|
@ -1,84 +0,0 @@
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: default
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: deploy
|
|
||||||
image: pelotech/drone-helm3
|
|
||||||
settings:
|
|
||||||
# Setting helm_command to "upgrade" is recommended, but not mandatory. If no command is given, the plugin
|
|
||||||
# infers "upgrade" when triggered by a push, tag, deployment, pull_request, promote, or rollback event.
|
|
||||||
helm_command: upgrade
|
|
||||||
|
|
||||||
# Mandatory.
|
|
||||||
# The chart to use for this release.
|
|
||||||
chart: ./charts/bloge
|
|
||||||
|
|
||||||
# Mandatory.
|
|
||||||
# Release name for Helm to use.
|
|
||||||
release: bloge
|
|
||||||
|
|
||||||
# Mandatory.
|
|
||||||
# API endpoint for the Kubernetes cluster.
|
|
||||||
api_server: https://k8s.mycompany.example.com/clusters/c-tr1sb
|
|
||||||
|
|
||||||
# Mandatory.
|
|
||||||
# Token to use when connecting to kubernetes.
|
|
||||||
kubernetes_token:
|
|
||||||
from_secret: deploybot_token
|
|
||||||
|
|
||||||
# Base-64 encoded TLS certificate used by the Kubernetes cluster's certificate authority.
|
|
||||||
kubernetes_certificate: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t....
|
|
||||||
|
|
||||||
# Specific chart version to deploy.
|
|
||||||
chart_version: 1.2.3
|
|
||||||
|
|
||||||
# Simulate an upgrade without deploying it.
|
|
||||||
dry_run: true
|
|
||||||
|
|
||||||
# Wait until kubernetes resources are in a ready state before marking the release successful.
|
|
||||||
wait: true
|
|
||||||
|
|
||||||
# Timeout for any *individual* Kubernetes operation. The plugin's full runtime may exceed this duration.
|
|
||||||
timeout: 1m23s
|
|
||||||
|
|
||||||
# Force resource updates (helm upgrade --force).
|
|
||||||
force: true
|
|
||||||
|
|
||||||
# Values to set for this helm release. Keys and values must not contain commas.
|
|
||||||
values:
|
|
||||||
- image.tag=latest
|
|
||||||
- image.annotations.deployedDate="${DRONE_BUILD_CREATED}"
|
|
||||||
|
|
||||||
# String values to set for this helm release. Keys and values must not contain commas.
|
|
||||||
string_values: "notAnInt=5"
|
|
||||||
|
|
||||||
# Values files to use in this helm release. Filenames must not contain commas.
|
|
||||||
values_files:
|
|
||||||
- ./values/underrides.yml
|
|
||||||
- ./values/overrides.yml
|
|
||||||
|
|
||||||
# Reuse the values from a previous release.
|
|
||||||
reuse_values: true
|
|
||||||
|
|
||||||
# Produce debug output from drone-helm itself and send --debug to all helm commands.
|
|
||||||
debug: true
|
|
||||||
|
|
||||||
# Call `helm dependency update` before upgrading.
|
|
||||||
# Note: this setting is on the v1.0 roadmap, but not yet implemented.
|
|
||||||
update_dependencies: true
|
|
||||||
|
|
||||||
# Call `helm repo add` for each repo before upgrading. Repo names and urls must not contain commas.
|
|
||||||
# Note: this setting is on the v1.0 roadmap, but not yet implemented.
|
|
||||||
repos: "eDeath=https://github.com/bug/e-death,idMaker=https://github.com/nmarks/id-maker"
|
|
||||||
|
|
||||||
# Give the --namespace flag to all helm commands.
|
|
||||||
namespace: my_kube_subset
|
|
||||||
|
|
||||||
# Connect insecurely to the kubernetes server. Using this setting in production is inadvisable.
|
|
||||||
skip_tls_verify: true
|
|
||||||
|
|
||||||
# Service account to use when connecting to kubernetes. Defaults to "helm."
|
|
||||||
service_account: deploybot
|
|
||||||
from_secret: kubernetes_service_account
|
|
Loading…
Reference in a new issue