[対象環境] において、Open Virtual Network (OVN) のユーザー定義ネットワーク (UDN) を設定するための前提条件 Red Hat OpenShift on IBM Cloud

Red Hat OpenShift on IBM Cloud 上の Localnet およびレイヤー 2 プライマリ ネットワークについて、OVN クラスタのユーザー定義ネットワーク (CUDN) に関する 1 回限りの前提条件を設定します。

このチュートリアルでは、 Red Hat® OpenShift® Kubernetes Service および IBM Cloud における CUDN Localnets および Layer 2 Primaries の前提条件を設定する方法について説明します。 このチュートリアルで説明されているすべてのタスクは、クラスタごとに1回実行されます。

Localnetの概要

Red Hat OpenShift Kubernetes Service Localnetネットワークでは、ROVSでは顧客が行わない追加の設定が必要です。 このチュートリアルでは、必要な手順について説明します。

Red Hat OpenShift on IBM Cloud クラスタの準備

IBM Cloud クラスター上の Red Hat OpenShift には、NMState Operatorが必要です。 NMStateは、ブリッジおよび物理ネットワークに対して永続的なネットワーク設定を提供します。 この手順では、オペレーターをインストールします。

以下の点に留意してください:

  • マニフェストを適用してから、インストールが完了するまで5~10分かかります。
  • インターフェースごとにブリッジは1つだけ作成してください。
  • eth0 のブリッジを交換しようとしないでください。

以下のコードブロックをファイルにコピーし、 oc apply -f step0a.yml を実行して適用することで、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

「 NMState 」カスタムリソースを作成する前に、オペレーターが「 NMState 」カスタムリソース定義(CRD)を登録するのを待ってください。 CRDが確立される前に NMState リソースを適用すると、「 no matches for kind "NMState" in version "nmstate.io/v1" 」といったエラーが表示されます。

以下のコマンドを実行して、CRDが表示されるまでポーリングを行い、その後、 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

すべてのNMState CRDがインストールされていることを確認してください。

oc get crd | grep nmstate

出力例:

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

CRDの準備が整ったら、以下のコードブロックをファイルにコピーし、 oc apply -f step0b.yml で適用して、 NMState というカスタムリソースを作成します。

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

ブリッジ構成の適用

2枚目のPCI-VNI(Peripheral Component Interconnect-Virtual Network Interface)ネットワークインターフェースカード(NIC)を使用するには、基本的なブリッジ設定を適用してください(eth1 )。

以下のコードブロックをファイルにコピーし、 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"

次の手順に進む前に、この設定がすべてのノードに反映されるまでお待ちください。

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

ブリッジマッピング設定の適用

基本的なブリッジマッピングの設定を適用します。

以下のコードブロックをファイルにコピーし、 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

VPC 用のカスタムセカンダリプレフィックスとサブネットの作成

Localnets では、各ネットワークに対してセカンダリ VPC サブネットを使用できます。 この例では、新しいVPCプレフィックスから3つの新しいサブネットを使用しています。 任意のプレフィックスやネットワークを指定することも、VPCのデフォルト設定を使用することもできます。

新しいVPCプレフィックスの作成

ゾーンごとに新しいプレフィックスを作成します。 この例では、スーパーネット 198.18.0.0/16 を使用し、ゾーンごとに 1 つずつ、合計 3 つの /18 プレフィックス(サブネット)を作成します。

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

新しいVPCサブネットの作成

ゾーン 1 用に、3 つの VPC サブネット(prod、 db、および app )を作成します。

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

必要に応じてパブリックゲートウェイを接続する

各ゾーンにパブリックゲートウェイが接続されていることを確認してください。 それ以外の場合は、サブネットはプライベートなままとなります。

各サブネットのIDを取得してください。 この例では、「 zone1-vm-prod 」サブネットが選択されています。

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

出力例:

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

サブネットへのパブリックゲートウェイの接続

サブネット ID「 0716-efd14367-eed3-429d-b390-ea17f0e8cfb1 」を使用して、 zone1-vm-prod サブネットにパブリックゲートウェイを接続します。

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

新しいサブネットやゾーンが追加されるたびに、この手順を繰り返す必要があります。 パブリックゲートウェイは、VPCごとおよびゾーンごとに設定されます。

第2層 主要配管

レイヤー2のプライマリネットワークは、エンドユーザーが利用できるようになる前に、ある程度の初期設定を行う必要があります。

レイヤー2プライマリネットワークを使用するには、事前にいくつかの初期設定を行う必要があります。

FRR OVN ルーター・ポッドのインストール

IBM Cloud クラスタ上の Red Hat OpenShift にパッチを適用し、Open Virtual Networking(OVN)ポッドでFree Range Routing(FRR)オプションを利用できるようにします。 OVN- Kubernetes の設定において、FRRを追加のルーティングプロバイダーとして有効にし、ルーティングアドバタイズメントを送信するには、以下のパッチを適用してください。

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

ネームスペース間のネットワーク通信を有効にする

ボーダーゲートウェイプロトコル(BGP)を通じてアドバタイズされるクラスタユーザー定義ネットワーク(CUDN)において、ネームスペース間のネットワーク通信を許可する基本ネットワーク設定を適用します。 この設定により、ユーザー定義ネットワーク(UDN)のデフォルトの分離動作が緩和されます。 以下のマニフェストをファイルに保存し、 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"

ルートアドバタイズメントセレクタの有効化

ルートアドバタイズメントを追加して、OVN FRR ポッドを介して BGP 経由でポッドネットワークをアドバタイズするように OVN を設定します。 以下のマニフェストをファイルに保存し、 oc apply -f step1.yml で適用してください。

ネットワークには、 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"
---