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はデフォルトで無効になっています。
オブジェクトの変数を true に設定fabricSNAT:することで、個々の仮想ネットワークでファブリックソースNATをVirtualNetwork手動で有効にすることができます。ファブリックソース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を有効にする場合は、最初に環境を enableSNAT 展開する際にリソースの ApiServer 変数を true に設定します。
初期導入時にリソースでこの構成を ApiServer 設定する必要があります。デプロイ YAML ファイルを適用した後、環境内でこの設定を変更することはできません。初期導入後に個々の仮想ネットワークのファブリックソースNAT設定を変更する場合は、その仮想ネットワークの設定を手動で変更する必要があります。
代表的なYAMLファイル設定を以下に示します。
kind: ApiServer metadata: ... spec: enableSNAT: true common: containers: ...
ファブリックソースNATは、変数が true の場合enableSNAT、作成時にユーザー作成仮想ネットワークで有効になります。変数を false に設定enableSNATすることで、ユーザーが作成した仮想ネットワークを作成した場合、ファブリックソースNATを無効にすることができます。ファブリックソースNATはデフォルトで無効になっています。
ファブリックソースNATは、変換するIPアドレスを自動的に選択します。ほとんどのクラウドネイティブContrail Networkingのユースケースでは、ファブリックソースNATのアドレスプールを設定する必要はありません。ただし、アドレス プールは、リソース内GlobalVrouterConfigの階層をportTranslationPools:使用して構成できます。
例:IP ファブリック転送による外部ネットワークの設定
IPファブリック転送はデフォルトで無効になっています。
変数を true に設定fabricForwarding:することで、任意の仮想ネットワークで 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 ファブリック転送を有効にします。
クラウドネイティブContrailの最初の導入時に、外部ネットワークサブネットとこのIPファブリック転送設定を設定する必要があります。初期導入 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 ファイルで または 変数を使用して externalNetworkV4Subnet 、外部ネットワークの IPv4 サブネットまたは externalNetworkV6Subnet: IPv6 サブネットを指定します。サブネットアドレスは、ゲートウェイデバイスを介してインターネットから到達可能なパブリックサイドIPアドレスです。この YAML ファイルを使用して Kubemanager リソースを構成すると、指定された外部ネットワークへの新しい仮想ネットワークが作成されます。この仮想ネットワークの名前は、CN2のデフォルト名前空間で指定 default-externalnetwork されます。
IPファブリック転送は、変数がtrueの場合ipFabricFowardingExtSvc、外部ネットワークアクセスで仮想ネットワークで実行されます。外部サブネットの IP ファブリック転送を無効にするには、 変数を ipFabricFowardingExtSvc false に設定します。