このページでは、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 に信頼できる情報源に対する読み取り専用アクセス権を付与する前に、次のタスクを完了します。
Config Sync で同期する構成ファイルを保存する OCI イメージまたは Helm リポジトリを準備するか、このリポジトリにアクセスできるようにします。詳しくは、次のリソースをご覧ください。
- 信頼できる情報源に構成を追加する: 構成に関するコンセプト情報。
- GitOps のベスト プラクティス: リポジトリの整理と管理に関するヒントと一般的なベスト プラクティス。
- 非構造化リポジトリを使用する: 非構造化リポジトリの使用と整理に関する推奨事項。
GKE クラスタを作成するか、アクセス権を取得します。クラスタを作成する前に、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 イメージの読み取り専用アクセス権を付与するには、次の操作を行います。
-
ポリシー バインディングの作成に必要な権限を取得するには、サービス アカウントに対するサービス アカウント管理者 (
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 のデフォルトのサービス アカウントを使用する
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
: プロジェクト 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 サービス アカウントを使用して、Helm リポジトリへの読み取り専用アクセス権を Config Sync に付与する手順は次のとおりです。
-
ポリシー バインディングの作成に必要な権限を取得するには、サービス アカウントに対するサービス アカウント管理者 (
roles/iam.serviceAccountAdmin
)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。 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
: プロジェクト IDPROJECT_NUMBER
: プロジェクトの番号。
Config Sync をインストールするときに、認証タイプとして Compute Engine サービス アカウント(gcenode
)を使用します。