Puede personalizar la Configuración del servicio TKG para clústeres de TKG de aprovisionados mediante la API v1alpha3, incluida la interfaz de red de contenedor (Container Network Interface, CNI), el servidor proxy y los certificados TLS.

Acerca de la personalización de TkgServiceConfiguration

Si desea configurar los ajustes globales para clústeres de Tanzu Kubernetes, modifique TkgServiceConfiguration. Esta configuración permite establecer la CNI predeterminada, agregar un servidor proxy global y agregar uno o varios certificados TLS de confianza.

Precaución: La personalización de TkgServiceConfiguration es una operación global. Cualquier cambio que realice en el objeto TkgServiceConfiguration se aplicará a todos los clústeres de TKG aprovisionados por ese servicio. Si se inicia una actualización gradual, ya sea de forma manual o mediante actualización, los clústeres se actualizan según la especificación de servicio modificada.
Nota: La personalización de TkgServiceConfiguration se aplica a los clústeres de Tanzu Kubernetes aprovisionados con la API v1alpha3. No se aplica a los clústeres aprovisionados con la API v1beta1.

Especificación TkgServiceConfiguration

La especificación TkgServiceConfiguration proporciona campos para configurar la instancia de Tanzu Kubernetes Grid.
Importante: Un nombre de clave válido solo debe constar de caracteres alfanuméricos, un guion (como key-name), un guion bajo (como KEY_NAME) o un punto (como key.name). No puede utilizar un espacio en un nombre de clave.
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TkgServiceConfiguration
metadata:
  name: tkg-service-configuration-spec
spec:
  defaultCNI: string
  proxy:
    httpProxy: string
    httpsProxy: string
    noProxy: [string]
  trust:
    additionalTrustedCAs:
      - name: string
        data: string
  defaultNodeDrainTimeout: time

Especificación de TkgServiceConfiguration anotada

El siguiente YAML enumera y describe los campos configurables para cada uno de los parámetros de especificación de TkgServiceConfiguration.
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TkgServiceConfiguration
#valid config key must consist of alphanumeric characters, '-', '_' or '.'
metadata:
  name: tkg-service-configuration-spec
spec:
  #defaultCNI is the default CNI for all Tanzu Kubernetes 
  #clusters to use unless overridden on a per-cluster basis 
  #supported values are antrea, calico, antrea-nsx-routed
  #defaults to antrea
  defaultCNI: string
  #proxy configures a proxy server to be used inside all 
  #clusters provisioned by this TKGS instance
  #if implemented all fields are required
  #if omitted no proxy is configured 
  proxy:
    #httpProxy is the proxy URI for HTTP connections 
    #to endpionts outside the clusters
    #takes the form http://<user>:<pwd>@<ip>:<port>
    httpProxy: string
    #httpsProxy is the proxy URI for HTTPS connections 
    #to endpoints outside the clusters
    #takes the frorm http://<user>:<pwd>@<ip>:<port>
    httpsProxy: string
    #noProxy is the list of destination domain names, domains, 
    #IP addresses, and other network CIDRs to exclude from proxying
    #must include from Workload Network: [Namespace Netowrk, Ingress, Egress]
    noProxy: [string]
  #trust configures additional trusted certificates 
  #for the clusters provisioned by this TKGS instance
  #if omitted no additional certificate is configured
  trust: 
    #additionalTrustedCAs are additional trusted certificates 
    #can be additional CAs or end certificates
    additionalTrustedCAs:
      #name is the name of the additional trusted certificate
      #must match the name used in the filename
      - name: string
        #data holds the contents of the additional trusted cert 
        #PEM Public Certificate data encoded as a base64 string
        data: string
  #defaultNodeDrainTimeout is the total amount of time the
  #controller spends draining a node; default is undefined
  #which is the value of 0, meaning the node is drained 
  #without any time limitations; note that `nodeDrainTimeout` 
  #is different from `kubectl drain --timeout`
  defaultNodeDrainTimeout: time
Figura 1. Valores de noProxy necesarios
Valores de noProxy necesarios
Nota: Si se configura un proxy global en TkgServiceConfiguration, esa información de proxy se propaga al manifiesto del clúster después de la implementación inicial del clúster. La configuración global del proxy se agrega al manifiesto del clúster solo si no hay ningún campo de configuración de proxy presente cuando se crea el clúster. En otras palabras, la configuración por clúster tiene prioridad y sobrescribirá la configuración global del proxy.

Especificación de TkgServiceConfiguration de ejemplo

El siguiente YAML enumera y describe los campos configurables para cada uno de los parámetros de especificación de TkgServiceConfiguration.

apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TkgServiceConfiguration
metadata:
  name: tkgserviceconfiguration_example
spec:
  defaultCNI: calico
  proxy:
    #supported format is `http://<user>:<pwd>@<ip>:<port>`
    httpProxy: http://admin:[email protected]:80
    httpsProxy: http://admin:[email protected]:80
    #noProxy vaulues are from Workload Network: [Namespace Network, Ingress, Egress]
    noProxy: [10.246.0.0/16,192.168.144.0/20,192.168.128.0/20]
  trust: 
    additionalTrustedCAs:
      #name is the name of the public cert
      - name: CompanyInternalCA-1
      #data is base64-encoded string of a PEM encoded public cert
        data: LS0tLS1C...LS0tCg==
        #where "..." is the middle section of the long base64 string
      - name: CompanyInternalCA-2
        data: MTLtMT1C...MT0tPg==        
  defaultNodeDrainTimeout: 0

Cómo editar TkgServiceConfiguration

Consulte el siguiente procedimiento para editar la especificación de TkgServiceConfiguration.
  1. Configure la edición de Kubectl. Consulte Configurar un editor de texto para Kubectl.
  2. Realice la autenticación con Supervisor.
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  3. Cambie el contexto al espacio de nombres de vSphere de destino.
    kubectl config use-context vSphere-Namespace
  4. Obtenga la especificación de TkgServiceConfiguration.
    kubectl get tkgserviceconfigurations
  5. Cargue para editar la especificación de TkgServiceConfiguration.
    kubectl edit tkgserviceconfigurations tkg-service-configuration

    El sistema abre la especificación tkg-service-configuration en el editor de texto predeterminado que definen las variables de entorno KUBE_EDITOR o EDITOR.

  6. Edite TkgServiceConfiguration según sus requisitos.
  7. Para aplicar los cambios, guarde el archivo en el editor de texto. Para cancelar, cierre el editor sin guardar.

    Al guardar el cambio en el editor de texto, kubectl actualiza la especificación de servicio de tkg-service-configuration.

  8. Compruebe que la especificación de TkgServiceConfiguration se haya actualizado.
    kubectl get tkgserviceconfigurations

Propagar cambios de configuración global a clústeres existentes

Los ajustes que se realizaron a nivel global en TkgServiceConfiguration no se propagan automáticamente a los clústeres existentes. Por ejemplo, si realiza cambios en los ajustes de proxy o trust en TkgServiceConfiguration, los cambios no afectarán los clústeres que ya están aprovisionados.

Para propagar manualmente un cambio global a un clúster existente, debe aplicar una revisión al clúster de Tanzu Kubernetes para que herede los cambios realizados en TkgServiceConfiguration.

Por ejemplo:
kubectl patch tkc <CLUSTER_NAME> -n <NAMESPACE> --type merge -p "{\"spec\":{\"settings\":{\"network\":{\"proxy\": null}}}}"
kubectl patch tkc <CLUSTER_NAME> -n <NAMESPACE> --type merge -p "{\"spec\":{\"settings\":{\"network\":{\"trust\": null}}}}"