Voraussetzungen für die Konfiguration von benutzerdefinierten Netzwerken (UDN) in Open Virtual Network (OVN) auf Red Hat OpenShift on IBM Cloud

Konfigurieren Sie die einmaligen Voraussetzungen für das benutzerdefinierte OVN-Cluster-Netzwerk (CUDN) für Localnet- und Layer-2-Primärnetzwerke unter Red Hat OpenShift on IBM Cloud.

In diesem Tutorial wird gezeigt, wie Sie die Voraussetzungen für CUDN-Localnets und Layer-2-Primaries unter Red Hat® OpenShift® sowie unter Kubernetes Service auf IBM Cloud einrichten. Alle in diesem Tutorial beschriebenen Aufgaben werden einmal pro Cluster ausgeführt.

Localnet-Übersicht

Red Hat OpenShift Kubernetes Service Localnet-Netzwerke erfordern zusätzliche Konfigurationsschritte, die Kunden in ROVS nicht vornehmen. In dieser Anleitung werden die erforderlichen Schritte erläutert.

Vorbereitung des „ Red Hat OpenShift on IBM Cloud “-Clusters

Für den Cluster „ Red Hat OpenShift “ auf IBM Cloud ist der NMState Operator erforderlich. NMState sorgt für eine dauerhafte Netzwerkkonfiguration für Brücken und physische Netzwerke. In diesem Schritt wird der Operator installiert.

Beachten Sie bitte Folgendes:

  • Die Installation dauert 5 bis 10 Minuten, nachdem Sie das Manifest angewendet haben.
  • Erstellen Sie pro Schnittstelle nur eine Brücke.
  • Versuchen Sie nicht, die Brücke auf eth0 zu verändern.

Kopieren Sie den folgenden Code-Block in eine Datei und führen Sie ihn mit dem Befehl „ oc apply -f step0a.yml “ aus, um den NMState Operator zu installieren.

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

Warten Sie, bis der Administrator die benutzerdefinierte Ressourcendefinition (CRD) „ NMState “ registriert hat, bevor Sie die benutzerdefinierte Ressource „ NMState “ erstellen. Wenn Sie die Ressource „ NMState “ anwenden, bevor die CRD eingerichtet ist, wird eine Fehlermeldung wie „ no matches for kind "NMState" in version "nmstate.io/v1" “ angezeigt.

Führen Sie die folgenden Befehle aus, um so lange abzufragen, bis das CRD angezeigt wird, und warten Sie anschließend, bis es den Status „ Established “ erreicht hat.

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

Stellen Sie sicher, dass alle NMState-CRDs installiert sind.

oc get crd | grep nmstate

Beispielausgabe:

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

Sobald die CRDs fertig sind, kopieren Sie den folgenden Code-Block in eine Datei und wenden Sie ihn mit „ oc apply -f step0b.yml “ an, um die benutzerdefinierte Ressource „ NMState “ zu erstellen.

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

Anwendung der Brückenkonfiguration

Wenden Sie die grundlegende Bridge-Konfiguration an, um die zweite PCI-VNI-Netzwerkkarte (Peripheral Component Interconnect-Virtual Network Interface) zu verwenden (eth1).

Kopieren Sie den folgenden Code-Block in eine Datei und führen Sie ihn mit dem Befehl „ oc apply -f step1.yml “ aus.

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

Warten Sie, bis diese Konfiguration auf allen Knoten übernommen wurde, bevor Sie mit dem nächsten Schritt fortfahren.

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

Anwendung der Bridge-Mapping-Konfiguration

Wenden Sie die grundlegende Konfiguration für das Bridge-Mapping an.

Kopieren Sie den folgenden Code-Block in eine Datei und führen Sie ihn mit dem Befehl „ oc apply -f step2.yml “ aus.

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

Erstellen eines benutzerdefinierten sekundären Präfixes und von Subnetzen für Ihre VPC

Lokale Netzwerke können für jedes Netzwerk sekundäre VPC-Subnetze verwenden. In diesem Beispiel werden drei neue Subnetze aus einem neuen VPC-Präfix verwendet. Sie können ein beliebiges Präfix oder Netzwerk angeben oder die VPC-Standardwerte verwenden.

Ein neues VPC-Präfix erstellen

Erstellen Sie für jede Zone ein neues Präfix. In diesem Beispiel wird das Supernetz 198.18.0.0/16 verwendet und es werden drei Präfixe (Subnetze) /18 erstellt, eines pro Zone.

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

Neue VPC-Subnetze erstellen

Erstellen Sie drei VPC-Subnetze (prod, db und app) für Zone 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

Ein öffentliches Gateway nach Bedarf einbinden

Stellen Sie sicher, dass jeder Zone ein öffentliches Gateway zugeordnet ist. Andernfalls bleibt das Subnetz privat.

Rufen Sie die ID für jedes Subnetz ab. In diesem Beispiel ist das Subnetz „ zone1-vm-prod “ ausgewählt.

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

Beispielausgabe:

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

Ein öffentliches Gateway an das Subnetz anbinden

Fügen Sie dem Subnetz „ zone1-vm-prod “ ein öffentliches Gateway hinzu, indem Sie die Subnetz-ID „ 0716-efd14367-eed3-429d-b390-ea17f0e8cfb1 “ verwenden.

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

Sie müssen diesen Schritt für jedes neue Subnetz und jede Zone wiederholen. Öffentliche Gateways werden pro VPC und pro Zone eingerichtet.

Ebene 2: Primäre Rohrleitungen

Bei Layer-2-Primärnetzwerken müssen zunächst einige grundlegende Konfigurationen vorgenommen werden, bevor ein Endbenutzer sie nutzen kann.

Bevor Sie Layer-2-Primärnetzwerke nutzen können, müssen Sie einige Erstkonfigurationen vornehmen.

Installation des FRR OVN Router Pods

Wenden Sie den Patch „ Red Hat OpenShift “ auf den Cluster „ IBM Cloud “ an, um die Option „Free Range Routing“ (FRR) im Open Virtual Networking (OVN)-Pod freizuschalten. Wenden Sie den folgenden Patch an, um FRR als zusätzlichen Routing-Anbieter zu aktivieren und Routing-Ankündigungen in der OVN- Kubernetes-Konfiguration zu leiten.

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

Aktivieren der Vernetzung zwischen Namespaces

Wenden Sie die Basisnetzwerkkonfiguration an, die die Vernetzung zwischen Namespaces für benutzerdefinierte Cluster-Netzwerke (CUDNs) ermöglicht, die über das Border Gateway Protocol (BGP) bekannt gegeben werden. Diese Konfiguration lockert das standardmäßige Isolationsverhalten für benutzerdefinierte Netzwerke (UDN). Speichern Sie das folgende Manifest in einer Datei und wenden Sie es mit dem Befehl „ oc apply -f step0.yml “ an.

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

Auswahlfunktion für Routenankündigungen aktivieren

Fügen Sie Routenankündigungen hinzu, um OVN so zu konfigurieren, dass Pod-Netzwerke über BGP mit dem OVN-FRR-Pod angekündigt werden. Speichern Sie das folgende Manifest in einer Datei und wenden Sie es mit dem Befehl „ oc apply -f step1.yml “ an.

Netzwerke müssen die Bezeichnung „ advertise: true “ tragen.

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