Você pode personalizar o Tanzu Kubernetes Grid com as configurações de rede globais, incluindo a interface de rede de contêiner (CNI) padrão, o servidor proxy e os certificados TLS. As configurações feitas no Tanzu Kubernetes Grid são globais e afetam todos os clusters TKG que são provisionados.

TkgServiceConfiguration

A especificação TkgServiceConfiguration fornece campos para configurar a instância Tanzu Kubernetes Grid que é executada em Supervisor.
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
A configuração do Tanzu Kubernetes Grid é uma operação global. Qualquer alteração feita na especificação TkgServiceConfiguration se aplica a todos os clusters TKG provisionados por essa instância do TKG. Se uma atualização sem interrupção for iniciada, manualmente ou por atualização, os clusters TKG existentes serão atualizados.
Observação: A configuração do TkgServiceConfiguration requer privilégios de administrador do vSphere. Você não poderá usar a função Operador de Cluster TKG se tiver criado uma.

Especificação anotada de TkgServiceConfiguration

O YAML a seguir lista e descreve os campos configuráveis para cada um dos parâmetros de especificação TkgServiceConfiguration.
apiVersion: run.tanzu.vmware.com/v1alpha3
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

Configuração do servidor proxy

Se configurado, o servidor proxy será usado pelo cluster para o tráfego HTTP e HTTPS de saída. Lembre-se dos seguintes requisitos para configurar um servidor proxy para clusters TKG.
  • Os parâmetros proxy necessários são httpProxy, httpsProxy e noProxy. Se você adicionar a sub-rotina proxy, todos os três campos serão obrigatórios.
  • Você pode se conectar ao servidor proxy usando HTTP. Não há suporte para conexões HTTPS.
  • Você obtém os valores spec.proxy.noProxy necessários da Workload Network. Você não deve fazer proxy da Rede de namespace (anteriormente chamada de CIDRs de pods), Ingress (anteriormente chamada de CIDRs de Entrada) e Egress (anteriormente chamada de CIDRs de Saída) incluindo no campo noProxy. Consulte as imagens de exemplo abaixo.
  • Você não precisa incluir o CIDR de Serviços no campo noProxy. Os clusters TKG não interagem com esta sub-rede.
  • Você não precisa incluir os valores network.services.cidrBlocks e network.pods.cidrBlocks da especificação de cluster TKG no campo noProxy. Essas sub-redes não recebem proxy automaticamente para você.
  • Você não precisa incluir localhost e 127.0.0.1 no campo noProxy. Os endpoints não são automaticamente processados por proxy para você.

Quando usar as opções de configuração globais ou por cluster

O TkgServiceConfiguration é uma especificação global que afeta todos os clusters Tanzu Kubernetes provisionados pela instância Tanzu Kubernetes Grid.

Antes de editar a especificação TkgServiceConfiguration, esteja ciente das alternativas por cluster que podem satisfazer seu caso de uso em vez de uma configuração global.
Observação: Se um proxy global estiver configurado no TkgServiceConfiguration, essas informações de proxy serão propagadas para o manifesto do cluster após a implantação inicial do cluster. A configuração de proxy global será adicionada ao manifesto do cluster somente se não houver campos de configuração de proxy presentes ao criar o cluster. Em outras palavras, a configuração por cluster tem precedência e substituirá uma configuração de proxy global.

Antes de editar a especificação TkgServiceConfiguration, esteja ciente das ramificações da aplicação da configuração no nível global.

Campo Aplicado Impacto nos clusters existentes se adicionados/alterados Substituição por cluster na criação de cluster Substituição por cluster na atualização do cluster
defaultCNI Globalmente Nenhum Sim, você pode substituir a configuração global na criação do cluster Não, você não pode alterar a CNI de um cluster existente; se você tiver usado a CNI padrão definida globalmente na criação do cluster, ela não poderá ser alterada
proxy Globalmente Nenhum Sim, você pode substituir a configuração global na criação do cluster Sim, com o U2+, você pode substituir a configuração global na atualização do cluster
trust Globalmente Nenhum Sim, você pode substituir a configuração global na criação do cluster Sim, com o U2+, você pode substituir a configuração global na atualização do cluster

Propagando alterações de configuração global para clusters existentes

As configurações feitas no nível global no TkgServiceConfiguration não são propagadas automaticamente para os clusters existentes. Por exemplo, se você fizer alterações nas configurações de proxy ou trust no TkgServiceConfiguration, essas alterações não afetarão os clusters que já estão provisionados.

Para propagar uma alteração global para um cluster existente, você deve corrigir o cluster Tanzu Kubernetes para fazer com que o cluster herde as alterações feitas no TkgServiceConfiguration.

Por exemplo:
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}}}}"