IPファブリック転送とファブリックソースNATの有効化
クラウドネイティブのContrail Networkingは、IPファブリック転送とファブリックソースNATをサポートします。IPファブリック転送は、オーバーレイネットワークで実行されているクラスターに、外部仮想ネットワークを介してアンダーレイネットワークにアクセスするためのパスを提供します。ファブリックソースNATを使用すると、ファブリック内のゲートウェイデバイスは、ファブリックから出るデータプレーンノードトラフィックのソースIPアドレスをパブリックサイドIPアドレスに変換できます。
クラウドネットワーキング環境では、IPファブリック転送とファブリックソースNATを使用して、アンダーレイネットワークへのアクセスを提供することができます。IPファブリック転送とファブリックソースNATによって提供されるアンダーレイネットワークアクセスにより、ポッド内のリソースがインターネットに直接アクセスしたり、アンダーレイネットワークから外部のアーティファクトを引き出すことができます。このアンダーレイ ネットワーク アクセスは、複雑な BGP トポロジーやファイアウォール設定などの他のアンダーレイ ネットワーク オプションのように、ネットワークに大きな複雑さを増すことなく提供されます。
概要:IP ファブリック フォワーディング
リリース 22.1 以降、クラウドネイティブの Contrail Networking で IP ファブリックの転送がサポートされています。
外部ネットワークにアクセスできる仮想ネットワーク内で IP ファブリック転送を有効にします。これらの仮想ネットワークは、アンダーレイ ネットワークに直接アクセスする必要があります。
外部ネットワークにアクセスできる仮想ネットワークには、既定で という default-externalnetwork 名前が付けられます。必要に応じて、カスタマイズしたユーザー定義の外部ネットワーク名を作成できます。IP ファブリック転送を有効にすると、アンダーレイ ネットワークへのパスは、この外部仮想ネットワークを介してオーバーレイ ネットワークで実行されているクラスターで直接利用できるようになります。オーバーレイ ネットワークとアンダーレイ ネットワーク間のこの直接接続により、オーバーレイ ネットワーク内のホストはアンダーレイ ネットワークにアクセスできるようになります。IPファブリック転送により、仮想ネットワークはオーバーレイネットワークとアンダーレイネットワークの両方に広がることができるため、2つのネットワークを通過するデータパケットはカプセル化もカプセル化解除もされません。したがって、パケット処理はより効率的です。
IPファブリック転送は、ネットワークトラフィックのロードバランシングにも非常に便利です。LoadBalancer サービスは、外部ネットワーク トラフィックを負荷分散するときに、IP ファブリック転送が有効になっている外部仮想ネットワークを自動的に検出します。
概要:ファブリック ソース NAT
リリース 22.1 以降、クラウドネイティブの Contrail Networking はファブリック ソース NAT をサポートします。ファブリック ソース NAT は、Kubernetes 環境内のデータ プレーン ノードからのトラフィックが、個別の NAT ファイアウォールを通過せずにインターネットに直接アクセスする方法を提供します。必要に応じて、ソース NAT を使用して外部アーティファクトをポッドにプルすることもできます。
インターネット宛てのデータプレーンノードからのトラフィックは、ゲートウェイデバイスを通過する必要があります。このゲートウェイ デバイスは、パブリック ネットワークに接続された少なくとも 1 つのインターフェイスも持つファブリック内のメンバー デバイスです。ファブリックのソースNATが有効になっている場合、ゲートウェイデバイスは、データプレーンノードからの発信パケットのソースIPアドレスを自身のパブリックサイドIPアドレスに変換します。このアドレス変換により、データプレーンノードからのトラフィックがインターネットにアクセスできるようになります。
送信元 NAT が実行する IP アドレス変換によって、パケット内の送信元ポートも更新されます。ファブリックソースNATを使用して、複数のデータプレーンノードが単一のゲートウェイパブリックIPアドレスを介してパブリックネットワークに到達できます。
ファブリックからインターネットに出るトラフィックのIPアドレスを変換するには、ファブリックソースNATが必要です。この機能を使用して、受信インターネットトラフィックを変換するためにNATを使用しているわけではありません。
例:ファブリック ソース NAT の設定
ファブリック ソース NAT は、ユーザーが作成した仮想ネットワークでは既定で無効になっています。
オブジェクトの変数VirtualNetworkを fabricSNAT: true に設定することで、個々の仮想ネットワークでファブリック ソース NAT を手動で有効にできます。ファブリック ソース NAT を無効にするには、この値を false に設定します。
次の例は、ファブリック ソース NAT が有効になっている仮想ネットワーク オブジェクトを示しています。この例では、 virtual-network-subnet1 という名前のサブネット オブジェクトが別の YAML ファイルで構成されていることを前提としています。
apiVersion: core.contrail.juniper.net/v2
kind: VirtualNetwork
metadata:
name: virtualnetwork1
namespace: namespace1
labels:
vn: virtualnetwork1
annotations:
core.juniper.net/display-name: virtualnetwork1
core.juniper.net/description:
Virtual Network 1 is a collection of end points that can communicate with each other.
spec:
v4SubnetReference:
apiVersion: core.contrail.juniper.net/v2
kind: Subnet
namespace: namespace1
name: virtual-network-subnet1
fabricSNAT: true
仮想ネットワークの作成時に、ユーザーが作成した仮想ネットワークでファブリックソース NAT を有効にするように環境を構成することもできます。作成時にユーザーが作成した仮想ネットワークでファブリック ソース NAT を有効にする場合は、環境を最初にデプロイするときに、リソース内のApiServer変数を true に設定しますenableSNAT。
この構成は、 ApiServer 初期デプロイ時にリソースで設定する必要があります。デプロイ YAML ファイルを適用した後で、ご使用の環境でこの設定を変更することはできません。初期デプロイ後に個々の仮想ネットワークのファブリック ソース NAT 設定を変更する場合は、その仮想ネットワークの構成を手動で変更する必要があります。
代表的な YAML ファイル構成を次に示します。
kind: ApiServer
metadata:
...
spec:
enableSNAT: true
common:
containers:
...
ファブリック ソース NAT は、変数が enableSNAT true の場合、作成時にユーザーが作成した仮想ネットワークで有効になります。変数を enableSNAT false に設定することで、ユーザーが作成した仮想ネットワークの作成時にファブリック ソース NAT を無効にすることができます。ファブリックソースNATはデフォルトで無効になっています。
ファブリックソースNATは、変換するIPアドレスを自動的に選択します。クラウドネイティブのContrail Networkingのほとんどのユースケースでは、ファブリックソースNAT用のアドレスプールを設定する必要はありません。ただし、アドレスプールは、リソース内のGlobalVrouterConfig階層portTranslationPools:を使用して設定できます。
例:IP ファブリック転送による外部ネットワークの設定
IPファブリック転送はデフォルトで無効になっています。
変数を fabricForwarding: true に設定することで、任意の仮想ネットワークで IP ファブリック転送を有効にできます。
次の例は、IPv4 ゲートウェイ経由でインターネットにアクセスする外部仮想ネットワークで IP ファブリック転送を有効にする方法を示しています。
apiVersion: core.contrail.juniper.net/v2
kind: VirtualNetwork
metadata:
namespace: contrail
name: external-vn
labels:
service.contrail.juniper.net/externalNetworkSelector: default-external
annotations:
core.juniper.net/display-name: Sample Virtual Network
core.juniper.net/description:
VirtualNetwork is a collection of end points (interface or ip(s) or MAC(s))
that can communicate with each other by default. It is a collection of
subnets whose default gateways are connected by an implicit router.
spec:
v4SubnetReference:
apiVersion: core.contrail.juniper.net/v2
kind: Subnet
namespace: contrail
name: external-subnet
fabricForwarding: true
インターネットへのパスを持つ外部仮想ネットワークを作成するときに、IP ファブリック転送を有効にすることもできます。
CN2 を使用する環境では、 Kubemanager リソースを介して外部ネットワークへの仮想ネットワークのパスを構成します。
仮想ネットワークの外部アクセスを有効にするには、仮想ネットワークを IPv4 または IPv6 ゲートウェイの IP サブネット アドレスに接続します。同じ Kubemanager リソースを使用して、仮想ネットワーク内の外部トラフィックの IP ファブリック転送を有効にします。
外部ネットワークのサブネットとこの IP ファブリック転送設定は、Cloud-Native Contrail の初期導入時に構成する必要があります。初期デプロイ YAML ファイルの適用後にこれらのパラメーターを構成することはできません。
次の例は、外部ネットワーク アクセスを使用して仮想ネットワークを作成するリソースを構成する Kubemanager ために使用される YAML ファイルを示しています。この例の仮想ネットワークは、IP ファブリック転送で実行されます。この YAML ファイルは、初期デプロイ時にコミットする必要があります。
kind: Kubemanager
metadata:
...
spec:
externalNetworkV4Subnet: # Fill V4 Subnet of an external network if any
externalNetworkV6Subnet: # Fill V6 Subnet of an external network if any
ipFabricFowardingExtSvc: true
common:
containers:
...
この YAML ファイルの or 変数を使用してexternalNetworkV4SubnetexternalNetworkV6Subnet:、外部ネットワークの IPv4 サブネットまたは IPv6 サブネットを指定します。サブネット アドレスは、ゲートウェイ デバイスを介してインターネットから到達可能なパブリック側の IP アドレスです。この YAML ファイルを使用して Kubemanager リソースを構成すると、指定した外部ネットワークへの新しい仮想ネットワークが作成されます。この仮想ネットワークは、CN2 の既定の名前空間で名前default-externalnetworkが付けられています。
IP ファブリック転送は、変数が ipFabricFowardingExtSvc true の場合、外部ネットワーク アクセスを使用する仮想ネットワークで実行されます。外部サブネットの IP ファブリック転送を無効にするには、変数を ipFabricFowardingExtSvc false に設定します。