Introduced in GitLab 12.5
A project can be designated as the management project for a cluster.
A management project can be used to run deployment jobs with
This can be useful for:
- Creating pipelines to install cluster-wide applications into your cluster, see Install using GitLab CI/CD (alpha) for details.
- Any jobs that require
Only the management project will receive
cluster-admin privileges. All
other projects will continue to receive namespace scoped
edit level privileges.
Management projects are restricted to the following:
- For project-level clusters, the management project must be in the same namespace (or descendants) as the cluster’s project.
- For group-level clusters, the management project must be in the same group (or descendants) as as the cluster’s group.
- For instance-level clusters, there are no such restrictions.
To use a cluster management project for a cluster:
- Select the project.
- Configure your pipelines.
- Set an environment scope.
To select a cluster management project to use:
- Navigate to the appropriate configuration page. For a:
- Select the project using Cluster management project field in the Advanced settings section.
After designating a project as the management project for the cluster,
.gitlab-ci.yml in that project. For example:
configure cluster: stage: deploy script: kubectl get namespaces environment: name: production
Environment scopes are usable when associating multiple clusters to the same management project.
Each scope can only be used by a single cluster for a management project.
For example, let’s say the following Kubernetes clusters are associated to a management project:
The following environments set in
.gitlab-ci.yml will deploy to the
Development, Staging, and Production cluster respectively.
stages: - deploy configure development cluster: stage: deploy script: kubectl get namespaces environment: name: development configure staging cluster: stage: deploy script: kubectl get namespaces environment: name: staging configure production cluster: stage: deploy script: kubectl get namespaces environment: name: production