クラスター・アプリケーションの管理

  • GitLab 12.10で導入され、Helm v2経由でHelmfileをサポート。
  • Helm v2のサポートはGitLab 14.0で廃止されました。代わりにHelm v3を使用してください。
  • GitLab 14.5 で GitLab エージェントにマイグレーション

GitLabはクラスター管理プロジェクトテンプレートを提供します。プロジェクトにはGitLabとインテグレーションし、GitLabの機能を拡張するクラスター・アプリケーションが含まれています。プロジェクトに示されているパターンを使って、カスタムのクラスター・アプリケーションを拡張することができます。

note
このプロジェクトテンプレートは、GitLab.com 上でそのまま動作します。セルフマネージドインスタンスを使っている場合は、.gitlab-ci.yml ファイルを修正する必要があります。

エージェントとマニフェストには1つのプロジェクトを使用してください。

GitLabとクラスターを接続するためにエージェントをまだ使用していない場合:

  1. クラスター管理プロジェクトテンプレートからプロジェクトを作成します。
  2. エージェント用にプロジェクトを設定します。
  3. プロジェクトの設定で、$KUBE_CONTEXT という環境変数を作成し、値をpath/to/agent-configuration-project:your-agent-name に設定します。
  4. 必要に応じてファイルを設定してください。

エージェントとマニフェストには別々のプロジェクトを使用してください。

すでにエージェントを設定し、GitLabでクラスターを接続している場合:

  1. クラスター管理プロジェクトテンプレートからプロジェクトを作成します。
  2. エージェントを設定したプロジェクトで、エージェントに新しいプロジェクトへのアクセス権を付与します。
  3. 新しいプロジェクトで、$KUBE_CONTEXT という環境変数を作成し、値をpath/to/agent-configuration-project:your-agent-name に設定します。
  4. 新しいプロジェクトで、必要に応じてファイルを設定します。

クラスター管理プロジェクトのテンプレートに基づいてプロジェクトを作成します。

クラスター管理プロジェクト・テンプレートからプロジェクトを作成するには、以下の手順に従います:

  1. 左サイドバーの上部にある「新規作成({plus})」と「新規プロジェクト/リポジトリ」を選択します。
  2. テンプレートから作成」を選択します。
  3. テンプレートのリストから、GitLab Cluster Managementの隣にあるUse templateを選択します。
  4. プロジェクトの詳細を入力します。
  5. Create projectを選択します。
  6. 新しいプロジェクトで、必要に応じてファイルを設定します。

プロジェクトの設定

クラスター管理テンプレートを使用してプロジェクトを作成したら、設定を行います:

.gitlab-ci.yml ファイル

.gitlab-ci.yml ファイル:

  • Helmバージョン3であることを確認します。
  • 有効化されたアプリケーションをプロジェクトからデプロイします。

パイプライン定義を編集および拡張できます。

パイプラインで使用されるベースイメージはcluster-applicationsプロジェクトによってビルドされます。このイメージには、Helm v3リリースをサポートするBashユーティリティスクリプトのセットが含まれています。

GitLab のセルフマネージドインスタンスを使用している場合は、.gitlab-ci.yml ファイルを修正する必要があります。具体的には、Automatic package upgrades というコメントで始まるセクションはセルフマネージドインスタンスでは動作しません。include は GitLab.com プロジェクトを参照しているからです。このコメント以下をすべて削除すると、パイプラインは成功します。

メインのhelmfile.yml ファイル

テンプレートには、Helm v3でクラスター・アプリケーションを管理するためのHelmfileが含まれています。

このファイルには各アプリの他のHelmファイルへのパスのリストがあります。デフォルトではすべてコメントアウトされているので、クラスターで使用したいアプリのパスをコメントアウト解除する必要があります。

デフォルトでは、これらのサブパスの各helmfile.yamlinstalled: true という属性を持っています。これは、クラスターの状態やHelmのリリースに応じて、パイプラインが実行されるたびにHelmfileがアプリのインストールやアップデートを試みることを意味します。この属性をinstalled: false に変更すると、Helmfileはこのアプリをクラスターからアンインストールしようとします。Helmfileの動作について詳しくはこちらをご覧ください。

組み込みアプリケーション

テンプレートにはapplications ディレクトリがあり、helmfile.yaml がテンプレート内の各アプリケーション用に設定されています。

ビルトインでサポートされているアプリケーションは以下のとおりです:

各アプリケーションにはapplications/{app}/values.yaml ファイルがあります。GitLab Runnerの場合、ファイルはapplications/{app}/values.yaml.gotmpl

このファイルで、アプリのHelmチャートのデフォルト値を定義できます。すでにデフォルト値が定義されているアプリもあります。