Namespace が指定されたモードで Config Connector をインストールする


このページでは、Config Connector を Namespace が指定されたモードでインストールする方法について説明します。

Namespace が指定されたモードでのインストールは、Config Connector のインストールの拡張機能です。名前空間モードでは、それぞれ独自の Google Cloud ID を持つ複数のプロジェクトを管理できます。

始める前に

Config Connector を名前空間モードで実行するように構成する前に、Config Connector がインストールされていることを確認します。

名前空間モードで実行するように Config Connector を構成する

名前空間モードを有効にするには、次の手順を実行します。

  1. 次の 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
    
  2. 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 サービス アカウントにバインドします。

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

    gcloud iam service-accounts create NAMESPACE_GSA --project HOST_PROJECT_ID
    

    以下を置き換えます。

    • NAMESPACE_GSA は、Namespace にバインドされた Google サービス アカウント(GSA)の名前に置き換えます。
    • HOST_PROJECT_ID は、ホスト プロジェクトの ID で置き換えます。

    サービス アカウントの作成の詳細については、サービス アカウントの作成と管理をご覧ください。

  2. 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 で置き換えます。
  3. 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 で置き換えます。
  4. 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 を作成するには、次の手順を行います。

  1. 次の 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 で置き換えます。
  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 を実際のバケット名で置き換えます。

  4. 次のコマンドを実行して、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 を削除します。

  1. Namespace 内のすべての Config Connector リソースを検出するには、Config Connector の各カスタム リソース定義ごとに、すべてのリソースを一覧表示します。

    kubectl get gcp -n NAMESPACE
    

    NAMESPACE を実際のバケット名で置き換えます。

  2. すべての 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

次のステップ