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