本頁說明如何向 OCI 映像檔或 Helm 存放區驗證 Config Sync。Config Sync 需要可靠資料來源的唯讀權限,才能讀取設定、將設定套用至叢集,並保持同步。
選擇驗證方式
使用的驗證方法取決於來源類型支援的方法。
下表列出可與 Config Sync 搭配使用的驗證方法:
| 方法 | 支援的來源 | 說明 | 限制 |
|---|---|---|---|
| 無驗證 | Git、OCI、Helm | 不需要額外設定。 | 只有在資訊來源公開時才能運作。 |
| 安全殼層金鑰組 | Git | 大多數 Git 供應商都支援這項功能。 | 需要金鑰管理。不支援 OCI 或 Helm。 |
| 權杖 | Git、OCI、Helm | 大多數 Git 供應商都支援這項功能。如果貴機構不允許使用安全殼層金鑰,可以選擇使用權杖。支援 OCI 和 Helm 的使用者名稱和密碼。 | 必須啟用權杖管理。權杖可能會過期。 |
| Kubernetes 服務帳戶 | OCI、Helm | 使用 IAM 直接授予 Kubernetes 服務帳戶 Artifact Registry 存取權。您必須在叢集上啟用 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 對可靠資料來源的唯讀存取權前,請先完成下列工作:
準備或存取 OCI 映像檔或 Helm 存放區,其中儲存您要 Config Sync 同步處理的設定檔。詳情請參閱下列資源:
- 將設定新增至單一事實來源:設定的概念資訊。
- GitOps 最佳做法:提供整理及管理存放區的訣竅和一般最佳做法。
- 使用非結構化存放區:使用及整理非結構化存放區的建議。
建立或存取 GKE 叢集。建立叢集前,請詳閱 Config Sync 的叢集設定規定和建議做法。
授予 OCI 映像檔的存取權
本節說明如何使用支援的驗證方法,授予 Config Sync 對 OCI 映像檔的唯讀存取權。
您必須將 OCI 映像檔儲存在 Artifact Registry 中,才能向 Config Sync 進行驗證。
使用權杖
如要使用權杖授予 Config Sync 對 OCI 存放區的唯讀存取權,請建立使用 OCI 存放區使用者名稱和密碼的 Secret:
kubectl create secret generic SECRET_NAME \
--namespace=config-management-system \
--from-literal=username=USERNAME \
--from-literal=password=PASSWORD
更改下列內容:
SECRET_NAME:Secret 名稱。USERNAME:您的 OCI 存放區使用者名稱。PASSWORD:您的 OCI 存放區密碼。
安裝 Config Sync 時,請使用權杖 (token) 做為驗證類型。您也必須在 spec.oci.secretRef.name 欄位中指定 Secret 名稱。
使用 Kubernetes 服務帳戶
如要使用 Kubernetes 服務帳戶進行驗證,叢集必須啟用 Workload Identity Federation for GKE 或 fleet Workload Identity Federation for GKE。
如要使用 Kubernetes 服務帳戶授予 Config Sync 對 OCI 映像檔的唯讀存取權,請完成下列步驟:
-
如要取得建立政策繫結所需的權限,請要求管理員授予服務帳戶的服務帳戶管理員 (
roles/iam.serviceAccountAdmin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。 將 Artifact Registry 讀者 (
roles/artifactregistry.reader) IAM 角色授予 Kubernetes 服務帳戶,其中包含 GKE 集區的 Workload Identity Federation for GKE:如果專案中的所有存放區都適用相同權限,請授予專案層級權限。
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 預設服務帳戶
如果未啟用 GKE 的 Workload Identity Federation,您可以使用 Compute Engine 服務帳戶進行驗證,而不必使用 Google 服務帳戶。
如要使用 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 存放區的存取權
本節說明如何授予 Config Sync 存放區中儲存的 Helm 資訊套件唯讀存取權。
使用權杖
如要使用權杖授予 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 存放區的唯讀存取權,請將 Artifact Registry Reader (
roles/artifactregistry.reader) IAM 角色授予 Kubernetes 服務帳戶,該服務帳戶包含 GKE Workload Identity Federation 集區:如果專案中的所有存放區都適用相同權限,請授予專案層級權限。
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 預設服務帳戶
如果未啟用 GKE 的 Workload Identity Federation,您可以使用 Compute Engine 服務帳戶進行驗證,而不必使用 Google 服務帳戶。
如要使用 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) 做為驗證類型。