RootSync 和 RepoSync 字段

本页面介绍了您可能在 RootSyncRepoSync 对象中看到的不同字段。您可以在使用 kubectl 安装 Config Sync 时创建 RootSync 对象。如果您使用 Google Cloud Console 或 gcloud 命令行工具安装 Config Sync,则 Config Sync 会自动创建 RootSync 对象。您可以在配置命名空间代码库同步时创建 RepoSync 对象。

此外还包含有关 ResourceGroup 的详细信息。启用同步到多个代码库后,Config Sync 会自动创建此资源。如果您使用 Google Cloud Console 或 gcloud 命令行工具安装 1.7.0 版或更高版本的 Config Sync,则默认启用从多个代码库同步。

下图展示了 Config Sync 如何创建这些资源的概览:

运算符执行

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

协调器执行

RootSync 和 RepoSync 字段

RootSync 和 RepoSync CRD 使用相同的字段,不同的只有 spec.sourceFormat。对于 RepoSync CRD,spec.sourceFormat 必须为 unstructured,默认值也是 unstructured

适用于 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.sourceFormat Git 代码库的格式
针对 RootRoot 对象:可以是 unstructuredhierarchy。默认值:hierarchy
针对 RepoSync 对象:必须是 unstructured. 默认值:unstructured
spec.git.noSSLVerify noSSLVerify 指定是启用还是停用 SSL 证书验证。默认值:false。
如果 noSSLVerify 设置为 true,则指示 Git 跳过 SSL 证书验证。
Anthos Config Management 1.8.2 版及更高版本支持此字段。

Git 代码库的代理配置

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

说明
spec.git.proxy 代理网址,包含使用代理配置对 Git 代码库的访问权限的方案。例如 https://proxy.internal.business.co:443。此字段仅在 spec.git.authcookiefilenonetoken 时有效。

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

说明
spec.override.resources 容器资源限制替换值的列表。可选。
列表中的每一项均包含三个字段:
  • containerName:此字段可以是 git-syncreconciler
  • cpuLimit(可选)
  • memoryLimit(可选)

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

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

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

对象的状态

说明
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.commit 代码库中看到的最近一次提交的哈希值。
status.source.errors 读取代码库时发生的任何错误的列表。
status.sync.commit 最近同步到集群的提交的哈希值。即使提交由于错误而仅仅是部分同步,系统也会更新此值。
status.sync.errors 应用由 status.sync.commit 所指示的更改的资源时发生的任何错误的列表。
status.conditions RootSync 当前状态的最新可用观察结果。

ResourceGroup 字段

对于同步到集群的各 Git 代码库,所有资源的协调状态会汇总到一个名为 ResourceGroup 的资源中。Config Sync 会自动生成 ResourceGroup 自定义资源 (CR)。您不需要声明它,如果您修改 Config Sync 生成的 ResourceGroup CR,则可能会导致 Config Sync 出现意外故障。

规范与状态字段

说明
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 之一。

CR 示例

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

RootSync CR

以下 CR 是通过使用 kubectl describe rootsync root-sync -n config-management-system 生成的。

Name:         root-sync
Namespace:    config-management-system
Labels:       <none>
Annotations:  configmanagement.gke.io/managed-by-hub: true
              configmanagement.gke.io/update-time: 1623779339
API Version:  configsync.gke.io/v1beta1
Kind:         RootSync
Metadata:
  Creation Timestamp:  2021-06-15T17:49:35Z
  Generation:          1
  Managed Fields:
    API Version:  configsync.gke.io/v1beta1
    Fields Type:  FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .:
          f:configmanagement.gke.io/managed-by-hub:
          f:configmanagement.gke.io/update-time:
      f:spec:
        .:
        f:git:
          .:
          f:auth:
          f:branch:
          f:dir:
          f:period:
          f:repo:
          f:secretRef:
        f:sourceFormat:
    Manager:      Google-GKEHub-Controllers-ACM
    Operation:    Update
    Time:         2021-06-15T17:49:35Z
    API Version:  configsync.gke.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:status:
        .:
        f:conditions:
        f:observedGeneration:
        f:reconciler:
        f:source:
          .:
          f:gitStatus:
        f:sync:
    Manager:      reconciler-manager
    Operation:    Update
    Time:         2021-06-15T17:49:47Z
    API Version:  configsync.gke.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:status:
        f:source:
          f:commit:
          f:gitStatus:
            f:branch:
            f:dir:
            f:repo:
            f:revision:
        f:sync:
          f:commit:
          f:lastUpdate:
    Manager:         reconciler
    Operation:       Update
    Time:            2021-06-15T17:51:28Z
  Resource Version:  4850
  Self Link:         /apis/configsync.gke.io/v1beta1/namespaces/config-management-system/rootsyncs/root-sync
  UID:               3fd2ea19-7e16-4c69-a3a1-90b9d90677eb
Spec:
  Git:
    Auth:    none
    Branch:  init
    Dir:     config-sync-quickstart/multirepo/root
    Period:  0s
    Repo:    https://github.com/GoogleCloudPlatform/anthos-config-management-samples
    Secret Ref:
  Source Format:  unstructured
Status:
  Conditions:
    Last Transition Time:  2021-06-15T17:50:15Z
    Last Update Time:      2021-06-15T17:50:15Z
    Status:                False
    Type:                  Reconciling
  Observed Generation:     1
  Reconciler:              root-reconciler
  Source:
    Commit:  a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    Git Status:
      Branch:    init
      Dir:       quickstart/multirepo/root
      Repo:      https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      Revision:  HEAD
  Sync:
    Commit:       a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    Last Update:  2021-06-15T17:51:28Z
Events:           <none>

RepoSync CR

以下 CR 是通过使用 kubectl describe reposync repo-sync -n config-management-system 生成的。

Name:         repo-sync
Namespace:    gamestore
Labels:       app.kubernetes.io/managed-by=configmanagement.gke.io
              configsync.gke.io/declared-version=v1alpha1
Annotations:  config.k8s.io/owning-inventory: config-management-system_root-sync
              configmanagement.gke.io/cluster-name: cs-cluster-1
              configmanagement.gke.io/managed: enabled
              configmanagement.gke.io/source-path: quickstart/multirepo/root/reposync-gamestore.yaml
              configmanagement.gke.io/token: a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
              configsync.gke.io/declared-fields: {"f:spec":{}}
              configsync.gke.io/git-context:
                {"repo":"https://github.com/GoogleCloudPlatform/anthos-config-management-samples","branch":"init","rev":"HEAD"}
              configsync.gke.io/manager: :root
              configsync.gke.io/resource-id: configsync.gke.io_reposync_gamestore_repo-sync
API Version:  configsync.gke.io/v1beta1
Kind:         RepoSync
Metadata:
  Creation Timestamp:  2021-06-15T17:51:27Z
  Generation:          1
  Managed Fields:
    API Version:  configsync.gke.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          f:config.k8s.io/owning-inventory:
          f:configmanagement.gke.io/cluster-name:
          f:configmanagement.gke.io/managed:
          f:configmanagement.gke.io/source-path:
          f:configmanagement.gke.io/token:
          f:configsync.gke.io/declared-fields:
          f:configsync.gke.io/git-context:
          f:configsync.gke.io/manager:
          f:configsync.gke.io/resource-id:
        f:labels:
          f:app.kubernetes.io/managed-by:
          f:configsync.gke.io/declared-version:
      f:spec:
        f:git:
          f:auth:
          f:branch:
          f:dir:
          f:repo:
        f:sourceFormat:
    Manager:      configsync.gke.io
    Operation:    Apply
    Time:         2021-06-15T17:51:27Z
    API Version:  configsync.gke.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:status:
        f:source:
          f:commit:
          f:gitStatus:
            f:branch:
            f:dir:
            f:repo:
            f:revision:
        f:sync:
          f:commit:
          f:lastUpdate:
    Manager:      reconciler
    Operation:    Update
    Time:         2021-06-15T17:51:53Z
    API Version:  configsync.gke.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:spec:
        f:git:
          f:period:
          f:secretRef:
      f:status:
        .:
        f:conditions:
        f:observedGeneration:
        f:reconciler:
        f:source:
          .:
          f:gitStatus:
        f:sync:
    Manager:         reconciler-manager
    Operation:       Update
    Time:            2021-06-15T17:51:53Z
  Resource Version:  5216
  Self Link:         /apis/configsync.gke.io/v1beta1/namespaces/gamestore/reposyncs/repo-sync
  UID:               80d0a0d3-4ec6-4ccd-9a9d-4e2ddf0b7bbd
Spec:
  Git:
    Auth:         none
    Branch:       init
    Dir:          quickstart/multirepo/namespaces/gamestore
    Repo:         https://github.com/GoogleCloudPlatform/anthos-config-management-samples
  Source Format:  unstructured
Status:
  Conditions:
    Last Transition Time:  2021-06-15T17:51:56Z
    Last Update Time:      2021-06-15T17:51:56Z
    Status:                False
    Type:                  Reconciling
  Observed Generation:     1
  Reconciler:              ns-reconciler-gamestore
  Source:
    Commit:  a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    Git Status:
      Branch:    init
      Dir:       quickstart/multirepo/namespaces/gamestore
      Repo:      https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      Revision:  HEAD
  Sync:
    Commit:       a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    Last Update:  2021-06-15T17:51:53Z
Events:           <none>

后续步骤