gcloud 套用規格欄位

本頁說明可使用 Google Cloud CLI --config 旗標 (apply 指令) 和 --fleet-default-member-config 旗標 (enable 指令) 設定 Config Sync 的不同欄位,這些旗標位於 beta 發布管道。在 enable 指令的 alpha 版本中,我們不建議使用這個欄位結構定義,請改用 新的 API 結構定義

搭配這些 gcloud CLI 旗標使用的檔案格式,與 ConfigManagement 物件的格式類似。但兩者格式不同,無法互換。

Config Management 的通用設定

說明
spec.version Config Management 版本。如果您要為叢集設定 Config Management,預設版本是該叢集目前安裝的 Config Management 版本。否則,如要進行全機群設定,或目標叢集上沒有現有安裝項目,預設會使用最新版本

設定 Config Sync

說明
spec.cluster Config Sync 使用的叢集名稱 cluster-name-selector 註解ClusterSelector,可將設定僅套用至叢集子集。如果 Config Sync cluster-name-selector 註解或 ClusterSelector 使用的名稱與叢集的機群成員名稱不同,請設定這個欄位。
spec.upgrades (預覽版) Config Sync 的升級設定。 預設值也是唯一支援的值為 manual
spec.configSync.enabled 如果 true,則會安裝及管理 Config Sync。如果 false,則會解除安裝先前管理的 Config Sync,並忽略其餘的 .spec.configSync 設定。使用 gcloud CLI 429.0.0 以下版本時,必須提供這項資訊。適用於 gcloud CLI 430.0.0 以上版本。預設值:true
spec.configSync.sourceType Config Sync 應從中同步處理的來源類型。 接受 gitoci。預設值:git
spec.configSync.syncRepo 要做為資料來源的 Git 存放區、OCI 映像檔或 Helm 資訊套件網址。 如果沒有準備好的存放區,可以省略這個欄位。
spec.configSync.syncBranch 要用來當做同步處理來源的 Git 存放區分支版本。如果 .spec.configSync.sourceType 設為 oci,系統就會忽略這個欄位。這個欄位為選填欄位,預設值為 master。建議使用 spec.configSync.syncRev 欄位指定分支名稱。如果同時使用這兩個欄位,spec.configSync.syncRev 欄位的優先順序會高於 spec.configSync.syncBranch
spec.configSync.policyDir Git 存放區或 OCI 映像檔中,要同步處理的設定所在根目錄路徑。預設值:存放區的根目錄。
spec.configSync.syncWait 連續同步處理作業之間的間隔時間,單位為秒。預設值:15。
spec.configSync.syncRev 要同步處理的 Git 修訂版本 (標記或雜湊) 或分支版本。如果 .spec.configSync.sourceType 設為 oci,系統就會忽略這個欄位。這個欄位為選填,預設值為 HEAD。使用雜湊時,必須是完整雜湊,不得使用縮寫形式。
spec.configSync.preventDrift 如果 true,則啟用 Config Sync 許可網路鉤子,防止漂移,方法是拒絕將衝突變更推送至即時叢集。預設值:false。 無論這個欄位的值為何,Config Sync 一律會修正差異。
spec.configSync.stopSyncing 如果 true,則停止單一叢集的設定同步。預設為 false
spec.configSync.secretType 針對存取「.spec.configSync.syncRepo」設定的 Secret 類型。 如果選取 git 做為來源類型,值必須為 sshcookiefilegcenodegcpserviceaccounttokennone。如果選取 oci 做為來源類型,值必須為 gcenodegcpserviceaccountnone。 這個欄位的驗證會區分大小寫。必填。
spec.configSync.gcpServiceAccountEmail 用於註解 RootSync 或 RepoSync 控制器的 Kubernetes 服務帳戶。 Google Cloud 只有在 spec.configSync.secretTypegcpserviceaccount 時,才會使用這個欄位。
spec.configSync.metricsGcpServiceAccountEmail 已淘汰:如果已啟用 Workload Identity Federation for GKE,則匯出 Config Sync 指標時不需要服務帳戶。 Google Cloud 請改用 Kubernetes 服務帳戶
spec.configSync.sourceFormat 設為 unstructured 時,會設定非階層式存放區。預設值:hierarchy
spec.configSync.deploymentOverrides Config Sync 部署作業的資源覆寫設定清單。 這個欄位僅適用於容器不是根或命名空間協調器的 Config Sync 部署作業,例如 reconciler-manager。如要覆寫根或命名空間協調器,請改用 根同步或存放區同步欄位。選填。
spec.configSync.deploymentOverrides.name 要覆寫的 Config Sync 部署作業名稱。 值不得為空白。
spec.configSync.deploymentOverrides.namespace 要覆寫的 Config Sync 部署作業命名空間。 值不得為空白。
spec.configSync.deploymentOverrides.containers Config Sync 容器要求和限制的覆寫設定清單。選填。
spec.configSync.deploymentOverrides.containers.name 要覆寫的 Config Sync 容器名稱。 值不得為空白。
spec.configSync.deploymentOverrides.containers.cpuRequest 容器的 CPU 要求。使用 Kubernetes 中的 CPU 資源單位。選填。
spec.configSync.deploymentOverrides.containers.cpuLimit 容器的 CPU 上限。使用 Kubernetes 中的 CPU 資源單位。選填。
spec.configSync.deploymentOverrides.containers.memoryRequest 容器的記憶體要求。在 Kubernetes 中使用 記憶體資源單位。選填。
spec.configSync.deploymentOverrides.containers.memoryLimit 容器的記憶體限制。在 Kubernetes 中使用 記憶體資源單位。選填。

Git 存放區的 Proxy 設定

如果貴機構的安全政策規定必須透過 HTTPS Proxy 轉送流量,您可以使用 Proxy 的 URI 設定 Config Sync,與 Git 主機通訊。只有在使用 cookiefilenonetoken 授權類型時,才支援 Proxy。

說明
spec.configSync.httpsProxy 定義用於存取 Git 存放區的 HTTPS_PROXY 環境變數。例如:https://proxy.internal.business.co:443
HTTPS Proxy 只接受 https 或未經修飾的網址。 含有 http:// 的網址會遭到拒絕。
如果使用未經修飾的網址,請確保 Proxy 伺服器和 Git 主機之間的通訊安全無虞。

gcloud 套用規格範例

applySpecVersion: 1
spec:
  configSync:
    enabled: true
    sourceFormat: unstructured
    syncRepo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples
    syncBranch: main
    secretType: none
    policyDir: config-sync-quickstart/multirepo/root

範例 gcloud 套用規格,並覆寫部署資源

如要自訂 Config Sync 資源要求和限制,請在套用規格中新增 deploymentOverrides 欄位。舉例來說,下列 YAML 會覆寫 reconciler-manager 容器的 CPU 和記憶體限制:

applySpecVersion: 1
spec:
  configSync:
    enabled: true
    deploymentOverrides:
    - name: reconciler-manager
      namespace: config-management-system
      containers:
      - name: reconciler-manager
        cpuRequest: 50m
        cpuLimit: 100m
        memoryRequest: 256Mi
        memoryLimit: 512Mi