preloader
  • Início
  • Implantar OpenShift com NSX-T Antrea Network CNI

O NSX-T Antrea é um plug-in de interface de rede de contêineres para o Kubernetes. Ele pode ser usado para substituir o OVNKubernetes como CNI padrão.

blog-thumb

O NSX-T Antrea é um plug-in de interface de rede de contêineres (CNI) para o Kubernetes.

Ele foi projetado para fornecer recursos de rede e segurança para clusters K8S. Desenvolvido pela VMware, o NSX-T Antrea se integra ao NSX-T Data Center para estender seus recursos de rede e segurança aos ambientes Kubernetes.


Os principais recursos do NSX-T Antrea incluem:

1 - Conectividade de rede: O NSX-T Antrea facilita a comunicação entre pods (contêineres) em clusters do Kubernetes, garantindo conectividade perfeita em todo o cluster.

2 - Políticas de segurança: Permite que os administradores definam políticas de segurança refinadas para controlar o tráfego entre pods, aprimorando a segurança no ambiente do Kubernetes.

3 - Aplicação de políticas: O NSX-T Antrea aplica políticas de rede no nível do pod, garantindo que apenas a comunicação autorizada ocorra entre os pods, ajudando assim a evitar o acesso não autorizado e possíveis violações de segurança.

4 - Integração com o NSX-T Data Center: Como parte do conjunto NSX-T, o Antrea se integra perfeitamente ao NSX-T Data Center, aproveitando seus recursos avançados de rede e segurança para aprimorar os ambientes Kubernetes.

No geral, o NSX-T Antrea CNI simplifica o gerenciamento de rede e segurança em clusters do Kubernetes, fornecendo aos administradores as ferramentas necessárias para criar ambientes em contêineres robustos e seguros.



Sobre este laboratório

Neste laboratório, usaremos o OpenShift 4.12.45 e o Antrea 1.8.0 (VMware Container Networking with Antrea 1.8.0).

* O Antrea 1.9.0 requer componentes adicionais (Agent e Controller) que não serão abordados nesta postagem. Portanto, continuaremos com a versão 1.8.0.



Documentação da VMWare

A VMWare forneceu instruções sobre o uso de rede de contêineres com o Antrea.

Elas podem ser encontrados aqui.

- Há também uma postagem antiga sobre isso aqui.



Obtenção do Antrea

Os arquivos do Antrea podem ser baixados em https://downloads.vmware.com. Deve ser usado um usuário válido com acesso a uma assinatura ativa.

Para a instalação, você precisará da imagem de contêiner Antrea e da imagem de contêiner Antrea Kubernetes Operator.

Essas imagens devem ser disponibilizadas em um contêiner Registry de sua escolha.


💡 Você deve carregar as imagens baixadas em um registry compatível com o Docker.


⚠️ Caso não saiba como fazer upload de imagens do Antrea para um docker registry, dê uma olhada nesta página.


Depois de carregar as imagens no registry, verifique se elas podem ser baixadas antes de prosseguir. Exemplo:


 $ podman pull docker.io/YOUR-DOCKERHUB-USERNAME/antrea-operator:v1.13.1_vmware.1

 $ podman pull docker.io/YOUR-DOCKERHUB-USERNAME/antrea-ubi:v1.13.1_vmware.1
 


Usando o Antrea

Você pode usar o Antrea como CNI de rede para seu cluster OpenShift ou Kubernetes, independentemente de ter o NSX em execução em seu ambiente.


⛔️ Observe que depois do cluster ser instalado, o CNI não poderá ser alterado.


Agora você deve estar se perguntando: Por que eu faria isso? 🤔

Bem, você não deveria, a menos que queira aprender algo diferente ou esteja trabalhando em uma integração do OpenShit com o NSX-T.



Implantar o OpenShift com o Antrea CNI

Essa tarefa consiste em duas fases:

1) Implantar o cluster OCP usando o Antrea “networkType” em vez de OVNKubermetes.

2) Integração do cluster OCP com o NSX-T.


✅ Você pode integrar um cluster OpenShift com Antrea CNI com o NSX-T a qualquer momento após a criação do cluster do OpenShift.


NOTA: Neste laboratório, abordaremos apenas a primeira fase, que geralmente é mais complexa. A fase 2 pode ser concluída com a leitura indicada no início desta postagem.



Preparação da implantação do OCP

Crie um subdiretório chamado “antrea-ocp” e coloque os arquivos necessários nele.


  $ pwd
  /root/antrea-ocp
 

Eu organizei meus diretórios conforme abaixo, para tornar o processo mais fácil de entender.


  $ tree

  .
  ├── 1-ocp-deploy-with-nsx-antrea
  │   ├── operator_image
  │   └── operator_manifests
  ├── 2-ocp-nsx-integration
  │   └── interworking
  ├── auth
  ├── deploy
  │   ├── kubernetes
  │   └── openshift
  └── tls
 

Primeiro, crie o arquivo install-config.yaml, pois precisamos personalizá-lo um pouco.


  $ openshift-install create install-config --dir .
  

Em seu install-config.yaml, procure por networkType e substitua OVNKubernetes por antrea.


  $ cat install-config.yaml.tmp
    (...)
    networkType: antrea
    (...)
   

Faça backup de seu install-config.yaml:


  $ cp install-config.yaml install-config.yaml.tmp
 

Crie os manifestos padrão do OpenShift. Precisaremos copiar os manifestos do operador Antrea para o diretório de manifestos padrão do OpenShift.


🔸 Seu install-config.yaml deve estar configurado corretamente para que esta etapa funcione.



  $ openshift-install create manifests --dir .
  

Agora temos vários arquivos em nosso diretório antrea-ocp:


  $ tree

  .
  ├── 1-ocp-deploy-with-nsx-antrea
  │   ├── operator_image
  │   │   ├── antrea-operator-v1.13.1_vmware.1.tar.gz
  │   └── operator_manifests
  │       ├── deploy.tar.gz
  ├── 2-ocp-nsx-integration
  │   └── interworking
  │       ├── interworking-ubi-0.13.0_vmware.1.tar
  ├── install-config.yaml.tmp
  ├── manifests
  │   ├── cloud-provider-config.yaml
  │   ├── cluster-config.yaml
  │   ├── cluster-dns-02-config.yml
  │   ├── cluster-infrastructure-02-config.yml
  │   ├── cluster-ingress-02-config.yml
  │   ├── cluster-network-01-crd.yml
  │   ├── cluster-network-02-config.yml
  │   ├── cluster-proxy-01-config.yaml
  │   ├── cluster-scheduler-02-config.yml
  │   ├── cvo-overrides.yaml
  │   ├── kube-cloud-config.yaml
  │   ├── kube-system-configmap-root-ca.yaml
  │   ├── machine-config-server-tls-secret.yaml
  │   └── openshift-config-secret-pull-secret.yaml
  └── openshift
      ├── 99_cloud-creds-secret.yaml
      ├── 99_kubeadmin-password-secret.yaml
      ├── 99_openshift-cluster-api_master-machines-0.yaml
      ├── 99_openshift-cluster-api_master-machines-1.yaml
      ├── 99_openshift-cluster-api_master-machines-2.yaml
      ├── 99_openshift-cluster-api_master-user-data-secret.yaml
      ├── 99_openshift-cluster-api_worker-machineset-0.yaml
      ├── 99_openshift-cluster-api_worker-user-data-secret.yaml
      ├── 99_openshift-machineconfig_99-master-ssh.yaml
      ├── 99_openshift-machineconfig_99-worker-ssh.yaml
      ├── 99_role-cloud-creds-secret-reader.yaml
      └── openshift-install-manifests.yaml
      .

🔴 Preste atenção, pois esta é a parte mais sensível. Precisaremos colocar alguns arquivos do operador Antrea dentro do diretório de manifestos do OpenShift.


Descompacte os manifestos de implantação do Antrea Operator:


  $ tar xzvf 1-ocp-deploy-with-nsx-antrea/operator_manifests/deploy.tar.gz

  deploy/
  deploy/kubernetes/
  deploy/kubernetes/namespace.yaml
  deploy/kubernetes/nsx-cert.yaml
  deploy/kubernetes/operator.antrea.vmware.com_antreainstalls_crd.yaml
  deploy/kubernetes/operator.antrea.vmware.com_v1_antreainstall_cr.yaml
  deploy/kubernetes/operator.yaml
  deploy/kubernetes/role.yaml
  deploy/kubernetes/role_binding.yaml
  deploy/kubernetes/service_account.yaml
  deploy/openshift/
  deploy/openshift/namespace.yaml
  deploy/openshift/nsx-cert.yaml
  deploy/openshift/operator.antrea.vmware.com_antreainstalls_crd.yaml
  deploy/openshift/operator.antrea.vmware.com_v1_antreainstall_cr.yaml
  deploy/openshift/operator.yaml
  deploy/openshift/role.yaml
  deploy/openshift/role_binding.yaml
  deploy/openshift/service_account.yaml
 

Agora, nosso diretório deve ter a seguinte aparência:


  $ tree -d
  .
  ├── 1-ocp-deploy-with-nsx-antrea
  │   ├── operator_image
  │   └── operator_manifests
  ├── 2-ocp-nsx-integration
  │   └── interworking
  ├── deploy    <----- ANTREA OPERATOR MANIFESTS
  │   ├── kubernetes
  │   └── openshift
  ├── manifests
  └── openshift

  10 directories
   

2 arquivos devem ser customizados:

- operator.yaml
- operator.antrea.vmware.com_v1_antreainstall_cr.yaml

Nesses arquivos, insira a URL do docker registry onde as imagens foram carregadas.


  $ grep -A3 containers deploy/openshift/operator.yaml
        containers:
          - name: antrea-operator
            # Replace this with the built image name
            image: ReplaceOperatorImage
             


  $ grep antreaImage deploy/openshift/operator.antrea.vmware.com_v1_antreainstall_cr.yaml
    antreaImage: ReplaceAntreaImage
     

Eles devem se parecer com isso:


  $ grep -A3 containers deploy/openshift/operator.yaml
        containers:
          - name: antrea-operator
            # Replace this with the built image name
            image: docker.io/YOUR-DOCKERHUB-USERNAME/antrea-operator:v1.13.1_vmware.1
             

  $ grep antreaImage deploy/openshift/operator.antrea.vmware.com_v1_antreainstall_cr.yaml
    antreaImage: docker.io/YOUR-DOCKERHUB-USERNAME/antrea-ubi:v1.13.1_vmware.1
     

Copie os arquivos de manifesto do operador Antrea para o diretório de manifestos do OpenShift.


  $ pwd
  /root/antrea-ocp
   


  $ ls -l
  total 16
  drwxr-xr-x. 4 root root   71 Apr 19 11:14 1-ocp-deploy-with-nsx-antrea
  drwxr-xr-x. 3 root root   43 Apr 19 11:18 2-ocp-nsx-integration
  drwxr-xr-x. 4  201  201   41 Mar 25 23:29 deploy
  -rw-r--r--. 1 root root 4747 Apr 19 14:03 install-config.yaml.tmp
  drwxr-x---. 2 root root 4096 Apr 19 14:12 manifests
  drwxr-x---. 2 root root 4096 Apr 19 14:12 openshift
   


 $ cp deploy/openshift/* manifests/
 

Pode ser uma boa ideia fazer um backup do diretório “antrea-ocp” antes de tentar instalar o cluster.


  $ cd ..
  $ tar cpzvf antrea-ocp.tar.gz antrea-ocp/deploy \
    antrea-ocp/manifests antrea-ocp/install-config.yaml.tmp
 


Implementação do OpenShift

Agora, tudo o que você precisa fazer é instalar o cluster OpenShift, tendo o cuidado de apontar para o diretório onde todos os arquivos estão localizados:


  $ cd antrea-ocp
  $ openshift-install create cluster --dir . --log-level debug
 

E o cluster do OpenShift está ativo usando o CNI Antrea. Muito bom! 😎



  INFO Checking to see if there is a route at openshift-console/console...
  DEBUG Route found in openshift-console namespace: console
  DEBUG OpenShift console route is admitted
  INFO Install complete!
  INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/root/antrea-ocp/auth/kubeconfig'
  INFO Access the OpenShift web-console here: https://console-openshift-console.apps.example.com
  INFO Login to the console with user: "kubeadmin", and password: "BgitS-SrrMS-qehQz-haqjx"
  DEBUG Time elapsed per stage:
  DEBUG      pre-bootstrap: 27s
  DEBUG          bootstrap: 13s
  DEBUG             master: 18s
  DEBUG Bootstrap Complete: 14m29s
  DEBUG                API: 2m7s
  DEBUG  Bootstrap Destroy: 43s
  DEBUG  Cluster Operators: 12m52s
  INFO Time elapsed: 29m10s
 

O Antrea cria vários recursos no cluster OpenShift.

Antrea Services

Antrea PODs

Antrea CRDs


Firewall

O Antrea torna as redes internas do OpenShift roteáveis. 🔥

☑️ Esse comportamento já é conhecido por aqueles que usam o MetalLB em implementações Baremetal.

Internal Access

Como por exemplo, neste laboratório o cluster OpenShift usa as seguintes redes:

Origem:


  machineNetwork:
  - cidr: 10.1.224.0/24
   

Destino:


  networking:
    clusterNetwork:
    - cidr: 10.128.0.0/14
   

Seu firewall provavelmente bloqueará essas comunicações (como o meu).

Firewall Blocks

E seu cluster terá problemas para se comunicar na rede local.

Control

Como as redes internas foram roteadas pelo Antrea, a machineNetwork tentará acessar a clusterNetwork nas portas TCP:

* 8443
* 8080
* 8181

Elas devem ser permitidas no firewall.

Alowed TCP ports

⚠️ Provavelmente outras portas precisam ser permitidas. Monitore os registros do firewall para identificá-las.


É isso aí. Não sei se alguém vai querer usar essa solução. Mas é assim que se faz.


Boa sorte com sua implementação! 😆


May The Force Be With You

Gostou do conteúdo? Dê uma olhada nesses outros artigos interessantes! 🔥



Você poderia ajudar?

Apoie este conteúdo clicando em um dos banners de nossos anunciantes. ❤️

comments powered by Disqus