本頁說明如何使用 kubectl
指令設定 Config Sync,前提是您已使用 Google Cloud 控制台或 Google Cloud CLI 安裝 Config Sync。
雖然您可以使用主控台或 CLI 進行許多設定變更,但如要覆寫部分 Config Sync 預設值、控管 SSL 憑證驗證,以及使用憑證授權單位,則需要使用 kubectl
指令。
建立及編輯 RootSync 設定檔
如要使用 kubectl
指令設定 Config Sync,請建立 YAML 檔案來編輯 RootSync 物件。
使用 Google Cloud 控制台或 Google Cloud CLI 安裝 Config Sync 時,系統會自動建立名為 root-sync
的 RootSync 物件。這個物件包含 Config Sync 的最新設定資訊。每當您在 Google Cloud 控制台或 Google Cloud CLI 中進行變更時,root-sync
就會更新。
瞭解如何使用 kubectl
編輯欄位
如要對 root-sync
進行進階變更,請使用 kubectl
指令,變更 Google Cloud 控制台或 Google Cloud CLI 不支援的欄位。如要使用 kubectl
指令直接建立及更新 RootSync 或 RepoSync 物件,請參閱「RootSync 和 RepoSync 欄位」。
在對下一節中建立的 YAML 檔案進行任何變更之前,請先熟悉下表。下表列出可編輯及新增的欄位。如果您編輯的欄位不在下表中,Config Sync 會自動將變更還原為您上次在 Google Cloud 控制台或 Google Cloud CLI 中設定 Config Sync 時的值。
鍵 | 說明 |
---|---|
spec.git.noSSLVerify |
noSSLVerify :指定是否要啟用或停用 SSL 憑證驗證。預設值:false 。如果 noSSLVerify 設為 true ,Git 會略過 SSL 憑證驗證。 |
spec.git.caCertSecretRef.name |
包含憑證授權單位 (CA) 憑證的 Secret 名稱。如果提供這個欄位,Git 伺服器就必須使用這個 CA 核發的憑證。CA 憑證必須儲存在 Secret 中,且金鑰名稱為 `cert`。 |
spec.override.resources |
容器資源要求和限制覆寫清單。選填。 清單中的每個項目都包含三個欄位:
如果未提供資源要求或限制的覆寫值,系統會使用要求或限制的預設資源值。 |
spec.override.gitSyncDepth |
gitSyncDepth 可讓您覆寫要擷取的 Git 提交次數。不得小於 0。 如果這個欄位為 0,Config Sync 會執行完整複製;如果這個欄位大於 0,則會執行淺層複製。 如果未提供這個欄位,Config Sync 會自動設定。 |
spec.override.statusMode |
statusMode 可讓您啟用或停用擷取資源層級狀態。預設值為 enabled 。如要停用擷取資源層級狀態,請將這個欄位設為 disabled 。
|
spec.override.reconcileTimeout |
reconcileTimeout 可讓您覆寫等候資源的時間長度門檻,以便在放棄前,先在套用群組中協調。根據依附元件,提交中的所有資源可以位於多個套用群組中。預設逾時時間為 5m 。使用字串指定這個欄位值,例如 30s 、5m 。
|
spec.override.enableShellInRendering |
enableShellInRendering 指定是否要在算繪程序中啟用或停用殼層存取權。Kustomize 遠端基礎需要殼層存取權。將這個欄位設為 true ,即可在算繪程序中啟用殼層存取權,並支援從公開存放區提取遠端基底。預設值為 false 。 |
建立檔案
如要建立及編輯 root-sync
的設定檔,請完成下列步驟:
為確保您擷取的是正確叢集的設定資訊,請設定
kubectl
指令列存取權:gcloud container clusters get-credentials CLUSTER_NAME \ --zone ZONE \ --project PROJECT_ID
更改下列內容:
CLUSTER_NAME
:要變更的 Config Sync 設定所在的叢集名稱ZONE
:您在其中建立叢集的可用區PROJECT_ID
:您的專案 ID
將 Config Sync 建立的 RootSync 物件中的設定資訊複製到 YAML 檔案:
kubectl get rootsync root-sync -n config-management-system -o yaml > FILE_NAME.yaml
將
FILE_NAME
替換為設定檔的名稱。開啟您建立的 YAML 檔案,並進行必要的設定變更。舉例來說,如要覆寫
git-sync
容器的記憶體限制,請新增以下以粗體顯示的欄位:apiVersion: v1 items: - apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: annotations: configmanagement.gke.io/managed-by-hub: "true" configmanagement.gke.io/update-time: "1644945169" creationTimestamp: "2022-02-15T17:12:52Z" generation: 1 name: root-sync namespace: config-management-system resourceVersion: "211980457" uid: aa30a94b-2825-4590-ad30-5af848403502 spec: git: auth: none branch: main dir: /quickstart/config-sync period: 15s repo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples revision: HEAD secretRef: {} override: resources: - containerName: "git-sync" memoryLimit: "400Mi" sourceFormat: unstructured # Remainder of RootSync omitted
將變更套用至 YAML 檔案:
kubectl apply -f FILE_NAME.yaml
如要確認 Config Sync 已套用變更,請查看 RootSync 物件:
kubectl describe rootsync root-sync -n config-management-system
如要確認變更是否導致任何錯誤,請使用
nomos status
指令:nomos status
設定憑證授權單位
如果伺服器設定的憑證來自尚未受信任的憑證授權單位 (CA),您可以設定 Config Sync 使用 CA 憑證,驗證與伺服器的 HTTPS 連線。這項功能支援 Git、Helm 或 OCI 伺服器。CA 憑證必須包含完整的 SSL 憑證 (根/中繼/葉)。如果伺服器已使用信任的 CA,或您並非透過 HTTPS 連線,可以略過這個步驟,並將 caCertSecretRef
設為未設定。
RootSync
擷取用於核發 Git 伺服器憑證的 CA 憑證,並儲存到檔案中。
如果是
RootSync
物件,則必須在config-management-system
命名空間中建立 Secret。例如:kubectl create secret generic ROOT_CA_CERT_SECRET_NAME
--namespace=config-management-system
--from-file=cert=/path/to/CA_CERT_FILE設定
RootSync
物件時,請將RootSync
物件中的caCertSecretRef.name
欄位值設為 ROOT_CA_CERT_SECRET_NAME。
RepoSync
擷取用於核發 Git 伺服器憑證的 CA 憑證,並儲存到檔案中。
如果是
RepoSync
物件,Secret 必須與 RepoSync 建立在相同的命名空間。例如:kubectl create secret generic NAMESPACE_CA_CERT_SECRET_NAME
--namespace=REPO_SYNC_NAMESPACE
--from-file=cert=/path/to/CA_CERT_FILE設定
RepoSync
時,請將RepoSync
物件中的caCertSecretRef.name
欄位值設為 NAMESPACE_CA_CERT_SECRET_NAME。
移除 RootSync 物件
如要刪除 root-sync
,請執行下列指令:
kubectl delete -f FILE_NAME
請將 FILE_NAME
替換為 RootSync 設定檔的名稱,例如:root-sync.yaml
。
刪除 RootSync 或 RepoSync 物件不會清除 Config Sync 註解和標籤。如要清除任何受管理資源,請從空白的 Git 目錄同步處理。
後續步驟
- 進一步瞭解 RootSync 和 RepoSync 欄位。
- 瞭解如何監控 RootSync 和 RepoSync 物件。