使用 kubectl 指令設定 Config Sync

本頁說明如何使用 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 容器資源要求和限制覆寫清單。選填。
清單中的每個項目都包含三個欄位:
  • containerName:這個欄位可以是 git-syncoci-synchydration-controllerreconciler
  • cpuRequest (選填)
  • cpuLimit (選填)
  • memoryRequest (選填)
  • memoryLimit (選填)

如果未提供資源要求或限制的覆寫值,系統會使用要求或限制的預設資源值。
spec.override.gitSyncDepth gitSyncDepth 可讓您覆寫要擷取的 Git 提交次數。
不得小於 0。
如果這個欄位為 0,Config Sync 會執行完整複製;如果這個欄位大於 0,則會執行淺層複製。
如果未提供這個欄位,Config Sync 會自動設定。
spec.override.statusMode statusMode 可讓您啟用或停用擷取資源層級狀態。
預設值為 enabled
如要停用擷取資源層級狀態,請將這個欄位設為 disabled
spec.override.reconcileTimeout reconcileTimeout 可讓您覆寫等候資源的時間長度門檻,以便在放棄前,先在套用群組中協調。根據依附元件,提交中的所有資源可以位於多個套用群組中。
預設逾時時間為 5m
使用字串指定這個欄位值,例如 30s5m
spec.override.enableShellInRendering enableShellInRendering 指定是否要在算繪程序中啟用或停用殼層存取權。Kustomize 遠端基礎需要殼層存取權。將這個欄位設為 true,即可在算繪程序中啟用殼層存取權,並支援從公開存放區提取遠端基底。
預設值為 false

建立檔案

如要建立及編輯 root-sync 的設定檔,請完成下列步驟:

  1. 為確保您擷取的是正確叢集的設定資訊,請設定 kubectl 指令列存取權:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --zone ZONE \
        --project PROJECT_ID
    

    更改下列內容:

    • CLUSTER_NAME:要變更的 Config Sync 設定所在的叢集名稱
    • ZONE:您在其中建立叢集的可用區
    • PROJECT_ID:您的專案 ID
  2. 將 Config Sync 建立的 RootSync 物件中的設定資訊複製到 YAML 檔案:

    kubectl get rootsync root-sync -n config-management-system -o yaml >
    FILE_NAME.yaml
    

    FILE_NAME 替換為設定檔的名稱。

  3. 開啟您建立的 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
    
  4. 將變更套用至 YAML 檔案:

    kubectl apply -f FILE_NAME.yaml
    
  5. 如要確認 Config Sync 已套用變更,請查看 RootSync 物件:

    kubectl describe rootsync root-sync -n config-management-system
    
  6. 如要確認變更是否導致任何錯誤,請使用 nomos status 指令:

    nomos status
    

設定憑證授權單位

如果伺服器設定的憑證來自尚未受信任的憑證授權單位 (CA),您可以設定 Config Sync 使用 CA 憑證,驗證與伺服器的 HTTPS 連線。這項功能支援 Git、Helm 或 OCI 伺服器。CA 憑證必須包含完整的 SSL 憑證 (根/中繼/葉)。如果伺服器已使用信任的 CA,或您並非透過 HTTPS 連線,可以略過這個步驟,並將 caCertSecretRef 設為未設定。

RootSync

  1. 擷取用於核發 Git 伺服器憑證的 CA 憑證,並儲存到檔案中。

  2. 如果是 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

  3. 設定 RootSync 物件時,請將 RootSync 物件中的 caCertSecretRef.name 欄位值設為 ROOT_CA_CERT_SECRET_NAME

RepoSync

  1. 擷取用於核發 Git 伺服器憑證的 CA 憑證,並儲存到檔案中。

  2. 如果是 RepoSync 物件,Secret 必須與 RepoSync 建立在相同的命名空間。例如:

    kubectl create secret generic NAMESPACE_CA_CERT_SECRET_NAME 
    --namespace=REPO_SYNC_NAMESPACE
    --from-file=cert=/path/to/CA_CERT_FILE

  3. 設定 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 目錄同步處理。

後續步驟