使用 kubectl 命令配置 Config Sync

本页面介绍如何在使用 Google Cloud 控制台或 Google Cloud CLI 安装 Config Sync 后,使用 kubectl 命令配置 Config Sync。

虽然您可以使用控制台或 CLI 进行许多配置更改,但您仍需要使用 kubectl 命令来替换一些 Config Sync 默认配置以控制 SSL 证书验证以及使用证书授权机构。

创建和修改 RootSync 配置文件

如需使用 kubectl 命令配置 Config Sync,请创建 YAML 文件以修改 RootSync 对象

当您使用 Google Cloud 控制台或 Google Cloud CLI 安装 Config Sync 时,Config Sync 会自动创建一个名为 root-sync 的 RootSync 对象。此对象包含 Config Sync 的最新配置信息。每当您在 Google Cloud 控制台或 Google Cloud CLI 中进行更改时,root-sync 都会进行更新。

了解您可以使用 kubectl 修改的字段

您可以对 Google Cloud 控制台或 Google Cloud CLI 中不支持的字段使用 kubectl 命令对 root-sync 进行高级更改。如果您要直接使用 kubectl 命令创建 RootSync 或 RepoSync 对象,然后进行更新,请参阅 RootSync 和 RepoSync 字段

在对您在下一部分中创建的 YAML 文件进行任何更改之前,请先熟悉下表。下表列出了您可以修改和添加的字段。如果您修改此表中未列出的字段,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

创建文件

如需创建和修改 root-sync 的配置文件,请完成以下步骤:

  1. 如需确保您检索的是正确集群的配置信息,请配置 kubectl 命令行访问权限:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --zone ZONE \
        --project PROJECT_ID
    

    请替换以下内容:

    • CLUSTER_NAME:包含要更改的 Config Sync 配置的集群的名称
    • ZONE:您在其中创建集群的可用区
    • PROJECT_ID:您的项目 ID
  2. 将配置信息从 Config Sync 创建的 RootSync 对象复制到 YAML 文件中:

    kubectl get rootsync root-sync -n config-management-system -o yaml >
    FILE_NAME.yaml
    

    FILE_NAME 替换为您的配置文件的名称。

  3. 打开您创建的 YAML 文件并进行所需的配置更改。例如,如需替换 git-sync 容器的内存限制,请添加以下的粗体字段:

    apiVersion: v1
    items:
    - apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
    annotations:
      configmanagement.gke.io/managed-by-hub: "true"
      configmanagement.gke.io/update-time: "1644945169"
    creationTimestamp: "2022-02-15T17:12:52Z"
    generation: 1
    name: root-sync
    namespace: config-management-system
    resourceVersion: "211980457"
    uid: aa30a94b-2825-4590-ad30-5af848403502
    spec:
    git:
      auth: none
      branch: main
      dir: /quickstart/config-sync
      period: 15s
      repo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      revision: HEAD
      secretRef: {}
    override:
      resources:
      - containerName: "git-sync"
        memoryLimit: "400Mi"
    sourceFormat: unstructured
    # Remainder of RootSync omitted
    
  4. 将更改应用于 YAML 文件:

    kubectl apply -f FILE_NAME.yaml
    
  5. 如需验证 Config Sync 是否已应用您的更改,请查看 RootSync 对象:

    kubectl describe rootsync root-sync -n config-management-system
    
  6. 如需确认您的更改没有引入任何错误,请使用 nomos status 命令:

    nomos status
    

配置证书授权机构

对于使用非可信证书授权机构 (CA) 颁发的证书进行配置的服务器,Config Sync 可以配置为使用 CA 证书来验证与服务器的 HTTPS 连接。Git、Helm 和 OCI 服务器都支持此操作。CA 证书必须包含完整的 SSL 证书(根证书/中间证书/叶证书)。如果您的服务器已在使用可信 CA,或者没有通过 HTTPS 进行连接,则可以跳过此步骤并且无需设置 caCertSecretRef

RootSync

  1. 提取用于为 Git 服务器颁发证书的 CA 证书,并将其保存到一个文件中。

  2. 对于 RootSync 对象,必须在 config-management-system 命名空间中创建 Secret。例如:

    kubectl create secret generic ROOT_CA_CERT_SECRET_NAME 
    --namespace=config-management-system
    --from-file=cert=/path/to/CA_CERT_FILE

  3. 配置 RootSync 对象时,将 RootSync 对象中 caCertSecretRef.name 字段的值设置为 ROOT_CA_CERT_SECRET_NAME

RepoSync

  1. 提取用于为 Git 服务器颁发证书的 CA 证书,并将其保存到一个文件中。

  2. 对于 RepoSync 对象,必须在 RepoSync 所在的命名空间中创建 Secret。例如:

    kubectl create secret generic NAMESPACE_CA_CERT_SECRET_NAME 
    --namespace=REPO_SYNC_NAMESPACE
    --from-file=cert=/path/to/CA_CERT_FILE

  3. 配置 RepoSync 时,将 RepoSync 对象中 caCertSecretRef.name 字段的值设置为 NAMESPACE_CA_CERT_SECRET_NAME

移除 RootSync 对象

如需删除 root-sync,请运行以下命令:

kubectl delete -f FILE_NAME

FILE_NAME 替换为您的 RootSync 配置文件的名称。例如 root-sync.yaml

删除 RootSync 或 RepoSync 对象不会清理 Config Sync 注解和标签。如需清理任何托管式资源,请从空 Git 目录进行同步。

后续步骤