27.8. MetalLB と FRR-K8s の統合の設定
FRRConfiguration カスタムリソースは、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品サポートのサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではない場合があります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
FRRouting (FRR) は、Linux および UNIX プラットフォーム用の無料のオープンソースインターネットルーティングプロトコルスイートです。FRR-K8s は、Kubernetes に準拠した方法で FRR API のサブセットを公開する Kubernetes ベースの DaemonSet です。クラスター管理者は、FRRConfiguration カスタムリソース (CR) を使用して、MetalLB がバックエンドとして FRR-K8s を使用するように設定できます。これを使用して、受信ルートなどの FRR サービスを利用できます。FRR-K8s をバックエンドとして MetalLB を実行すると、MetalLB は適用された MetalLB 設定に対応する FRR-K8s 設定を生成します。
27.8.1. MetalLB と FRR-K8s の統合の有効化 リンクのコピーリンクがクリップボードにコピーされました!
次の手順では、MetalLB のバックエンドとして FRR-K8s をアクティブ化する方法を示します。
前提条件
- ベアメタルハードウェアにクラスターがインストールされている。
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてログインしている。
手順
次の例のように、
MetalLBCR のbgpBackendフィールドをfrr-k8sに設定します。apiVersion: metallb.io/v1beta1 kind: MetalLB metadata: name: metallb namespace: metallb-system spec: bgpBackend: frr-k8s
27.8.2. FRR の設定 リンクのコピーリンクがクリップボードにコピーされました!
MetalLB で FRR サービスを使用するために、複数の FRRConfiguration CR を作成できます。MetalLB は FRRConfiguration オブジェクトを生成し、FRR-K8s はそのオブジェクトをすべてのユーザーが作成した他のすべての設定とマージします。
たとえば、特定の近隣によりアドバタイズされた接頭辞すべてを受信するように FRR-K8s を設定できます。次の例では、ホスト 172.18.0.5 の BGPPeer によってアドバタイズされるすべての接頭辞を受信するように FRR-K8 を設定します。
FRRConfiguration CR の例
apiVersion: frrk8s.metallb.io/v1beta1
kind: FRRConfiguration
metadata:
name: test
namespace: metallb-system
spec:
bgp:
routers:
- asn: 64512
neighbors:
- address: 172.18.0.5
asn: 64512
toReceive:
allowed:
mode: all
また、FRR-K8s を設定して、適用される設定に関係なく、常に接頭辞のセットをブロックすることもできます。これは、クラスターが誤動作する可能性のある Pod または ClusterIPs CIDR へのルートを回避するのに役立ちます。次の例では、接頭辞セット 192.168.1.0/24 をブロックします。
MetalLB CR の例
apiVersion: metallb.io/v1beta1
kind: MetalLB
metadata:
name: metallb
namespace: metallb-system
spec:
bgpBackend: frr-k8s
frrk8sConfig:
alwaysBlock:
- 192.168.1.0/24
FRR-K8s を設定すると、クラスターネットワーク CIDR と サービスネットワーク CIDR をブロックできます。次のコマンドを実行すると、これらの CIDR アドレス仕様の値を表示できます。
$ oc describe network.config/cluster
27.8.3. FRRConfiguration CRD の設定 リンクのコピーリンクがクリップボードにコピーされました!
次のセクションでは、FRRConfiguration カスタムリソース (CR) を使用する参照例を示します。
27.8.3.1. routers フィールド リンクのコピーリンクがクリップボードにコピーされました!
routers フィールドを使用して、Virtual Routing and Forwarding (VRF) リソースごとに 1 つずつ、複数のルーターを設定できます。各ルーターに AS 番号 (ASN) を定義する必要があります。
次の例のように、接続する Border Gateway Protocol (BGP) の近隣のリストを定義することもできます。
FRRConfiguration CR の例
apiVersion: frrk8s.metallb.io/v1beta1
kind: FRRConfiguration
metadata:
name: test
namespace: frr-k8s-system
spec:
bgp:
routers:
- asn: 64512
neighbors:
- address: 172.30.0.3
asn: 4200000000
ebgpMultiHop: true
port: 180
- address: 172.18.0.6
asn: 4200000000
port: 179
27.8.3.2. toAdvertise フィールド リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、FRR-K8s はルーター設定の一部として設定された接頭辞をアドバタイズしません。これらをアドバタイズするには、toAdvertise フィールドを使用します。
次の例のように、接頭辞のサブセットをアドバタイズできます。
FRRConfiguration CR の例
apiVersion: frrk8s.metallb.io/v1beta1
kind: FRRConfiguration
metadata:
name: test
namespace: frr-k8s-system
spec:
bgp:
routers:
- asn: 64512
neighbors:
- address: 172.30.0.3
asn: 4200000000
ebgpMultiHop: true
port: 180
toAdvertise:
allowed:
prefixes:
- 192.168.2.0/24
prefixes:
- 192.168.2.0/24
- 192.169.2.0/24
- 1
- 接頭辞のサブセットをアドバタイズします。
次の例は、すべての接頭辞をアドバタイズする方法を示しています。
FRRConfiguration CR の例
apiVersion: frrk8s.metallb.io/v1beta1
kind: FRRConfiguration
metadata:
name: test
namespace: frr-k8s-system
spec:
bgp:
routers:
- asn: 64512
neighbors:
- address: 172.30.0.3
asn: 4200000000
ebgpMultiHop: true
port: 180
toAdvertise:
allowed:
mode: all
prefixes:
- 192.168.2.0/24
- 192.169.2.0/24
- 1
- すべての接頭辞をアドバタイズします。
27.8.3.3. toReceive フィールド リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、FRR-K8s は近隣によってアドバタイズされた接頭辞を処理しません。toReceive フィールドを使用して、このようなアドレスを処理できます。
次の例のように、接頭辞のサブセットを設定できます。
FRRConfiguration CR の例
apiVersion: frrk8s.metallb.io/v1beta1
kind: FRRConfiguration
metadata:
name: test
namespace: frr-k8s-system
spec:
bgp:
routers:
- asn: 64512
neighbors:
- address: 172.18.0.5
asn: 64512
port: 179
toReceive:
allowed:
prefixes:
- prefix: 192.168.1.0/24
- prefix: 192.169.2.0/24
ge: 25
le: 28
次の例では、アナウンスされたすべての接頭辞を処理するように FRR を設定します。
FRRConfiguration CR の例
apiVersion: frrk8s.metallb.io/v1beta1
kind: FRRConfiguration
metadata:
name: test
namespace: frr-k8s-system
spec:
bgp:
routers:
- asn: 64512
neighbors:
- address: 172.18.0.5
asn: 64512
port: 179
toReceive:
allowed:
mode: all
27.8.3.4. bgp フィールド リンクのコピーリンクがクリップボードにコピーされました!
bgp フィールドを使用して、さまざまな BFD プロファイルを定義し、それらを近隣に関連付けることができます。次の例では、BFD は、BGP セッションをバックアップし、FRR はリンク障害を検出できます。
FRRConfiguration CR の例
apiVersion: frrk8s.metallb.io/v1beta1
kind: FRRConfiguration
metadata:
name: test
namespace: frr-k8s-system
spec:
bgp:
routers:
- asn: 64512
neighbors:
- address: 172.30.0.3
asn: 64512
port: 180
bfdProfile: defaultprofile
bfdProfiles:
- name: defaultprofile
27.8.3.5. nodeSelector フィールド リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、FRR-K8s は、デーモンが実行されているすべてのノードに設定を適用します。nodeSelector フィールドを使用して、設定を適用するノードを指定できます。以下に例を示します。
FRRConfiguration CR の例
apiVersion: frrk8s.metallb.io/v1beta1
kind: FRRConfiguration
metadata:
name: test
namespace: frr-k8s-system
spec:
bgp:
routers:
- asn: 64512
nodeSelector:
labelSelector:
foo: "bar"
FRRConfiguration カスタムリソースのフィールドは、次の表で説明されています。
| フィールド | 型 | 説明 |
|---|---|---|
|
|
| FRR が設定するルーターを指定します (VRF ごとに 1 つ)。 |
|
|
| セッションのローカル側で使用する AS 番号 (ASN)。 |
|
|
|
|
|
|
| このルーターからセッションを確立するために使用されるホスト VRF を指定します。 |
|
|
| BGP セッションを確立する近隣を指定します。 |
|
|
| セッションのリモート終了に使用する ASN を指定します。 |
|
|
| セッションを確立する IP アドレスを指定します。 |
|
|
| セッションを確立するときにダイアリングするポートを指定します。デフォルトは 179 です。 |
|
|
|
BGP セッションの確立に使用するパスワードを指定します。 |
|
|
|
ネイバーの認証シークレットの名前を指定します。シークレットは "kubernetes.io/basic-auth" タイプであり、FRR-K8s デーモンと同じ namespace にある必要があります。キー "password" はパスワードをシークレットに保存します。 |
|
|
| RFC4271 に従って、要求された BGP ホールド時間を指定します。デフォルトは 180s です。 |
|
|
|
RFC4271 に従って、要求された BGP キープアライブ時間を指定します。デフォルトは |
|
|
| BGP が近隣に次に接続を試行するまで待機する時間を指定します。 |
|
|
| BGPPeer がマルチホップ分、離れているかどうかを示します。 |
|
|
| BGP セッションに関連付けられた BFD セッションに使用する BFD プロファイルの名前を指定します。設定されていない場合、BFD セッションは設定されません。 |
|
|
| 近隣にアドバタイズする接頭辞のリストと、関連するプロパティーを表します。 |
|
|
| 近隣にアドバタイズする接頭辞のリストを指定します。このリストは、ルーターで定義した接頭辞と一致する必要があります。 |
|
|
|
接頭辞を処理するときに使用するモードを指定します。接頭辞リスト内の接頭辞のみを許可するように |
|
|
| アドバタイズされたローカルプリファレンスに関連付けられた接頭辞を指定します。ローカル設定に関連付けられた接頭辞を、アドバタイズが許可される接頭辞に指定する必要があります。 |
|
|
| ローカル設定に関連付けられた接頭辞を指定します。 |
|
|
| 接頭辞に関連付けられたローカル設定を指定します。 |
|
|
| アドバタイズされた BGP コミュニティーに関連付けられた接頭辞を指定します。アドバタイズする接頭辞のリストに、ローカル設定に関連付けられた接頭辞を含める必要があります。 |
|
|
| コミュニティーに関連付けられた接頭辞を指定します。 |
|
|
| 接頭辞に関連付けられたコミュニティーを指定します。 |
|
|
| 近隣から受信する接頭辞を指定します。 |
|
|
| 近隣から受信する情報を指定します。 |
|
|
| 近隣から許可される接頭辞を指定します。 |
|
|
|
接頭辞を処理するときに使用するモードを指定します。 |
|
|
| MP BGP を無効にして、IPv4 と IPv6 のルート交換を別々の BGP セッションに分離しないようにします。 |
|
|
| このルーターインスタンスからアドバタイズするすべての接頭辞を指定します。 |
|
|
| 近隣を設定するときに使用する BFD プロファイルのリストを指定します。 |
|
|
| 設定の他の部分で参照される BFD プロファイルの名前。 |
|
|
|
このシステムが制御パケットを受信できる最小間隔をミリ秒単位で指定します。デフォルトは |
|
|
|
このシステムが BFD 制御パケットを送信するために使用する、ジッターを除いた最小送信間隔をミリ秒単位で指定します。デフォルトは |
|
|
| パケット損失を判定するための検出乗数を設定します。接続損失検出タイマーを決定するには、リモート送信間隔にこの値を乗算します。 |
|
|
|
このシステムが処理できる最小のエコー受信送信間隔をミリ秒単位で設定します。デフォルトは |
|
|
| エコー送信モードを有効または無効にします。このモードはデフォルトで無効になっており、マルチホップ設定ではサポートされていません。 |
|
|
| セッションを passive としてマークします。passive セッションでは接続を開始せず、応答を開始する前にピアからの制御パケットを待機します。 |
|
|
| マルチホップセッションのみ。着信 BFD 制御パケットの最小予想 TTL を設定します。 |
|
|
| この設定の適用を試みるノードを制限します。指定した場合、指定されたセレクターに一致するラベルが割り当てられたノードのみが設定の適用を試みます。指定されていない場合は、すべてのノードがこの設定を適用しようとします。 |
|
|
| FRRConfiguration の監視状態を定義します。 |
27.8.4. FRR-K8s が複数の設定を統合する方法 リンクのコピーリンクがクリップボードにコピーされました!
複数のユーザーが同じノードを選択する設定を追加した場合、FRR-K8s は設定をマージします。各設定は他の設定のみを拡張できます。つまり、ルーターに新しい近隣を追加したり、ネイバーに追加の接頭辞をアドバタイズできますが、別の設定によって追加されたコンポーネントを削除できません。
27.8.4.1. 設定の競合 リンクのコピーリンクがクリップボードにコピーされました!
特定の設定では競合が発生し、エラーが発生する可能性があります。次に例を示します。
- 同じルーター (同じ VRF 内) に対して異なる ASN がある
- 同じネイバー (同じ IP/ポート) に対して異なる ASN がある
- 名前が同じで値が異なる BFD プロファイルが複数ある
デーモンは、ノードに対して無効な設定を検出すると、その設定を無効として報告し、以前の有効な FRR 設定に戻します。
27.8.4.2. マージ リンクのコピーリンクがクリップボードにコピーされました!
マージする場合、次のアクションを実行できます。
- 近隣にアドバタイズする IP セットを拡張します。
- IP セットを持つ別の近隣を追加します。
- コミュニティーを関連付ける IP のセットを拡張します。
- 近隣への着信ルートを許可します。
各設定は自己完結型である必要があります。つまり、たとえば、別の設定からの接頭辞を活用して、ルーターセクションで定義されていない接頭辞を許可することはできません。
適用する設定に互換性がある場合、マージは次のように機能します。
-
FRR-K8sは、すべてのルーターを組み合わせます。 -
FRR-K8sは、ルーターごとにすべての接頭辞と近隣をマージします。 -
FRR-K8sは、近隣ごとに、すべてのフィルターをマージします。
制限の少ないフィルターは、制限が厳密なフィルターよりも優先されます。たとえば、一部の接頭辞を受け入れるフィルターは、接頭辞をまったく受け入れないフィルターよりも優先され、すべての接頭辞を受け入れるフィルターは、一部の接頭辞を受け入れるフィルターよりも優先されます。