Config Sync に OCI イメージまたは Helm リポジトリへのアクセス権を付与する

このページでは、OCI イメージまたは Helm リポジトリに対して Config Sync を認証する方法について説明します。Config Sync が構成を読み取り、クラスタに適用して同期を維持するには、信頼できる情報源に対する読み取り専用アクセス権が必要です。

認証方法を選択する

使用する認証方法は、ソースタイプでサポートされているものによって異なります。

次の表に、Config Sync で使用できる認証方法の概要を示します。

メソッド サポート対象のソース 説明 制限事項
認証なし Git、OCI、Helm 追加の設定は必要ありません。 信頼できる情報源が公開されている場合にのみ機能します。
SSH 認証鍵ペア Git ほとんどの Git プロバイダでサポートされています。 鍵の管理が必要です。OCI または Helm ではサポートされていません。
token Git、Helm ほとんどの Git プロバイダでサポートされています。組織で SSH 認証鍵の使用が許可されていない場合に適した代替手段です。Helm のユーザー名とパスワードをサポートします。 トークン管理が必要です。トークンには有効期限があります。オフライン コンバージョン インポートではサポートされていません。
Kubernetes サービス アカウント OCI、Helm IAM を使用して、Artifact Registry へのアクセス権を Kubernetes サービス アカウントに直接付与します。クラスタで Workload Identity Federation for GKE が有効になっている必要があります。 Git ではサポートされていません。
Google サービス アカウント Git IAM を使用するため、認証情報を Kubernetes Secret に保存する必要がありません。Secure Source Manager と Cloud Source Repositories に推奨されます。クラスタで Workload Identity Federation for GKE が有効になっている必要があります。 クラスタに Config Sync をインストールする前後に構成が必要です。Secure Source Manager または Cloud Source Repositories の外部でホストされているリポジトリではサポートされていません。
GitHub アプリ Git GitHub との直接統合。きめ細かい権限を付与できます。 GitHub でホストされているリポジトリでのみサポートされます。Config Sync バージョン 1.19.1 以降でのみサポートされます。

Config Sync は次の認証方法もサポートしていますが、これらの方法は、前の表に記載されているオプションのいずれも使用できない場合にのみ推奨されます。

  • cookiefile: は、すべての Git プロバイダでサポートされているとは限りません。OCI または Helm ではサポートされていません。
  • Compute Engine のデフォルトのサービス アカウント(gcenode): この方法は、Workload Identity Federation for GKE が無効になっている場合にのみ機能するため、おすすめしません。Git、OCI、Helm でサポートされています。
  • Helm と OCI の Google サービス アカウント: サポートされていますが、Kubernetes サービス アカウントの方法では構成が少なくて済むため、おすすめしません。

始める前に

Config Sync に信頼できる情報源に対する読み取り専用アクセス権を付与する前に、次のタスクを完了します。

OCI イメージへのアクセス権を付与する

このセクションでは、サポートされている認証方法を使用して、Config Sync に OCI イメージの読み取り専用アクセス権を付与する方法について説明します。

Config Sync に対して認証を行うには、OCI イメージを Artifact Registry に保存する必要があります。

Kubernetes サービス アカウントを使用する

Kubernetes サービス アカウントで認証するには、クラスタで Workload Identity Federation for GKE または フリートの Workload Identity Federation for GKE が有効になっている必要があります。

Kubernetes サービス アカウントを使用して Config Sync に OCI イメージの読み取り専用アクセス権を付与するには、次の操作を行います。

  1. ポリシー バインディングの作成に必要な権限を取得するには、サービス アカウントに対するサービス アカウント管理者 roles/iam.serviceAccountAdmin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

    必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

  2. Workload Identity Federation for GKE プールを使用して、Artifact Registry 読み取り(roles/artifactregistry.reader)IAM ロールを Kubernetes サービス アカウントに付与します。

    • 同じ権限がプロジェクト内のすべてのリポジトリに適用される場合は、プロジェクト全体の権限を付与します。

      gcloud projects add-iam-policy-binding PROJECT_ID \
           --role=roles/artifactregistry.reader \
           --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
      
    • サービス アカウントに、プロジェクト内のリポジトリごとに異なるレベルのアクセス権を付与する場合は、リポジトリ固有の権限を付与します。

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
          --location=LOCATION \
          --role=roles/artifactregistry.reader \
          --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
          --project=PROJECT_ID
      

    次のように置き換えます。

    • PROJECT_ID: プロジェクト ID。
    • FLEET_HOST_PROJECT_ID: Workload Identity Federation for GKE を使用している場合、この値はプロジェクト ID と同じです。フリートの Workload Identity Federation for GKE を使用している場合、この値はクラスタが登録されているフリートのプロジェクト ID です。
    • REPOSITORY: イメージの ID。
    • LOCATION: リポジトリのリージョンまたはマルチリージョン ロケーション。

Config Sync をインストールするときに、認証タイプとして Kubernetes サービス アカウント(k8sserviceaccount)を使用します。

Compute Engine のデフォルトのサービス アカウントを使用する

Google サービス アカウントの代わりに、Workload Identity Federation for GKE が有効になっていない場合は、Compute Engine サービス アカウントを使用して認証できます。

Compute Engine のデフォルトのサービス アカウントを使用して、リポジトリへの読み取り専用アクセス権を Config Sync に付与するには、Compute Engine サービス アカウントに Artifact Registry への読み取り権限を付与します。

gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/artifactregistry.reader

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • PROJECT_NUMBER: プロジェクトの番号。

Config Sync をインストールするときに、認証タイプとして Compute Engine サービス アカウント(gcenode)を使用します。

Helm リポジトリへのアクセス権を付与する

このセクションでは、リポジトリに保存されている Helm チャートに対する読み取り専用アクセス権を Config Sync に付与する方法について説明します。

トークンを使用する

トークンを使用して Config Sync に Helm リポジトリへの読み取り専用アクセス権を付与するには、Helm リポジトリのユーザー名とパスワードを使用する Secret を作成します。

kubectl create secret generic SECRET_NAME \
      --namespace=config-management-system \
      --from-literal=username=USERNAME \
      --from-literal=password=PASSWORD

次のように置き換えます。

  • SECRET_NAME: Secret の名前。
  • USERNAME: Helm リポジトリのユーザー名。
  • PASSWORD: Helm リポジトリのパスワード。

Config Sync をインストールするときに、認証タイプとしてトークン(token)を使用します。また、spec.helm.secretRef.name フィールドで Secret 名を指定する必要があります。

Kubernetes サービス アカウントを使用する

Kubernetes サービス アカウントを使用して認証するには、次の要件を満たす必要があります。

Kubernetes サービス アカウントを使用して、Helm リポジトリへの読み取り専用アクセス権を Config Sync に付与する手順は次のとおりです。

  1. ポリシー バインディングの作成に必要な権限を取得するには、サービス アカウントに対するサービス アカウント管理者 roles/iam.serviceAccountAdmin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

    必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

  2. Kubernetes サービス アカウントを使用して、Helm リポジトリへの読み取り専用アクセス権を Config Sync に付与するには、Workload Identity Federation for GKE プールを含む Kubernetes サービス アカウントに Artifact Registry 読み取り(roles/artifactregistry.reader)IAM ロールを付与します。

    • 同じ権限がプロジェクト内のすべてのリポジトリに適用される場合は、プロジェクト全体の権限を付与します。

      gcloud projects add-iam-policy-binding PROJECT_ID \
           --role=roles/artifactregistry.reader \
           --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
      
    • サービス アカウントに、プロジェクト内のリポジトリごとに異なるレベルのアクセス権を付与する場合は、リポジトリ固有の権限を付与します。

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
          --location=LOCATION \
          --role=roles/artifactregistry.reader \
          --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
          --project=PROJECT_ID
      

    次のように置き換えます。

    • PROJECT_ID: プロジェクト ID。
    • FLEET_HOST_PROJECT_ID: Workload Identity Federation for GKE を使用している場合、この値はプロジェクト ID と同じです。フリートの Workload Identity Federation for GKE を使用している場合、この値はクラスタが登録されているフリートのプロジェクト ID です。
    • REPOSITORY: イメージの ID。
    • LOCATION: リポジトリのリージョンまたはマルチリージョン ロケーション。

Config Sync をインストールするときに、認証タイプとして Kubernetes サービス アカウント(k8sserviceaccount)を使用します。

Compute Engine のデフォルトのサービス アカウントを使用する

Google サービス アカウントの代わりに、Workload Identity Federation for GKE が有効になっていない場合は、Compute Engine サービス アカウントを使用して認証できます。

Compute Engine のデフォルトのサービス アカウントを使用して、リポジトリへの読み取り専用アクセス権を Config Sync に付与するには、Compute Engine サービス アカウントに Artifact Registry への読み取り権限を付与します。

gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/artifactregistry.reader

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • PROJECT_NUMBER: プロジェクトの番号。

Config Sync をインストールするときに、認証タイプとして Compute Engine サービス アカウント(gcenode)を使用します。

次のステップ