このページでは、既存のフリートのクラスタ インベントリを生成する方法について説明します。フリートのクラスタ インベントリを使用すると、ClusterProfile 仕様を使用するオープンソースとサードパーティの統合を操作できます。
クラスタ インベントリは、オープンソース版のフリートです。Kubernetes クラスタと他のリソースをまとめて管理できる論理グループです。ClusterProfile 仕様には、フリート内の情報のサブセットである情報が含まれています。
ClusterProfile の同期機能は、フリートとクラスタ インベントリ間の一方向同期です。ClusterProfile 同期が有効になっている場合、フリートが信頼できる情報源となり、フリートに対する変更は ClusterProfile 同期によってクラスタ インベントリに自動的に適用されます。クラスタ プロファイル リソースに直接加えられた変更は、フリートに適用されません。
始める前に
ClusterProfile の同期を有効にする
ClusterProfile 同期は、フリート内の 1 つのクラスタに対して実行されます。このクラスタはハブクラスタと呼ばれ、フリート内の他のクラスタに関する情報を必要とするマルチクラスタ コントローラを実行するために使用できます。マルチクラスタ コントローラの例としては、Argo CD コントローラやマルチクラスタ オーケストレーターなどがあります。ハブクラスタでは他のワークロードを実行しないことをおすすめします。
ラベル fleet-clusterinventory-management-cluster=true
を追加して、クラスタで ClusterProfile 同期を有効にします。以下の操作を行います。
- ハブクラスタとして使用する新しいクラスタを作成します。新しいクラスタで ClusterProfile 同期を有効にする方法については、次のセクションをご覧ください。
- ハブクラスタとして使用するフリート内のクラスタを特定します。既存のクラスタで 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 をご覧ください。
- マルチクラスタ オーケストレーターはクラスタ プロファイルを使用します。このプロファイルは、マルチクラスタとマルチリージョンのデプロイのスケジュール設定に役立ちます。詳細については、マルチクラスタ オーケストレーターの概要をご覧ください。