可以对 TKG 集群 Pod 使用外部容器注册表。

专用容器注册表用例

容器注册表为 Kubernetes 部署提供了一项关键功能,可用作存储和共享容器映像的集中式存储库。最常用的公共容器注册表是 Docker Hub。有许多私有容器注册表产品。VMware Harbor 主管附带的开源、云原生、专用容器注册表。

专用容器注册表配置

要将专用注册表用于 TKG 集群,需要为 TKG 集群配置一个或多个自签名证书以通过 HTTPS 提供专用注册表内容。在集群规范中,包含具有 additionalTrustedCAs 字段对的 trust 部分。您可以定义 TKG 集群应信任的任意数量的自签名证书。利用此功能,可以轻松定义证书列表,并在需要轮换时更新这些证书。

专用容器注册表证书的 Trust 字段

将证书条目(PEM 编码的公共证书的 base64 编码字符串)添加到 TKG 集群规范中的 additionalTrustedCAs 部分。

表 1. 专用注册表的 Trust 字段
字段 描述
trust 部分标记。不接受任何数据。
additionalTrustedCAs 部分标记。包括一系列证书,以及每个证书的名称和数据。
name TLS 证书的名称。
data 以纯文本形式存储的 PEM 编码公用证书的双 base64 编码字符串。
注: 需要使用双 base64 编码。如果数据映射值的内容没有使用双 base6 编码,则无法处理生成的 PEM 文件。

v1alpha3 API 示例

下例说明了如何创建具有专用注册表证书的 TKG 2 集群。有关完整的规范,请参阅 v1alpha3 示例:具有自定义网络的 TKC
注: 要编辑现有集群并添加专用注册表证书字段,请按 为 Kubectl 配置文本编辑器所述使用 kubectl edit 方法。
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesCluster
metadata:
  name: tkg2-private-registry
  namespace: tkg2-cluster-ns
spec:
  topology:
    controlPlane:
      ...
    nodePools:
    - name: worker
      ...
  settings:
    network:
      ...
      trust:
        additionalTrustedCAs:
          - name: CompanyInternalCA-1
            data: LS0tLS1C...LS0tCg==
          - name: CompanyInternalCA-2
            data: MTLtMT1C...MT0tPg==

v1beta1 API 示例

下例说明了如何使用 v1beta1 API 创建具有专用注册表证书的 TKG 2 集群。请参阅 集群 v1beta1 API规范中的 trust 变量描述。
注: 要编辑现有集群并添加专用注册表证书字段,请按 为 Kubectl 配置文本编辑器所述使用 kubectl edit 方法。
spec:
  clusterNetwork:
    pods:
      ...
    serviceDomain: 
    services:
      ...
  topology:
    class: tanzukubernetescluster
    controlPlane:
      ...
    variables:
    - name: storageClass
      value: tkg2-storage-profile
    - name: trust
      value:
        additionalTrustedCAs:
        - name: additional-ca-1

管理专用容器注册表证书

要轮换证书,VI 管理员或 DevOps 工程师将更改 TKG 集群规范中的证书内容,并应用该配置以触发该集群的滚动更新。

要从证书列表中移除证书,请将其删除并应用更新的规范,从而触发滚动更新。