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

使用 v1alpha2 API 配置 Tanzu Kubernetes Grid 服务

可以通过更改默认 CNI、添加全局代理服务器和添加受信任的证书来自定义 Tanzu Kubernetes Grid 服务。请参见 用于 Tanzu Kubernetes Grid 服务 v1alpha1 API 的配置参数
apiVersion: run.tanzu.vmware.com/v1alpha2
kind: TkgServiceConfiguration
metadata:
  name: tkg-service-v2-configuration-example
spec:
  defaultCNI: antrea
  proxy:
    #supported format is `http://<user>:<pwd>@<ip>:<port>`
    httpProxy: http://admin:[email protected]:80
    httpsProxy: http://admin:[email protected]:80
    noProxy: [10.246.0.0/16,192.168.144.0/20,192.168.128.0/20]
  trust: 
    additionalTrustedCAs:
      - name: CompanyInternalCA-1
        data: LS0tLS1C...LS0tCg==
        #where "..." is the middle section of the long base64 string
      - name: CompanyInternalCA-2
        data: MTLtMT1C...MT0tPg==        
  defaultNodeDrainTimeout: 0
小心: 编辑 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
  defaultNodeDrainTimeout: 0

外部专用注册表配置

您可以使用自定义证书配置 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>>>>