Config Connector のインストール、アップグレード、アンインストール

このトピックでは、クラスターに Config Connector をインストールする方法について説明します。

始める前に

作業を始める前に、次のことを確認してください。

次のいずれかの方法で gcloud のデフォルトの設定を指定します。

  • gcloud init。デフォルトの設定全般を確認する場合に使用します。
  • gcloud config。プロジェクト ID、ゾーン、リージョンを個別に設定する場合に使用します。

gcloud init の使用

エラー One of [--zone, --region] must be supplied: Please specify location を受信した場合は、このセクションの内容を実施します。

  1. gcloud init を実行して、次の操作を行います。

    gcloud init

    リモート サーバーで SSH を使用している場合は、--console-only フラグを指定して、コマンドがブラウザを起動しないようにします。

    gcloud init --console-only
  2. 手順に従って gcloud を承認し、Google Cloud アカウントを使用します。
  3. 新しい構成を作成するか、既存の構成を選択します。
  4. Google Cloud プロジェクトを選択します。
  5. デフォルトの Compute Engine ゾーンを選択します。

gcloud config の使用

  • デフォルトのプロジェクト ID を設定します。
    gcloud config set project project-id
  • ゾーンクラスタを使用する場合は、デフォルトのコンピューティング ゾーンを設定します。
    gcloud config set compute/zone compute-zone
  • リージョン クラスタを使用する場合は、デフォルトのコンピューティング リージョンを設定します。
    gcloud config set compute/region compute-region
  • gcloud を最新バージョンに更新します。
    gcloud components update
  • Config Connector をインストールする Google Cloud プロジェクトを選択します。

権限

Config Connector をインストールすると、Google Cloud サービス アカウントに Identity and Access Management の権限が付与されます。権限の詳細については、Config Connector の IAM 権限をご覧ください。

インストール タイプの選択

Config Connector は、次のいずれかの方法でインストールできます。

  • Workload IdentityConfig Connector アドオンを使用する
  • GKE ワークロード ID を使用して手動でインストールする
  • Google Cloud Identityサービス アカウントを使用して手動でインストールする
  • Namespace が指定されたモードを使用して手動でインストールする。それぞれ独自の Google Cloud ID を持つ複数のプロジェクトを管理できます。

これらのインストール タイプの詳細については、インストール タイプの選択をご覧ください。

下のタブを選択して、インストール タイプを選択してください。

アドオン

Config Connector アドオンを使用するには、新しいクラスタを作成するか、既存のクラスタでそれを有効化します。

要件

Config Connector アドオンには、次のバージョンの GKE が必要です。

  • 1.15.11-gke.5 以上
  • 1.16.8-gke.8 以上
  • 1.17.4-gke.5 以上

また、クラスタで Workload IdentityKubernetes Engine Monitoring が有効になっている必要があります。

Config Connector アドオンを有効にして新しいクラスタを作成する

gcloud または Google Cloud Console を使用して GKE クラスタを作成できます。この手順では、Workload Identity プールKubernetes Engine Monitoring を使用して新しいクラスタを作成します。

Config Connector アドオンをインストールしたら、Google サービス アカウントと Namespace を構成します。

gcloud

gcloud, を使用してクラスタを作成するには、次のコマンドを実行します。

gcloud container clusters create [CLUSTER_NAME] \
  --release-channel [CHANNEL] --addons ConfigConnector \
  --workload-pool=[PROJECT_ID].svc.id.goog --enable-stackdriver-kubernetes

以下を置き換えます。

  • [CLUSTER_NAME] を GKE クラスタの名前に置き換えます。
  • [CHANNEL]GKE リリース チャンネルに置き換えます。rapidregular がサポートされています。
  • [PROJECT_ID] は、Google Cloud プロジェクト ID に置き換えます。

Cloud Console

Google Cloud Console でクラスタを作成するには、次の手順を行います。

  1. Cloud Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. [クラスタを追加] ボタンをクリックし、[クラスタを作成] をクリックします。[Kubernetes クラスタの作成] 画面が表示されます。

  3. クラスタの [名前] を指定します。

  4. サポートされている [マスターバージョン] を選択します。

  5. 必要に応じてクラスタを構成します。

  6. ナビゲーション パネルの [クラスタ] の下の [セキュリティ] をクリックします。

  7. [ワークロード ID を有効にする] チェックボックスをオンにします。

  8. 左側のナビゲーションパネルで、[クラスタ] の下の [機能] をクリックします。

  9. [Config Connector を有効にする] チェックボックスをオンにします。

  10. [作成] をクリック

このタスクが完了したら、Config Connector アドオンの構成に進みます。

既存のクラスタで Config Connector アドオンを有効にする

GKE クラスタで Config Connector アドオンを有効にするには、gcloud または Google Cloud Console を使用します。

始める前に
  • Config Connector アドオンの要件を満たすクラスタを用意します。
  • Config Connector をインストールするクラスターに、Workload Identity を設定します。
Config Connector アドオンを有効にします。

既存の GKE クラスタで Config Connector アドオンを有効にするには、gcloud または Google Cloud Console を使用します。

Config Connector アドオンをインストールしたら、Google サービス アカウントと Namespace を使用して Config Connector インストールを構成します。

gcloud

既存の GKE クラスタで gcloud を使用して Config Connector アドオンを有効にするには、次のコマンドを実行します。

gcloud container clusters update [CLUSTER_NAME] --update-addons ConfigConnector=ENABLED

[CLUSTER_NAME] を GKE クラスタの名前に置き換えます。

Cloud Console

  1. Cloud Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. Config Connector をインストールするクラスタを選択します。クラスタの詳細画面が表示されます。

  3. [編集] をクリックします。

  4. [アドオン] をクリックします。メニューが展開します。

  5. Config Connector で [有効] を選択します。

  6. [保存] をクリックしてクラスタを更新します。

このタスクが完了したら、Config Connector アドオンの構成に進みます。

Config Connector Operator のインストールを確認する

Config Connector アドオンは、Config Connector を構成する Kubernetes Operator をインストールします。Config Connector Operator のインストールのステータスを確認するには、次の kubectl コマンドを実行します。

gcloud

kubectl wait pod/configconnector-operator-0 -n configconnector-operator-system --for=condition=Initialized

Config Connector Operator が実行されている場合、コマンドは STATUSRunning の Podを 1 つだけ返します。

NAME                                        READY   STATUS    RESTARTS   AGE
configconnector-operator-0   1/1          Running    0                    2m

Cloud Console

Google Cloud Console から Config Connector Operator のステータスを確認するには、Google Kubernetes Engine の [ワークロード] メニューにアクセスします。

[ワークロード] メニューに移動

Config Connector Operator が正しくインストールされている場合は、configconnector-operator という名前のワークロードが [OK] と表示されます。

Config Connector を構成する

Config Connector アドオンのインストールを完了するには、ConfigConnector CustomResource の構成ファイルを作成し、kubectl apply コマンドを使用してそれを適用します。

  1. 次の 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 ConfigConnector instance installed in your cluster
      name: configconnector.core.cnrm.cloud.google.com
    
  2. kubectl apply を使用してクラスタに構成を適用します。

    kubectl apply -f configconnector.yaml
    

Config Connector Operator は、Google Cloud Resource CRD と Config Connector コンポーネントをクラスタにインストールします。

Config Connector で使用可能な Google Cloud リソースを表示するには、次のコマンドを実行します。

kubectl get crds --selector cnrm.cloud.google.com/managed-by-kcc=true

Namespace を監視するように Config Connector を構成する

このセクションの残りの部分では、Config Connector をインストールする Google Cloud プロジェクトをホスト プロジェクト([HOST_PROJECT_ID])と呼びます。リソースを管理するその他のプロジェクトは、マネージド プロジェクトまたは [MANAGED_PROJECT_ID] と呼ばれます。Config Connector を使用してクラスタと同じプロジェクトに Google Cloud リソースを作成する場合のみ、これらが同じプロジェクトになることがあります。

名前空間を作成する

Google Cloud リソースの整理に使用する名前空間がすでにある場合は、この手順をスキップできます。

kubectl を使用して、次のコマンドを実行して新しい Namespace を作成します。

kubectl create namespace [NAMESPACE]

[NAMESPACE] を構成している Namespace に置き換えます。

サービス アカウントを作成

次に、Identity and Access Management(IAM)サービス アカウントを作成し、Google サービス アカウント(GSA)と Kubernetes サービス アカウント(KSA)をバインドします。

  1. ホスト プロジェクトを使用するように gcloud を構成します。

    gcloud config set project [HOST_PROJECT_ID]
    

    [HOST_PROJECT_ID] をホスト プロジェクト ID に置き換えます。

  2. サービス アカウントを作成します。 新しいサービス アカウントを作成せずに、既存のサービス アカウントを使用することもできます。次のコマンドを実行して、gcloud を使用してサービス アカウントを作成します。

    gcloud iam service-accounts create [NAMESPACE_GSA]
    

    [NAMESPACE_GSA] を Namespace にバインドされた GSA に置き換えます。

  3. IAM サービス アカウントに、マネージド プロジェクトへの昇格した権限を付与します。

    Config Connector をインストールすると、Google Cloud サービス アカウントに Identity and Access Management の権限が付与されます。権限の詳細については、Config Connector の IAM 権限をご覧ください。

    gcloud config set project [MANAGED_PROJECT_ID]
    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] を Namespace にバインドされた GSA に置き換える
    • [HOST_PROJECT_ID] をホスト プロジェクトの ID に置き換える
ConfigConnectorContext を作成する

Google Cloud リソースを作成するには、目的の Namespace に ConfigConnectorContext CustomResource オブジェクトを追加して、Namespace を監視するように Config Connector を構成する必要があります。

  1. 次の YAML を 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:
      # The Google Service Account used to authenticate Google Cloud APIs in this Namespace
      googleServiceAccount: "[NAMESPACE_GSA]@[HOST_PROJECT_ID].iam.gserviceaccount.com"
    

    以下を置き換えます。

    • [NAMESPACE] を実際の Namespace に置き換える
    • [NAMESPACE_GSA] を Namespace にバインドされた GSA に置き換える
    • [HOST_PROJECT_ID] をホスト プロジェクトの ID に置き換える
  2. kubectl を使用してファイルをクラスタに適用します。

    kubectl apply -f configconnectorcontext.yaml
    
  3. 次のコマンドを実行して、Config Connector Operator が kubectl で Namespace の Kubernetes サービス アカウントを作成したことを確認します。

    kubectl get serviceaccount/cnrm-controller-manager-[NAMESPACE] -n cnrm-system
    

    [NAMESPACE] を実際の Namespace 名に置き換えます。

  4. 次のコマンドを実行して、kubectl を使用して Namespace で Config Connector コントローラ Pod が実行されていることを確認します。

    kubectl wait -n cnrm-system   --for=condition=Ready pod \
      -l cnrm.cloud.google.com/component=cnrm-controller-manager,cnrm.cloud.google.com/scoped-namespace=[NAMESPACE]
    

    [NAMESPACE] を実際の Namespace 名に置き換えます。

    Config Connector コントローラが実行中の場合、出力は cnrm-controller-manager-abcdefghijk-0 condition met のようになります。

ConfigConnector Kubernetes サービスア カウントを Google サービス アカウントにバインドする

IAM サービス アカウントと Config Connector Kubernetes サービス アカウントの間に IAM ポリシー バインディングを作成します。サービス アカウントをバインドするには、次の gcloud コマンドを実行します。

gcloud config set project [HOST_PROJECT_ID]
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"

以下を置き換えます。

  • [HOST_PROJECT_ID] をホスト プロジェクトの ID に置き換える
  • [NAMESPACE_GSA] を Namespace にバインドされた GSA に置き換える
  • [NAMESPACE] を実際の Namespace に置き換える

ワークロード ID

要件

クラスターに Config Connector をインストールする前に、以下の手順を実行します。

  • Config Connector がまだインストールされていない GKE クラスタを作成するか、特定します。
  • Config Connector をインストールするクラスターに、Workload Identity を設定します。 ワークロード ID のインストール時に作成した Google サービス アカウント(GSA)と Kubernetes サービス アカウント(KSA)を使用する場合は、それぞれの ID を使用します。

  • クラスタに接続するように kubectl を構成します

ID を作成する

ID の設定には以下の操作が必要です。

  • IAM サービスアカウントを作成します。
  • IAM サービス アカウントと Config Connector の Kubernetes サービス アカウント間のバインディングを作成します。
  1. gcloudcnrm-system サービス アカウントを作成します。

    gcloud iam service-accounts create cnrm-system
  2. IAM サービス アカウントに、プロジェクトへの昇格した権限を付与します。[PROJECT_ID] は、プロジェクト ID に置き換えます。

    gcloud projects add-iam-policy-binding [PROJECT_ID] \
    --member="serviceAccount:cnrm-system@[PROJECT_ID].iam.gserviceaccount.com" \
    --role="roles/owner"
    
  3. IAM サービス アカウントと Config Connector によって実行される事前定義された Kubernetes サービス アカウントとの間に IAM ポリシー バインディングを作成します。[PROJECT_ID] を実際のプロジェクト ID に置き換えます。

    gcloud iam service-accounts add-iam-policy-binding \
    cnrm-system@[PROJECT_ID].iam.gserviceaccount.com \
    --member="serviceAccount:[PROJECT_ID].svc.id.goog[cnrm-system/cnrm-controller-manager]" \
    --role="roles/iam.workloadIdentityUser"
    

Config Connector のデプロイ

  1. 最新のインストール バンドル tar ファイルをダウンロードします。

     gsutil cp gs://cnrm/latest/release-bundle.tar.gz release-bundle.tar.gz
  2. tar ファイルを解凍します。

    tar zxvf release-bundle.tar.gz
  3. コントローラのインストール マニフェストにプロジェクト ID を入力します。次のコマンドを実行する前に、[PROJECT_ID] をプロジェクト ID に置き換えます。

    sed -i.bak 's/${PROJECT_ID?}/[PROJECT_ID]/' install-bundle-workload-identity/0-cnrm-system.yaml
  4. マニフェストをクラスタに適用します。

    kubectl apply -f install-bundle-workload-identity/

インストールを確認する

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

Google Cloud Identity

要件

Config Connector をインストールする前に、次の手順を行います。

  1. GKE クラスタを作成する
  2. クラスタに接続するように kubectl を構成します

ClusterRoleBinding を作成する

Config Connector は、リソースを作成する前に、Kubernetes のロールを作成する権限を必要とします。

次のコマンドを実行して、ロールを作成できることを確認します。

kubectl auth can-i create roles

出力が yes の場合は、ID の作成に進みます。

出力が no の場合は、クラスタに ClusterRoleBinding を作成します。これにより、ロールを作成できます。[ACCOUNT_EMAIL] を、Google Cloud アカウントに関連付けられているメールアドレスに置き換えます。

kubectl create clusterrolebinding cluster-admin-binding \
--clusterrole cluster-admin \
--user [ACCOUNT_EMAIL]

出力に cluster-admin-binding created というフレーズが含まれている必要があります。含まれていない場合は、権限について Google Cloud アカウントまたは GKE クラスタの管理者にお問い合わせください。

ID を作成する

Config Connector クラスタには、他のリソースと通信するための Google Cloud ID が必要です。ID を設定するには、IAM サービス アカウントとサービス アカウント キーを作成します。その後、Config Connector を実行する各クラスタに、サービス アカウント キーの認証情報を Secret としてインポートします。

サービス アカウントの作成
  1. gcloudcnrm-system サービス アカウントを作成します。

    gcloud iam service-accounts create cnrm-system
  2. IAM サービス アカウントに、プロジェクトへの昇格した権限を付与します。[HOST_PROJECT_ID] は、プロジェクト ID に置き換えます。

    gcloud projects add-iam-policy-binding [HOST_PROJECT_ID] \
    --member serviceAccount:cnrm-system@[HOST_PROJECT_ID].iam.gserviceaccount.com \
    --role roles/owner
  3. サービス アカウントキーを作成し、その認証情報を key.json という名前のファイルにエクスポートします。[HOST_PROJECT_ID] をプロジェクト ID に置き換えて、次のコマンドを実行します。

    gcloud iam service-accounts keys create --iam-account \
    cnrm-system@[HOST_PROJECT_ID].iam.gserviceaccount.com key.json

クラスターへの認証情報の適用

Config Connector を実行する各クラスターに認証情報を適用します。

  1. cnrm-system Namespace を作成します。

    kubectl create namespace cnrm-system
  2. キーの認証情報を Secret としてインポートします。

    kubectl create secret generic gcp-key --from-file key.json --namespace cnrm-system
  3. システムから認証情報を削除します。

    rm key.json

Config Connector のインストール

Config Connector を手動でインストールする場合は、インストール用の tar ファイルをダウンロードして展開し、その内容をクラスタに適用します。

  1. 最新のインストール バンドル tar ファイルをダウンロードします。

    gsutil cp gs://cnrm/latest/release-bundle.tar.gz release-bundle.tar.gz
  2. tar ファイルを解凍します。

    tar zxvf release-bundle.tar.gz
  3. マニフェストをクラスタに適用します。

    kubectl apply -f install-bundle-gcp-identity/

Namespace が指定されたモード

Namespace が指定されたモードは、Workload Identity インストールの拡張機能です。Config Connector クラスターにバインドされた複数の Google サービス アカウントで複数のプロジェクトを管理できます。詳細については、インストール タイプの選択をご覧ください。

要件

クラスターに Config Connector をインストールする前に、以下の手順を実行します。

Config Connector をインストールする

  1. 最新の Config Connector の tarファイルをダウンロードします。

    gsutil cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
  2. tar ファイルを解凍します。

    tar zxvf release-bundle.tar.gz
  3. クラスタに Config Connector Operator をインストールします。

    kubectl apply -f operator-system/configconnector-operator.yaml 
  4. 演算子を使用して Config Connector をインストールするには、ConfigConnector CustomResource の構成ファイルを作成し、kubectl apply コマンドを使用してそれを適用します。

  5. 次の 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 ConfigConnector instance installed in your cluster
      name: configconnector.core.cnrm.cloud.google.com
    
  6. 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 を使用して、次のコマンドを実行して新しい Namespace を作成します。

kubectl create namespace [NAMESPACE]

[NAMESPACE] を構成している Namespace に置き換えます。

サービス アカウントを作成

次に、Identity and Access Management(IAM)サービス アカウントを作成し、Google サービス アカウント(GSA)と Kubernetes サービス アカウント(KSA)をバインドします。

  1. ホスト プロジェクトを使用するように gcloud を構成します。

    gcloud config set project [HOST_PROJECT_ID]
    

    [HOST_PROJECT_ID] をホスト プロジェクト ID に置き換えます。

  2. サービス アカウントを作成します。 新しいサービス アカウントを作成せずに、既存のサービス アカウントを使用することもできます。次のコマンドを実行して、gcloud を使用してサービス アカウントを作成します。

    gcloud iam service-accounts create [NAMESPACE_GSA]
    

    [NAMESPACE_GSA] を Namespace にバインドされた GSA に置き換えます。

  3. IAM サービス アカウントに、マネージド プロジェクトへの昇格した権限を付与します。

    Config Connector をインストールすると、Google Cloud サービス アカウントに Identity and Access Management の権限が付与されます。権限の詳細については、Config Connector の IAM 権限をご覧ください。

    gcloud config set project [MANAGED_PROJECT_ID]
    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] を Namespace にバインドされた GSA に置き換える
    • [HOST_PROJECT_ID] をホスト プロジェクトの ID に置き換える
ConfigConnectorContext を作成する

Google Cloud リソースを作成するには、目的の Namespace に ConfigConnectorContext CustomResource オブジェクトを追加して、Namespace を監視するように Config Connector を構成する必要があります。

  1. 次の YAML を 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:
      # The Google Service Account used to authenticate Google Cloud APIs in this Namespace
      googleServiceAccount: "[NAMESPACE_GSA]@[HOST_PROJECT_ID].iam.gserviceaccount.com"
    

    以下を置き換えます。

    • [NAMESPACE] を実際の Namespace に置き換える
    • [NAMESPACE_GSA] を Namespace にバインドされた GSA に置き換える
    • [HOST_PROJECT_ID] をホスト プロジェクトの ID に置き換える
  2. kubectl を使用してファイルをクラスタに適用します。

    kubectl apply -f configconnectorcontext.yaml
    
  3. 次のコマンドを実行して、Config Connector Operator が kubectl で Namespace の Kubernetes サービス アカウントを作成したことを確認します。

    kubectl get serviceaccount/cnrm-controller-manager-[NAMESPACE] -n cnrm-system
    

    [NAMESPACE] を実際の Namespace 名に置き換えます。

  4. 次のコマンドを実行して、kubectl を使用して Namespace で Config Connector コントローラ Pod が実行されていることを確認します。

    kubectl wait -n cnrm-system   --for=condition=Ready pod \
      -l cnrm.cloud.google.com/component=cnrm-controller-manager,cnrm.cloud.google.com/scoped-namespace=[NAMESPACE]
    

    [NAMESPACE] を実際の Namespace 名に置き換えます。

    Config Connector コントローラが実行中の場合、出力は cnrm-controller-manager-abcdefghijk-0 condition met のようになります。

ConfigConnector Kubernetes サービスア カウントを Google サービス アカウントにバインドする

IAM サービス アカウントと Config Connector Kubernetes サービス アカウントの間に IAM ポリシー バインディングを作成します。サービス アカウントをバインドするには、次の gcloud コマンドを実行します。

gcloud config set project [HOST_PROJECT_ID]
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"

以下を置き換えます。

  • [HOST_PROJECT_ID] をホスト プロジェクトの ID に置き換える
  • [NAMESPACE_GSA] を Namespace にバインドされた GSA に置き換える
  • [NAMESPACE] を実際の Namespace に置き換える

リソースの作成場所を指定する

Config Connector では、プロジェクト、フォルダ、組織別にリソースを編成できます。これは、Google Cloud でリソースを編成するのと同じ方法です。

Config Connector を使用してリソースを作成する前に、リソースを作成する場所を構成する必要があります。Config Connector は、リソースを作成する場所を決定するために、リソース構成または名前空間のアノテーションを使用します。詳細については、リソースの整理をご覧ください。

プロジェクト、フォルダ、または組織にリソースを作成できます。タブを選択して、Config Connector がリソースを作成する場所を選びます。

プロジェクト

特定のプロジェクトにリソースを作成するには、次のコマンドを実行します。[NAMESPACE_NAME] は Namespace 名に、[PROJECT_ID] は Google Cloud プロジェクト ID に置き換えます。

kubectl annotate namespace \
[NAMESPACE_NAME] cnrm.cloud.google.com/project-id=[PROJECT_ID]

フォルダ

特定のフォルダにリソースを作成するには、次のコマンドを実行します。[NAMESPACE_NAME] は Namespace 名に、[FOLDER_ID] は Google Cloud フォルダ ID に置き換えます。

kubectl annotate namespace \
[NAMESPACE_NAME] cnrm.cloud.google.com/folder-id=[FOLDER_ID]

組織

特定の組織にリソースを作成するには、次のコマンドを実行します。[NAMESPACE_NAME] は Namespace に、[ORGANIZATION_ID] は Google Cloud 組織 ID に置き換えます。

kubectl annotate namespace \
[NAMESPACE_NAME] cnrm.cloud.google.com/organization-id=[ORGANIZATION_ID]

Namespace にアノテーションを付けると、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

デフォルトの名前空間の設定

デフォルトのコンテキストの Namespace を変更することで、コマンドを簡略化し、各「kubectl」コマンドに「--namespace」を追加しないようにすることができます。これを行うには、次のコマンドを実行します。[NAMESPACE_NAME] は実際の Namespace 名に置き換えてください。
kubectl config set-context --current --namespace [NAMESPACE_NAME]

トラブルシューティング

Google Cloud Identity インストールのトラブルシューティング

cnrm-controller-manager-X のような名前の Pod のステータスが Running でない場合は、既存の Secret(kubectl --namespace=cnrm-system delete secret gcp-key)を削除してから、Google Cloud サービス アカウントの認証情報を再インストールします。その後、手順に従って Secret を作成します。次に、コントローラ Podを削除して再起動をトリガーします。

kubectl delete pod --namespace=cnrm-system cnrm-controller-manager-0

Config Connector アドオンのインストールに関するトラブルシューティング

Config Connector アドオンを正常に有効にできない場合は、Node version 1.15.x-gke.x s unsupported というエラー メッセージが表示されます。このエラーを解決するには、GKE クラスタのバージョンが、必要な要件を満たしていることを確認します。

クラスタの有効なバージョンをすべて取得するには、次のコマンドを実行します。[ZONE] は、目的のコンピューティング ゾーンに置き換えます。

gcloud container get-server-config --format "yaml(validMasterVersions)" --zone [ZONE]

必要な要件を満たすバージョンをリストから選択します。

このエラー メッセージは、Workload IdentityKubernetes Engine Monitoring が無効の場合にも表示されます。エラーを解決するには、これらの機能を有効にしてください。

リソース調整の権限に関するトラブルシューティング

Google Cloud でリソースを正常に調整できない場合、ログには「The caller does not have permission, forbidden.」というエラー メッセージが出力されます。このエラーを修正するには、次の操作を行います。

  1. cloud-sdk イメージでシェルを開きます。

     kubectl run -it \
       --image google/cloud-sdk:slim \
       --serviceaccount cnrm-controller-manager \
       --namespace cnrm-system \
       workload-identity-test
    
  2. ID を一覧表示します。

    gcloud auth list
    
  3. 表示された ID が、リソースにバインドされた Google サービス アカウントと一致していることを確認します。

  4. Google サービス アカウントに、GCP リソースの管理に必要なロールがあることを確認します。

Config Connector のアップグレード

アドオンのアップグレード

Config Connector アドオンは、GKE クラスタで新しいマイナー リリースにアップグレードされます。クラスタ内のリソースは保持されます。

Namespace が指定されたモードのアップグレード

Config Connector Operator の最新バージョンをダウンロードしてインストールします。

gsutil 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 をアップグレードすると、システム コンポーネントのアップグレード中に、クラスタ内の Google Cloud リソースの状態が保持されます。

Config Connector をアップグレードするには、次を行います。

  1. システム コンポーネントを削除します。
    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
  2. 手動インストール手順を実行します

Config Connector のアンインストール

アドオンのアンインストール

kubectl delete を使用して、Google Cloud Resource CRD とコントローラ コンポーネントを削除します。

kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com --wait=true

ConfigConnector アドオンを無効にする

クラスタで ConfigConnector アドオンを無効にするには、gcloud または Google Cloud Console を使用します。

gcloud

gcloud で Config Connector アドオンを無効にするには、次のコマンドを実行します。

gcloud container clusters update [CLUSTER_NAME] --update-addons ConfigConnector=DISABLED

[CLUSTER_NAME] は、Config Connector アドオンがインストールされているクラスタの名前に置き換えます。

Cloud Console

Google Cloud Console から Config Connector アドオンを無効にするには、次の手順を実行します。

  1. Google Cloud Console の [Google Kubernetes Engine Clusters] ページに移動し、更新するクラスタを選択します。

    Google Kubernetes Engine のメニューに移動

  2. [編集] をクリックします。[クラスタの編集] 画面が表示されます。

  3. [アドオン] をクリックします。

  4. [Config Connector] を選択し、[Disabled] を選択します。

  5. [保存] をクリックしてクラスタを更新します。

Namespace が指定されたモードのアンインストール

kubectl delete を使用して、Google Cloud Resource CRD とコントローラ コンポーネントを削除します。

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 アーティファクトをクラスタから削除します。

kubectl delete sts,po -n cnrm-system -l cnrm.cloud.google.com/component=cnrm-controller-manager --wait=true
kubectl delete crds -l cnrm.cloud.google.com/system=true --wait=true
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
kubectl delete namespace cnrm-system --ignore-not-found --wait=true

次のステップ

Config Connector を使ってみる