Namespace が指定されたモードで Config Connector をインストールする
このページでは、Config Connector を Namespace が指定されたモードでインストールする方法について説明します。
Namespace が指定されたモードでのインストールは、Config Connector のインストールの拡張機能です。名前空間モードでは、それぞれ独自の Google Cloud ID を持つ複数のプロジェクトを管理できます。
始める前に
Config Connector を名前空間モードで実行するように構成する前に、Config Connector がインストールされていることを確認します。
名前空間モードで実行するように Config Connector を構成する
名前空間モードを有効にするには、次の手順を実行します。
次の YAML マニフェストを
configconnector.yaml
という名前のファイルにコピーします。apiVersion: core.cnrm.cloud.google.com/v1beta1 kind: ConfigConnector metadata: # the name is restricted to ensure that there is only ConfigConnector resource installed in your cluster name: configconnector.core.cnrm.cloud.google.com spec: mode: namespaced stateIntoSpec: Absent
kubectl apply
を使用してクラスタに構成を適用します。kubectl apply -f configconnector.yaml
Namespace のリソースを管理するように Config Connector を構成する
以降のセクションでは、Config Connector をインストールする Google Cloud プロジェクトは、ホスト プロジェクトまたは HOST_PROJECT_ID と呼ばれます。リソースを管理するその他のプロジェクトは、マネージド プロジェクトまたは MANAGED_PROJECT_ID と呼ばれます。Config Connector を使用してクラスタと同じプロジェクトに Google Cloud リソースを作成する場合のみ、これらが同じプロジェクトになることがあります。
名前空間を作成する
Google Cloud リソースの整理に使用する名前空間がすでにある場合は、この手順をスキップできます。
kubectl
を使用して、次のコマンドを実行して新しい名前空間を作成します。
kubectl create namespace NAMESPACE
NAMESPACE は名前空間の名前に置き換えます。
ID を作成する
Identity and Access Management(IAM)サービス アカウントを作成し、IAM サービス アカウントを Config Connector の Kubernetes サービス アカウントにバインドします。
IAM サービス アカウントを作成する。新しいサービス アカウントを作成せずに、既存のサービス アカウントを使用することもできます。次のコマンドを実行して、
gcloud
を使用してサービス アカウントを作成します。gcloud iam service-accounts create NAMESPACE_GSA --project HOST_PROJECT_ID
以下を置き換えます。
- NAMESPACE_GSA は、Namespace にバインドされた Google サービス アカウント(GSA)の名前に置き換えます。
- HOST_PROJECT_ID は、ホスト プロジェクトの ID で置き換えます。
サービス アカウントの作成の詳細については、サービス アカウントの作成と管理をご覧ください。
IAM サービス アカウントに、マネージド プロジェクトへの昇格した権限を付与します。
gcloud projects add-iam-policy-binding MANAGED_PROJECT_ID \ --member="serviceAccount:NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/owner"
以下を置き換えます。
- MANAGED_PROJECT_ID は、マネージド プロジェクトの ID に置き換えます。
- NAMESPACE_GSA は、名前空間にバインドされた Google サービス アカウントの名前に置き換えます。
- HOST_PROJECT_ID は、ホスト プロジェクトの ID で置き換えます。
IAM サービス アカウントと Config Connector Kubernetes サービス アカウントの間の IAM ポリシー バインディングを作成します。サービス アカウントをバインドするには、次の
gcloud
コマンドを実行します。gcloud iam service-accounts add-iam-policy-binding \ NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com \ --member="serviceAccount:HOST_PROJECT_ID.svc.id.goog[cnrm-system/cnrm-controller-manager-NAMESPACE]" \ --role="roles/iam.workloadIdentityUser" \ --project HOST_PROJECT_ID
以下を置き換えます。
- HOST_PROJECT_ID は、ホスト プロジェクトの ID で置き換えます。
- NAMESPACE_GSA は、名前空間にバインドされた Google サービス アカウントの名前に置き換えます。
- NAMESPACE は、実際の Namespace で置き換えます。
IAM サービス アカウントに、ホスト プロジェクトの Google Cloud Observability に Prometheus 指標を公開する権限を付与します。
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member="serviceAccount:NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"
次のように置き換えます。
- HOST_PROJECT_ID は、ホスト プロジェクトの ID で置き換えます。
- NAMESPACE_GSA は、名前空間にバインドされた Google サービス アカウントの名前に置き換えます。
ConfigConnectorContext を作成する
Google Cloud リソースを作成するには、使用する Namespace に ConfigConnectorContext
オブジェクトを追加して、Namespace を監視するように Config Connector を構成する必要があります。
ConfigConnectorContext
を作成するには、次の手順を行います。
次の YAML マニフェストを
configconnectorcontext.yaml
という名前のファイルにコピーします。apiVersion: core.cnrm.cloud.google.com/v1beta1 kind: ConfigConnectorContext metadata: # you can only have one ConfigConnectorContext per namespace name: configconnectorcontext.core.cnrm.cloud.google.com namespace: NAMESPACE spec: googleServiceAccount: "NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com" stateIntoSpec: Absent
以下を置き換えます。
- NAMESPACE は、名前空間の名前に置き換えます。
- NAMESPACE_GSA は、名前空間にバインドされた Google サービス アカウントの名前に置き換えます。
- HOST_PROJECT_ID は、ホスト プロジェクトの ID で置き換えます。
kubectl
を使用してファイルをクラスタに適用します。kubectl apply -f configconnectorcontext.yaml
次のコマンドを実行して、Config Connector Operator が
kubectl
で Namespace の Kubernetes サービス アカウントを作成したことを確認します。kubectl get serviceaccount/cnrm-controller-manager-NAMESPACE -n cnrm-system
NAMESPACE を実際のバケット名で置き換えます。
次のコマンドを実行して、
kubectl
を使用して Namespace で Config Connector コントローラ Pod が実行されていることを確認します。kubectl wait -n cnrm-system \ --for=condition=Ready pod \ -l cnrm.cloud.google.com/component=cnrm-controller-manager \ -l cnrm.cloud.google.com/scoped-namespace=NAMESPACE
NAMESPACE を実際のバケット名で置き換えます。
Config Connector コントローラが実行中の場合は、出力は次のようになります。
cnrm-controller-manager-abcdefghijk-0 condition met.
Namespace のリソースを管理対象から外すように Config Connector を構成する
Config Connector を構成して Namespace を管理対象から外すには、Namespace 内のすべての Config Connector リソースを削除して、Namespace 内の ConfigConnectorContext
を削除します。
Namespace 内の Config Connector リソースの削除
ConfigConnectorContext
の削除を完了するには、Namespace からすべての Config Connector を削除します。
Namespace 内のすべての Config Connector リソースを検出するには、Config Connector の各カスタム リソース定義ごとに、すべてのリソースを一覧表示します。
kubectl get gcp -n NAMESPACE
NAMESPACE を実際のバケット名で置き換えます。
すべての Config Connector リソースを削除するには、前のステップの出力にある各リソースに対して delete コマンドを実行します。
kubectl delete -n NAMESPACE KIND NAME
以下を置き換えます。
NAMESPACE
: Namespace の名前。KIND
: 前の手順で検出されたリソースの種類。NAME
: 前の手順で検出されたリソースの名前。
ConfigConnectorContext の削除
Config Connector を構成して Namespace 内の Config Connector リソースを管理対象から外すには、Namespace 内の ConfigConnectorContext
を削除します。
kubectl delete -n NAMESPACE ConfigConnectorContext configconnectorcontext.core.cnrm.cloud.google.com
NAMESPACE を実際のバケット名で置き換えます。
ConfigConnectorContext
の削除は、Namespace からすべての Config Connector リソースが削除されるまで確定されません。
Config Connector のアンインストール
Config Controller のアンインストールに次の手順を使用しないでください。
kubectl delete
を使用して、コントローラ コンポーネントとともに Config Connector CRD を削除します。
kubectl delete ConfigConnectorContext --all -A –wait=false
kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \
--wait=true
Config Connector Operator をアンインストールするには、次のコマンドを実行します。
kubectl delete -f operator-system/configconnector-operator.yaml --wait=true
次のステップ
- Config Connector を使ってみる。
- Config Connector のベスト プラクティスについて学習する。