Pré-requisitos para configurar as Redes Definidas pelo Usuário (UDN) do Open Virtual Network (OVN) em Red Hat OpenShift on IBM Cloud
Configure os pré-requisitos únicos da Rede Definida pelo Usuário do Cluster OVN (CUDN) para as redes Localnet e Primária de Camada 2 em Red Hat OpenShift on IBM Cloud.
Este tutorial mostra como configurar os pré-requisitos para as redes locais do CUDN e as redes primárias de Camada 2 em Red Hat® OpenShift® Kubernetes Service em IBM Cloud. Todas as tarefas descritas neste tutorial são executadas uma vez por cluster.
Visão geral da rede local
Red Hat OpenShift Kubernetes Service As redes Localnet exigem uma configuração adicional que os clientes não realizam no ROVS. Este tutorial explica as etapas necessárias.
Preparação do cluster do Red Hat OpenShift on IBM Cloud
O cluster do Red Hat OpenShift em IBM Cloud requer o NMState Operator. O NMState oferece configuração de rede persistente para pontes e redes físicas. Esta etapa instala o operador.
Tenha em mente as seguintes considerações:
- A instalação leva de 5 a 10 minutos para ser concluída após a aplicação do manifesto.
- Crie apenas uma ponte por interface.
- Não tente alterar a ponte em
eth0.
Copie o bloco de código a seguir para um arquivo e execute-o com o comando oc apply -f step0a.yml para instalar o NMState Operator.
---
apiVersion: v1
kind: Namespace
metadata:
name: openshift-nmstate
spec:
finalizers:
- kubernetes
---
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
name: openshift-nmstate
namespace: openshift-nmstate
spec:
targetNamespaces:
- openshift-nmstate
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: kubernetes-nmstate-operator
namespace: openshift-nmstate
spec:
channel: stable
installPlanApproval: Automatic
name: kubernetes-nmstate-operator
source: redhat-operators
sourceNamespace: openshift-marketplace
Aguarde até que o operador registre a definição de recurso personalizado (CRD) NMState antes de criar o recurso personalizado NMState. Se você aplicar o recurso NMState antes que o CRD
seja estabelecido, aparecerá um erro como “ no matches for kind "NMState" in version "nmstate.io/v1" ”.
Execute os comandos a seguir para fazer a consulta até que o CRD apareça e, em seguida, aguarde até que ele atinja a condição “ Established ”.
until oc get crd nmstates.nmstate.io >/dev/null 2>&1; do echo "Waiting for NMState CRD..."; sleep 10; done
oc wait --for=condition=established crd/nmstates.nmstate.io --timeout=300s
Verifique se todos os CRDs da NMState estão instalados.
oc get crd | grep nmstate
Saída de exemplo:
nmstates.nmstate.io ...
nodenetworkconfigurationenactments.nmstate.io ...
nodenetworkconfigurationpolicies.nmstate.io ...
nodenetworkstates.nmstate.io ...
Depois que os CRDs estiverem prontos, copie o bloco de código a seguir para um arquivo e aplique-o com o comando oc apply -f step0b.yml para criar o recurso personalizado NMState .
---
apiVersion: nmstate.io/v1
kind: NMState
metadata:
name: nmstate
spec:
probeConfiguration:
dns:
host: root-servers.net
Aplicação da configuração em ponte
Aplique a configuração básica da ponte para utilizar a segunda placa de interface de rede (NIC) do tipo Peripheral Component Interconnect-Virtual Network Interface (PCI-VNI) (eth1).
Copie o bloco de código a seguir para um arquivo e execute-o com o comando oc apply -f step1.yml``.
---
apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
name: "br-eth1"
spec:
desiredState:
interfaces:
- name: "br-eth1"
description: A dedicated OVS bridge with a NIC as a port
type: ovs-bridge
state: up
bridge:
allow-extra-patch-ports: true
options:
stp: false
port:
- name: "eth1"
Aguarde até que essa configuração seja aplicada a todos os nós antes de passar para a próxima etapa.
% oc get NodeNetworkConfigurationPolicy br-eth1
NAME STATUS REASON
br-eth1 Available SuccessfullyConfigured
Aplicando a configuração de mapeamento de ponte
Aplique a configuração básica de mapeamento de ponte.
Copie o bloco de código a seguir para um arquivo e execute-o com o comando oc apply -f step2.yml``.
---
apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
name: "vpc-vlans"
spec:
desiredState:
ovn:
bridge-mappings:
- localnet: "vpc-vlans" # <- use your desired network name
bridge: "br-eth1"
state: present
Criação de um prefixo secundário personalizado e sub-redes para sua VPC
As redes locais podem utilizar sub-redes VPC secundárias para cada rede. Este exemplo utiliza três novas sub-redes de um novo prefixo de VPC. Você pode substituir qualquer prefixo ou rede, ou usar os padrões da VPC.
Criação de um novo prefixo de VPC
Crie um novo prefixo para cada zona. Este exemplo utiliza a superrede 198.18.0.0/16 e cria três prefixos (sub-redes) /18, um por zona.
ic is vpc-addrc my-vpc-zone-1-vms my-vpc us-south-1 198.18.0.0/18 --default true
ic is vpc-addrc my-vpc-zone-2-vms my-vpc us-south-2 198.18.64.0/18
ic is vpc-addrc my-vpc-zone-3-vms my-vpc us-south-3 198.18.128.0/18
Criação de novas sub-redes na VPC
Crie três sub-redes de VPC (prod, db e app) para a zona 1.
ic is subnetc zone1-vm-prod my-vpc us-south-1 --ipv4-cidr-block 198.18.0.0/24
ic is subnetc zone1-vm-db my-vpc us-south-1 --ipv4-cidr-block 198.18.1.0/24
ic is subnetc zone1-vm-app my-vpc us-south-1 --ipv4-cidr-block 198.18.2.0/24
Configurar um gateway público conforme necessário
Certifique-se de que haja um gateway público associado a cada zona. Caso contrário, a sub-rede permanece privada.
Obtenha o ID de cada sub-rede. Neste exemplo, a sub-rede zone1-vm-prod está selecionada.
ic is subnets | awk ' $8 ~ /yourVPC-NAME_GOES-HERE/'
Saída de exemplo:
0716-16da748a-5159-480c-b809-5f9e4750028b zone1-vm-app available 198.18.2.0/24 249/256 stone-likeness-bagging-headcount pgw-0ec02020-2f74-11f1-b0c5-bfe21078e55b potato-farm us-south-1 Default
0716-74a2d06b-de5c-40c2-8311-38dbff74ce62 zone1-vm-db available 198.18.1.0/24 249/256 stone-likeness-bagging-headcount - potato-farm us-south-1 Default
0716-efd14367-eed3-429d-b390-ea17f0e8cfb1 zone1-vm-prod available 198.18.0.0/24 249/256 stone-likeness-bagging-headcount pgw-0ec02020-2f74-11f1-b0c5-bfe21078e55b potato-farm us-south-1 Default
Conectando um gateway público à sub-rede
Conecte um gateway público à sub-rede zone1-vm-prod usando o ID da sub-rede 0716-efd14367-eed3-429d-b390-ea17f0e8cfb1.
ic is subnet-public-gateway-attach zone1-vm-prod --pgw r134-053cb8b1-d966-4b02-9f20-5fcbeda76048
É preciso repetir essa etapa para cada nova sub-rede e cada zona. Os gateways públicos são definidos por VPC e por zona.
Camada 2: Instalação hidráulica principal
As redes primárias da Camada 2 exigem que sejam realizadas algumas configurações iniciais antes que um usuário final possa utilizá-las.
Antes de poder usar as redes primárias da Camada 2, é necessário realizar algumas configurações iniciais.
Instalação do FRR OVN Router Pod
Aplique o patch no Red Hat OpenShift no cluster IBM Cloud para habilitar a opção Free Range Routing (FRR) no pod do Open Virtual Networking (OVN). Aplique o patch a seguir para habilitar o FRR como um provedor de roteamento adicional e para anunciar rotas na configuração do OVN- Kubernetes.
oc patch Network.operator.openshift.io cluster --type=merge -p='{"spec":{"additionalRoutingCapabilities":{"providers":["FRR"]},"defaultNetwork":{"ovnKubernetesConfig":{"routeAdvertisements":"Enabled"}}}}'
Ativação de redes entre namespaces
Aplique a configuração de rede básica que permite a comunicação entre namespaces para as Redes Definidas pelo Usuário em Cluster (CUDNs) anunciadas por meio do Protocolo de Gateway de Fronteira (BGP). Essa configuração flexibiliza o comportamento
padrão de isolamento da Rede Definida pelo Usuário (UDN). Salve o manifesto a seguir em um arquivo e aplique-o com o comando oc apply -f step0.yml``.
# Permit intra-CUDN-namespace traffic
---
apiVersion: v1
kind: ConfigMap
metadata:
namespace: openshift-network-operator
name: ovn-kubernetes-config-overrides
data:
advertised-udn-isolation-mode: "loose"
Ativação do seletor de anúncios de rota
Adicione anúncios de rota para configurar o OVN a anunciar redes de pods por meio do BGP com o pod OVN FRR. Salve o manifesto a seguir em um arquivo e aplique-o com o comando oc apply -f step1.yml``.
As redes devem ter a etiqueta “ advertise: true ”.
# Add the RouteAdvertisements
---
kind: RouteAdvertisements
apiVersion: k8s.ovn.org/v1
metadata:
name: default
spec:
nodeSelector: {}
frrConfigurationSelector: {}
networkSelectors:
- networkSelectionType: ClusterUserDefinedNetworks
clusterUserDefinedNetworkSelector:
networkSelector:
matchLabels:
advertise: "true"
advertisements:
- "PodNetwork"
---