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 が hostNetworktrue に指定して設定されている場合にのみ機能します。

24.12.3. AdminPolicyBasedExternalRoute オブジェクトの設定

次のプロパティーを使用して、クラスタースコープの AdminPolicyBasedExternalRoute オブジェクトを定義できます。namespace は、一度に 1 つの AdminPolicyBasedExternalRoute CR でのみ選択できます。

表24.13 AdminPolicyBasedExternalRoute オブジェクト
フィールド説明

metadata.name

string

AdminPolicyBasedExternalRoute オブジェクトの名前を指定します。

spec.from

string

ルーティングポリシーが適用される namespace セレクターを指定します。外部トラフィックでは namespaceSelector のみがサポートされます。以下に例を示します。

from:
  namespaceSelector:
    matchLabels:
      kubernetes.io/metadata.name: novxlan-externalgw-ecmp-4059

namespace を対象にできるのは、1 つの AdminPolicyBasedExternalRoute CR のみです。namespace が複数の AdminPolicyBasedExternalRoute CR によって選択されている場合、同じ namespace を対象とする 2 番目以降の CR で failed エラーステータスが発生します。更新を適用するには、ポリシーが再評価され、変更が適用されるように、ポリシー自体またはポリシーに関連するオブジェクト (対象の namespace、Pod ゲートウェイ、または動的ホップからそれらをホストする namespace など) を変更する必要があります。

spec.nextHops

object

パケットの転送先を指定します。staticdynamic のいずれか、または両方である必要があります。少なくとも 1 つのネクストホップを定義する必要があります。

表24.14 nextHops オブジェクト
フィールド説明

static

array

静的 IP アドレスの配列を指定します。

dynamic

array

外部ゲートウェイターゲットとして使用するネットワーク割り当て定義で設定された Pod に対応する Pod セレクターの配列を指定します。

表24.15 nextHops.static オブジェクト
フィールド説明

ip

string

次の宛先ホップの IPv4 アドレスまたは IPv6 アドレスを指定します。

bfdEnabled

boolean

オプション: ネットワークで双方向転送検出 (BFD) がサポートされているかどうかを指定します。デフォルト値は false です。

表24.16 nextHops.dynamic オブジェクト
フィールド説明

podSelector

string

[set-based](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#set-based-requirement) ラベルセレクターを指定して、このネットワークに一致する namespace 内の Pod をフィルターします設定。

namespaceSelector

string

set-based セレクターを指定して、podSelector が適用される namespace をフィルターします。このフィールドには値を指定する必要があります。

bfdEnabled

boolean

オプション: ネットワークで双方向転送検出 (BFD) がサポートされているかどうかを指定します。デフォルト値は false です。

networkAttachmentName

string

オプション: ネットワーク接続定義の名前を指定します。名前は、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 権限を持つユーザーとしてクラスターにログインしている。

手順

  1. AdminPolicyBasedExternalRoute オブジェクトを含む YAML ファイルを作成します。
  2. 管理ポリシーベースの外部ルートを作成するには、次のコマンドを入力します。

    $ oc create -f <file>.yaml

    ここでは、以下のようになります。

    <file>
    前の手順で作成した YAML ファイルの名前を指定します。

    出力例

    adminpolicybasedexternalroute.k8s.ovn.org/default-route-policy created

  3. 管理ポリシーベースの外部ルートが作成されたことを確認するには、次のコマンドを入力します。

    $ 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. 関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.