26.11. HTTP プロキシーモードでの Egress ルーター Pod のデプロイ
クラスター管理者は、トラフィックを指定された HTTP および HTTPS ベースのサービスにプロキシーするように設定された Egress ルーター Pod をデプロイできます。
26.11.1. HTTP モードの Egress ルーター Pod 仕様
Pod
オブジェクトで Egress ルーター Pod の設定を定義します。以下の YAML は、HTTP モードでの 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_ROUTER_MODE value: http-proxy containers: - name: egress-router-pod image: registry.redhat.io/openshift4/ose-egress-http-proxy env: - name: EGRESS_HTTP_PROXY_DESTINATION 4 value: |- ... ...
- 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
- プロキシーの設定方法を指定する文字列または YAML の複数行文字列です。これは、init コンテナーの他の環境変数ではなく、HTTP プロキシーコンテナーの環境変数として指定されることに注意してください。
26.11.2. Egress 宛先設定形式
Egress ルーター Pod が HTTP プロキシーモードでデプロイされる場合、以下の形式のいずれかを使用してリダイレクトルールを指定できます。これはすべてのリモート宛先への接続を許可することを意味します。 設定の各行には、許可または拒否する接続の 1 つのグループを指定します。
-
IP アドレス (例:
192.168.1.1
) は該当する IP アドレスへの接続を許可します。 -
CIDR 範囲 (例:
192.168.1.0/24
) は CIDR 範囲への接続を許可します。 -
ホスト名 (例:
www.example.com
) は該当ホストへのプロキシーを許可します。 -
*.
が前に付けられているドメイン名 (例:*.example.com
) は該当ドメインおよびそのサブドメインのすべてへのプロキシーを許可します。 -
先の一致 (match) 式のいずれかの後に来る
!
は接続を拒否します。 -
最後の行が
*
の場合、明示的に拒否されていないすべてのものが許可されます。それ以外の場合、許可されないすべてのものが拒否されます。
*
を使用してすべてのリモート宛先への接続を許可することもできます。
設定例
!*.example.com !192.168.1.0/24 192.168.2.1 *
26.11.3. HTTP プロキシーモードでの Egress ルーター Pod のデプロイ
HTTP プロキシーモードでは、Egress ルーター Pod はポート 8080
で HTTP プロキシーとして実行されます。このモードは、HTTP または HTTPS ベースのサービスと通信するクライアントの場合にのみ機能しますが、通常それらを機能させるのにクライアント Pod への多くの変更は不要です。環境変数を設定することで、数多くのプログラムは HTTP プロキシーを使用するように指示されます。
前提条件
-
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-proxy port: 8080 1 type: ClusterIP selector: name: egress-1
- 1
http
ポートが常に8080
に設定されていることを確認します。
http_proxy
またはhttps_proxy
変数を設定して、クライアント Pod (Egress プロキシー Pod ではない) を HTTP プロキシーを使用するように設定します。apiVersion: v1 kind: Pod metadata: name: app-1 labels: name: app-1 spec: containers: env: - name: http_proxy value: http://egress-1:8080/ 1 - name: https_proxy value: http://egress-1:8080/ ...
- 1
- 先の手順で作成したサービス。
注記すべてのセットアップに
http_proxy
およびhttps_proxy
環境変数が必要になる訳ではありません。上記を実行しても作業用セットアップが作成されない場合は、Pod で実行しているツールまたはソフトウェアに関するドキュメントを参照してください。