stage | group | info |
---|---|---|
Deploy |
Environments |
To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments |
- Introduced in GitLab 12.5.
- Deprecated in GitLab 14.5.
- Disabled on self-managed in GitLab 15.0.
WARNING: The cluster management project was deprecated in GitLab 14.5. To manage cluster applications, use the GitLab agent with the Cluster Management Project Template.
FLAG:
On self-managed GitLab, by default this feature is not available. To make it available, an administrator can enable the feature flag named certificate_based_clusters
.
A project can be designated as the management project for a cluster.
A management project can be used to run deployment jobs with
Kubernetes
cluster-admin
privileges.
This can be useful for:
- Creating pipelines to install cluster-wide applications into your cluster, see management project template for details.
- Any jobs that require
cluster-admin
privileges.
Only the management project receives cluster-admin
privileges. All
other projects 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 the cluster's group.
- For instance-level clusters, there are no such restrictions.
To use a cluster management project to manage your cluster:
- Create a new project to serve as the cluster management project for your cluster.
- Associate the cluster with the management project.
- Configure your cluster's pipelines.
- Set the environment scope.
To associate a cluster management project with your cluster:
- Navigate to the appropriate configuration page. For a:
- Project-level cluster, go to your project's Operate > Kubernetes clusters page.
- Group-level cluster, go to your group's Kubernetes page.
- Instance-level cluster:
- On the left sidebar, expand the top-most chevron ({chevron-down}).
- Select Admin Area.
- Select Kubernetes.
- Expand Advanced settings.
- From the Cluster management project dropdown list, select the cluster management project you created in the previous step.
After designating a project as the management project for the cluster,
write a .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:
Cluster | Environment scope |
---|---|
Development | * |
Staging | staging |
Production | production |
The following environments set in
.gitlab-ci.yml
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