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 に設定します。