preloader
  • Início
  • Integração OpenShift Antrea CNI com NSX-T Data Center

O OpenShift Antrea CNI é um plugin que dentre outras coisas, integra o NSX-T Data Center com a plataforma de orquestração de containers OpenShift, fornecendo conectividade de rede para os pods de Kubernetes com recursos avançados de conectividade, como políticas de segurança e balanceamento de carga, para melhor controle de acessos.

blog-thumb

A integração do Antrea CNI com o NSX-T possibilita visibilidade e controle detalhado da rede.

No ecossistema VMWare, temos o NSX-T. A integração entre a CNI Antrea e o NSX-T possibilita fazer o micro-gerenciamento dos acessos do Kubernetes, o que pode ser vantajoso em termos de segurança e planos de conformidade e controle do fluxo de dados.

Do lado do OpenShift, isso funciona substituindo o SDN padrão pelo NSX-T Antrea (networkType: antrea).

Este artigo é um complemento do meu artigo anterior sobre Antrea CNI, que pode ser encontrado clicando aqui

🛑 IMPORTANTE: Lembre que este artigo é um complemento do outro que mencionei. Ou seja, o cluster OpenShift precisará estar instalado conforme tudo o que foi descrito lá.


Neste laboratório foram utilizadas as seguintes versões de software:

* Antrea 1.7.0

* Antrea interworking 0.11.0


Documentação da VMWare

As informações contidas neste material seguem os passos de acordo com a documentação oficial.


Par de chaves privada e pública

A integração com o NSX manager ocorre via trust, e por isso precisamos de um par de chaves.

A contra-parte pública da chave precisará ser inserida no NSX Manager, para que a integração ocorra com sucesso.

Para criá-las, use o openssl conforme exemplificado abaixo.


$ openssl genrsa -out cluster-ocp-prd.key 2048

$ openssl req -new -key cluster-ocp-prd.key -out cluster-ocp-prd.csr -subj "/C=BR/ST=SP/L=Sao_Paulo/O=RHT/OU=Infra/CN=my-ocp-cluster-name"

$ openssl x509 -req -days 3650 -sha256 -in cluster-ocp-prd.csr -signkey cluster-ocp-prd.key -out cluster-ocp-prd.crt
 

🔴 OBS: A declaração my-ocp-cluster-name deve refletir o nome de seu cluster OpenShift, e ser consistente em todo o processo.


Para utilizar estas chaves nos YAMLs de configuração, converta as mesmas para BASE64.


$ cat cluster-ocp-prd.key | base64 -w 0

$ cat cluster-ocp-prd.crt | base64 -w 0
 

Preparando os arquivos

Neste exemplo, os arquivos necessários são refentes aos templates do Interworking.

Se ficar com alguma dúvida sobre os tamplates utilizados, consulte por favor meu artigo anterior, que mostra em detalhes como obtê-los.


Manifestos do Antrea Interworking

No meu ambiente, os arquivos estão armazenados conforme mostrado a seguir. Sugiro utilizar uma organização similar, para facilitar o entendimento do processo.


$ pwd
~/antrea_1.7.0/antrea/interworking/antrea-interworking-0.11.0

$ ll ~/antrea_1.7.0/antrea/interworking/antrea-interworking-0.11.0/
total 1030492
drwxrwxr-x. 1 root root         38 May 12  2023 bin
-rw-rw-r--. 1 root root       8709 Apr 30 15:22 bootstrap-config.yaml
-rw-rw-r--. 1 root root       1856 Apr 19 16:52 bootstrap-config.yaml-bkp
-rw-rw-r--. 1 root root       3427 Apr 19 17:59 deregisterjob.yaml
-rw-rw-r--. 1 root root 1055174656 May 12  2023 interworking-debian-0.11.0.tar
-rw-rw-r--. 1 root root      19775 Apr 19 17:58 interworking.yaml
-rw-rw-r--. 1 root root       1968 May 12  2023 inventorycleanup.yaml
-rw-rw-r--. 1 root root        748 May 12  2023 ns-label-webhook.yaml
 

Customização de Templates

Será necessário editar os arquivos a seguir:

- bootstrap-config.yaml

- interworking.yaml


🟡 Edite apenas as variáveis necessárias.


No arquivo bootstrap-config.yaml, customizar os seguintes campos:

- clusterName

- NSXManagers

- tls.crt

- tls.key


O resultado final deve ser similar ao apresentado a seguir.

⚠️ Não esquecer de substituir my-ocp-cluster-name pelo nome de seu cluster, os IPs dos NSXManagers, e o BASE64 dos certificados.


$ cat bootstrap-config.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: vmware-system-antrea
  labels:
    app: antrea-interworking
    openshift.io/run-level: '0'
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: bootstrap-config
  namespace: vmware-system-antrea
data:
  bootstrap.conf: |
    bootstrapFrom: "Inline"

    clusterName: my-ocp-cluster-name
    
    NSXManagers: [10.128.X.1,10.128.X.2,10.128.X.3]

    vpcPath: ""
    # proxyEndpoints is optional. If proxyEndpoints.rest-api is set, NSXManagers will be ignored.
    proxyEndpoints:
      rest-api: []
      nsx-rpc-fwd-proxy: []    
---
apiVersion: v1
kind: Secret
metadata:
  name: nsx-cert
  namespace: vmware-system-antrea
type: kubernetes.io/tls
data:
  # One line base64 encoded data. Can be generated by command: cat tls.crt | base64 -w 0
  tls.crt:
    INSERIR AQUI O BASE64 DO ARQUIVO cluster-ocp-prd.crt
  # One line base64 encoded data. Can be generated by command: cat tls.key | base64 -w 0
  tls.key:
    INSERIR AQUI O BASE64 DO ARQUIVO cluster-ocp-prd.key

No arquivo interworking.yaml, customizar todas as ocorrências do campo abaixo.

De: image: Replace

Para: image: projects.registry.vmware.com/antreainterworking/interworking-ubi:0.11.0


O resultado final deve ser similar ao apresentado a seguir.

$ cat interworking.yaml

(...)
apiVersion: batch/v1
kind: Job
metadata:
  name: register
  labels:
    app: antrea-interworking
    component: register
  namespace: vmware-system-antrea
spec:
  ttlSecondsAfterFinished: 600
  template:
    spec:
      containers:
        - name: register
          image: projects.registry.vmware.com/antreainterworking/interworking-ubi:0.11.0
          imagePullPolicy: IfNotPresent
(...)
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: antrea-interworking
    component: interworking
  name: interworking
  namespace: vmware-system-antrea
spec:
  (...)
    spec:
      (...)
          image: projects.registry.vmware.com/antreainterworking/interworking-ubi:0.11.0
          imagePullPolicy: IfNotPresent
          (...)
          image: projects.registry.vmware.com/antreainterworking/interworking-ubi:0.11.0
          imagePullPolicy: IfNotPresent
          (...)
          image: projects.registry.vmware.com/antreainterworking/interworking-ubi:0.11.0
          imagePullPolicy: IfNotPresent
          (...)
          image: projects.registry.vmware.com/antreainterworking/interworking-ubi:0.11.0
          imagePullPolicy: IfNotPresent
          (...)

Nota: Este YAML é muito grande. Cuidado para não alterar nada que não seja necessário, ou a integração irá falhar.


Fazendo a Integração

Estando o ambiente preparado conforme descrito no artigo anterior, e de posse dos manifestos de integração do Antrea CNI com o NSX-T, basta aplicar os mesmos.


$ oc apply -f bootstrap-config.yaml

$ oc apply -f interworking.yaml
 

Interworking

O Interworking é o componente que faz a integração do Cluster OpenShift com o NSX-T.

No OpenShift, observe que o POD do operator Interworking deverá estar em execução.

Interworking Operator

Interworking Operator


NSX

Do lado do NSX-T, podemos observar que o cluster OpenShift utilizando o CNI Antrea foi integrado. A integração possibilita observar todos os detalhes do mesmo, bem como fazer o controle detalhado dos acessos a rede.

OCP Integrated to NSX

OCP Integrated to NSX

OCP Integrated to NSX


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