Puede personalizar servicio Tanzu Kubernetes Grid con ajustes globales de funciones clave, como la interfaz de redes de contenedor (Container Network Interface, CNI), el servidor proxy y los certificados TLS. Tenga presentes las consideraciones y las concesiones necesarias al implementar la funcionalidad global frente a la funcionalidad por clúster.

Especificación de TkgServiceConfiguration v1alpha2

La especificación TkgServiceConfiguration proporciona campos para configurar la instancia de servicio Tanzu Kubernetes Grid.
apiVersion: run.tanzu.vmware.com/v1alpha2
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
Precaución: La configuración de servicio Tanzu Kubernetes Grid es una operación global. Cualquier cambio que realice en la especificación TkgServiceConfiguration se aplicará a todos los clústeres de Tanzu Kubernetes 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.

Especificación de TkgServiceConfiguration v1alpha2 anotada

El siguiente YAML enumera y describe los campos configurables para cada uno de los parámetros de especificación de TkgServiceConfiguration. Para ver ejemplos, consulte Ejemplos de configuración de la API de servicio Tanzu Kubernetes Grid v1alpha1.
apiVersion: run.tanzu.vmware.com/v1alpha2
kind: TkgServiceConfiguration
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 Supervisor Cluster Pod, Egress, Ingress CIDRs
    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

Requisitos de configuración del servidor proxy

Si está configurado, el clúster utilizará el servidor proxy para el tráfico HTTP y HTTPS saliente. Tenga en cuenta los siguientes requisitos para configurar un servidor proxy para los clústeres de Tanzu Kubernetes.
  • Los parámetros requeridos del proxy son httpProxy, httpsProxy y noProxy. Si agrega la sección proxy, los tres campos son obligatorios.
  • Puede conectarse al servidor proxy mediante HTTP. No se admiten conexiones HTTPS.
  • Los valores de spec.proxy.noProxy requeridos se obtienen de la Red de cargas de trabajo. No debe usar proxy para la Red de espacio de nombres (anteriormente denominada CIDR de pods), la Entrada (anteriormente denominada CIDR de entrada) y la Salida (anteriormente denominada CIDR de salida) en el campo noProxy. Consulte las imágenes de ejemplo a continuación.
  • No es necesario incluir los CIDR de servicios en el campo noProxy. Los clústeres de Tanzu Kubernetes no interactúan con esta subred.
  • No es necesario incluir los valores network.services.cidrBlocks y network.pods.cidrBlocks de la especificación del clúster de Tanzu Kubernetes en el campo noProxy. Estas subredes no son objeto de proxy automáticamente.
  • No es necesario incluir localhost y 127.0.0.1 en el campo noProxy. Los endpoints no son objeto de proxy automáticamente.

La ventana Configuración de red de carga de trabajo con los campos Red de espacio de nombres, Ingreso y Egreso destacados.

La ventana Configuración de red de carga de trabajo con los campos CIDR del pod, CIDR de ingreso y CIDR de egreso destacados.

Cuándo utilizar las opciones de configuración globales o por clúster

TkgServiceConfiguration es una especificación global que afecta a todos los clústeres de Tanzu Kubernetes aprovisionados por la instancia de servicio Tanzu Kubernetes Grid.

Antes de editar TkgServiceConfiguration, tenga en cuenta las alternativas por clúster que pueden satisfacer su caso práctico, en lugar de una configuración global.
Tabla 1. Opciones de configuración global frente a opciones por clúster
Configuración Opción global Opción por clúster
CNI predeterminada Edite la especificación TkgServiceConfiguration. Consulte Ejemplos de configuración de la API de servicio Tanzu Kubernetes Grid v1alpha1. Especifique la CNI en la especificación del clúster. Por ejemplo, Antrea es la CNI predeterminada. Para usar Calico, especifíquelo en el YAML del clúster. Consulte Ejemplos del aprovisionamiento de clústeres de Tanzu Kubernetes mediante la API de servicio Tanzu Kubernetes Grid v1alpha1.
Servidor proxy Edite la especificación TkgServiceConfiguration. Consulte Ejemplos de configuración de la API de servicio Tanzu Kubernetes Grid v1alpha1. Incluya los parámetros de configuración del servidor proxy en la especificación del clúster. Consulte Ejemplos del aprovisionamiento de clústeres de Tanzu Kubernetes mediante la API de servicio Tanzu Kubernetes Grid v1alpha1.
Certificados de confianza Edite la especificación TkgServiceConfiguration. Existen dos casos de uso: configurar un registro de contenedor externo y una configuración de proxy basada en certificados. Consulte Ejemplos de configuración de la API de servicio Tanzu Kubernetes Grid v1alpha1. Sí, puede incluir certificados personalizados por clúster o anular la configuración de trust establecida globalmente en la especificación del clúster. Consulte Ejemplos del aprovisionamiento de clústeres de Tanzu Kubernetes mediante la API de servicio Tanzu Kubernetes Grid v1alpha1.
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. Para obtener más información, consulte Parámetros de configuración para la API v1alpha1 de servicio Tanzu Kubernetes Grid.

Antes de editar la especificación TkgServiceConfiguration, tenga en cuenta las ramificaciones de aplicar la configuración a nivel global.

Campo Se aplica Impacto en los clústeres existentes si se agrega o se cambia Anulación por clúster al crear un clúster Anulación por clúster al actualizar un clúster
defaultCNI Globalmente Ninguno Sí, puede anular la configuración global al crear el clúster No, no puede cambiar la CNI de un clúster existente. Si utilizó la CNI predeterminada configurada globalmente al crear el clúster, no puede cambiarla
proxy Globalmente Ninguno Sí, puede anular la configuración global al crear el clúster Sí, con U2+ puede anular la configuración global al actualizar el clúster
trust Globalmente Ninguno Sí, puede anular la configuración global al crear el clúster Sí, con U2+ puede anular la configuración global al actualizar el clúster

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

La configuración realizada a nivel global en TkgServiceConfiguration no se propaga automáticamente a los clústeres existentes. Por ejemplo, si realiza cambios en la configuración de proxy o trust en TkgServiceConfiguration, dichos cambios no afectarán a los clústeres que ya están aprovisionados.

Para propagar 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}}}}"