8.3.4. RHOSO ネットワーク VIPS 用の RHOCP の準備
MetalLBOperator を使用して、隔離されたネットワーク上で内部サービスエンドポイントを公開します。仮想 IP アドレス (VIP) のアナウンス方法を定義する L2Advertisement リソースと、仮想 IP アドレスを設定するための IPAddressPool リソースを作成します。レイヤー 2 モードでは、1 つのノードがローカルネットワークにサービスを通知します。
手順
-
ワークステーションに
IPAddressPoolCR ファイル (例:openstack-ipaddresspools.yaml) を作成します。 IPAddressPoolCR ファイルで、分離ネットワークのIPAddressPoolリソースを設定して、MetalLB に権限を与える IP アドレスの範囲を指定します。apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: namespace: metallb-system name: ctlplane spec: addresses: - 192.168.122.80-192.168.122.90 autoAssign: true avoidBuggyIPs: false serviceAllocation: namespaces: - openstack --- apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: internalapi namespace: metallb-system spec: addresses: - 172.17.0.80-172.17.0.90 autoAssign: true avoidBuggyIPs: false --- apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: namespace: metallb-system name: designateext spec: addresses: - 172.34.0.80-172.34.0.120 autoAssign: true avoidBuggyIPs: false ----
spec.addresses:IPAddressPoolの範囲が、whereaboutsIPAM の範囲および NetConfigallocationRangeと重複しないようにしてください。 -
spec.serviceAllocation:IPAddressPool範囲の IP アドレスを使用できる namespace を指定します。これは省略可能なフィールドです。これを設定すると、RHOCP クラスター上でホストされている RHOSO 以外のサービスがIPAddressPool範囲の IP アドレスを使用するのを防止できます。
その他の
IPAddressPoolリソースパラメーターの設定方法については、RHOCP ネットワーク ガイドの MetalLB アドレスプールの設定を 参照してください。-
クラスターに
IPAddressPoolCR を作成します。$ oc apply -f openstack-ipaddresspools.yamlIPAddressPoolCR が作成されたことを確認します。$ oc describe -n metallb-system IPAddressPool-
ワークステーションに
L2AdvertisementCR ファイル (例:openstack-l2advertisement.yaml) を作成します。 L2AdvertisementCR ファイルで、L2AdvertisementCR を設定して、どのノードがローカルネットワークにサービスをアドバタイズするかを定義します。各ネットワークに 1 つのL2Advertisementリソースを作成します。次の例の各
L2AdvertisementCR では、ネットワークアドレスプールから要求された VIP が VLAN に割り当てられているインターフェイスで通知されるように指定しています。apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: ctlplane namespace: metallb-system spec: ipAddressPools: - ctlplane interfaces: - enp6s0 nodeSelectors: - matchLabels: node-role.kubernetes.io/worker: "" --- apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: internalapi namespace: metallb-system spec: ipAddressPools: - internalapi interfaces: - internalapi nodeSelectors: - matchLabels: node-role.kubernetes.io/worker: "" --- apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: designateext namespace: metallb-system spec: ipAddressPools: - designateext interfaces: - designateext nodeSelectors: - matchLabels: node-role.kubernetes.io/worker: ""-
spec.interfaces: VLAN アドレスプールから要求された VIP が通知されるインターフェイス。
その他の
L2Advertisementリソースパラメーターの設定方法については、RHOCP ネットワーク ガイドの L2 アドバタイズメントとラベルを使用した MetalLB の設定を 参照してください。-
クラスターに
L2AdvertisementCR を作成します。$ oc apply -f openstack-l2advertisement.yamlL2AdvertisementCR が作成されたことを確認します。$ oc get -n metallb-system L2Advertisement NAME IPADDRESSPOOLS IPADDRESSPOOL SELECTORS INTERFACES ctlplane ["ctlplane"] ["enp6s0"] designateext ["designateext"] ["designateext"] internalapi ["internalapi"] ["internalapi"] storage ["storage"] ["storage"] tenant ["tenant"] ["tenant"]クラスターにネットワークバックエンドとして OVNKubernetes がある場合は、MetalLB がセカンダリーネットワークインターフェイスで動作できるように、グローバル転送を有効にする必要があります。
クラスターが使用するネットワークバックエンドを確認します。
$ oc get network.operator cluster --output=jsonpath='{.spec.defaultNetwork.type}'バックエンドが OVNKubernetes の場合は、次のコマンドを実行してグローバル IP 転送を有効にします。
$ oc patch network.operator cluster -p '{"spec":{"defaultNetwork":{"ovnKubernetesConfig":{"gatewayConfig":{"ipForwarding": "Global"}}}}}' --type=merge