このページでは、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 は次の認証方法にも対応していますが、これらの方法は、前の表にある認証方法が使用できない場合にのみ推奨されます。
- cookiefile: すべての Git プロバイダでサポートされるとは限りません。OCI または Helm ではサポートされていません。
- Compute Engine のデフォルトのサービス アカウント(
gcenode): この方法は Workload Identity Federation for GKE が無効になっている場合にのみ機能するため、推奨されません。Git、OCI、Helm でサポートされています。 - Helm と OCI の Google サービス アカウント: サポートされていますが、Kubernetes サービス アカウントの方法のほうが少ない構成で済むため、推奨されません。
始める前に
Config Sync に信頼できる情報源に対する読み取り専用アクセス権を付与する前に、次のタスクを完了します。
Config Sync で同期する構成ファイルを保存するための OCI イメージまたは Helm リポジトリを、用意するか、アクセスできる状態にしてください。詳しくは、次のリソースをご覧ください。
- 信頼できる情報源に構成を追加する: 構成に関するコンセプト情報。
- GitOps のベスト プラクティス: リポジトリの整理と管理に関するヒントと一般的なベスト プラクティス。
- 非構造化リポジトリを使用する: 非構造化リポジトリの使用と整理に関する推奨事項。
GKE クラスタを作成するか、アクセスできるようにします。クラスタを作成する前に、Config Sync のクラスタ構成の要件と推奨事項を確認してください。
OCI イメージへのアクセス権を付与する
このセクションでは、サポートされている認証方法を使用して、Config Sync に OCI イメージの読み取り専用アクセス権を付与する方法について説明します。
Config Sync に対して認証を行うには、OCI イメージを Artifact Registry に保存する必要があります。
Kubernetes サービス アカウントを使用する
Kubernetes サービス アカウントで認証するには、クラスタで Workload Identity Federation for GKE または fleet Workload Identity Federation for GKE が有効になっている必要があります。
Kubernetes サービス アカウントを使用して Config Sync に OCI イメージの読み取り専用アクセス権を付与するには、次の操作を行います。
-
ポリシー バインディングの作成に必要な権限を取得するには、サービス アカウントに対するサービス アカウント管理者(
roles/iam.serviceAccountAdmin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。 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 のデフォルトのサービス アカウントを使用する
Workload Identity Federation for GKE を有効にしていない場合、Google サービス アカウントの代わりに、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: プロジェクト IDPROJECT_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 サービス アカウントを使用して認証するには、次の要件を満たす必要があります。
- リポジトリが Artifact Registry にある。
- クラスタで Workload Identity Federation for GKE またはフリート単位の Workload Identity Federation for GKE が有効になっている。
Kubernetes サービス アカウントを使用して、Config Sync に Helm リポジトリへの読み取り専用アクセス権を付与する手順は次のとおりです。
-
ポリシー バインディングの作成に必要な権限を取得するには、サービス アカウントに対するサービス アカウント管理者(
roles/iam.serviceAccountAdmin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。 Kubernetes サービス アカウントを使用して、Config Sync に Helm リポジトリへの読み取り専用アクセス権を付与するには、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 のデフォルトのサービス アカウントを使用する
Workload Identity Federation for GKE を有効にしていない場合、Google サービス アカウントの代わりに、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: プロジェクト IDPROJECT_NUMBER: プロジェクトの番号。
Config Sync をインストールするときに、認証タイプとして Compute Engine サービス アカウント(gcenode)を使用します。