GitLabが管理するクラスター・リソースの追跡(非推奨)

caution
この機能はGitLab 16.2で非推奨となりました。GitOpsでクラスターのリソースを管理するには、Fluxインテグレーションを使う必要があります。

GitLabは、クラスターにデプロイしたリソースを追跡するためにインベントリオブジェクトを使用します。インベントリオブジェクトは、管理オブジェクトのリストを含むConfigMap 。管理されるリソースはcli-utils.sigs.k8s.io/inventory-id アノテーションを使います。

インベントリオブジェクトのデフォルトの場所

エージェント設定ファイルでは、プロジェクトのリストを指定します。例えば

gitops:
  manifest_projects:
  - id: gitlab-org/cluster-integration/gitlab-agent
    default_namespace: my-ns

エージェントは、manifest_projects リスト内のすべての項目に対してインベントリ・オブジェクトを作成します。インベントリ・オブジェクトは、default_namespace に指定したネームスペースに格納されます。

インベントリオブジェクトの名前と場所は、以下に基づいています:

  • default_namespaceこのパラメータを指定しない場合、インベントリ・オブジェクトはdefault ネームスペースに格納されます。
  • name は、マニフェストを持つプロジェクトの ID とエージェントの ID です。
caution
default_namespace パラメータを変更したり、マニフェストを別のプロジェクトに移動したりすると、エージェントは既存のインベントリオブジェクトを見つけることができません。

インベントリオブジェクトの場所を変更

インベントリ・オブジェクトのネームスペースおよび名前を設定できます。このアクションは、クラスター内のオブジェクトの場所を変更します。

  1. インベントリ・オブジェクト・テンプレート (ConfigMap オブジェクト) を作成します。例えば

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: unique-name-for-the-inventory
      namespace: my-project-namespace
      labels:
        cli-utils.sigs.k8s.io/inventory-id: unique-name-for-the-inventory
    
  2. namespacename. name将来、同じネームスペースにある他のインベントリ・オブジェクトと競合しないように、.NETnamename一意であることをname確認して nameください。
  3. cli-utils.sigs.k8s.io/inventory-id の値が一意であることを確認します。この値は、このインベントリ・オブジェクトによって追跡されるオブジェクトに使用されます。config.k8s.io/owning-inventory アノテーションはこの値に設定されます。

    値はname と一致する必要はありませんが、同じ値に設定すると便利です。

  4. マニフェストファイルを含むファイルを 1 つの論理グループとして保存します。

inventory_policy オプション

マニフェストの変更が、GitLabインベントリオブジェクトによって追跡されないリソースに影響することがあります。

既存のリソースや以前追跡されていなかったリソースを上書きしたときのエージェントの動作を変更するには、inventory_policy の値を変更します。

inventory_policy説明
must_matchデフォルトのポリシー。更新するには、ライブ・オブジェクトのconfig.k8s.io/owning-inventory アノテーションが、対応するインベントリ・オブジェクトのcli-utils.sigs.k8s.io/inventory-id ラベルと同じ値に設定されている必要があります。値が一致しない場合、またはオブジェクトが注釈を持たない場合、オブジェクトは更新されず、エラーがレポーターされます。
adopt_if_no_inventoryオブジェクトにconfig.k8s.io/owning-inventory 注釈がない場合は、そのオブジェクトを採用します。GitOps機能を使って既存のオブジェクトの管理を始めたい場合は、このモードを使います。予期しない採用を避けるために、すべてのオブジェクトが採用されたら、設定をデフォルトのmust_match モードに戻してください。
adopt_all config.k8s.io/owning-inventory アノテーションが別の値に設定されていても、オブジェクトを採用します。あるエージェントから別のエージェントへ、または他のツールからエージェントへ、オブジェクトのセットをマイグレーションする場合、このモードを使用します。予期しない採用を避けるため、すべてのオブジェクトが採用された後、設定をデフォルトのmust_match モードに戻します。