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