6 KiB
stage | group | info |
---|---|---|
Configure | Configure | To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments |
Cluster Management Project Template (FREE)
- Introduced in GitLab 12.10 with Helmfile support via Helm v2.
- Improved in GitLab 14.0 with Helmfile support via Helm v3 instead, and a much more flexible usage of Helmfile. This introduces breaking changes that are detailed below.
This GitLab built-in project template provides a quicker start for users interested in managing cluster applications via Helm v3 charts. More specifically, taking advantage of the Helmfile utility client. The template consists of some pre-configured apps that should help you get started quickly using various GitLab features. Still, you have all the flexibility to remove the ones you do not need, or even add new ones that are not built-in.
How to use this template
- Connect your cluster to GitLab.
- Create a new project for the purpose of managing your cluster from GitLab. To do so, create a new project from a template and select GitLab Cluster Management.
- Configure this project as a cluster management project for the cluster you have integrated on the first step.
- If you used the GitLab Managed Apps, refer to Migrating from GitLab Managed Apps.
Components
In the repository of the newly-created project, you will find:
- A predefined
.gitlab-ci.yml
file, with a CI pipeline already configured. - A main
helmfile.yaml
to toggle which applications you would like to manage. - An
applications
directory with ahelmfile.yaml
configured for each application GitLab provides.
The .gitlab-ci.yml
file
The base image used in your pipeline is built by the cluster-applications project. This image consists of a set of Bash utility scripts to support Helm v3 releases:
gl-fail-if-helm2-releases-exist {namespace}
: It tries to detect whether you have apps deployed through Helm v2 releases for a given namespace. If so, it will fail the pipeline and ask you to manually migrate your Helm v2 releases to Helm v3.gl-ensure-namespace {namespace}
: It creates the given namespace if it does not exist and adds the necessary label for the Cilium app network policies to work.gl-adopt-resource-with-helm-v3 {arguments}
: Used only internally in the cert-manager's Helmfile to facilitate the GitLab Managed Apps adoption.gl-adopt-crds-with-helm-v3 {arguments}
: Used only internally in the cert-manager's Helmfile to facilitate the GitLab Managed Apps adoption.gl-helmfile {arguments}
: A thin wrapper that triggers the Helmfile command.
The main helmfile.yml
file
This file has a list of paths to other Helmfiles for each app. They're all commented out by default, so you must uncomment the paths for the apps that you would like to manage.
By default, each helmfile.yaml
in these sub-paths have the attribute installed: true
. This signifies that every time
the pipeline runs, Helmfile tries to either install or update your apps according to the current state of your
cluster and Helm releases. If you change this attribute to installed: false
, Helmfile tries try to uninstall this app
from your cluster. Read more about how Helmfile works.
Furthermore, each app has an applications/{app}/values.yaml
file. This is the
place where you can define some default values for your app's Helm chart. Some apps already have defaults
pre-defined by GitLab.
Built-in applications
The built-in applications are intended to provide an easy way to get started with various Kubernetes oriented GitLab features.
The built-in supported applications are:
- Apparmor
- Cert-manager
- Cilium
- Elastic Stack
- Falco
- Fluentd
- GitLab Runner
- Ingress
- Prometheus
- Sentry
- Vault
Migrate from GitLab Managed Apps
If you had GitLab Managed Apps, either One-Click or CI/CD install, read the docs on how to migrate from GitLab Managed Apps to project template