24.12. デフォルトネットワークに外部ゲートウェイを設定する
クラスター管理者は、デフォルトネットワークに外部ゲートウェイを設定できます。
この機能には次の利点があります。
- namespace ごとの Egress トラフィックの詳細制御
- 静的および動的外部ゲートウェイ IP アドレスの柔軟な設定
- IPv4 と IPv6 の両方のアドレスファミリーのサポート
24.12.1. 前提条件
- クラスターは OVN-Kubernetes ネットワークプラグインを使用します。
- インフラストラクチャーは、セカンダリー外部ゲートウェイからのトラフィックをルーティングするように設定されています。
24.12.2. OpenShift Container Platform が外部ゲートウェイ IP アドレスを決定する方法
k8s.ovn.org
API グループの AdminPolicyBasedExternalRoute
カスタムリソース (CR) を使用してセカンダリー外部ゲートウェイを設定します。この CR は、外部ゲートウェイの IP アドレスを指定するための静的アプローチと動的アプローチをサポートしています。
AdminPolicyBasedExternalRoute
CR の対象となる各 namespace は、他の AdminPolicyBasedExternalRoute
CR で選択できません。namespace には同時にセカンダリー外部ゲートウェイを含めることはできません。
ポリシーへの変更はコントローラー内で分離されます。あるポリシーの適用が失敗した場合に、他のポリシーを変更しても、他のポリシーの再試行はトリガーされません。ポリシーが再評価され、変更によって発生した可能性のある差分が適用されるのは、ポリシー自体またはポリシーに関連するオブジェクト (対象の namespace、Pod ゲートウェイ、または動的ホップからそれらをホストする namespace など) の更新が行われたときのみです。
- 静的割り当て
- IP アドレスを直接指定します。
- 動的割り当て
namespace と Pod セレクター、およびオプションのネットワーク割り当て定義を使用して、IP アドレスを間接的に指定します。
- ネットワーク割り当て定義の名前が指定されている場合は、ネットワーク割り当ての外部ゲートウェイ IP アドレスが使用されます。
-
ネットワーク割り当て定義の名前が指定されていない場合は、Pod 自体の外部ゲートウェイ IP アドレスが使用されます。ただし、このアプローチは、Pod が
hostNetwork
をtrue
に指定して設定されている場合にのみ機能します。
24.12.3. AdminPolicyBasedExternalRoute オブジェクトの設定
次のプロパティーを使用して、クラスタースコープの AdminPolicyBasedExternalRoute
オブジェクトを定義できます。namespace は、一度に 1 つの AdminPolicyBasedExternalRoute
CR でのみ選択できます。
フィールド | 型 | 説明 |
---|---|---|
|
|
|
|
|
ルーティングポリシーが適用される namespace セレクターを指定します。外部トラフィックでは from: namespaceSelector: matchLabels: kubernetes.io/metadata.name: novxlan-externalgw-ecmp-4059
namespace を対象にできるのは、1 つの |
|
|
パケットの転送先を指定します。 |
フィールド | 型 | 説明 |
---|---|---|
|
| 静的 IP アドレスの配列を指定します。 |
|
| 外部ゲートウェイターゲットとして使用するネットワーク割り当て定義で設定された Pod に対応する Pod セレクターの配列を指定します。 |
フィールド | 型 | 説明 |
---|---|---|
|
| 次の宛先ホップの IPv4 アドレスまたは IPv6 アドレスを指定します。 |
|
|
オプション: ネットワークで双方向転送検出 (BFD) がサポートされているかどうかを指定します。デフォルト値は |
フィールド | 型 | 説明 |
---|---|---|
|
| [set-based](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#set-based-requirement) ラベルセレクターを指定して、このネットワークに一致する namespace 内の Pod をフィルターします設定。 |
|
|
|
|
|
オプション: ネットワークで双方向転送検出 (BFD) がサポートされているかどうかを指定します。デフォルト値は |
|
| オプション: ネットワーク接続定義の名前を指定します。名前は、Pod に関連付けられた論理ネットワークのリストと一致する必要があります。このフィールドが指定されていない場合は、Pod のホストネットワークが使用されます。ただし、ホストネットワークを使用するには、Pod をホストネットワーク Pod として設定する必要があります。 |
24.12.3.1. セカンダリー外部ゲートウェイ設定の例
次の例では、AdminPolicyBasedExternalRoute
オブジェクトは、ラベルが kubernetes.io/metadata.name: novxlan-externalgw-ecmp-4059
の namespace 内にある Pod の外部ゲートウェイとして 2 つの静的 IP アドレスを設定します。
apiVersion: k8s.ovn.org/v1 kind: AdminPolicyBasedExternalRoute metadata: name: default-route-policy spec: from: namespaceSelector: matchLabels: kubernetes.io/metadata.name: novxlan-externalgw-ecmp-4059 nextHops: static: - ip: "172.18.0.8" - ip: "172.18.0.9"
次の例では、AdminPolicyBasedExternalRoute
オブジェクトが動的外部ゲートウェイを設定します。外部ゲートウェイに使用される IP アドレスは、選択した各 Pod に関連付けられた追加のネットワーク割り当てから派生します。
apiVersion: k8s.ovn.org/v1 kind: AdminPolicyBasedExternalRoute metadata: name: shadow-traffic-policy spec: from: namespaceSelector: matchLabels: externalTraffic: "" nextHops: dynamic: - podSelector: matchLabels: gatewayPod: "" namespaceSelector: matchLabels: shadowTraffic: "" networkAttachmentName: shadow-gateway - podSelector: matchLabels: gigabyteGW: "" namespaceSelector: matchLabels: gatewayNamespace: "" networkAttachmentName: gateway
次の例では、AdminPolicyBasedExternalRoute
オブジェクトは静的外部ゲートウェイと動的外部ゲートウェイの両方を設定します。
apiVersion: k8s.ovn.org/v1 kind: AdminPolicyBasedExternalRoute metadata: name: multi-hop-policy spec: from: namespaceSelector: matchLabels: trafficType: "egress" nextHops: static: - ip: "172.18.0.8" - ip: "172.18.0.9" dynamic: - podSelector: matchLabels: gatewayPod: "" namespaceSelector: matchLabels: egressTraffic: "" networkAttachmentName: gigabyte
24.12.4. セカンダリー外部ゲートウェイの設定
クラスター内の namespace のデフォルトネットワークに外部ゲートウェイを設定できます。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてクラスターにログインしている。
手順
-
AdminPolicyBasedExternalRoute
オブジェクトを含む YAML ファイルを作成します。 管理ポリシーベースの外部ルートを作成するには、次のコマンドを入力します。
$ oc create -f <file>.yaml
ここでは、以下のようになります。
<file>
- 前の手順で作成した YAML ファイルの名前を指定します。
出力例
adminpolicybasedexternalroute.k8s.ovn.org/default-route-policy created
管理ポリシーベースの外部ルートが作成されたことを確認するには、次のコマンドを入力します。
$ oc describe apbexternalroute <name> | tail -n 6
ここでは、以下のようになります。
<name>
-
AdminPolicyBasedExternalRoute
オブジェクトの名前を指定します。
出力例
Status: Last Transition Time: 2023-04-24T15:09:01Z Messages: Configured external gateway IPs: 172.18.0.8 Status: Success Events: <none>
24.12.5. 関連情報
- 追加のネットワーク接続の詳細は、複数のネットワークについて を参照してください。