Kubernetes
Deploy to Kubernetes using Helm. Supports DigitalOcean and Google Cloud clusters.
Import
yaml
include:
- project: hosst/gitlab-pipelines
file: pipelines/kubernetes-helm.yamlJobs
| Job | Environment | When |
|---|---|---|
preview | preview/<branch> | Branch push (non-default), manual, auto-stops in 30 days |
staging | staging | Default branch, automatic |
production | production | Default branch, manual |
Gitflow variant
yaml
include:
- project: hosst/gitlab-pipelines
file: pipelines/kubernetes-helm-gitflow.yaml| Job | Environment | When |
|---|---|---|
preview | preview/<branch> | Branch push (non-default), manual, auto-stops in 30 days |
test | test | Default branch, automatic |
staging | staging | Tag push, automatic |
production | production | Tag push, manual |
Variables
Helm
| Variable | Default | Description |
|---|---|---|
HELM_CHART | ./helm-charts/charts/standard | Helm chart path |
HELM_CHART_VERSION | main | Chart repository branch to clone |
HELM_RELEASE | $CI_PROJECT_NAME | Helm release name |
HELM_NAMESPACE | $KUBERNETES_NAMESPACE | Kubernetes namespace |
HELM_REPOSITORY | gitlab.com/hosstio/helm-charts | Chart repository |
HELM_ARGS | Extra helm upgrade arguments | |
HELM_EXTRA_ARGS | Additional extra arguments | |
HELM_ARGS_SECRET | Secret arguments (masked in logs) | |
HELM_EXTRA_ARGS_SECRET | Additional secret arguments (masked in logs) |
Kubernetes
| Variable | Default | Description |
|---|---|---|
DOMAIN | example.com | Base domain for environment URLs |
KUBERNETES_NAMESPACE | $CI_PROJECT_NAME | Namespace for deployments |
KUBERNETES_CLUSTER | kubernetes | Cluster name |
KUBERNETES_DOCKER_REGISTRY_SECRET | registry-credentials-gitlab | Image pull secret name |
Helm values
Values are merged from two files per environment:
kubernetes/helm/values.yaml— shared valueskubernetes/helm/<environment>.yaml— environment-specific values (e.g.preview.yaml,test.yaml,staging.yaml,production.yaml)
Cloud providers
DigitalOcean
Set these CI/CD variables to connect to a DigitalOcean Kubernetes cluster:
| Variable | Description |
|---|---|
DIGITALOCEAN_ACCESS_TOKEN | DigitalOcean personal access token |
DIGITALOCEAN_KUBERNETES_CLUSTER | Cluster name (defaults to $KUBERNETES_CLUSTER) |
Google Cloud
Set these CI/CD variables to connect to a GKE cluster:
| Variable | Description |
|---|---|
GOOGLE_SERVICE_ACCOUNT | Path to service account key JSON file |
GOOGLE_KUBERNETES_CLUSTER | GKE cluster name |
GOOGLE_PROJECT | Google Cloud project ID |
GOOGLE_REGION | Region (default: europe-west1-b) |