[対象環境] において、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"
---