使用 kubectl 命令配置 Config Sync

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

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

创建和修改 RootSync 配置文件

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

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

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

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

在对您在下一部分中创建的 YAML 文件进行任何更改之前,请先熟悉下表。下表列出了您可以修改和添加的字段。如果您修改此表中未列出的字段,Config Sync 会自动将更改还原为您上次在 Cloud de Confiance 控制台或 Google Cloud CLI 中配置 Config Sync 时设置的值。

说明
spec.helm Helm 代码库配置的所有字段。
spec.override 用于替换默认配置的所有字段。
spec.git.noSSLVerify 指定是为 Git 启用还是停用 SSL 证书验证。默认值为 false
spec.git.caCertSecretRef.name 包含 Git 代码库的证书授权机构 (CA) 证书的 Secret 的名称。
spec.oci.caCertSecretRef.name 包含 OCI 代码库的证书授权机构 (CA) 证书的 Secret 的名称。

创建文件

如需创建和修改 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 目录进行同步。

后续步骤