Requisitos previos para configurar las redes definidas por el usuario (UDN) de Open Virtual Network (OVN) en Red Hat OpenShift on IBM Cloud

Configura los requisitos previos de la red definida por el usuario (CUDN) del clúster OVN de uso único para las redes «Localnet» y «Layer 2 Primary» en Red Hat OpenShift on IBM Cloud.

Este tutorial muestra cómo configurar los requisitos previos para las redes locales de CUDN y las redes primarias de capa 2 en Red Hat® OpenShift® Kubernetes Service en IBM Cloud. Todas las tareas descritas en este tutorial se realizan una vez por clúster.

Descripción general de Localnet

Red Hat OpenShift Kubernetes Service Las redes Localnet requieren una configuración adicional que los clientes no realizan en ROVS. En este tutorial se explican los pasos que hay que seguir.

Preparación del clúster « Red Hat OpenShift on IBM Cloud »

El clúster « Red Hat OpenShift » en IBM Cloud requiere el operador NMState. NMState proporciona una configuración de red persistente para puentes y redes físicas. En este paso se instala el operador.

Ten en cuenta las siguientes consideraciones:

  • La instalación tarda entre 5 y 10 minutos en completarse una vez aplicado el manifiesto.
  • Crea solo un puente por interfaz.
  • No intentes cambiar el puente en eth0.

Copia el siguiente bloque de código en un archivo y ejecútalo con el comando « oc apply -f step0a.yml » para instalar el operador NMState.

---
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

Espera a que el operador registre la definición de recurso personalizado (CRD) « NMState » antes de crear el recurso personalizado « NMState ». Si aplicas el recurso « NMState » antes de que se haya establecido el CRD, aparecerá un error del tipo « no matches for kind "NMState" in version "nmstate.io/v1" ».

Ejecuta los siguientes comandos para realizar consultas hasta que aparezca el CRD y, a continuación, espera a que alcance el estado « 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

Comprueba que todos los CRD de NMState estén instalados.

oc get crd | grep nmstate

Salida de ejemplo:

nmstates.nmstate.io                                               ...
nodenetworkconfigurationenactments.nmstate.io                     ...
nodenetworkconfigurationpolicies.nmstate.io                       ...
nodenetworkstates.nmstate.io                                      ...

Una vez que los CRD estén listos, copia el siguiente bloque de código en un archivo y aplícalo con « oc apply -f step0b.yml » para crear el recurso personalizado « NMState ».

---
apiVersion: nmstate.io/v1
kind: NMState
metadata:
  name: nmstate
spec:
  probeConfiguration:
    dns:
      host: root-servers.net

Aplicación de la configuración en puente

Aplica la configuración básica del puente para utilizar la segunda tarjeta de interfaz de red (NIC) PCI-VNI (Peripheral Component Interconnect-Virtual Network Interface) (eth1).

Copia el siguiente bloque de código en un archivo y aplícalo con « 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"

Espera a que esta configuración se aplique a todos los nodos antes de pasar al siguiente paso.

% oc get NodeNetworkConfigurationPolicy br-eth1
NAME      STATUS      REASON
br-eth1   Available   SuccessfullyConfigured

Aplicación de la configuración de mapeo de puentes

Aplica la configuración básica de mapeo de puentes.

Copia el siguiente bloque de código en un archivo y aplícalo con « 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

Creación de un prefijo secundario personalizado y subredes para tu VPC

Las redes locales pueden utilizar subredes VPC secundarias para cada red. En este ejemplo se utilizan tres nuevas subredes de un nuevo prefijo de VPC. Puedes sustituir cualquier prefijo o red, o utilizar los valores predeterminados de la VPC.

Creación de un nuevo prefijo de VPC

Crea un nuevo prefijo para cada zona. En este ejemplo se utiliza la superred 198.18.0.0/16 y se crean tres prefijos (subredes) /18, uno 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

Creación de nuevas subredes de VPC

Crea tres subredes de VPC (prod, db y app) para la 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

Conectar una pasarela pública según sea necesario

Asegúrate de que cada zona tenga asociada una puerta de enlace pública. De lo contrario, la subred sigue siendo privada.

Obtén el ID de cada subred. En este ejemplo, se ha seleccionado la subred « zone1-vm-prod ».

ic is subnets | awk ' $8 ~ /yourVPC-NAME_GOES-HERE/'

Salida de ejemplo:

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

Conectar una puerta de enlace pública a la subred

Conecta una puerta de enlace pública a la subred zone1-vm-prod utilizando el ID de subred 0716-efd14367-eed3-429d-b390-ea17f0e8cfb1.

ic is subnet-public-gateway-attach zone1-vm-prod --pgw r134-053cb8b1-d966-4b02-9f20-5fcbeda76048

Debes repetir este paso para cada nueva subred y cada zona. Las puertas de enlace públicas se asignan por VPC y por zona.

Nivel 2: Instalación de fontanería principal

Las redes primarias de capa 2 requieren una configuración inicial antes de que el usuario final pueda utilizarlas.

Antes de poder utilizar las redes primarias de capa 2, debes realizar una configuración inicial.

Instalación del FRR OVN Router Pod

Aplica el parche « Red Hat OpenShift » al clúster IBM Cloud para habilitar la opción «Free Range Routing» (FRR) en el pod de Open Virtual Networking (OVN). Aplica el siguiente parche para habilitar FRR como proveedor de enrutamiento adicional y para anunciar rutas en la configuración de OVN- Kubernetes.

oc patch Network.operator.openshift.io cluster --type=merge -p='{"spec":{"additionalRoutingCapabilities":{"providers":["FRR"]},"defaultNetwork":{"ovnKubernetesConfig":{"routeAdvertisements":"Enabled"}}}}'

Habilitación de la conectividad de red entre espacios de nombres

Aplica la configuración de red básica que permita la conectividad entre espacios de nombres para las redes definidas por el usuario en clúster (CUDN) anunciadas a través del Protocolo de puerta de enlace fronteriza (BGP). Esta configuración suaviza el comportamiento predeterminado de aislamiento de la red definida por el usuario (UDN). Guarda el siguiente manifiesto en un archivo y aplícalo con el 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"

Activación del selector de anuncios de rutas

Añade anuncios de ruta para configurar OVN de modo que anuncie las redes de pods a través de BGP con el pod OVN FRR. Guarda el siguiente manifiesto en un archivo y aplícalo con el comando « oc apply -f step1.yml ».

Las redes deben llevar la 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"
---