4.3.4. ネットワーク VRF を介したサービスの公開


ネットワークトラフィックを分離し、複数のルーティングテーブルを管理するには、仮想ルーティングおよび転送 (VRF) インスタンスを介してサービスを公開します。VRF を MetalLB BGP ピアに関連付けることで、外部トラフィックがセグメント化され、意図したアプリケーションワークロードに正しくルーティングされることが保証されます。

重要

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 を介してサービスを公開する方法を示しています。

  1. BGP ピアを定義し、ネットワーク VRF インスタンスを追加します。
  2. MetalLB の IP アドレスプールを指定します。
  3. MetalLB が指定された IP アドレスプールと VRF インスタンスに関連付けられた BGP ピアを使用してルートをアドバタイズするように、BGP ルートアドバタイズを設定します。
  4. サービスをデプロイして設定をテストします。

前提条件

  • OpenShift CLI (oc) がインストールされている。
  • cluster-admin 権限を持つユーザーとしてログインしている。
  • Virtual Routing and Forwarding (VRF) インスタンスをネットワークインターフェイスに関連付けるために、NodeNetworkConfigurationPolicy (NNCP) を定義しました。この前提条件を満たす方法の詳細は、関連情報 セクションを参照してください。
  • MetalLB をクラスターにインストールした。

手順

  1. BGPPeer カスタムリソース (CR) を作成します。

    1. 次の例のような内容を含むファイル (frrviavrf.yaml など) を作成します。

      apiVersion: metallb.io/v1beta2
      kind: BGPPeer
      metadata:
        name: frrviavrf
        namespace: metallb-system
      spec:
        myASN: 100
        peerASN: 200
        peerAddress: 192.168.130.1
        vrf: ens4vrf
      # ...

      spec.vrf:BGP ピアに関連付けるネットワーク VRF インスタンスを指定します。MetalLB は、サービスをアドバタイズし、VRF 内のルーティング情報に基づいてルーティングを決定できます。

      注記

      このネットワーク VRF インスタンスは NodeNetworkConfigurationPolicy CR で設定する必要があります。詳細は、関連情報 を参照してください。

    2. 次のコマンドを実行して、BGP ピアの設定を適用します。

      $ oc apply -f frrviavrf.yaml
  2. IPAddressPool CR を作成します。

    1. 次の例のような内容を含むファイル (first-pool.yaml など) を作成します。

      apiVersion: metallb.io/v1beta1
      kind: IPAddressPool
      metadata:
        name: first-pool
        namespace: metallb-system
      spec:
        addresses:
        - 192.169.10.0/32
      # ...
    2. 次のコマンドを実行して、IP アドレスプールの設定を適用します。

      $ oc apply -f first-pool.yaml
  3. BGPAdvertisement CR を作成します。

    1. 次の例のような内容を含むファイル (first-adv.yaml など) を作成します。

      apiVersion: metallb.io/v1beta1
      kind: BGPAdvertisement
      metadata:
        name: first-adv
        namespace: metallb-system
      spec:
        ipAddressPools:
          - first-pool
        peers:
          - frrviavrf
      # ...

      peers.frrviavrf: この例では、MetalLB は first-pool IP アドレスプールから、frrviavrf BGP ピアに IP アドレスの範囲をアドバタイズします。

    2. 次のコマンドを実行して、BGP アドバタイズメントの設定を適用します。

      $ oc apply -f first-adv.yaml
  4. NamespaceDeployment、および Service CR を作成します。

    1. 次の例のような内容を含むファイル (deploy-service.yaml など) を作成します。

      apiVersion: v1
      kind: Namespace
      metadata:
        name: test
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: server
        namespace: test
      spec:
        selector:
          matchLabels:
            app: server
        template:
          metadata:
            labels:
              app: server
          spec:
            containers:
            - name: server
              image: nginx
              ports:
              - name: http
                containerPort: 80
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: server1
        namespace: test
      spec:
        ports:
        - name: http
          port: 80
          protocol: TCP
          targetPort: 80
        selector:
          app: server
        type: LoadBalancer
      # ...
    2. 次のコマンドを実行して、namespace、デプロイメント、およびサービスの設定を適用します。

      $ oc apply -f deploy-service.yaml

検証

  1. 次のコマンドを実行して、MetalLB スピーカー Pod を識別します。

    $ oc get -n metallb-system pods -l component=speaker

    出力例

    NAME            READY   STATUS    RESTARTS   AGE
    speaker-c6c5f   6/6     Running   0          69m

  2. 次のコマンドを実行して、BGP セッションの状態がスピーカー Pod で Established となっていることを確認します。設定に一致するように変数を置き換えます。

    $ oc exec -n metallb-system <speaker_pod> -c frr -- vtysh -c "show bgp vrf <vrf_name> neigh"

    出力例

    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
    
    ...

  3. 次のコマンドを実行して、サービスが正しくアドバタイズされていることを確認します。

    $ oc exec -n metallb-system <speaker_pod> -c frr -- vtysh -c "show bgp vrf <vrf_name> ipv4"
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る