Drone plugin for Helm3.
Helm Version: 3.11.1
Kubectl Version: 1.25.8
Example:
- name: deploy app
image: ghcr.io/bitsbeats/drone-helm3:latest
settings:
kube_api_server: kube.example.com
kube_token: { from_secret: kube_token }
chart: ./path-to/chart
release: release-name
namespace: namespace-name
timeout: 20m
helm_repos:
- bitnami=https://charts.bitnami.com/bitnami
envsubst: true
values:
- app.environment=awesome
- app.tag=${DRONE_TAG/v/}
- app.commit=${DRONE_COMMIT_SHA}
Note: If you enable envsubst make sure to surrount your variables like
${variable}
, $variable
will not work.
An always up2date version of the availible config options can be viewed on the
source on the Config
struct
here.
Its possible to monitor your builds and rollbacks using prometheus and
prometheus-pushgateway. To enable specify the pushgateway_url
setting.
Example alertrule:
- alert: Helm3RolloutFailed
expr: |
drone_helm3_build_status{status!="success"}
labels:
severity: critical
annotations:
summary: >-
Helm3 was unable to deploy {{ $labels.repo }} as
{{ $labels.release }} into namespace {{ $labels.namespace }}
action: >-
Validate the `deploy` step of the last drone ci run for this
repository. Either the build has *failed entirely* or the
`helm test` did fail. For more information on tests see
https://github.com/bitsbeats/drone-helm3/#monitoring
Helm tests are special Pods that have the "helm.sh/hook": test
annotation set.
If the command in the docker container returns an exitcode > 0 the drone step
will be marked as failed. See the Helm documentation.
In addition you can set the test_rollback
setting to run helm rollback
if
the tests fail.
The post_kustomization
allows to modify helm charts with customize.
See here for the official documentation. The resources
field is
set via the plugin.
Example:
post_kustomization: |
patches:
- patch: |
- op: remove
path: /spec/template/spec/securityContext
- op: remove
path: /spec/template/spec/containers/0/securityContext
target:
kind: StatefulSet
labelSelector:
app.kubernetes.io/name=opensearch