サードパーティ統合用のインベントリを生成する

このページでは、既存のフリートのクラスタ インベントリを生成する方法について説明します。フリートのクラスタ インベントリを使用すると、ClusterProfile 仕様を使用するオープンソースとサードパーティの統合を操作できます。

クラスタ インベントリは、オープンソース版のフリートです。Kubernetes クラスタと他のリソースをまとめて管理できる論理グループです。ClusterProfile 仕様には、フリート内の情報のサブセットである情報が含まれています。

ClusterProfile の同期機能は、フリートとクラスタ インベントリ間の一方向同期です。ClusterProfile 同期が有効になっている場合、フリートが信頼できる情報源となり、フリートに対する変更は ClusterProfile 同期によってクラスタ インベントリに自動的に適用されます。クラスタ プロファイル リソースに直接加えられた変更は、フリートに適用されません。

始める前に

  1. フリートの操作に関する一般的な前提条件に準拠していることを確認します。

  2. フリートを作成するか、使用する既存のフリートを特定します。

ClusterProfile の同期を有効にする

ClusterProfile 同期は、フリート内の 1 つのクラスタに対して実行されます。このクラスタはハブクラスタと呼ばれ、フリート内の他のクラスタに関する情報を必要とするマルチクラスタ コントローラを実行するために使用できます。マルチクラスタ コントローラの例としては、Argo CD コントローラマルチクラスタ オーケストレーターなどがあります。ハブクラスタでは他のワークロードを実行しないことをおすすめします。

ラベル fleet-clusterinventory-management-cluster=true を追加して、クラスタで ClusterProfile 同期を有効にします。以下の操作を行います。

フリートで ClusterProfile の同期機能を有効にすると、ClusterProfile API を使用して、フリート内の各クラスタのクラスタ プロファイルが自動的に作成されます。これらのクラスタ プロファイルは、フリートに変更が加えられると、自動的に作成、更新、削除されます。

新しいクラスタで ClusterProfile の同期を有効にする

ハブクラスタのクラスタを作成し、ClusterProfile の同期を有効にするには、次のコマンドを使用します。

gcloud container clusters create CLUSTER --location LOCATION --enable-fleet
    --labels=fleet-clusterinventory-management-cluster=true

次のように置き換えます。

  • CLUSTER: google_container_cluster リソースの名前。
  • LOCATION: クラスタが作成されるロケーション。

デフォルトでは、クラスタ プロファイルは fleet-cluster-inventory 名前空間に作成されます。名前空間を変更するには、fleet-clusterinventory-namespace ラベルを指定します。

gcloud container clusters update CLUSTER --location LOCATION
    --update-labels=fleet-clusterinventory-namespace=NAMESPACE

次のように置き換えます。

  • CLUSTER: google_container_cluster リソースの名前。
  • LOCATION: クラスタが作成されるロケーション。
  • NAMESPACE: クラスタ プロファイルが生成される名前空間。指定しない場合、クラスタ プロファイルは fleet-cluster-inventory 名前空間に生成されます。

既存のクラスタで ClusterProfile の同期を有効にする

既存のクラスタで ClusterProfile の同期を有効にするには、次のコマンドを使用します。

gcloud container clusters update CLUSTER --location LOCATION
    --update-labels=fleet-clusterinventory-management-cluster=true

次のように置き換えます。

  • CLUSTER: google_container_cluster リソースの名前。
  • LOCATION: クラスタが作成されるロケーション。

デフォルトでは、クラスタ プロファイルは fleet-cluster-inventory 名前空間に作成されます。名前空間を変更するには、fleet-clusterinventory-namespace ラベルを指定します。

gcloud container clusters update CLUSTER --location LOCATION
    --update-labels=fleet-clusterinventory-namespace=NAMESPACE

次のように置き換えます。

  • CLUSTER: google_container_cluster リソースの名前。
  • LOCATION: クラスタが作成されるロケーション。
  • NAMESPACE: クラスタ プロファイルが生成される名前空間。指定しない場合、クラスタ プロファイルは fleet-cluster-inventory 名前空間に生成されます。

ClusterProfile の同期が有効になっていることを確認する

ハブクラスタに fleet-clusterinventory-management-cluster = true ラベルが含まれていることを確認して、ClusterProfile の同期が有効になっていることを確認します。これを行うには、次のコマンドを使用します。

gcloud container clusters describe CLUSTER --location LOCATION

次のように置き換えます。

  • CLUSTER: google_container_cluster リソースの名前。
  • LOCATION: クラスタが作成されるロケーション。

出力例を以下に示します。

resourceLabels:
  fleet-clusterinventory-management-cluster: 'true'

生成されたクラスタ プロファイル リソースを確認する

次のコマンドを使用して、クラスタ プロファイル リソースがハブクラスタに生成されていることを確認します。

gcloud container clusters get-credentials CLUSTER --location LOCATION

kubectl get clusterprofiles -n fleet-cluster-inventory

次のように置き換えます。

  • CLUSTER: google_container_cluster リソースの名前。
  • LOCATION: クラスタが作成されるロケーション。

出力は次のようになります。

NAME                           AGE
cluster-1-us-west1             10s
cluster-2-us-west1             20s

この出力には、フリート内の各クラスタのクラスタ プロファイルが含まれます。クラスタ プロファイル名の形式は MEMBERSHIP-LOCATION です。

クラスタ プロファイルの内容を確認する

特定のクラスタのクラスタ プロファイルの内容を確認するには、次のコマンドを使用します。

kubectl get clusterprofile CLUSTER-LOCATION -n fleet-cluster-inventory -o yaml

次のように置き換えます。

  • CLUSTER: google_container_cluster リソースの名前。
  • LOCATION: クラスタが作成されるロケーション。

出力は次のようになります。

apiVersion: multicluster.x-k8s.io/v1alpha1
kind: ClusterProfile
metadata:
  annotations:
    fleet.gke.io/membershipName: projects/123456789/locations/us-west1/memberships/cluster-1
  labels:
    x-k8s.io/cluster-manager: gke-fleet
  name: cluster-1-us-west1
  namespace: fleet-cluster-inventory

ClusterProfile の同期を無効にする

fleet-clusterinventory-management-cluster ラベルを削除して、フリートのハブクラスタで ClusterProfile の同期を無効にします。

gcloud container clusters update CLUSTER --location LOCATION \
    --remove-labels=fleet-clusterinventory-management-cluster

次のように置き換えます。

  • CLUSTER: google_container_cluster リソースの名前。
  • LOCATION: クラスタが作成されるロケーション。

次のステップ

  • ClusterProfile の同期と Argo CD の統合の詳細については、Argo CD ClusterProfile Syncer をご覧ください。
  • マルチクラスタ オーケストレーターはクラスタ プロファイルを使用します。このプロファイルは、マルチクラスタとマルチリージョンのデプロイのスケジュール設定に役立ちます。詳細については、マルチクラスタ オーケストレーターの概要をご覧ください。