使用 Istio API 通过网关路由出口流量
本节介绍如何使用 Istio API,通过使用 gateway injection 安装的网关路由出站 HTTP 流量。
对于基于 sidecar 的部署,请使用此方法。在 ambient 模式下,请改用 Kubernetes Gateway API 配置出口路由。
前提条件
- 已使用 gateway injection 安装 Istio 网关。
操作步骤
-
执行以下命令创建名为
curl的命名空间: -
为该命名空间启用 sidecar injection。如果您的设置使用
InPlace升级策略,请运行以下命令:NOTE如果您使用
RevisionBased升级策略,请执行以下命令:-
运行以下命令查找您的
<revision-name>:示例输出:
-
使用 revision 名称为命名空间添加标签,以启用 sidecar injection:
-
-
运行以下命令部署
curl应用: -
初始化并导出包含 curl pod 名称的
CURL_POD环境变量: -
创建名为
http-se.yaml的 YAML 文件,将流量从网格指向外部服务。以下示例为特定 URL 定义了一个ServiceEntry。示例配置
-
执行以下命令应用此 YAML 文件:
-
确认
ServiceEntry配置已成功应用。运行以下命令,向上一步中指定的主机发送 HTTP 请求:此命令应返回类似
302(重定向)或200(成功)的 HTTP 状态码,这表示连接正常工作。 -
创建名为
http-egress-gw.yaml的 YAML 文件,建立出口Gateway,并将流量从网格路由到为外部服务定义的主机。示例配置
-
执行以下命令应用此 YAML 文件:
-
创建名为
http-egress-vs.yaml的 YAML 文件,配置一个VirtualService,以管理从应用 sidecar 经由出口网关到外部主机的流量流向。示例配置
-
运行以下命令应用此 YAML 文件:
-
重新向此 URL 发起 HTTP 请求:
终端输出应类似于以下内容:
示例输出
-
运行以下命令,确认请求已通过网关路由:
启用访问日志访问日志必须处于启用状态,此验证步骤才能正常运行。您可以创建以下
Telemetry资源来启用访问日志。您的终端应显示类似以下输出的信息:
示例输出
清理
删除在此操作步骤中创建的资源: