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.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令,创建一个名为
egress-gateway
的命名空间:oc create namespace egress-gateway
$ oc create namespace egress-gateway
Copy 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=enabled
Copy 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.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,验证网关配置的状态:
oc describe gateway -n egress-gateway
$ oc describe gateway -n egress-gateway
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 所需输出由
Programmed
在Status
列中显示。运行以下命令,在
egress-gateway
命名空间中创建curl
pod: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 -- sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过使用
curl
客户端,输入以下命令验证您可以通过出口网关访问httpbin.org
:curl -v http://httpbin.org/get
$ curl -v http://httpbin.org/get
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 所需输出显示
httpbin.org
的响应,它表示通过配置的网关路由出口流量。