Config Connector を手動でインストールする
このページでは、Config Connector を手動でインストールする方法について説明します。手動インストールは、インストールするバージョンとアップグレード スケジュールを制御できる柔軟なオプションです。
さまざまなインストール オプションについて詳しくは、インストール タイプの選択をご覧ください。
ほとんどのユースケースでは、Config Connector を Namespace モードで手動でインストールすることをおすすめします。別の方法はクラスタモードです。Namespace モードはスケーラビリティが高く、権限の分離が優れているため、マルチテナントのユースケースや、複数のプロジェクトからリソースを管理する場合に最適です。
クラスタ全体の単一のサービス アカウントを使用する場合は、クラスタモードでインストールする手順に沿って操作します。
始める前に
Config Connector Operator を手動でインストールする前に、次の手順を行います。
- Config Connector がまだインストールされておらず、Workload Identity と Kubernetes Engine Monitoring を有効にした GKE クラスタの作成または識別を行います。
- クラスタに接続するように
kubectlを構成します。
Config Connector Operator をインストールする
Config Connector は、Kubernetes Operator を使用してインストールを最新の状態にします。Namespace モードまたはクラスタモードで Config Connector をインストールする場合でも、Operator のインストールが必要です。
Config Connector オペレータをインストールするには、次の操作を行います。
最新の Config Connector Operator の .tar ファイルをダウンロードします。
gcloud storage cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gztar ファイルを解凍します。
tar zxvf release-bundle.tar.gzクラスタに Config Connector Operator をインストールします。
Autopilot
kubectl apply -f operator-system/autopilot-configconnector-operator.yamlStandard
kubectl apply -f operator-system/configconnector-operator.yaml名前空間モードで実行するように Config Connector オペレータを構成するには、次の操作を行います。
次の内容のマニフェストを
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 -f configconnector.yaml
Namespace が指定されたモードで Config Connector をインストールする
以降のセクションでは、Config Connector をインストールするプロジェクトをホスト プロジェクトと呼びます。Config Connector でリソースを管理できるその他のプロジェクトは、マネージド プロジェクトです。Config Connector でクラスタと同じプロジェクトにのみリソースを作成する場合は、ホスト プロジェクトとマネージド プロジェクトを同じプロジェクトにできます。
名前空間の作成
次のコマンドを実行して、新しい Namespace を作成します。
kubectl create namespace 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 に置き換えます。
IAM サービス アカウントと Config Connector Kubernetes サービス アカウントの間に IAM ポリシー バインディングを作成します。
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"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"
ConfigConnectorContext を作成する
Google Cloud リソースを作成するには、その Namespace に ConfigConnectorContext オブジェクトを追加して、Namespace を監視するように Config Connector を構成します。
ConfigConnectorContext を作成するには、次の手順を行います。
次の内容のマニフェストを
configconnectorcontext.yamlという名前で作成します。apiVersion: core.cnrm.cloud.google.com/v1beta1 kind: ConfigConnectorContext metadata: # you need 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マニフェストをクラスタに適用します。
kubectl apply -f configconnectorcontext.yaml次のコマンドを実行して、Config Connector Operator が Namespace の Kubernetes サービス アカウントを作成したことを確認します。
kubectl get serviceaccount/cnrm-controller-manager-NAMESPACE -n cnrm-systemConfig Connector コントローラ Pod が Namespace で実行されていることを確認します。
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=NAMESPACEConfig Connector コントローラが実行中の場合は、出力は次のようになります。
cnrm-controller-manager-abcdefghijk-0 condition met.
Namespace 内のリソースの管理を停止する
Config Connector で Namespace 内のリソースの管理を停止する場合は、その Namespace 内のすべての Config Connector リソースと ConfigConnectorContext オブジェクトを削除します。
Namespace 内のすべての Config Connector リソースを見つけるには、Config Connector の各カスタム リソース定義ごとに、すべてのリソースを一覧表示します。
kubectl get gcp -n NAMESPACEこのコマンドの出力には、その Namespace で Config Connector によって管理されるリソースを表すカスタム リソース定義(CRD)がすべて一覧表示されます。これには、そのリソースの名前と Kubernetes の種類が含まれます。
すべての Config Connector リソースを削除するには、前の手順の出力の各リソースに対して次のコマンドを実行します。
kubectl delete -n NAMESPACE KIND NAME次のように置き換えます。
KIND: リソースの Kubernetes Kind。NAME: リソースの名前。
Namespace の
ConfigConnectorContextオブジェクトを削除します。kubectl delete -n NAMESPACE ConfigConnectorContext configconnectorcontext.core.cnrm.cloud.google.com
Config Connector をアンインストールする
Config Connector をアンインストールするには、次の手順を実行します。
Config Connector CRD とコントローラ コンポーネントを削除するには、次のコマンドを実行します。
kubectl delete ConfigConnectorContext --all -A –wait=false kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \ --wait=trueConfig Connector Operator をアンインストールするには、次のコマンドを実行します。
kubectl delete -f operator-system/configconnector-operator.yaml --wait=true
クラスタモードでインストールする
単一のプロジェクト内のリソースを管理し、Namespace モードで提供される権限の分離を必要としない場合は、クラスタモードで Config Connector をインストールして管理することをおすすめします。
ID を作成する
Config Connector は、Identity and Access Management(IAM)サービス アカウントで認証し、Workload Identity Federation for GKE を使用して IAM サービス アカウントを Kubernetes サービス アカウントにバインドすることで、 Google Cloud リソースを作成、管理します。
ID を作成するには、次の手順を行います。
IAM サービス アカウントを作成します。既存のサービス アカウントを使用する場合は、そのアカウントを使用してこの手順を省略できます。
gcloud iam service-accounts create SERVICE_ACCOUNT_NAMESERVICE_ACCOUNT_NAME をサービス アカウントの名前に置き換えます。
サービス アカウントの作成の詳細については、サービス アカウントの作成と管理をご覧ください。
IAM サービス アカウントに、プロジェクトへの昇格した権限を付与します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/editor"PROJECT_ID は、実際のプロジェクト ID に置き換えます。
IAM サービス アカウントと、Config Connector が実行する事前定義された Kubernetes サービス アカウントの間に IAM ポリシー バインディングを作成します。
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member="serviceAccount:PROJECT_ID.svc.id.goog[cnrm-system/cnrm-controller-manager]" \ --role="roles/iam.workloadIdentityUser"
Config Connector を構成する
インストールを完了するには、ConfigConnector CustomResource の構成ファイルを作成し、kubectl apply コマンドを使用してそれを適用します。Config Connector Operator は、Google Cloud リソース CRD と Config Connector コンポーネントをクラスタにインストールします。
演算子をクラスタモードとして構成するには、次の手順を行います。
-
次の YAML ファイルを
configconnector.yamlという名前のファイルにコピーします。 次のように置き換えます。# configconnector.yaml apiVersion: core.cnrm.cloud.google.com/v1beta1 kind: ConfigConnector metadata: # the name is restricted to ensure that there is only one # ConfigConnector resource installed in your cluster name: configconnector.core.cnrm.cloud.google.com spec: mode: cluster googleServiceAccount: "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" # Setting `stateIntoSpec` to `Absent` is recommended. It means setting `cnrm.cloud.google.com/state-into-spec` # annotation to `absent` for all Config Connector resources created in the cluster in the future. # It prevents Config Connector from populating unspecified fields into the spec. stateIntoSpec: Absent
SERVICE_ACCOUNT_NAME: サービス アカウントの名前。PROJECT_ID: プロジェクト ID。
-
kubectl applyを使用してクラスタに構成を適用します。kubectl apply -f configconnector.yaml
リソースを作成する場所の指定
Config Connector では、プロジェクト、フォルダ、組織別にリソースを編成できます。これは、 Google Cloudでリソースを編成するのと同じ方法です。
Config Connector を使用してリソースを作成する前に、リソースを作成する場所を構成する必要があります。Config Connector は、リソースを作成する場所を決定するために、リソース構成または既存の Namespace のアノテーションを使用します。詳細については、リソースの整理をご覧ください。
この目的の Namespace がない場合は、kubectl を使用して Namespace を作成します。kubectl create namespace NAMESPACE
NAMESPACE を実際の Namespace 名に置き換えます。例: config-connector
タブを選択して、Config Connector がリソースを作成する場所を選びます。
プロジェクト
特定のプロジェクトにリソースを作成するには、次のコマンドを実行します。
kubectl annotate namespace \ NAMESPACE cnrm.cloud.google.com/project-id=PROJECT_ID
以下を置き換えます。
NAMESPACEは、実際の Namespace 名に置き換えます。PROJECT_ID: 実際の Google Cloud プロジェクト ID。
フォルダ
特定のフォルダにリソースを作成するには、次のコマンドを実行します。
kubectl annotate namespace \ NAMESPACE cnrm.cloud.google.com/folder-id=FOLDER_ID
以下を置き換えます。
NAMESPACEは、実際の Namespace 名に置き換えます。FOLDER_IDは、 Google Cloud フォルダ ID に置き換えます。
組織
特定の組織にリソースを作成するには、次のコマンドを実行します。
kubectl annotate namespace \ NAMESPACE cnrm.cloud.google.com/organization-id=ORGANIZATION_ID
以下を置き換えます。
NAMESPACEは、実際の Namespace 名に置き換えます。ORGANIZATION_ID: Google Cloud 組織 ID。
名前空間にアノテーションを付けると、Config Connector は対応するプロジェクト、フォルダ、または組織にリソースを作成します。Config Connector が Kubernetes Namespace を使用する方法の詳細については、Kubernetes Namespace と Google Cloud プロジェクトをご覧ください。
インストールを確認する
Config Connector は、すべてのコンポーネントを cnrm-system という名前の Namespace で実行します。Pod の準備ができていることを確認するには、次のコマンドを実行します。
kubectl wait -n cnrm-system \
--for=condition=Ready pod --all
Config Connector が正しくインストールされている場合、出力は次のようになります。
pod/cnrm-controller-manager-0 condition met
Config Connector をアンインストールする
Config Connector をアンインストールするには、次の手順を実行します。
Config Connector CRD とコントローラ コンポーネントを削除するには、次のコマンドを実行します。
kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \ --wait=trueConfig Connector Operator をアンインストールするには、次のコマンドを実行します。
kubectl delete -f operator-system/configconnector-operator.yaml --wait=true
Config Connector をアップグレードする
Config Connector Operator の最新バージョンをダウンロードしてインストールするには、次のコマンドを実行します。
gcloud storage cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
tar zxvf release-bundle.tar.gz
kubectl apply -f operator-system/configconnector-operator.yaml
Config Connector をダウングレードする
Config Connector の完全なダウングレードはサポートされていません。Config Connector オペレーターと CRD の両方をダウングレードするには、Config Connector をアンインストールしてから再インストールし、リソースを再適用する必要があります。
Config Connector バージョン 1.123.1 以降では、Namespace が指定されたモードを使用するインストールで、Operator のバージョンをロールバックできます。ロールバックするオペレータがある各 Namespace で、ConfigConnectorContext オブジェクトの spec.version フィールドを以前の Config Connector バージョンに設定します。
Config Connector コントローラは、最大 3 つのマイナー バージョンまでロールバックできます。特定のマイナー バージョンの最新パッチ バージョンに常にロールバックする必要があります。
オペレーター以外のインストールからアップグレードする
Config Connector バージョン 1.33.0 以降では、GKE アドオン、またはオペレーターを使用したインストールのみがサポートされます。
(すべての Config Connector リソースを保持して)オペレーターにアップグレードするには、CRD を除くすべての Config Connector システム コンポーネントを削除してから、オペレーターをインストールする必要があります。
次のコマンドを実行して、CRD 以外の Config Connector システム コンポーネントを削除します。
kubectl delete sts,deploy,po,svc,roles,clusterroles,clusterrolebindings --all-namespaces -l cnrm.cloud.google.com/system=true --wait=true kubectl delete validatingwebhookconfiguration abandon-on-uninstall.cnrm.cloud.google.com --ignore-not-found --wait=true kubectl delete validatingwebhookconfiguration validating-webhook.cnrm.cloud.google.com --ignore-not-found --wait=true kubectl delete mutatingwebhookconfiguration mutating-webhook.cnrm.cloud.google.com --ignore-not-found --wait=true
アドオンから手動インストールへの切り替え
アドオンとしてインストールすると、Config Connector のバージョンはインストールされている GKE バージョンに直接関連付けられます。
手動インストールでは、迅速な更新ができますが手動でアップグレードする必要があります。
インストール方法を切り替えてリソースを安全に保持するには、次の操作を行います。
ConfigConnectorオブジェクトまたはConfigConnectorContextオブジェクトを削除せずに、アドオンを無効にします。gcloud container clusters update CLUSTER_NAME --update-addons ConfigConnector=DISABLEDCLUSTER_NAMEは、Config Connector をインストールしたクラスタの名前に置き換えます。選択したバージョンの Operator を手動でインストールします。
潜在的な CRD 検証エラー(
KNV2009: Invalid value: "v1beta1": must appear in spec.versionsなど)を防ぐため、選択した手動オペレータのバージョンは、アドオンで使用していたバージョン以降である必要があります。GKE アドオンが特定の CRD を後の Config Connector バージョンにすでにアップグレードしている可能性があるため、手動オペレーターのバージョンをダウングレードするとエラー(KNV2009 など)が発生する可能性があります。
次のステップ
- Config Connector を使ってみる。
- Config Connector のベスト プラクティスについて学習する。