mirror of
https://github.com/ipedrazas/drone-helm.git
synced 2026-06-16 14:49:45 +08:00
100 lines
3.1 KiB
Markdown
100 lines
3.1 KiB
Markdown
# Helm (Kubernetes) plugin for drone.io
|
|
|
|
[](https://drone.sohohousedigital.com/ipedrazas/drone-helm)
|
|
|
|
This plugin allows to deploy a [Helm](https://github.com/kubernetes/helm) chart into a [Kubernetes](https://github.com/kubernetes/kubernetes) cluster.
|
|
|
|
For example, this configuration will deploy my-app using a chart located in the repo called `my-chart`
|
|
|
|
```YAML
|
|
pipeline:
|
|
helm_deploy:
|
|
image: quay.io/ipedrazas/drone-helm
|
|
skip_tls_verify: true
|
|
chart: ./charts/my-chart
|
|
release: ${DRONE_BRANCH}
|
|
values: secret.password=${SECRET_PASSWORD},image.tag=${DRONE_BRANCH}-${DRONE_COMMIT_SHA:0:7}
|
|
prefix: STAGING
|
|
debug: true
|
|
when:
|
|
branch: [master]
|
|
```
|
|
|
|
There are two secrets you have to create (Note that if you specify the prefix, your secrets have to be created using that prefix):
|
|
|
|
```Bash
|
|
drone secret add --image=quay.io/ipedrazas/drone-helm \
|
|
your-user/your-repo STAGING_API_SERVER https://mykubernetesapiserver
|
|
|
|
drone secret add --image=quay.io/ipedrazas/drone-helm \
|
|
your-user/your-repo STAGING_KUBERNETES_TOKEN eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJ...
|
|
|
|
drone secret add --image=quay.io/ipedrazas/drone-helm \
|
|
your-user/your-repo STAGING_SECRET_PASSWORD Sup3rS3cr3t
|
|
```
|
|
|
|
`Prefix` helps you to use the same block in different environments:
|
|
```YAML
|
|
pipeline:
|
|
helm_deploy_staging:
|
|
image: quay.io/ipedrazas/drone-helm
|
|
skip_tls_verify: true
|
|
chart: ./charts/my-chart
|
|
release: ${DRONE_BRANCH}
|
|
values: secret.password=${SECRET_PASSWORD},image.tag=${DRONE_BRANCH}-${DRONE_COMMIT_SHA:0:7}
|
|
prefix: STAGING
|
|
debug: true
|
|
when:
|
|
branch:
|
|
exclude: [ master ]
|
|
|
|
pipeline_production:
|
|
helm_deploy:
|
|
image: quay.io/ipedrazas/drone-helm
|
|
skip_tls_verify: true
|
|
chart: ./charts/my-chart
|
|
release: ${DRONE_BRANCH}
|
|
values: secret.password=${SECRET_PASSWORD},image.tag=${DRONE_BRANCH}-${DRONE_COMMIT_SHA:0:7}
|
|
prefix: PROD
|
|
debug: true
|
|
when:
|
|
branch: [master]
|
|
```
|
|
|
|
This last block defines how the plugin will deploy
|
|
|
|
|
|
To test the plugin, you can run `minikube` and just run the docker image as follows:
|
|
```Bash
|
|
docker run --rm \
|
|
-e PLUGIN_API_SERVER=https://192.168.64.5:8443 \
|
|
-e PLUGIN_TOKEN="" \
|
|
-e PLUGIN_NAMESPACE=default \
|
|
-e PLUGIN_SKIP_TLS_VERIFY=true \
|
|
-e PLUGIN_RELEASE=my-release \
|
|
-e PLUGIMN_CHART=stable/redis \
|
|
-e PLUGIN_VALUES="tag=TAG,api=API" \
|
|
-e PLUGIN_DEBUG=true \
|
|
-e PLUGIN_DRY_RUN=true \
|
|
-e DRONE_BUILD_EVENT=push \
|
|
quay.io/ipedrazas/drone-helm
|
|
```
|
|
|
|
This plugin installs [Tiller](https://github.com/kubernetes/helm/blob/master/docs/architecture.md) in the cluster, if you want to specify the namespace where `tiller` ins installed, use the `tiller_ns` attribute.
|
|
|
|
The following example will install `tiller` in the `operations` namespace:
|
|
```YAML
|
|
pipeline_production:
|
|
helm_deploy:
|
|
image: quay.io/ipedrazas/drone-helm
|
|
skip_tls_verify: true
|
|
chart: ./charts/my-chart
|
|
release: ${DRONE_BRANCH}
|
|
values: image.tag=${DRONE_BRANCH}-${DRONE_COMMIT_SHA:0:7}
|
|
prefix: PROD
|
|
tiller_ns: operations
|
|
when:
|
|
branch: [master]
|
|
```
|
|
Happy Helming!
|