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
As informações contidas neste material seguem os passos de acordo com a documentação oficial.
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
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.
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
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.
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
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.
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.
Gostou do conteúdo? Dê uma olhada nesses outros artigos interessantes! 🔥
Apoie este conteúdo clicando em um dos banners de nossos anunciantes. ❤️