26.10. リダイレクトモードでの Egress ルーター Pod のデプロイ
クラスター管理者は、トラフィックを指定された宛先 IP アドレスにリダイレクトするように設定された Egress ルーター Pod をデプロイできます。
26.10.1. リダイレクトモードの Egress ルーター Pod 仕様
Pod
オブジェクトで Egress ルーター Pod の設定を定義します。以下の YAML は、リダイレクトモードでの Egress ルーター Pod の設定のフィールドを説明しています。
apiVersion: v1 kind: Pod metadata: name: egress-1 labels: name: egress-1 annotations: pod.network.openshift.io/assign-macvlan: "true" 1 spec: initContainers: - name: egress-router image: registry.redhat.io/openshift4/ose-egress-router securityContext: privileged: true env: - name: EGRESS_SOURCE 2 value: <egress_router> - name: EGRESS_GATEWAY 3 value: <egress_gateway> - name: EGRESS_DESTINATION 4 value: <egress_destination> - name: EGRESS_ROUTER_MODE value: init containers: - name: egress-router-wait image: registry.redhat.io/openshift4/ose-pod
- 1
- このアノテーションは、OpenShift Container Platform に対して、プライマリーネットワークインターフェイスコントローラー (NIC) に macvlan ネットワークインターフェイスを作成し、その macvlan インターフェイスを Pod ネットワークの namespace に移動するよう指示します。引用符を
"true"
値の周囲に含める必要があります。OpenShift Container Platform が別の NIC インターフェイスに macvlan インターフェイスを作成するには、アノテーションの値をそのインターフェイスの名前に設定します。たとえば、eth1
を使用します。 - 2
- ノードが置かれている物理ネットワークの IP アドレスは Egress ルーター Pod で使用するために予約されます。オプション: サブネットの長さ
/24
接尾辞を組み込み、ローカルサブネットへの適切なルートがセットアップされるようにできます。サブネットの長さを指定しない場合、Egress ルーターはEGRESS_GATEWAY
変数で指定されたホストにのみアクセスでき、サブネットの他のホストにはアクセスできません。 - 3
- ノードで使用されるデフォルトゲートウェイと同じ値です。
- 4
- トラフィックの送信先となる外部サーバー。この例では、Pod の接続は
203.0.113.25
にリダイレクトされます。 送信元 IP アドレスは192.168.12.99
です。
Egress ルーター Pod 仕様の例
apiVersion: v1 kind: Pod metadata: name: egress-multi labels: name: egress-multi annotations: pod.network.openshift.io/assign-macvlan: "true" spec: initContainers: - name: egress-router image: registry.redhat.io/openshift4/ose-egress-router securityContext: privileged: true env: - name: EGRESS_SOURCE value: 192.168.12.99/24 - name: EGRESS_GATEWAY value: 192.168.12.1 - name: EGRESS_DESTINATION value: | 80 tcp 203.0.113.25 8080 tcp 203.0.113.26 80 8443 tcp 203.0.113.26 443 203.0.113.27 - name: EGRESS_ROUTER_MODE value: init containers: - name: egress-router-wait image: registry.redhat.io/openshift4/ose-pod
26.10.2. Egress 宛先設定形式
Egress ルーター Pod がリダイレクトモードでデプロイされる場合、以下のいずれかの形式を使用してリダイレクトルールを指定できます。
-
<port> <protocol> <ip_address>
: 指定される<port>
への着信接続が指定される<ip_address>
の同じポートにリダイレクトされます。<protocol>
はtcp
またはudp
のいずれかになります。 -
<port> <protocol> <ip_address> <remote_port>
: 接続が<ip_address>
の別の<remote_port>
にリダイレクトされるのを除き、上記と同じになります。 -
<ip_address>
: 最後の行が単一 IP アドレスである場合、それ以外のポートの接続はその IP アドレスの対応するポートにリダイレクトされます。フォールバック IP アドレスがない場合、他のポートでの接続は拒否されます。
以下の例では、複数のルールが定義されます。
-
最初の行はローカルポート
80
から203.0.113.25
のポート80
にトラフィックをリダイレクトします。 -
2 番目と 3 番目の行では、ローカルポート
8080
および8443
を、203.0.113.26
のリモートポート80
および443
にリダイレクトします。 - 最後の行は、先のルールで指定されていないポートのトラフィックに一致します。
設定例
80 tcp 203.0.113.25 8080 tcp 203.0.113.26 80 8443 tcp 203.0.113.26 443 203.0.113.27
26.10.3. リダイレクトモードでの Egress ルーター Pod のデプロイ
リダイレクトモードでは、Egress ルーター Pod は、トラフィックを独自の IP アドレスから 1 つ以上の宛先 IP アドレスにリダイレクトするために iptables ルールをセットアップします。予約された送信元 IP アドレスを使用する必要があるクライアント Pod は、宛先 IP に直接接続するのではなく、スロールーターのサービスにアクセスするように設定する必要があります。curl
コマンドを使用して、アプリケーション Pod から宛先サービスとポートにアクセスできます。以下に例を示します。
$ curl <router_service_IP> <port>
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。
手順
- Egress ルーター Pod の作成
他の Pod が Egress ルーター Pod の IP アドレスを見つられるようにするには、以下の例のように、Egress ルーター Pod を参照するサービスを作成します。
apiVersion: v1 kind: Service metadata: name: egress-1 spec: ports: - name: http port: 80 - name: https port: 443 type: ClusterIP selector: name: egress-1
Pod がこのサービスに接続できるようになります。これらの接続は、予約された Egress IP アドレスを使用して外部サーバーの対応するポートにリダイレクトされます。