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


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

準備

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

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 としてインポートします。

次の手順では、Google Cloud サービス アカウントの認証情報のキーを Kubernetes クラスタにインポートします。通常、サービス アカウントの認証情報をクラスタに直接インポートすることは、特にサードパーティ ワークロードやカスタム ワークロードを同じクラスタで実行している場合、安全でないとみなされます。このアプローチでは、ノードからクラスタへの昇格のループホールを利用して、この Secret を介して Google Cloud サービス アカウントの権限を借用できます。GKE クラスタを使用している場合は、Workload Identity を使用することをおすすめします。

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

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

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

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

     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

次のステップ