Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

クラウドネイティブのContrail NetworkingにVirtualNetworkRouterを導入する

概要 クラウドネイティブのContrail® Networking は、 VirtualNetworkRouter (VNR)構造をサポートします。このコンストラクトは、 VirtualNetworks間の接続を提供します。

仮想ネットワークルーターの概要

通常、 VirtualNetwork トラフィックは、テナントの分離を維持するために分離されます。クラウドネイティブのContrail Networkingでは、 VirtualNetworkRouter (VNR)がルート漏洩を実行します。ルート漏洩は、ルーティングインスタンス(RI)と、これらのインスタンスに関連付けられたルーティングテーブルをインポートすることによって、 VirtualNetworks 間の接続を確立します。その結果、あるルーティング・テーブル上のデバイスは、別のルーティング・テーブル上のデバイスからリソースにアクセスできることになります。

VNRは、次の2つの一般的なネットワークモデルに接続を提供します。

  • メッシュ: 接続されているすべてのポッド VirtualNetworks 相互に通信します。

  • ハブスポーク: VirtualNetworks 2つの異なるVNRタイプ(スポーク、ハブ)に接続します。 スポークタイプ VNR に接続された VirtualNetworks ハブタイプ VNR に接続された VirtualNetworks と通信し、その逆も同様です。 スポーク VNR に接続された VirtualNetworks は、スポーク VNR に接続された他の VirtualNetworks と通信できません。

VNRは、クラウドネイティブのContrail Networking内に導入されるKubernetesコンストラクトです。

仮想ネットワークルーターの使用例

次の例は、クラウドネイティブのContrail NetworkingにおけるVNRの機能を示す一般的な使用例です。

同じ名前空間内の 2 つ以上の仮想ネットワークを接続するメッシュ VNR

  1. 図 1: ユーザーが名前空間 1 に VN1 と VN2 を作成する。VN1 のポッドは、VN2 のポッドに接続できません。これは、クラウドネイティブのContrail Networkingにおける VirtualNetworks のデフォルトの動作です。
  2. 図 2: ユーザーは、VN1 と VN2 を選択するメッシュ タイプの VNR を定義します。この VNR により、VN1 内のポッドが VN2 内のポッドと通信したり、その逆を行ったりすることができます。
  3. 図 3: VN1 のポッドは VN2 のポッドに接続されています。VNRのルートターゲットは、両方のVirtualNetworksimportExportedされます。

仮想ネットワークルーターのユースケースに戻る

同じ名前空間内の新しい仮想ネットワークを既存のメッシュタイプ VNR に追加する

  1. 図 1: 2 つの VirtualNetworks (VN1、VN2) が名前空間 1 の VNR に接続します。
  2. 図 2: ユーザーが 2 つの新しい VirtualNetworks (VN3、VN4) を作成します。
  3. 図-3:VN3とVN4はVNRに接続しています。その結果、VNRに接続 VirtualNetworksすべての人が接続を受信します。

仮想ネットワークルーターのユースケースに戻る

同じ名前空間にある 2 つのメッシュ VNR

  1. 図 1: VNR-web と VNR-db 型が mesh-1 に既に存在します。それぞれのVNRに接続されたVNRのみが相互に通信します。
  2. 図-2: VNR-web と VNR-db は相互に通信します。
  3. 図-3:VNR-webとVNR-dbの両方に接続されているすべての VirtualNetworks 相互に通信します。

仮想ネットワークルーターのユースケースに戻る

異なる名前空間を持つ 2 つのメッシュ VNR

  1. 図-1: VNR-webはVN1とVN2を選択します。VN1 と VN2 のポッドは相互に通信します。VN1 および VN2 は、VN3 および VN4 と通信できません。
  2. 図-2: VNR-db は VN3 と VN4 を選択します。VN3 と VN4 のポッドは相互に通信します。VN3 および VN4 は、VN1 および VN2 と通信できません。
  3. 図-3: ユーザーが VNR-web を更新して VNR-db を選択します。
  4. 図-3: ユーザーが VNR-db を更新して VNR-web を選択します。
  5. 図-3:2つのVNRが互いに選択し合うため、VNR-webのRT(ルートターゲット)がVN3とVN4に追加されます。VNR-dbのRTがVN1とVN2に追加されます。VN1、VN2、VN3、VN4 のポッドは相互に通信します。

仮想ネットワークルーターのユースケースに戻る

同じ名前空間内のハブ アンド スポーク VNR

  • 図 1: VN1 のポッドは VN2 のポッドと通信できません。VN1 および VN2 は VN3 と通信できません。
  • 図-2: ユーザーは、「スポーク」および「ハブ」タイプのVNRを作成します。VNRスポークとVNRハブは互いのRTをインポートします。
  • 図 3: VNR スポークと VNR-hub の RT は互いの RT をインポートするため、VN1、VN2、VN3 に追加されます。その結果、VN1 と VN2 のポッドは VN3 と通信します。VN1 と VN2 のポッドは通信できません。

仮想ネットワークルーターのユースケースに戻る

異なる名前空間のハブアンドスポークVNR

仮想ネットワークルーターのユースケースに戻る

複数のVNRの下にある同じ仮想ネットワーク

  • 図 1: VN1 と VN2 のポッドは相互に通信できません。しかしVN3、VN4。また、VN3、VN4上のリソースは相互に通信できます
  • 図 2: VN1、VN2、VN3、VN4、VN4を選択するVNRハブを選択するVNRスポークを作成する
  • 図-3:VNRスポークはVN1、VN2が相互に通信できないようにし、VNRハブはVN1、VN2をVN3、VN4に到達させ、VNRメッシュはVN3、VN4間の通信を可能にする

仮想ネットワークルーターのユースケースに戻る

ユースケースの説明

このセクションでは、次の 2 つの VNR ユース ケースと、各ユース ケースのエンドツーエンドの説明で構成されています。

標準的な使用例:2 つの仮想ネットワークを接続する単一の VNR

このユース ケースは、名前空間 ns-single-mesh の 2 つのVirtualNetworks (vn-1vn-2) で構成されます。どちらの仮想ネットワークにもlabel vn: webがあります。各VirtualNetworkには 1 つのポッドが含まれています。VirtualNetwork vn-1にはpod-vn-1が含まれています。VirtualNetwork vn-2にはpod-vn-2が含まれています。vnr-1という名前のtype: mesh VNRは、matchExpressions vn: webを使用して2つのVirtualNetworks間の接続を確立します。VNR は、vn-1 の RI とルーティング テーブルをvn-2にインポートし、その逆も同様です。vnr-1メッシュ型VNRであるため、コネクテッドVirtualNetworks内のすべてのポッドが相互に通信します。

更新のユースケース:2 つの追加仮想ネットワークを接続する単一の VNR

このユース ケースは標準のユース ケースと似ていますが、このユース ケースでは、ユーザーが追加のtype: mesh VNR で YAML を更新して、名前空間 ns-single-mesh の 2 つの新しいVirtualNetworks (vn-3vn-4) を接続する点が異なります。表示されている VNR の名前は、名前空間 ns-single-meshmatchExpressions: db, middlware を付けてvnr-2VirtualNetwork vn-3 には vn: db というラベルが付き、vn-4には vn: middleware というラベルが付いています。その結果、vnr-2 は RI とvn-3のルーティング テーブルをvn-4に、またその逆をインポートします。

仮想ネットワークルーターの設定

次のセクションでは、次のリソースの YAML 構成情報について説明します。

API の種類 (スキーマ)

メッシュVNR

この YAML は、名前空間 frontend に名前が vnr-1labels vnr: webns: frontend が付いたメッシュ VNR の例です。このVNRは、matchLabel vnr: dbbackendネームスペース内の任意のVNRにルートターゲットをインポートします。

スポークVNR

この YAML は、名前空間frontendlabels vnrgroup: spokesns: frontend vnr-1名前を持つスポーク VNR の例です。このVNRは、matchLabel vnrgroup: hubsの付いたネームスペースbackend任意のVNRにルートターゲットをインポートします。

ハブVNR

この YAML は、名前空間にvnr-2名前を持つハブ VNR の例で、labels vnrgroup: hubsns: backend を含むbackendです。このVNRは、matchLabels vnrgroup: spokesの付いたネームスペースfrontend任意のVNRにルートターゲットをインポートします。