4.3. MetalLB BGP ピアの設定
クラスター管理者は、ボーダーゲートウェイプロトコル (BGP) ピアを追加、変更、および削除できます。MetalLB Operator は、BGP ピアカスタムリソースを使用して、MetalLB speaker
Pod が BGP セッションを開始するために接続するピアを識別します。ピアは、MetalLB がサービスに割り当てるロードバランサー IP アドレスのルートアドバタイズメントを受信します。
4.3.1. BGP ピアカスタムリソースについて リンクのコピーリンクがクリップボードにコピーされました!
次の表で、BGP ピアカスタムリソースのフィールドを説明します。
フィールド | 型 | 説明 |
---|---|---|
|
| BGP ピアカスタムリソースの名前を指定します。 |
|
| BGP ピアカスタムリソースの namespace を指定します。 |
|
|
BGP セッションのローカルエンドの AS 番号 (ASN) を指定します。追加するすべての BGP ピアカスタムリソースに同じ値を指定します。範囲は |
|
|
BGP セッションのリモートエンドの ASN を指定します。範囲は |
|
|
明示的に設定せずに、セッションのリモートエンドに使用する ASN を検出します。同じ ASN を持つピアの場合は |
|
| BGP セッションを確立するために接続するピアの IP アドレスを指定します。 |
|
| オプション: BGP セッションの確立時に使用する IP アドレスを指定します。値は IPv4 アドレスである必要があります。 |
|
|
オプション: BGP セッションを確立するために接続するピアのネットワークポートを指定します。範囲は |
|
|
オプション: BGP ピアに提案するホールドタイムの期間を指定します。最小値は 3 秒 ( |
|
|
オプション: キープアライブメッセージを BGP ピアに送信する間の最大間隔を指定します。このフィールドを指定する場合は、 |
|
| オプション: BGP ピアにアドバタイズするルーター ID を指定します。このフィールドを指定する場合は、追加するすべての BGP ピアカスタムリソースに同じ値を指定する必要があります。 |
|
| オプション: TCP MD5 認証が済んだ BGP セッションを実施するルーターのピアに送信する MD5 パスワードを指定します。 |
|
|
オプション: BGP ピアの認証シークレットの名前を指定します。シークレットは |
|
| オプション: BFD プロファイルの名前を指定します。 |
|
| オプション: 一致式と一致ラベルを使用してセレクターを指定し、BGP ピアに接続できるノードを制御します。 |
|
|
オプション: BGP ピアがネットワークホップ数回分を離れるように指定します。BGP ピアが同じネットワークに直接接続されていない場合には、このフィールドが |
|
| BGP が近隣に次に接続を試行するまで待機する時間を指定します。 |
passwordSecret
フィールドは、password
フィールドと相互に排他的であり、使用するパスワードを含むシークレットへの参照が含まれています。両方のフィールドを設定すると、解析が失敗します。
4.3.2. BGP ピアの設定 リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、BGP ピアカスタムリソースを追加して、ネットワークルーターとルーティング情報を交換し、サービスの IP アドレスをアドバタイズできます。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。 - BGP アドバタイズメントを使用して MetalLB を設定します。
手順
以下の例のような内容で、
bgppeer.yaml
などのファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow BGP ピアの設定を適用します。
oc apply -f bgppeer.yaml
$ oc apply -f bgppeer.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.3. 指定されたアドレスプールに対して特定の BGP ピアセットを設定 リンクのコピーリンクがクリップボードにコピーされました!
これは、以下を実行するための手順です。
-
アドレスプールのセット (
pool1
およびpool2
) を設定します。 -
BGP ピアセット (
peer1
およびpeer2
) を設定します。 -
pool1
をpeer1
に、pool2
をpeer2
に割り当てるように BGP アドバタイズメントを設定します。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。
手順
アドレスプール
pool1
を作成します。以下の例のような内容で、
ipaddresspool1.yaml
などのファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow IP アドレスプール
pool1
の設定を適用します。oc apply -f ipaddresspool1.yaml
$ oc apply -f ipaddresspool1.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
アドレスプール
pool2
を作成します。以下の例のような内容で、
ipaddresspool2.yaml
などのファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow IP アドレスプール
pool2
の設定を適用します。oc apply -f ipaddresspool2.yaml
$ oc apply -f ipaddresspool2.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
BGP
peer1
を作成します。以下の例のような内容で、
bgppeer1.yaml
などのファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow BGP ピアの設定を適用します。
oc apply -f bgppeer1.yaml
$ oc apply -f bgppeer1.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
BGP
peer2
を作成します。以下の例のような内容で、
bgppeer2.yaml
などのファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow BGP peer2 の設定を適用します。
oc apply -f bgppeer2.yaml
$ oc apply -f bgppeer2.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
BGP advertisement 1 を作成します。
以下の例のような内容で、
bgpadvertisement1.yaml
などのファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定を適用します。
oc apply -f bgpadvertisement1.yaml
$ oc apply -f bgpadvertisement1.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
BGP advertisement 2 を作成します。
以下の例のような内容で、
bgpadvertisement2.yaml
などのファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定を適用します。
oc apply -f bgpadvertisement2.yaml
$ oc apply -f bgpadvertisement2.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.4. ネットワーク VRF を介したサービスの公開 リンクのコピーリンクがクリップボードにコピーされました!
ネットワークインターフェイス上の VRF を BGP ピアに関連付けることで、Virtual Routing and Forwarding (VRF) インスタンスを介してサービスを公開できます。
BGP ピア上の VRF を介したサービスの公開は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
ネットワークインターフェイス上で VRF を使用して BGP ピア経由でサービスを公開すると、サービスへのトラフィックを分離し、独立したルーティング決定を設定し、ネットワークインターフェイス上でマルチテナントのサポートを有効化できます。
ネットワーク VRF に属するインターフェイスを通じて BGP セッションを確立すると、MetalLB はそのインターフェイスを通じてサービスをアドバタイズし、外部トラフィックがこのインターフェイスを通じてサービスに到達させることができます。ただし、ネットワーク VRF ルーティングテーブルは、OVN-Kubernetes で使用されるデフォルトの VRF ルーティングテーブルとは異なります。したがって、トラフィックは OVN-Kubernetes ネットワークインフラストラクチャーに到達できません。
サービスに送信されたトラフィックが OVN-Kubernetes ネットワークインフラストラクチャーに到達できるようにするには、ルーティングルールを設定してネットワークトラフィックのネクストホップを定義する必要があります。詳細は、関連情報 セクションの 「MetalLB を使用した対称ルーティングの管理」の NodeNetworkConfigurationPolicy
リソースを参照してください。
BGP ピアを使用してネットワーク VRF を介してサービスを公開するための概要手順は次のとおりです。
- BGP ピアを定義し、ネットワーク VRF インスタンスを追加します。
- MetalLB の IP アドレスプールを指定します。
- MetalLB の BGP ルートアドバタイズメントを設定して、指定された IP アドレスプールと VRF インスタンスに関連付けられた BGP ピアを使用してルートをアドバタイズします。
- サービスをデプロイして設定をテストします。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。 -
NodeNetworkConfigurationPolicy
を定義して、Virtual Routing and Forwarding (VRF) インスタンスをネットワークインターフェイスに関連付けた。この前提条件を満たす方法の詳細は、関連情報 セクションを参照してください。 - MetalLB をクラスターにインストールした。
手順
BGPPeer
カスタムリソース (CR) を作成します。次の例のような内容を含むファイル
(frrviavrf.yaml
など) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- BGP ピアに関連付けるネットワーク VRF インスタンスを指定します。MetalLB は、サービスをアドバタイズし、VRF 内のルーティング情報に基づいてルーティングを決定できます。
注記このネットワーク VRF インスタンスは
NodeNetworkConfigurationPolicy
CR で設定する必要があります。詳細は、関連情報 を参照してください。次のコマンドを実行して、BGP ピアの設定を適用します。
oc apply -f frrviavrf.yaml
$ oc apply -f frrviavrf.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
IPAddressPool
CR を作成します。次の例のような内容を含むファイル (
first-pool.yaml
など) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、IP アドレスプールの設定を適用します。
oc apply -f first-pool.yaml
$ oc apply -f first-pool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
BGPAdvertisement
CR を作成します。次の例のような内容を含むファイル (
first-adv.yaml
など) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- この例では、MetalLB は、
first-pool
の IP アドレスプールからfrrviavrf
BGP ピアに IP アドレスの範囲をアドバタイズします。
次のコマンドを実行して、BGP アドバタイズメントの設定を適用します。
oc apply -f first-adv.yaml
$ oc apply -f first-adv.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Namespace
、Deployment
、およびService
CR を作成します。次の例のような内容を含むファイル (
deploy-service.yaml
など) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、namespace、デプロイメント、およびサービスの設定を適用します。
oc apply -f deploy-service.yaml
$ oc apply -f deploy-service.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、MetalLB スピーカー Pod を識別します。
oc get -n metallb-system pods -l component=speaker
$ oc get -n metallb-system pods -l component=speaker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE speaker-c6c5f 6/6 Running 0 69m
NAME READY STATUS RESTARTS AGE speaker-c6c5f 6/6 Running 0 69m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、BGP セッションの状態がスピーカー Pod で
Established
となっていることを確認します。設定に一致するように変数を置き換えます。oc exec -n metallb-system <speaker_pod> -c frr -- vtysh -c "show bgp vrf <vrf_name> neigh"
$ oc exec -n metallb-system <speaker_pod> -c frr -- vtysh -c "show bgp vrf <vrf_name> neigh"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
BGP neighbor is 192.168.30.1, remote AS 200, local AS 100, external link BGP version 4, remote router ID 192.168.30.1, local router ID 192.168.30.71 BGP state = Established, up for 04:20:09 ...
BGP neighbor is 192.168.30.1, remote AS 200, local AS 100, external link BGP version 4, remote router ID 192.168.30.1, local router ID 192.168.30.71 BGP state = Established, up for 04:20:09 ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、サービスが正しくアドバタイズされていることを確認します。
oc exec -n metallb-system <speaker_pod> -c frr -- vtysh -c "show bgp vrf <vrf_name> ipv4"
$ oc exec -n metallb-system <speaker_pod> -c frr -- vtysh -c "show bgp vrf <vrf_name> ipv4"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.5. BGP ピア設定の例 リンクのコピーリンクがクリップボードにコピーされました!
4.3.5.1. 例: BGP ピアに接続するノードの制限 リンクのコピーリンクがクリップボードにコピーされました!
ノードセレクターフィールドを指定して、BGP ピアに接続できるノードを制御できます。
4.3.5.2. 例: BGP ピアの BFD プロファイル指定 リンクのコピーリンクがクリップボードにコピーされました!
BGP ピアに関連付ける BFD プロファイルを指定できます。BFD は、BGP のみの場合よりも、ピア間の通信障害をより迅速に検出して、BGP を補完します。
双方向転送検出 (BFD) プロファイルを削除し、ボーダーゲートウェイプロトコル (BGP) ピアリソースに追加された bfdProfile
を削除しても、BFD は無効になりません。代わりに、BGP ピアはデフォルトの BFD プロファイルの使用を開始します。BGP ピアリソースから BFD をディセーブルにするには、BGP ピア設定を削除し、BFD プロファイルなしで再作成します。詳細は、BZ#2050824 を参照してください。
4.3.5.3. 例: デュアルスタックネットワーク用の BGP ピア指定 リンクのコピーリンクがクリップボードにコピーされました!
デュアルスタックネットワーキングをサポートするには、IPv4 用に BGP ピアカスタムリソース 1 つと IPv6 用に BGP ピアカスタムリソースを 1 つ追加します。