Multiple Kubernetes clusters for Auto DevOps
DETAILS: Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
When using Auto DevOps, you can deploy different environments to different Kubernetes clusters.
The Deploy Job template used by Auto DevOps defines three environment names:
-
review/
(every environment starting withreview/
) staging
production
These environments are tied to jobs using Auto Deploy, so they must have different deployment domains. You must define separate KUBE_CONTEXT
and KUBE_INGRESS_BASE_DOMAIN
variables for each of the three environments.
Deploy to different clusters
To deploy your environments to different Kubernetes clusters:
- Create Kubernetes clusters.
- Associate the clusters to your project:
- Install NGINX Ingress Controller in each cluster. Save the IP address and Kubernetes namespace for the next step.
-
Configure the Auto DevOps CI/CD Pipeline variables
- Set up a
KUBE_CONTEXT
variable for each environment. The value must point to the agent of the relevant cluster. - Set up a
KUBE_INGRESS_BASE_DOMAIN
. You must configure the base domain for each environment to point to the Ingress of the relevant cluster. - Add a
KUBE_NAMESPACE
variable with a value of the Kubernetes namespace you want your deployments to target. You can scope the variable to multiple environments.
- Set up a
For deprecated, certificate-based clusters:
- Go to the project and select Operate > Kubernetes clusters from the left sidebar.
- Set the environment scope of each cluster.
- For each cluster, add a domain based on its Ingress IP address.
NOTE:
Cluster environment scope is not respected when checking for active Kubernetes clusters. For a multi-cluster setup to work with Auto DevOps, you must create a fallback cluster with Cluster environment scope set to *
. You can set any of the clusters you've already added as a fallback cluster.
Example configurations
Cluster name | Cluster environment scope |
KUBE_INGRESS_BASE_DOMAIN value |
KUBE CONTEXT value |
Variable environment scope | Notes |
---|---|---|---|---|---|
review | review/* |
review.example.com |
path/to/project:review-agent |
review/* |
A review cluster that runs all review apps. |
staging | staging |
staging.example.com |
path/to/project:staging-agent |
staging |
Optional. A staging cluster that runs the deployments of the staging environments. You must enable it first. |
production | production |
example.com |
path/to/project:production-agent |
production |
A production cluster that runs the production environment deployments. You can use incremental rollouts. |
Test your configuration
After completing configuration, test your setup by creating a merge request.
Verify whether your application deployed as a Review App in the Kubernetes
cluster with the review/*
environment scope. Similarly, check the
other environments.