3.3. 使用 Kubernetes 网关 API 通过网关直接出口流量
使用 Kubernetes 网关 API 通过出口网关直接出站 HTTP 流量。
先决条件
- 已安装 Istio control plane。
-
已配置了
Istio和IstioCNI资源。
流程
可选:启用 {k8} Gateway API 自定义资源定义(CRD)。
注意从 Kubernetes 1.28 和 OpenShift Container Platform 4.18 或更早版本 Red Hat OpenShift Service Mesh 开始,Kubernetes 网关 API CRD 默认不可用,且您必须在使用 CRD 前启用 CRD。OpenShift Container Platform 4.19 及更新的版本默认启用 CRD。
创建名为
gateway-cr.yaml的 YAML 文件,该文件启用 Kubernetes 网关 API CRD。Kubernetes 网关自定义资源(CR)文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用 YAML 文件:
oc apply -f gateway-cr.yaml
$ oc apply -f gateway-cr.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令,创建一个名为
egress-gateway的命名空间:oc create namespace egress-gateway
$ oc create namespace egress-gatewayCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将
istio-injection标签应用到命名空间:oc label namespace egress-gateway istio-injection=enabled
$ oc label namespace egress-gateway istio-injection=enabledCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
egress-gateway-cr.yaml的 YAML 文件,用于定义出口网关。出口网关 CR 文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用 YAML 文件:
oc apply -f egress-gateway-cr.yaml
$ oc apply -f egress-gateway-cr.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,验证网关配置的状态:
oc describe gateway -n egress-gateway
$ oc describe gateway -n egress-gatewayCopy to Clipboard Copied! Toggle word wrap Toggle overflow 所需输出由
Programmed在Status列中显示。运行以下命令,在
egress-gateway命名空间中创建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客户端,输入以下命令验证您可以通过出口网关访问httpbin.org:curl -v http://httpbin.org/get
$ curl -v http://httpbin.org/getCopy to Clipboard Copied! Toggle word wrap Toggle overflow 所需输出显示
httpbin.org的响应,它表示通过配置的网关路由出口流量。