gcloud apply spec 字段

本页面介绍了您可以使用哪些不同的字段,通过 Google Cloud CLI apply 命令中的 --config 标志和 beta 发布轨道中 enable 命令中的 --fleet-default-member-config 标志来配置 Config Sync。在 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 时,配置 non-hierarchical repo。默认值:hierarchy
spec.configSync.deploymentOverrides Config Sync 部署的资源替换配置列表。 该字段仅适用于容器不是根协调器或命名空间协调器的 Config Sync 部署,例如 reconciler-manager。如果您必须替换根协调器或命名空间协调器,请改用 rootsync 或 reposync 字段。可选。
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 代码库的代理配置

如果您的组织的安全政策要求您通过 HTTPS 代理路由流量,则可以使用该代理的 URI 将 Config Sync 配置为与 Git 主机进行通信。仅当使用 cookiefilenonetoken 授权类型时才支持代理。

说明
spec.configSync.httpsProxy 定义用于访问 Git 代码库的 HTTPS_PROXY 环境变量。例如 https://proxy.internal.business.co:443
HTTPS 代理仅接受 https 或未修饰的网址。包含 http:// 的网址会被拒绝。
如果使用未修饰的网址,请确保代理服务器和 Git 主机之间的通信安全。

gcloud apply spec 的示例

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 apply spec 示例

如果您想自定义 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