使用 Istio API 通过网关路由出站流量
本节说明如何使用 Istio API,通过已使用网关注入安装的网关来路由出站 HTTP 流量。
前提条件
- 已使用 gateway injection 安装 Istio 网关。
操作步骤
-
通过执行以下命令创建一个名为
curl的 namespace: -
为该 namespace 启用 sidecar 注入。如果你的环境使用
InPlace升级策略,请运行以下命令:NOTE如果你使用的是
RevisionBased升级策略,请执行以下命令:-
要获取
<revision-name>,请运行以下命令:示例输出:
-
使用该 revision 名称为 namespace 添加标签,以启用 sidecar 注入:
-
-
运行以下命令部署
curlApplication: -
初始化并导出一个名为
CURL_POD的环境变量,其中包含 curl pod 的名称: -
创建一个名为
http-se.yaml的 YAML 文件,用于将来自 mesh 的流量导向外部服务。以下示例为某个特定 URL 定义了一个ServiceEntry。示例配置
-
执行以下命令应用此 YAML 文件:
-
确认
ServiceEntry配置已成功应用。通过运行以下命令向上一步中指定的 host 发送 HTTP 请求:该命令应返回类似
302(重定向)或200(成功)之类的 HTTP 状态码,这表明连接正常。 -
创建一个名为
http-egress-gw.yaml的 YAML 文件,用于建立一个出站Gateway,并将来自 mesh 的流量路由到为外部服务定义的 host。示例配置
-
运行以下命令应用此 YAML 文件:
-
创建一个名为
http-egress-vs.yaml的 YAML 文件,用于配置一个VirtualService,以管理从应用 sidecar,经由出站网关,最终到达外部 host 的流量流向。示例配置
-
运行以下命令应用此 YAML 文件:
-
重新向该 URL 发起 HTTP 请求:
终端输出应类似于以下内容:
示例输出
-
通过运行以下命令确认请求已通过网关路由:
启用访问日志此验证步骤要正常工作,必须启用访问日志。你可以通过创建以下
Telemetry资源来启用它。终端应显示类似以下输出的信息:
示例输出