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 指定代码库的格式。可选。 此字段的验证区分大小写。
|
源代码类型的配置
从 Anthos Config Management 1.12.0 版开始,Config Sync 支持从 OCI 映像同步(预览版)。 从 Anthos Config Management 1.13.0 版开始,Config Sync 支持从 Helm 代码库同步(预览版)。您可以配置 spec.sourceType
来指定源代码类型。
键 | 说明 |
---|---|
spec.sourceType |
sourceType 指定可靠来源的类型。必须是 git 、oci 或 helm 中的一个。可选。如果未指定,则会设置为 git 。此字段的验证区分大小写。只能指定 spec.git 和 spec.oci 中的一项,具体取决于源代码类型。 |
适用于 Git 代码库的配置
键 | 说明 |
---|---|
spec.git.auth |
为访问 Git 代码库而配置的 Secret 类型,必须为 ssh 、cookiefile 、gcenode 、gcpserviceaccount 、token 或 none 。此字段的验证区分大小写。必填。 |
spec.git.gcpServiceAccountEmail |
用于为 RootSync 或 RepoSync 控制器的 Kubernetes 服务帐号添加注释的 Google Cloud 服务帐号。仅在 spec.git.auth 为 gcpserviceaccount 时才会用到此字段。 |
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.noSSLVerify 1 |
noSSLVerify 指定是启用还是停用 SSL 证书验证。默认值:false。 如果 noSSLVerify 设置为 true,则指示 Git 跳过 SSL 证书验证。 Anthos Config Management 1.8.2 版及更高版本支持此字段。 |
spec.git.caCertSecretRef.name 1 |
包含证书授权机构 (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 代理接受 https 、http 和未修饰的网址,但出于安全考虑,不建议使用 http 。如果使用 http 或未修饰的网址,请确保代理服务器和 Git 主机之间的通信安全。此字段仅在 spec.git.auth 为 cookiefile 、none 或 token 时有效。 |
OCI 映像的配置
Config Sync 要求 OCI 层以 tar
或 tar+gzip
格式压缩。
Config Sync 无法识别其他格式(例如 tar+bz2
)。从有效的 REPO 切换到不支持格式的 OCI 映像将删减代管式资源而不会出现错误。
键 | 说明 |
---|---|
spec.oci.auth |
为访问 OCI 映像而配置的身份验证类型。必须为 gcenode 、gcpserviceaccount 或 none 。此字段的验证区分大小写。必填。 |
spec.oci.gcpServiceAccountEmail |
用于为 RootSync 或 RepoSync 控制器的 Kubernetes 服务帐号添加注释的 Google Cloud 服务帐号。仅在 spec.oci.auth 为 gcpserviceaccount 时才会用到此字段。 |
spec.oci.dir |
OCI 映像中指向您要同步的配置所在的根目录的绝对路径。默认值:映像的根目录 (/ )。 |
spec.oci.period |
连续两次同步操作之间的时长。默认值:15s 。 |
spec.oci.image |
要从中同步的 OCI 映像网址。必填。 |
Helm 代码库的配置
键 | 说明 |
---|---|
spec.helm.auth |
为访问 Helm 代码库而配置的身份验证类型。必须为 token 、gcenode 、gcpserviceaccount 或 none 。此字段的验证区分大小写。必填。 |
spec.helm.gcpServiceAccountEmail |
用于为 RootSync 或 RepoSync 控制器的 Kubernetes 服务帐号添加注释的 Google Cloud 服务帐号。仅在 spec.helm.auth 为 gcpserviceaccount 时才会用到此字段。 |
spec.helm.secretRef.name |
用于访问 Helm 代码库的 [Secret](doc-path/how-to/installing-kubectl#helm-access) 的名称。此字段仅在 spec.helm.auth 为 token 时使用。 |
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 - val3Anthos Config Management 1.13.1 及更高版本支持此字段。如需了解详情,请参阅 Helm 示例清单。 |
spec.helm.includeCRDs |
指定 Helm 模板是否应生成 CustomResourceDefinitions。默认值:false 。 |
spec.helm.period |
连续两次同步操作之间的时长。默认值:15s 。
如果指定了版本号,则不会重新拉取图表。预览版不支持将图表重新同步到最新版本。 |
用于替换根协调器或命名空间协调器的资源请求和限制的配置
对于 Autopilot 集群,Config Sync 会忽略资源限制替换值。只有当存在一个或多个资源请求值大于注释中声明的相应调整输出值,或当存在一个或多个资源请求值小于注释中声明的相应输入值时,系统才会应用资源请求替换值。如需了解详情,请参阅 Config Sync 的集群要求。
键 | 说明 |
---|---|
spec.override.resources 1 |
容器资源请求和限制替换值的列表。可选。 列表中的每一项均包含三个字段:
如果未提供资源请求或限制的替换值,则使用默认资源请求或限制值。 |
要提取的 Git 提交次数的配置
键 | 说明 |
---|---|
spec.override.gitSyncDepth 1 |
gitSyncDepth 让您可以替换要提取的 Git 提交次数。 不得小于 0。 如果此字段为 0,则 Config Sync 执行完整克隆;如果此字段大于 0,则会执行浅层克隆。 如果未提供此字段,Config Sync 会自动对其进行配置。 |
用于捕获资源级别状态的配置
键 | 说明 |
---|---|
spec.override.statusMode 1 |
statusMode 可让您启用或停用资源级状态捕获。默认值为 enabled 。如需停用资源级状态捕获,请将此字段设置为 disabled 。 |
用于替换协调超时的配置
键 | 说明 |
---|---|
spec.override.reconcileTimeout 1 |
reconcileTimeout 允许您替换放弃操作之前等待应用组中的资源进行协调所花费时间的阈值。一个提交作业中的所有资源可以位于多个应用组中,具体取决于依赖项。默认超时为 5m 。使用字符串指定此字段值,例如 30s 或 5m 。 |
渲染过程中的 shell 访问的配置
键 | 说明 |
---|---|
spec.override.enableShellInRendering 1 |
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 代码库应用于集群的资源的标识符(组、种类、命名空间、名称)列表。可选。 列表中的每个项均包含四个字段: group 、kind 、namespace 和 name 。 |
状态字段
键 | 说明 |
---|---|
status.observedGeneration |
上次由 ResourceGroup 控制器观察到并对其执行操作的 RootSync 或 RepoSync 资源的规范世代 (metadata.generation)。此值可以与 metadata.generation 进行比较,这是一个整数,会由 API 服务器根据规范变更进行更新。 |
status.conditions |
针对当前 ResourceGroup 所观察到的最新条件。此条件分为两种不同的类型:Reconciling 和 Stalled 。如果 Reconciling 类型的条件为 true,则表示当前 ResourceGroup 正在协调。如果 Stalled 类型的条件为 true,则表示协调已停滞。如果两者都为 false,则表示当前的 ResourceGroup 已经过协调,并且状态是最新的。 |
status.resourceStatuses |
“.spec.resources”中包含的资源的状态列表。每个列表项均包含资源的标识符(组、种类、命名空间或名称)和状态。状态可为 InProgress 、Current 、Failed 、Terminating 、NotFound 或 Unknown 之一。 |
可修改的字段
如果您使用 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 |
容器资源请求和限制替换值的列表。可选。 列表中的每一项均包含三个字段:
如果未提供资源请求或限制的替换值,则使用默认资源请求或限制值。 |
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 指定在渲染过程中是要启用还是停用 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