要将 TKG 服务 集群与专用容器注册表集成,请参阅本主题。
专用容器注册表用例
容器注册表为 Kubernetes 部署提供了一项关键功能,可用作存储和共享容器映像的集中式存储库。最常用的公共容器注册表是 Docker Hub。有许多私有容器注册表产品。VMware Harbor 是 主管 附带的开源、云原生、专用容器注册表。
专用容器注册表集成
要将专用注册表与 TKG 服务 集群集成,请为集群配置一个或多个自签名 CA 证书以通过 HTTPS 提供专用注册表内容。为此,请在集群规范中包括具有 additionalTrustedCAs
值的 trust
字段。您可以定义 TKGS 集群应信任的任意数量的自签名 CA 证书。利用此功能,可以轻松定义证书列表,并更新需要轮换的那些证书。
您可以在最初创建集群时配置专用注册表证书,也可以更新现有集群并提供专用注册表证书。要编辑现有集群并添加专用注册表证书,请使用 kubectl edit
方法。请参见为 Kubectl 配置文本编辑器。
请注意,trust.additionalTrustedCAs
字段的实施在用于置备 TKGS 集群的受支持 API 之间略有不同。有关详细信息,请参见v1alpha3 API Trust 字段和v1beta1 API Trust 变量。
v1alpha3 API 示例
以下示例说明了如何使用 CA 证书将使用 v1alpha3 API 置备的 TKG 服务 集群与专用容器注册表集成。
使用
TanzuKubernetesCluster v1alpha3 API,
trust.additionalTrustedCAs
字段包括一个或多个名称-数据对,每一对都可以包含一个 TLS 证书用于专用注册表。
字段 | 描述 |
---|---|
trust |
部分标记。不接受任何数据。 |
additionalTrustedCAs |
部分标记。包括一系列证书,以及每个证书的 name 和 data 字段。 |
name |
用户定义的 CA 证书名称。 |
data |
采用双 base64 编码的 PEM 格式的 CA 证书 (ca.crt ) 的内容。
注: v1alpha3 API 要求证书内容采用单 base64 编码。如果内容未采用单 base6 编码,则无法处理生成的 PEM 文件。
|
可以按照以下过程,使用 Harbor 注册表证书将 Harbor 与 v1alpha3 API 集群集成。
- 从 Harbor Web 界面的注册表证书。
以
ca.crt
形式下载 CA 证书文件。
屏幕下载 Harbor - 对 CA 证书的内容进行单 base64 编码。
- Linux:
base64 -w 0 ca.crt
- Windows:https://www.base64encode.org/。
- Linux:
- 在集群规范中包含
trust.additionalTrustedCAs
字段,并填充name
和data
值。#tkc-with-trusted-private-reg-cert.yaml apiVersion: run.tanzu.vmware.com/v1alpha3 kind: TanzuKubernetesCluster metadata: name: tkc01 namespace: tkgs-cluster-ns spec: topology: controlPlane: replicas: 3 storageClass: tkgs-storage-policy vmClass: guaranteed-medium tkr: reference: name: v1.25.7---vmware.3-fips.1-tkg.1 nodePools: - name: nodepool-01 replicas: 3 storageClass: tkgs-storage-policy vmClass: guaranteed-medium tkr: reference: name: v1.25.7---vmware.3-fips.1-tkg.1 settings: storage: defaultClass: tkgs-storage-policy network: cni: name: antrea services: cidrBlocks: ["198.51.100.0/12"] pods: cidrBlocks: ["192.0.2.0/16"] serviceDomain: cluster.local trust: additionalTrustedCAs: - name: CompanyInternalCA-1 data: LS0tLS1C...LS0tCg== - name: CompanyInternalCA-2 data: MTLtMT1C...MT0tPg==
- 要轮换证书,对集群规范执行
kubectl edit
并更新trust.additionalTrustedCAs.data
值,然后启动滚动更新。
v1beta1 API 示例
以下示例介绍了如何使用 CA 证书将使用 v1beta1 API 置备的 TKG 服务 集群与专用容器注册表集成。
要将专用容器注册表与使用
集群 v1beta1 API 置备的 TKGS 集群集成,请使用
trust 变量并填充包含专用注册表证书的 Kubernetes 密钥。
字段 | 描述 |
---|---|
trust |
部分标记。不接受任何数据。 |
additionalTrustedCAs |
部分标记。包括一系列证书,以及每个证书的名称。 |
name |
Kubernetes 密钥中 data 映射字段的用户定义名称,该字段包含采用双 base64 编码的 PEM 格式的 CA 证书。
注: v1beta1 API 要求证书内容采用双 base64 编码。如果内容未采用双 base6 编码,则无法处理生成的 PEM 文件。
|
可以按照以下过程,使用 Harbor 注册表证书将 Harbor 与 v1beta1 API 集群集成。
- 从 Harbor Web 界面的注册表证书。
以
ca.crt
形式下载 CA 证书文件。
屏幕下载 Harbor - 对 CA 证书的内容进行双 base64 编码。
- Linux:
base64 -w 0 ca.crt | base64 -w 0
- Windows:https://www.base64encode.org/。
- Linux:
- 使用以下内容创建 Kubernetes 密钥定义 YAML 文件。
#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 编码的证书。 - 在
metadata
部分中,将密钥命名为CLUSTER-NAME-user-trusted-ca-secret
,其中 CLUSTER-NAME 是集群的名称。必须在集群所在的同一 vSphere 命名空间 中创建此密钥。
- 密钥中
- 以声明方式创建 Kubernetes 密钥。
kubectl apply -f additional-ca-1.yaml
- 验证密钥创建。
kubeclt get secret -n tkgs-cluster-ns cluster01-user-trusted-ca-secret NAME TYPE DATA AGE cluster01-user-trusted-ca-secret Opaque 12 2d22h
- 将
trust
变量包含在集群规范中,用于引用此密钥的数据映射的名称(在此示例中为additional-ca-1
)。#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
- 要轮换证书,请创建新密钥,并使用相应的值编辑集群规范。这将触发对集群进行滚动更新。
注: 系统不监控对
CLUSTER-NAME-user-trusted-ca-secret
所做的更改。如果data
映射值发生更改,则这些更改不会反映在集群中。您需要创建新密钥以及name
到trust.additionalTrustCAs
的数据映射。