Prerequisiti per la configurazione delle reti definite dall'utente (UDN) di Open Virtual Network (OVN) su Red Hat OpenShift on IBM Cloud

Configurare i prerequisiti una tantum della rete definita dall'utente (CUDN) del cluster OVN per le reti Localnet e primarie di livello 2 su Red Hat OpenShift on IBM Cloud.

Questo tutorial illustra come configurare i prerequisiti per CUDN Localnets e Layer 2 Primaries su Red Hat® OpenShift® Kubernetes Service su IBM Cloud. Tutte le operazioni descritte in questo tutorial vengono eseguite una volta per ogni cluster.

Panoramica su Localnet

Red Hat OpenShift Kubernetes Service Le reti Localnet richiedono una configurazione aggiuntiva che i clienti non effettuano in ROVS. Questo tutorial illustra i passaggi necessari.

Preparazione del cluster " Red Hat OpenShift on IBM Cloud "

Il cluster " Red Hat OpenShift " su IBM Cloud richiede l'operatore NMState. NMState garantisce una configurazione di rete permanente per i bridge e le reti fisiche. Questo passaggio installa l'operatore.

Si prega di tenere presenti le seguenti considerazioni:

  • Una volta applicato il manifesto, l'installazione richiede dai 5 ai 10 minuti per essere completata.
  • Creare un solo bridge per ogni interfaccia.
  • Non tentare di sostituire il ponte su eth0.

Copia il seguente blocco di codice in un file e esegui il comando oc apply -f step0a.yml per installare 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

Attendere che l'operatore registri la definizione della risorsa personalizzata (CRD) NMState prima di creare la risorsa personalizzata NMState. Se si applica la risorsa NMState prima che il CRD sia stato creato, viene visualizzato un errore del tipo no matches for kind "NMState" in version "nmstate.io/v1".

Eseguire i seguenti comandi per effettuare il polling fino a quando non compare il CRD, quindi attendere che raggiunga lo stato " 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

Verificare che tutti i CRD NMState siano installati.

oc get crd | grep nmstate

Output di esempio:

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

Una volta pronti i CRD, copia il seguente blocco di codice in un file e applicalo con il comando oc apply -f step0b.yml per creare la risorsa personalizzata NMState .

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

Applicazione della configurazione a ponte

Applicare la configurazione di base del bridge per utilizzare la seconda scheda di rete (NIC) PCI-VNI (Peripheral Component Interconnect-Virtual Network Interface) (eth1).

Copia il seguente blocco di codice in un file e applicalo 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"

Attendere che questa configurazione venga applicata a tutti i nodi prima di passare alla fase successiva.

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

Applicazione della configurazione di mappatura del bridge

Applicare la configurazione di base del bridge-mapping.

Copia il seguente blocco di codice in un file e applicalo 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

Creazione di un prefisso secondario personalizzato e di sottoreti per la propria VPC

Le reti locali possono utilizzare sottoreti VPC secondarie per ciascuna rete. In questo esempio vengono utilizzate tre nuove sottoreti appartenenti a un nuovo prefisso VPC. È possibile sostituire qualsiasi prefisso o rete, oppure utilizzare le impostazioni predefinite della VPC.

Creazione di un nuovo prefisso VPC

Crea un nuovo prefisso per ogni zona. In questo esempio viene utilizzata la superrete 198.18.0.0/16 e vengono creati tre prefissi (sottoreti) /18, uno per ogni 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

Creazione di nuove sottoreti VPC

Crea tre sottoreti VPC (prod, db e app) per 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

Collegamento di un gateway pubblico secondo necessità

Assicurarsi che a ciascuna zona sia associato un gateway pubblico. In caso contrario, la sottorete rimane privata.

Ottieni l'ID di ciascuna sottorete. In questo esempio, è selezionata la sottorete " zone1-vm-prod ".

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

Output di esempio:

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

Collegamento di un gateway pubblico alla sottorete

Collegare un gateway pubblico alla sottorete zone1-vm-prod utilizzando l'ID della sottorete 0716-efd14367-eed3-429d-b390-ea17f0e8cfb1.

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

È necessario ripetere questo passaggio per ogni nuova sottorete e per ogni zona. I gateway pubblici sono associati a ciascuna VPC e a ciascuna zona.

Impianto idraulico primario di livello 2

Le reti primarie di livello 2 richiedono l'esecuzione di alcune operazioni preliminari prima che un utente finale possa utilizzarle.

Prima di poter utilizzare le reti primarie di livello 2, è necessario completare alcune operazioni di configurazione iniziale.

Installazione del router pod FRR OVN

Applicare la patch all' Red Hat OpenShift e del cluster IBM Cloud per rendere disponibile l'opzione Free Range Routing (FRR) nel pod Open Virtual Networking (OVN). Applicare la seguente patch per abilitare FRR come provider di routing aggiuntivo e per gli annunci di routing nella configurazione OVN- Kubernetes.

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

Abilitazione del networking tra spazi dei nomi

Applicare la configurazione di rete di base che consente il collegamento tra spazi dei nomi per le reti definite dall'utente del cluster (CUDN) pubblicizzate tramite il protocollo BGP (Border Gateway Protocol). Questa configurazione rende meno restrittivo il comportamento predefinito di isolamento della rete definita dall'utente (UDN). Salva il seguente manifesto in un file e applicalo con il 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"

Attivazione del selettore degli annunci di percorso

Aggiungere annunci di route per configurare OVN in modo che pubblicizzi le reti dei pod tramite BGP con il pod OVN FRR. Salva il seguente manifesto in un file e applicalo con il comando oc apply -f step1.yml``.

Le reti devono recare l'etichetta “ 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"
---