他の Kubernetes ディストリビューションへのインストール

このページでは、Google Cloud において Google Kubernetes Engine(GKE)以外の Kubernetes ディストリビューションに Config Connector をインストールする方法について説明します。たとえば、AWS の Anthos クラスタ(GKE on AWS)などです。

始める前に

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

Config Connector のインストール

Config Connector を別の Kubernetes 環境にインストールするには、Kubernetes クラスタを作成または特定した後、Identity and Access Management(IAM)サービス アカウントを作成してから、クラスタに Config Connector コンポーネントをインストールします。

ClusterRoleBinding を作成する

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

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

kubectl auth can-i create roles

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

出力が no の場合は、クラスタに ClusterRoleBinding を作成します。これにより、ロールを作成できます。

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

ACCOUNT_EMAIL は、Cloud 請求先アカウントへのログインに使用するメールアドレスに置き換えます。

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

ID を作成する

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

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

サービス アカウントを作成するには、次の手順を行います。

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

    gcloud ツールを使用してサービス アカウントを作成するには、次のコマンドを実行します。

     gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
    

    SERVICE_ACCOUNT_NAME をサービス アカウントの名前に置き換えます。

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

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

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/owner"
    

    以下を置き換えます。

    • PROJECT_ID は、Google Cloud プロジェクト ID に置き換えます。
    • SERVICE_ACCOUNT_NAME は、サービス アカウントの名前に置き換えます。
  3. サービス アカウントキーを作成し、その認証情報を key.json という名前のファイルにエクスポートします。

    gcloud iam service-accounts keys create --iam-account \
        SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com key.json
    

    以下を置き換えます。

    • SERVICE_ACCOUNT_NAME は、サービス アカウントの名前に置き換えます。
    • PROJECT_ID は、Google Cloud プロジェクト ID に置き換えます。

クラスタに認証情報を適用する

Config Connector を実行するクラスタに認証情報を適用するには、次の手順を実行します。

  1. cnrm-system 名前空間を作成します。

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

    kubectl create secret generic SECRET_NAME \
        --from-file key.json \
        --namespace cnrm-system
    

    SECRET_NAME を、Secret に付ける名前に置き換えます。

  3. システムから認証情報を削除します。

    rm key.json
    

Config Connector Operator のインストール

以下の手順で Config Connector Operator をインストールします。

  1. 最新の Config Connector Operator の 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
    

Config Connector を構成する

演算子を使用して Config Connector を構成するには、ConfigConnector CustomResource の構成ファイルを作成し、kubectl apply コマンドを使用してそれを適用します。

演算子を使用して 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
      # instance installed in your cluster
      name: configconnector.core.cnrm.cloud.google.com
    spec:
     mode: cluster
     credentialSecretName: SECRET_NAME
    

    SECRET_NAME は、前の手順で作成した Secret の名前で置き換えます。

  2. 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 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 のアンインストール

kubectl delete を使用して、コントローラ コンポーネントとともに Config Connector 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 がリソースを正常に調整できず、ログにエラー メッセージ The caller does not have permission, forbidden. が含まれている場合は、GKE クラスタまたはノードプールで Workload Identity が有効になっていない可能性があります。

調査するには、次の手順を行います。

  1. 次の Pod 構成を wi-test.yaml として保存します。
    apiVersion: v1
    kind: Pod
    metadata:
      name: workload-identity-test
      namespace: cnrm-system
    spec:
      containers:
      - image: google/cloud-sdk:slim
        name: workload-identity-test
        command: ["sleep","infinity"]
      serviceAccountName: cnrm-controller-manager
    
  2. GKE クラスタに Pod を作成します。
    kubectl apply -f wi-test.yaml
    
  3. Pod でインタラクティブ セッションを開きます。
    kubectl exec -it workload-identity-test \
      --namespace cnrm-system \
      -- /bin/bash
    
  4. ID を一覧表示します。
    gcloud auth list
    
  5. 表示された ID が、リソースにバインドされた Google サービス アカウントと一致していることを確認します。

    ID ではなく、Compute Engine のデフォルトのサービス アカウントが表示されている場合は、GKE クラスタまたはノードプール(あるいは、それらの両方)で Workload Identity が有効になっていません。

  6. インタラクティブ セッションを終了し、GKE クラスタから Pod を削除します。
    kubectl delete pod workload-identity-test \
    --namespace cnrm-system
    

次のステップ