Você pode criar um Cluster com rede de pods roteáveis configurando o pacote Antrea CNI com configurações específicas e configurando uma Rede de Namespaces roteáveis em Supervisor.

Implementando a rede de pods roteáveis usando a API v1beta1

A API v1beta1 é compatível com a rede de pods roteáveis usando o Antrea CNI. A funcionalidade é semelhante à forma como funciona com a API v1alpha3. Consulte Exemplo de v1alpha3: TKC com rede de pods roteáveis para obter uma descrição.

Os mesmos requisitos se aplicam: você deve usar a rede NSX para Supervisor e deve configurar um vSphere Namespace com uma rede de namespace roteável. Consulte Substituir Supervisor configurações de rede para obter orientação.

Embora a funcionalidade seja a mesma, a implementação da rede de pods roteáveis usando a API v1beta1 é diferente da abordagem da API v1alpha3. Usando a API v1beta1, você personaliza a CNI de forma semelhante ao método demonstrado no exemplo do Cluster Calico. Nesse caso, no entanto, você ainda está usando o pacote Antrea CNI, mas fornecendo instruções de configuração especiais para criar o pacote Antrea CNI com a rede de pods roteáveis.

Para fazer isso, crie um VSphereCPIConfig e um AntreaConfig com configurações específicas. O VSphereCPIConfig define o sinalizador antreaNSXPodRoutingEnabled como true. Da mesma forma, o AntreaConfig habilita sinalizadores específicos. Há exemplos de configurações do VSphereCPIConfig e do AntreaConfig no namespace tkg-system com -routable como o sufixo.

Depois de configurar o pacote Antrea CNI para a rede de pods roteáveis, semelhante à abordagem v1alpha3, deixe o campo pods.cidrBlocks vazio na especificação do cluster. Por exemplo:

apiVersion: cpi.tanzu.vmware.com/v1alpha1
kind: VSphereCPIConfig
metadata:
  name: cluster-4
  namespace: tkg
spec:
  vsphereCPI:
    antreaNSXPodRoutingEnabled: true
    insecure: false
    mode: vsphereParavirtualCPI
---
apiVersion: cni.tanzu.vmware.com/v1alpha1
kind: AntreaConfig
metadata:
  name: cluster-4
  namespace: tkg
spec:
  antrea:
    config:
      featureGates:
        AntreaProxy: true
        EndpointSlice: true
        AntreaPolicy: true
        FlowExporter: true
        Egress: true
        NodePortLocal: true
        AntreaTraceflow: true
        NetworkPolicyStats: true
      noSNAT: true
      trafficEncapMode: noEncap
---
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: ClusterBootstrap
metadata:
  annotations:
    tkg.tanzu.vmware.com/add-missing-fields-from-tkr: v1.23.8---vmware.2-tkg.2-zshippable
  name: cluster-4
spec:
  cni:
    refName: antrea.tanzu.vmware.com.1.5.3+tkg.2-zshippable
    valuesFrom:
      providerRef:
        apiGroup: cni.tanzu.vmware.com
        kind: AntreaConfig
        name: cluster-4
---
apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
  name: cluster-4
  namespace: tkg
spec:
  clusterNetwork:
    services:
      cidrBlocks: ["198.52.100.0/12"]
    pods:
      cidrBlocks: []
    serviceDomain: "cluster.local"
  topology:
    class: tanzukubernetescluster
    version: v1.23.8---vmware.2-tkg.2-zshippable
    controlPlane:
      replicas: 1
      metadata:
        annotations:
          run.tanzu.vmware.com/resolve-os-image: os-name=ubuntu
    workers:
      machineDeployments:
        - class: node-pool
          name: node-pool-01
          replicas: 3
          metadata:
            annotations:
              run.tanzu.vmware.com/resolve-os-image: os-name=ubuntu
    variables:
      - name: vmClass
        value: guaranteed-medium
      - name: storageClass
        value: tkg2-storage-policy