请参阅此示例,使用一个或多个其他受信任 CA 证书置备 v1beta1 集群。

v1beta1 示例:具有其他受信任 CA 证书的集群

集群 v1beta1 API 提供了 trust 变量,用于为集群置备一个或多个其他受信任的 CA 证书。
表 1. v1beta1 API Trust 变量
字段 描述
trust 部分标记。不接受任何数据。
additionalTrustedCAs 部分标记。为每个受信任的 CA 包含一组具有 name 的证书。
name Kubernetes 密钥中 data 映射字段的用户定义名称,该字段包含采用双 base64 编码的 PEM 格式的 CA 证书。
注: 需要使用双 base64 编码。如果内容未采用双 base6 编码,则无法处理生成的 PEM 文件。
下例演示了如何将包含 CA 证书的 Kubernetes 密钥添加到 v1beta1 API 集群规范。
#cluster-with-trusted-private-reg-cert.yaml
apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
  name: cluster01
  namespace: tkgs-cluster-ns
spec:
  clusterNetwork:
    services:
      cidrBlocks: ["198.52.100.0/12"]
    pods:
      cidrBlocks: ["192.101.2.0/16"]
    serviceDomain: "cluster.local"
  topology:
    class: tanzukubernetescluster
    version: v1.26.5+vmware.2-fips.1-tkg.1
    controlPlane:
      replicas: 3
    workers:
      machineDeployments:
        - class: node-pool
          name: node-pool-01
          replicas: 3
    variables:
      - name: vmClass
        value: guaranteed-medium
      - name: storageClass
        value: tkgs-storage-profile
      - name: defaultStorageClass
        value: tkgs-storage-profile
      - name: trust
        value:
          additionalTrustedCAs:
          - name: additional-ca-1
下例演示了包含其他受信任 CA 证书的 Kubernetes 密钥。
#additional-ca-1.yaml
apiVersion: v1
data:
  additional-ca-1: TFMwdExTMUNSGlSzZ3Jaa...VVNVWkpRMEMwdExTMHRDZz09
kind: Secret
metadata:
  name: cluster01-user-trusted-ca-secret
  namespace: tkgs-cluster-ns
type: Opaque
其中:
  • 密钥 data 映射的值是用户定义的字符串,它是 CA 证书的名称(在此示例中为 additional-ca-1),其值为采用双 base64 编码的 PEM 格式的 CA 证书。
  • metadata 部分中,密钥必须命名为 CLUSTER-NAME-user-trusted-ca-secret,其中 CLUSTER-NAME 是集群的名称。必须在集群所在的同一 vSphere 命名空间 中创建此密钥。
对 CA 证书的内容进行双 base64 编码。

过程:新集群

完成以下过程,以在新的 TKGS 集群中包含一个或多个其他受信任的 CA 证书。
  1. 对 CA 证书的内容进行双 base64 编码。
  2. 创建一个包含数据映射名称(其值为采用双 base64 编码的 PEM 格式的 CA 证书)的 Kubernetes 密钥。
  3. 在集群规范中,使用数据映射的名称填充 trust.additionalTrustedCAs 变量。
  4. 像平时一样置备集群。

    请参见使用 Kubectl 置备 TKG 集群的工作流

  5. 成功置备集群后,您添加的 CA 证书将受集群信任。

过程:现有集群

完成以下过程,以将一个或多个其他受信任的 CA 证书添加到现有集群。
  1. 对 CA 证书的内容进行双 base64 编码。
  2. 创建一个包含数据映射名称(其值为采用双 base64 编码的 PEM 格式的 CA 证书)的 Kubernetes 密钥。
  3. 确认您已配置 kubectl 编辑。

    请参见为 Kubectl 配置文本编辑器

  4. 编辑集群规范。
    kubectl edit tanzukubernetescluster/tkgs-cluster-name
  5. trust.additionalTrustedCAs 部分添加到规范中。
  6. additionalTrustedCAs 字段中填充密钥(包含了采用双 base64 编码的 PEM 格式的 CA 证书)中的数据映射的名称
  7. 在文本编辑器中保存更改,并验证 kubectl 是否已注册这些更改。
    kubectl edit cluster/tkgs-cluster-name
    cluster.run.tanzu.vmware.com/tkgs-cluster-name edited
  8. 为集群启动滚动更新时,将添加其他受信任的 CA 证书。

    请参见了解 TKG 服务 集群的滚动更新模型

验证其他受信任的 CA 证书

添加到集群的其他受信任 CA 证书包含在集群的 kubeconfig 文件中。

轮换证书

要轮换证书,请创建新的密钥,并使用相应的值编辑集群规范。这将触发对集群进行滚动更新。
注: 系统不监控对 CLUSTER-NAME-user-trusted-ca-secret 所做的更改。如果 data 映射值发生更改,则这些更改不会反映在集群中。您需要创建新密钥及其 nametrust.additionalTrustCAs 的数据映射。

对其他受信任的 CA 证书进行故障排除

请参见对其他受信任 CA 的错误进行故障排除

用例

最常见的用例是添加其他受信任的 CA 以连接到容器注册表。请参见将 TKG 服务 集群与专用容器注册表集成