クラスター管理プロジェクト(非推奨)
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
クラスター管理プロジェクトは、GitLab 14.5で非推奨になりました。クラスタアプリケーションを管理するには、Kubernetes向けGitLabエージェントとCluster Management Project Templateを使用します。
GitLab Self-Managedでは、デフォルトでこの機能は使用できません。管理者がcertificate_based_clustersという名前の機能フラグを有効にすると、この機能を使用できるようになります。
プロジェクトは、クラスタのクラスター管理プロジェクトとして指定できます。クラスター管理プロジェクトは、Kubernetes cluster-admin権限でデプロイメントジョブを実行するために使用できます。
これは、以下の場合に役立ちます:
- クラスタ全体のアプリケーションをクラスタにインストールするためのパイプラインの作成。詳細については、management project templateを参照してください。
cluster-admin権限を必要とするジョブ。
権限
クラスター管理プロジェクトのみがcluster-admin権限を受け取ります。他のすべてのプロジェクトは、ネームスペーススコープのeditレベルの権限を引き続き受け取ります。
クラスター管理プロジェクトは、以下に制限されています:
- プロジェクトレベルのクラスタの場合、クラスター管理プロジェクトは、クラスタのプロジェクトと同じネームスペース(または子孫)にある必要があります。
- グループレベルのクラスタの場合、クラスター管理プロジェクトは、クラスタのグループと同じグループ(または子孫)にある必要があります。
- インスタンスレベルのクラスタの場合、そのような制限はありません。
クラスター管理プロジェクトを作成および設定する方法
クラスター管理プロジェクトを使用してクラスタを管理するには、次の手順に従います:
- クラスタのクラスター管理プロジェクトとして機能する新しいプロジェクトを作成します。
- クラスターをクラスター管理プロジェクトに関連付けます。
- クラスタのパイプラインを設定します。
- 環境スコープを設定します。
クラスター管理プロジェクトをクラスタに関連付ける
クラスター管理プロジェクトをクラスタに関連付けるには、次の手順に従います:
- 適切な設定ページに移動します。以下の場合:
- プロジェクトレベルのクラスタの場合は、プロジェクトの操作 > Kubernetesクラスターページに移動します。
- グループレベルのクラスタの場合は、グループのKubernetesページに移動します。
- インスタンスレベルのクラスタ:
- 左側のサイドバーの下部で、管理者を選択します。
- Kubernetesを選択します。
- Advanced settings(高度な設定)を展開します。
- クラスター管理プロジェクトクラスター管理プロジェクトドロップダウンリストから、前の手順で作成したクラスター管理プロジェクトを選択します。
パイプラインの設定
プロジェクトをクラスタのクラスター管理プロジェクトとして指定した後、そのプロジェクトに.gitlab-ci.ymlファイルを追加します。例:
configure cluster:
stage: deploy
script: kubectl get namespaces
environment:
name: production環境スコープの設定
環境スコープは、複数のクラスタを同じクラスター管理プロジェクトに関連付ける場合に使用できます。
各スコープは、クラスター管理プロジェクトの単一のクラスタでのみ使用できます。
たとえば、次のKubernetesクラスタがクラスター管理プロジェクトに関連付けられています:
| クラスター | 環境スコープ |
|---|---|
| 開発 | * |
| ステージング | staging |
| 本番環境 | production |
.gitlab-ci.ymlファイルに設定された環境は、Development、ステージング、および本番環境クラスタにデプロイされます。
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