使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

RootSync 和 RepoSync 字段

本页面提供了 RootSync、RepoSync 和 ResourceGroup 资源的参考文档。

您可以使用 RootSync 和 RepoSync 资源配置 Config Sync。

RootSync 对象会将 Config Sync 配置为监控指定的来源,并将该来源中的对象应用于集群。RootSync 可用于管理集群上具有集群管理员权限的任何资源。

RepoSync 对象会将 Config Sync 配置为监控指定的来源,并将来自该来源的对象应用于集群中的特定命名空间。RepoSync 对象用于管理该命名空间中具有自定义用户指定权限的任何命名空间级资源。

Config Sync 使用 ResourceGroup 资源来保存之前应用并且当前管理的对象的列表。Config Sync 会为集群上的每个 RootSync 和 RepoSync 创建 ResourceGroup 对象。这样,Config Sync 就可以删减从来源移除的对象,并汇总对象同步和协调状态。您无需创建自己的 ResourceGroup 对象,也不应修改由 Config Sync 管理的对象。

使用 RootSync 和 RepoSync 对象

如果您使用 Google Cloud 控制台或 Google Cloud CLI 安装了 Config Sync,Hub 服务将自动创建名为 root-sync 的 RootSync 对象。如需了解如何创建其他 RootSync 对象,请参阅控制根代码库中的根代码库

如果您使用 kubectl 安装了 Config Sync,请参阅在根代码库中控制根代码库,了解如何创建 RootSync。对象。

如需创建 RepoSync 对象,请参阅控制根代码库中的命名空间代码库控制命名空间代码库中的命名空间代码库

除了同步完全渲染的 Kubernetes 对象之外,您还可以配置 Config Sync 以将代码库与 Kustomize 配置或 Helm 图表一起使用

RootSync、RepoSync 和 ResourceGroup 对象的生命周期

安装 Config Sync 时,系统会安装 RootSync、RepoSync 和 ResourceGroup 自定义资源定义。

下图展示了 Config Sync 如何创建 RootSync、RepoSync 和 ResourceGroup 资源的概览:

运算符执行

创建完毕后,Reconciler Manager 会处理 Root Reconciler 和每个 Namespace Reconciler 进程的生命周期:

协调器执行

RootSync 和 RepoSync 字段

RootSync 和 RepoSync CRD 使用相同的字段,不同的只有 spec.sourceFormat

源代码格式的配置

说明
spec.sourceFormat sourceFormat 指定代码库的格式。可选。
此字段的验证区分大小写。
  • 对于 RootSync 对象,该值必须为 hierarchyunstructured 中的一个。如果未指定,默认值将为 hierarchy,但建议您将其指定为 unstructured
  • 对于 RepoSync 对象,该值必须为 unstructured,默认值也是 unstructured
如需了解详情,请参阅非结构化分层格式指南。

源代码类型的配置

从 Anthos Config Management 1.12.0 版开始,Config Sync 支持从 OCI 映像同步(预览版)。 从 Anthos Config Management 1.13.0 版开始,Config Sync 支持从 Helm 代码库同步(预览版)。您可以配置 spec.sourceType 来指定源代码类型。

说明
spec.sourceType sourceType 指定可靠来源的类型。必须是 gitocihelm 中的一个。可选。
如果未指定,则会设置为 git。此字段的验证区分大小写。
只能指定 spec.gitspec.oci 中的一项,具体取决于源代码类型。

适用于 Git 代码库的配置

说明
spec.git.auth 为访问 Git 代码库而配置的 Secret 类型,必须为 sshcookiefilegcenodegcpserviceaccounttokennone。此字段的验证区分大小写。必填。
spec.git.gcpServiceAccountEmail 用于为 RootSync 或 RepoSync 控制器的 Kubernetes 服务帐号添加注释的 Google Cloud 服务帐号。仅在 spec.git.authgcpserviceaccount 时才会用到此字段。
spec.git.branch 需与其同步的代码库的 Git 分支。默认值:master
spec.git.dir Git 代码库中指向您要同步的配置所在的根目录的绝对路径。默认值:代码库的根目录 (/)
spec.git.period 连续两次同步操作之间的时长。默认值:15s
spec.git.repo 需与其同步的 Git 代码库的网址。必填。
spec.git.revision 要签出的 Git 修订版本(标记、提交或哈希)。默认值:HEAD
spec.git.secretRef.name 用于连接到 Git 可靠来源的 Secret 的名称。
spec.git.noSSLVerify1 noSSLVerify 指定是启用还是停用 SSL 证书验证。默认值:false。
如果 noSSLVerify 设置为 true,则指示 Git 跳过 SSL 证书验证。
Anthos Config Management 1.8.2 版及更高版本支持此字段。
spec.git.caCertSecretRef.name1 包含证书授权机构 (CA) 证书的 Secret 的名称。如果提供此字段,则 Git 服务器必须使用由此 CA 颁发的证书。CA 证书必须存储在 Secret 中名为“cert”的密钥下。

Git 代码库的代理配置

如果您的组织的安全政策要求您通过 HTTP(S) 代理路由流量,则可以使用该代理的 URI 将 Config Sync 配置为与 Git 主机进行通信。

说明
spec.git.proxy 代理网址,包含使用代理配置对 Git 代码库的访问权限的方案。例如,https://proxy.internal.business.co:443
Git 代理接受 httpshttp 和未修饰的网址,但出于安全考虑,不建议使用 http
如果使用 http 或未修饰的网址,请确保代理服务器和 Git 主机之间的通信安全。
此字段仅在 spec.git.authcookiefilenonetoken 时有效。

OCI 映像的配置

Config Sync 要求 OCI 层以 tartar+gzip 格式压缩。

Config Sync 无法识别其他格式(例如 tar+bz2)。从有效的 REPO 切换到不支持格式的 OCI 映像将删减代管式资源而不会出现错误。

说明
spec.oci.auth 为访问 OCI 映像而配置的身份验证类型。必须为 gcenodegcpserviceaccountnone。此字段的验证区分大小写。必填。
spec.oci.gcpServiceAccountEmail 用于为 RootSync 或 RepoSync 控制器的 Kubernetes 服务帐号添加注释的 Google Cloud 服务帐号。仅在 spec.oci.authgcpserviceaccount 时才会用到此字段。
spec.oci.dir OCI 映像中指向您要同步的配置所在的根目录的绝对路径。默认值:映像的根目录 (/)。
spec.oci.period 连续两次同步操作之间的时长。默认值:15s
spec.oci.image 要从中同步的 OCI 映像网址。必填。

Helm 代码库的配置

说明
spec.helm.auth 为访问 Helm 代码库而配置的身份验证类型。必须为 tokengcenodegcpserviceaccountnone。此字段的验证区分大小写。必填。
spec.helm.gcpServiceAccountEmail 用于为 RootSync 或 RepoSync 控制器的 Kubernetes 服务帐号添加注释的 Google Cloud 服务帐号。仅在 spec.helm.authgcpserviceaccount 时才会用到此字段。
spec.helm.secretRef.name 用于访问 Helm 代码库的 [Secret](doc-path/how-to/installing-kubectl#helm-access) 的名称。此字段仅在 spec.helm.authtoken 时使用。
spec.helm.repo 需与其同步的 Helm 代码库的网址。必填。
spec.helm.chart Helm 图表的名称。必填。
spec.helm.version Helm 图表的版本号。默认值:最新版本。
spec.helm.releaseName Helm 版本的名称。
spec.helm.namespace Namespace 设置版本的目标命名空间。此字段仅适用于 RootSync 对象。它只会为模板中包含 namespace: {{ .Release.Namespace }} 的资源设置命名空间。spec.helm.namespace 中指定的值仅用作 Helm 模板中声明的 Release.Namespace 的值。 对于其模板中没有 namespace: {{ .Release.Namespace }} 的资源,将使用命名空间 default。默认:default
spec.helm.values 用于替换图表随附的默认值的值。以与默认 values.yaml 相同的方式设置值的格式。例如:

values:
  foo:
    bar: val1
  quz:
  - val2
  - val3
Anthos Config Management 1.13.1 及更高版本支持此字段。如需了解详情,请参阅 Helm 示例清单
spec.helm.includeCRDs 指定 Helm 模板是否应生成 CustomResourceDefinitions。默认值:false
spec.helm.period 连续两次同步操作之间的时长。默认值:15s。 如果指定了版本号,则不会重新拉取图表。预览版不支持将图表重新同步到最新版本。

用于替换根协调器或命名空间协调器的资源请求和限制的配置

对于 Autopilot 集群,Config Sync 会忽略资源限制替换值。只有当存在一个或多个资源请求值大于注释中声明的相应调整输出值,或当存在一个或多个资源请求值小于注释中声明的相应输入值时,系统才会应用资源请求替换值。如需了解详情,请参阅 Config Sync 的集群要求

说明
spec.override.resources1 容器资源请求和限制替换值的列表。可选。
列表中的每一项均包含三个字段:
  • containerName:此字段可以是 git-syncoci-synchelm-synchydration-controllerreconciler
  • cpuRequest(可选)
  • cpuLimit(可选)
  • memoryRequest(可选)
  • memoryLimit(可选)

如果未提供资源请求或限制的替换值,则使用默认资源请求或限制值。

要提取的 Git 提交次数的配置

说明
spec.override.gitSyncDepth1 gitSyncDepth 让您可以替换要提取的 Git 提交次数。
不得小于 0。
如果此字段为 0,则 Config Sync 执行完整克隆;如果此字段大于 0,则会执行浅层克隆。
如果未提供此字段,Config Sync 会自动对其进行配置。

用于捕获资源级别状态的配置

说明
spec.override.statusMode1 statusMode 可让您启用或停用资源级状态捕获。
默认值为 enabled
如需停用资源级状态捕获,请将此字段设置为 disabled

用于替换协调超时的配置

说明
spec.override.reconcileTimeout1 reconcileTimeout 允许您替换放弃操作之前等待应用组中的资源进行协调所花费时间的阈值。一个提交作业中的所有资源可以位于多个应用组中,具体取决于依赖项
默认超时为 5m
使用字符串指定此字段值,例如 30s5m

渲染过程中的 shell 访问的配置

说明
spec.override.enableShellInRendering1 enableShellInRendering 指定在渲染过程中是要启用还是停用 shell 访问。Kustomize 远程库需要 shell 访问。将此字段设置为 true 可在渲染过程中启用 shell 访问,并支持从公共代码库中拉取远程库。
默认值为 false

对象的状态

说明
status.observedGeneration 上次由 Config Sync 观察到并对其执行操作的 RootSync 或 RepoSync 资源的规范世代 (metadata.generation)。此值可以与 metadata.generation 进行比较,这是一个整数,会由 API 服务器根据规范变更进行更新。
status.reconciler 与同步资源相对应的协调器进程的名称。
status.source.gitStatus.repo 所提取的 Git 代码库网址。
status.source.gitStatus.revision 所提取的 Git 修订版本(标记、提交或哈希)。
status.source.gitStatus.branch 所提取的代码库的 Git 分支。
status.source.gitStatus.dir Git 代码库中指向包含要同步到的配置所在根目录的绝对路径。
status.source.ociStatus.image 所提取的 OCI 映像网址。
status.source.ociStatus.dir OCI 映像中指向您要同步的配置所在的根目录的绝对路径。
status.source.helmStatus.repo 所提取的 Helm 代码库网址。
status.source.helmStatus.version 所提取的 Helm 图表版本。
status.source.helmStatus.chart 所提取的 Helm 图表名称。
status.source.commit 从来源网址提取的最近提交或摘要的哈希值。
status.source.errors 读取代码库时发生的任何错误的列表。
status.rendering.gitStatus.repo 所渲染的 Git 代码库网址。
status.rendering.gitStatus.revision 所渲染的 Git 修订版本(标记、提交或哈希)。
status.rendering.gitStatus.branch 所渲染的代码库的 Git 分支。
status.rendering.gitStatus.dir Git 代码库中指向您要渲染的配置所在的根目录的绝对路径。
status.rendering.ociStatus.image 所渲染的 OCI 映像网址。
status.rendering.ociStatus.dir OCI 映像中指向您要渲染的配置所在的根目录的绝对路径。
status.rendering.helmStatus.repo 所渲染的 Helm 代码库网址。
status.rendering.helmStatus.version 所渲染的 Helm 图表版本。
status.rendering.helmStatus.chart 所渲染的 Helm 图表名称。
status.rendering.commit 最近渲染的提交或摘要的哈希值。即使提交或摘要由于错误而仅部分同步,系统也会更新此值。
status.rendering.errors 渲染由 status.rendering.commit 所指示的更改的资源时发生的任何错误的列表。
status.sync.gitStatus.repo 所同步的 Git 代码库的网址。
status.sync.gitStatus.revision 所同步的 Git 修订版本(标记、提交或哈希)。
status.sync.gitStatus.branch 所同步的代码库的 Git 分支。
status.sync.gitStatus.dir Git 代码库中指向包含要同步到的配置所在根目录的绝对路径。
status.sync.ociStatus.image 所同步的 OCI 映像网址。
status.sync.ociStatus.dir OCI 映像中指向您要同步的配置所在的根目录的绝对路径。
status.sync.helmStatus.repo 所同步的 Helm 代码库网址。
status.sync.helmStatus.version 所同步的 Helm 图表版本。
status.sync.helmStatus.chart 所同步的 Helm 图表名称。
status.sync.commit 最近同步到集群的提交或摘要的哈希值。即使提交或摘要由于错误而仅部分同步,系统也会更新此值。
status.sync.errors 应用由 status.sync.commit 所指示的更改的资源时发生的任何错误的列表。
status.conditions RootSync 当前状态的最新可用观察结果。

1 如果您使用 Google Cloud 控制台或 Google Cloud CLI 安装后创建了 RootSync 配置文件,则可以覆盖此字段。如需完整列表,请参阅可修改的字段

ResourceGroup 字段

规范与状态字段

说明
spec.resources 从 RepoSync CR 或 RootSync CR 中指定的 Git 代码库应用于集群的资源的标识符(组、种类、命名空间、名称)列表。可选。
列表中的每个项均包含四个字段:groupkindnamespacename

状态字段

说明
status.observedGeneration 上次由 ResourceGroup 控制器观察到并对其执行操作的 RootSync 或 RepoSync 资源的规范世代 (metadata.generation)。此值可以与 metadata.generation 进行比较,这是一个整数,会由 API 服务器根据规范变更进行更新。
status.conditions 针对当前 ResourceGroup 所观察到的最新条件。此条件分为两种不同的类型:ReconcilingStalled。如果 Reconciling 类型的条件为 true,则表示当前 ResourceGroup 正在协调。如果 Stalled 类型的条件为 true,则表示协调已停滞。如果两者都为 false,则表示当前的 ResourceGroup 已经过协调,并且状态是最新的。
status.resourceStatuses “.spec.resources”中包含的资源的状态列表。每个列表项均包含资源的标识符(组、种类、命名空间或名称)和状态。状态可为 InProgressCurrentFailedTerminatingNotFoundUnknown 之一。

可修改的字段

如果您使用 Google Cloud 控制台或 Google Cloud CLI 安装了 Config Sync,则可以创建和修改 RootSync 配置文件

如果您创建此文件,则可以将下表中的字段添加到 RootSync 对象。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 指定在渲染过程中是要启用还是停用 shell 访问。Kustomize 远程库需要 shell 访问。将此字段设置为 true 可在渲染过程中启用 shell 访问,并支持从公共代码库中拉取远程库。
默认值为 false

CR 示例

以下部分展示了 RootSync 和 Reposync CR 的示例。

RootSync CR

以下示例展示了一个 RootSync 对象。

# root-sync.yaml
apiVersion: configsync.gke.io/v1beta1
kind: RootSync
metadata:
  name: root-sync
  namespace: config-management-system
spec:
  sourceType: git
  sourceFormat: unstructured
  git:
    repo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples
    branch: init
    dir: config-sync-quickstart/multirepo/root
    auth: none
    period: 30s

RepoSync CR

以下示例展示了一个 RepoSync 对象。

# repo-sync.yaml
apiVersion: configsync.gke.io/v1beta1
kind: RepoSync
metadata:
  name: repo-sync
  namespace: gamestore
spec:
  sourceType: git
  sourceFormat: unstructured
  git:
    repo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples
    branch: init
    dir: config-sync-quickstart/multirepo/root
    auth: none
    period: 30s

后续步骤