Você pode personalizar o Tanzu Kubernetes Grid Service com configurações globais para os principais recursos, incluindo a interface de rede do contêiner (CNI), o servidor proxy e os certificados TLS. Esteja ciente das compensações e considerações ao implementar a funcionalidade global versus por cluster.

Especificação do TkgServiceConfiguration v1alpha2

A especificação TkgServiceConfiguration fornece campos para configurar a instância do Tanzu Kubernetes Grid Service.
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
Cuidado: Configurar o Tanzu Kubernetes Grid Service é uma operação global. Qualquer alteração feita na especificação de TkgServiceConfiguration se aplica a todos os clusters Tanzu Kubernetes provisionados por esse serviço. Se uma atualização contínua for iniciada, manualmente ou por upgrade, os clusters serão atualizados pela especificação de serviço alterada.

Especificação anotada TkgServiceConfiguration v1alpha2

O YAML a seguir lista e descreve os campos configuráveis para cada um dos parâmetros de especificação do TkgServiceConfiguration. Para conhecer exemplos, consulte Exemplos de configuração da API do Tanzu Kubernetes Grid Service 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

Nenhum requisito de campo de proxy

Você obtém os valores de CIDR de spec.proxy.noProxy necessários da Workload Network no Supervisor Cluster. Você não deve usar o proxy nos CIDRs de Pods, de Entrada e de Saída incluindo-os no campo noProxy.

Lembre-se do seguinte ao configurar o campo noProxy:
  • Você não precisa incluir o CIDR de serviços de Supervisor Cluster no campo noProxy. Os clusters Tanzu Kubernetes não interagem com esses serviços.
  • Os endpoints localhost e 127.0.0.1 não têm proxy automaticamente. Você não precisa adicioná-los ao campo noProxy.
  • Os CIDRs de Pod e Serviço para clusters Tanzu Kubernetes não são automaticamente colocados em proxy. Você não precisa adicioná-los ao campo noProxy.

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

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

Antes de editar a especificação do TkgServiceConfiguration, esteja ciente das alternativas por cluster que podem satisfazer seu caso de uso em vez de uma configuração global.
Tabela 1. Opções de configuração global versus por cluster
Configuração Opção global Opção por cluster
CNI padrão Edite a especificação de TkgServiceConfiguration. Consulte o Exemplos de configuração da API do Tanzu Kubernetes Grid Service v1alpha1. Especifique o CNI na especificação do cluster. Por exemplo, Antrea é o CNI padrão. Para usar Calico, especifique-o no cluster YAML. Consulte Exemplos para provisionamento de clusters Tanzu Kubernetes usando a API Tanzu Kubernetes Grid Service v1alpha1
Servidor proxy Edite a especificação de TkgServiceConfiguration. Consulte o Exemplos de configuração da API do Tanzu Kubernetes Grid Service v1alpha1. Inclua os parâmetros de configuração do servidor proxy na especificação do cluster. Consulte o Exemplos para provisionamento de clusters Tanzu Kubernetes usando a API Tanzu Kubernetes Grid Service v1alpha1.
Certificados de confiança Edite a especificação de TkgServiceConfiguration. Há dois casos de uso: a configuração de um registro de contêiner externo e a configuração de proxy com base em certificado. Consulte Exemplos de configuração da API do Tanzu Kubernetes Grid Service v1alpha1 Sim, você pode incluir certificados personalizados por cluster ou substituir as configurações de trust definidas globalmente na especificação do cluster. Consulte o Exemplos para provisionamento de clusters Tanzu Kubernetes usando a API Tanzu Kubernetes Grid Service v1alpha1.
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. Para obter mais informações, consulte Parâmetros de configuração para a API do Tanzu Kubernetes Grid Service v1alpha1.

Antes de editar a especificação do 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 Nenhuma Sim, você pode substituir a configuração global na criação do cluster Não, você não pode alterar o CNI de um cluster existente; Se você tiver usado o CNI padrão definido globalmente na criação do cluster, ele não poderá ser alterado
proxy Globalmente Nenhuma Sim, você pode substituir a configuração global na criação do cluster Sim, com U2 +, você pode substituir a configuração global na atualização do cluster
trust Globalmente Nenhuma Sim, você pode substituir a configuração global na criação do cluster Sim, com 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 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}}}}"