3.4. アンビエントモードで Kubernetes Gateway API を使用してゲートウェイ経由で Egress トラフィックを送信する
Kubernetes Gateway API と waypoint プロキシーを使用して、Egress HTTP トラフィックを出力ゲートウェイ経由で送信します。
前提条件
- OpenShift Service Mesh Operator バージョン 3.2 以降がインストールされている。
-
IstioおよびIstioCNIリソースをアンビエントプロファイルで設定している。 -
Ztunnelリソースを作成している。
手順
オプション: {k8} Gateway API カスタムリソース定義 (CRD) を有効にします。
注記Kubernetes 1.28 および OpenShift Container Platform 4.18 以前のバージョンの Red Hat OpenShift Service Mesh では、Kubernetes Gateway API CRD はデフォルトでは使用できないため、使用する前に CRD をインストールする必要があります。OpenShift Container Platform 4.19 以降のバージョンでは、デフォルトで CRD をインストールします。
次のコマンドを実行して、
egress-gatewayという namespace を作成します。oc create namespace egress-gateway
$ oc create namespace egress-gatewayCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、アンビエントモードラベルを namespace に適用します。
oc label namespace egress-gateway istio.io/dataplane-mode=ambient
$ oc label namespace egress-gateway istio.io/dataplane-mode=ambientCopy to Clipboard Copied! Toggle word wrap Toggle overflow ServiceEntryを定義するegress-se.yamlという名前の YAML ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、YAML ファイルを適用します。
oc apply -f egress-se.yaml
$ oc apply -f egress-se.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のように、
egress-gatewaynamespace に waypoint プロキシーを作成するwaypoint.yamlという名前の YAML ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、YAML ファイルを適用します。
oc apply -f waypoint.yaml
$ oc apply -f waypoint.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
waypoint.yaml YAML ファイルを作成する代わりに、次のコマンドを実行して waypoint プロキシーを設定することもできます。
istioctl waypoint apply --enroll-namespace --name waypoint --namespace egress-gateway
$ istioctl waypoint apply --enroll-namespace --name waypoint --namespace egress-gateway
--enroll-namespace オプションを使用すると、egress-gateway namespace 内のすべてのサービス (ServiceEntries を含む) が、トラフィックを waypoint 経由でルーティングします。
検証
次のコマンドを実行して、ゲートウェイ設定のステータスを確認します。
oc get gateways.gateway.networking.k8s.io waypoint -n egress-gateway
$ oc get gateways.gateway.networking.k8s.io waypoint -n egress-gatewayCopy to Clipboard Copied! Toggle word wrap Toggle overflow 設定が成功すると、次の例のように
PROGRAMMED列にTrueが表示されます。NAME CLASS ADDRESS PROGRAMMED AGE waypoint istio-waypoint 172.30.227.148 True 9s
NAME CLASS ADDRESS PROGRAMMED AGE waypoint istio-waypoint 172.30.227.148 True 9sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
egress-gatewaynamespace にcurlPod を作成します。oc run test-pod --image=curlimages/curl:latest -n egress-gateway --rm -it --restart=Never -- sh
$ oc run test-pod --image=curlimages/curl:latest -n egress-gateway --rm -it --restart=Never -- shCopy to Clipboard Copied! Toggle word wrap Toggle overflow curlクライアントを使用して、以下のコマンドを実行して、egress ゲートウェイ経由でhttpbin.orgにアクセスできることを確認します。curl -v http://httpbin.org/get
$ curl -v http://httpbin.org/getCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力には、設定されたゲートウェイを通過する Egress トラフィックのルートを示す
httpbin.orgサービスからの応答が表示されます。ztunnel ログには、waypoint を経由してルーティングされたトラフィックが表示されます。ターミナルには、以下の出力に似た情報が表示されます。2025-10-24T08:08:35.242159Z info access connection complete src.addr=[fd01:0:0:5::b0]:56288 src.workload="test-pod" src.namespace="egress-gateway" src.identity="spiffe://cluster.local/ns/egress-gateway/sa/default" dst.addr=[fd01:0:0:5::af]:15008 dst.hbone_addr=[2001:2::2]:80 dst.service="httpbin.org" dst.workload="waypoint-5b668759d5-vrnx8" dst.namespace="egress-gateway" dst.identity="spiffe://cluster.local/ns/egress-gateway/sa/waypoint" direction="outbound" bytes_sent=78 bytes_recv=540 duration="957ms"
2025-10-24T08:08:35.242159Z info access connection complete src.addr=[fd01:0:0:5::b0]:56288 src.workload="test-pod" src.namespace="egress-gateway" src.identity="spiffe://cluster.local/ns/egress-gateway/sa/default" dst.addr=[fd01:0:0:5::af]:15008 dst.hbone_addr=[2001:2::2]:80 dst.service="httpbin.org" dst.workload="waypoint-5b668759d5-vrnx8" dst.namespace="egress-gateway" dst.identity="spiffe://cluster.local/ns/egress-gateway/sa/waypoint" direction="outbound" bytes_sent=78 bytes_recv=540 duration="957ms"Copy to Clipboard Copied! Toggle word wrap Toggle overflow