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.
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.
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.
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.
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
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.
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.
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
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.
O Antrea torna as redes internas do OpenShift roteáveis. 🔥
☑️ Esse comportamento já é conhecido por aqueles que usam o MetalLB em implementações Baremetal.
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).
E seu cluster terá problemas para se comunicar na rede local.
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.
⚠️ 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! 😆
Gostou do conteúdo? Dê uma olhada nesses outros artigos interessantes! 🔥
Apoie este conteúdo clicando em um dos banners de nossos anunciantes. ❤️