请参考示例,以使用容器网络接口、代理服务器和 TLS 证书的全局配置设置来自定义 Tanzu Kubernetes Grid 服务

关于配置 Tanzu Kubernetes Grid 服务

可以通过更改默认 CNI、添加全局代理服务器和添加受信任的证书来自定义 Tanzu Kubernetes Grid 服务。请参见 用于 Tanzu Kubernetes Grid 服务 v1alpha1 API 的配置参数
小心: 编辑 Tanzu Kubernetes Grid 服务 规范会导致该服务置备的所有集群(包括新集群和手动或自动升级的现有集群)发生全局更改。

必备条件:配置 Kubectl 编辑

要扩展 Tanzu Kubernetes 集群,请使用命令 kubectl edit tanzukubernetescluster/CLUSTER-NAME 更新集群清单。kubectl edit 命令将在您的 KUBE_EDITOR 或 EDITOR 环境变量定义的文本编辑器中打开集群清单。有关设置环境变量的说明,请参阅为 Kubectl 指定默认的文本编辑器

保存规范更改时,kubectl 将报告已成功记录编辑。要取消,只需关闭编辑器即可,无需进行保存。

配置默认的 CNI

Tanzu Kubernetes Grid 服务 提供用于 Tanzu Kubernetes 集群的默认容器网络接口 (CNI)。默认配置允许您创建集群,而无需指定 CNI。可以通过编辑服务规范来更改默认 CNI。

Tanzu Kubernetes Grid 服务 支持两个 CNI:Antrea 和 Calico,其中 Antrea 是默认值。有关详细信息,请参见Tanzu Kubernetes Grid 服务 集群网络连接

您可以通过明确指定要使用的 CNI 来替代默认 CNI。或者,也可以通过编辑 CNI 的 TKG 服务控制器来更改默认 CNI。
  1. 主管集群 进行身份验证。
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. 将上下文切换到目标 vSphere 命名空间
    kubectl config use-context tkgs-cluster-ns
  3. 列出默认 CNI。
    kubectl get tkgserviceconfigurations
    示例结果:
    NAME                                 DEFAULT CNI
    tkg-service-configuration            antrea
    
  4. 加载以编辑 Tanzu Kubernetes Grid 服务 规范。
    kubectl edit tkgserviceconfigurations tkg-service-configuration

    系统将在您的 KUBE_EDITOR 或 EDITOR 环境变量定义的默认文本编辑器中打开 tkg-service-configuration 规范。

  5. 编辑 spec.defaultCNI 值。
    例如,将
    spec:
      defaultCNI: antrea
    更改为
    spec:
      defaultCNI: calico
  6. 要应用更改,请在文本编辑器中保存该文件。要取消,请在不保存的情况下关闭编辑器。

    在文本编辑器中保存更改时,kubectl 会更新 tkg-service-configuration 服务规范。

  7. 验证默认 CNI 是否已更新。
    kubectl get tkgserviceconfigurations
    默认 CNI 已更新。使用默认网络设置置备的任何集群都将使用默认 CNI。
    NAME                                 DEFAULT CNI
    tkg-service-configuration            calico
    

配置全局代理服务器

要启用全局代理服务器,请将代理服务器参数添加到 TkgServiceConfiguration。有关所需字段的描述,请参阅 用于 Tanzu Kubernetes Grid 服务 v1alpha1 API 的配置参数
  1. 使用 主管集群 进行身份验证。
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. 将上下文切换到目标 vSphere 命名空间
    kubectl config use-context tkgs-cluster-ns
  3. 获取当前配置。
    kubectl get tkgserviceconfigurations
    示例结果:
    NAME                        DEFAULT CNI
    tkg-service-configuration   antrea
  4. 加载以编辑 Tanzu Kubernetes Grid 服务 规范。
    kubectl edit tkgserviceconfigurations tkg-service-configuration

    系统将在您的 KUBE_EDITOR 或 EDITOR 环境变量定义的默认文本编辑器中打开 tkg-service-configuration 规范。

  5. spec.proxy 小节添加到每个必填字段,包括 httpProxyhttpsProxynoProxy
    apiVersion: run.tanzu.vmware.com/v1alpha1
    kind: TkgServiceConfiguration
    metadata:
      ...
      name: tkg-service-configuration-example
      resourceVersion: "44170525"
      selfLink: /apis/run.tanzu.vmware.com/v1alpha1/tkgserviceconfigurations/tkg-service-configuration
      uid: 10347195-5f0f-490e-8ae1-a758a724c0bc
    spec:
      defaultCNI: antrea
      proxy:
        httpProxy: http://<user>:<pwd>@<ip>:<port>
        httpsProxy: http://<user>:<pwd>@<ip>:<port>
        noProxy: [SVC-POD-CIDRs, SVC-EGRESS-CIDRs, SVC-INGRESS-CIDRs]
    
  6. 在每个代理字段中填充相应的值。有关每个字段的描述,请参阅用于 Tanzu Kubernetes Grid 服务 v1alpha1 API 的配置参数

    所需的 noProxy 字段值来自 主管集群 上的工作负载网络。请参阅上一主题中有关从何处获取这些值的图片。

    例如:
    apiVersion: run.tanzu.vmware.com/v1alpha1
    kind: TkgServiceConfiguration
    metadata:
      ...
      name: tkg-service-configuration-example
      resourceVersion: "44170525"
      selfLink: /apis/run.tanzu.vmware.com/v1alpha1/tkgserviceconfigurations/tkg-service-configuration
      uid: 10347195-5f0f-490e-8ae1-a758a724c0bc
    spec:
      defaultCNI: antrea
      proxy:
        httpProxy: http://user:[email protected]:3128
        httpsProxy: http://user:[email protected]:3128
        noProxy: [10.246.0.0/16,192.168.144.0/20,192.168.128.0/20]
    
  7. 要应用更改,请在文本编辑器中保存该文件。要取消,请在不保存的情况下关闭编辑器。

    在文本编辑器中保存更改时,kubectl 将使用 tkg-service-configuration 服务规范定义的配置来更新 Tanzu Kubernetes Grid 服务

  8. 验证是否已使用代理设置更新 Tanzu Kubernetes Grid 服务
    kubectl get tkgserviceconfigurations -o yaml
  9. 要进行验证,请置备 Tanzu Kubernetes 集群。请参见使用 TKGS v1alpha2 API 置备 Tanzu Kubernetes 集群的工作流
    使用以下命令确认集群正在使用代理。
    kubectl get tkc CLUSTER-NAME -n NAMESPACE -o yaml

基于证书的代理配置

在某些环境中,使用代理服务器路由 Internet 流量是一项硬性要求。例如,监管力度很强的行业公司(如金融机构)要求所有 Internet 流量都通过企业代理。

您可以配置 Tanzu Kubernetes Grid 服务,以将 Tanzu Kubernetes 集群置备为使用代理服务器处理出站 HTTP/S 流量。有关详细信息,请参见用于 Tanzu Kubernetes Grid 服务 v1alpha1 API 的配置参数

如示例中所示,您可以将代理服务器的可信证书添加到 TkgServiceConfiguration 规范。
apiVersion: run.tanzu.vmware.com/v1alpha1
kind: TkgServiceConfiguration
metadata:
  name: tkg-service-configuration-example
spec:
  defaultCNI: antrea
  proxy:
    httpProxy: http://user:[email protected]:3128
    httpsProxy: http://user:[email protected]:3128
    noProxy: [10.246.0.0/16,192.168.144.0/20,192.168.128.0/20]
  trust:
    additionalTrustedCAs:
      - name: first-cert-name
        data: base64-encoded string of a PEM encoded public cert 1
      - name: second-cert-name
        data: base64-encoded string of a PEM encoded public cert 2

外部专用注册表配置

您可以使用自定义证书配置 Tanzu Kubernetes Grid 服务 集群,以将 Tanzu Kubernetes 集群与外部专用注册表进行连接。有关详细信息,请参见 对 Tanzu Kubernetes 集群使用外部容器注册表
 
apiVersion: run.tanzu.vmware.com/v1alpha1
kind: TkgServiceConfiguration
metadata:
  name: tkg-service-configuration-example
spec:
  defaultCNI: antrea
  trust:
    additionalTrustedCAs:
      - name: harbor-vm-cert
        data: <<<base64-encoded string of a PEM encoded public cert>>>>