在 sidecar 模式下使用 Kubernetes Gateway API 通过网关路由出口流量
本节介绍如何使用 Kubernetes Gateway API,通过出口网关路由出站 HTTP 流量。
前提条件
- 已安装 Alauda Service Mesh v2 Operator。
- 已部署 Istio 控制平面。
- 已安装 Gateway API CRD。
- 确认 Linux 内核兼容性。
操作步骤
-
使用以下命令创建名为
egress-gateway的命名空间: -
将
istio网关类 overlay 添加到Istio资源,以便将网关 pod 准入Restrictedegress-gateway命名空间:如需了解更多信息,请参阅 Pod Security Admission。
-
创建名为
egress-gateway-cr.yaml的 YAML 文件,用于定义出口网关。出口网关 CR 文件示例
执行以下命令应用此 YAML 文件:
-
运行以下命令检查网关配置的状态:
当
PROGRAMMED列中的值为True时,即表示已确认达到期望状态。输出示例
-
可选:将网关部署到 Infra Nodes:
单击展开
前提条件Alauda Container Platform 4.2.0 或更高版本,或者将 Gateway API CRD 升级到最新版本。
a. 在计划部署 Gateway 的同一命名空间中创建名为
asm-kube-gateway-options的 ConfigMap:- 指定 configmap 的名称。
- 指定与网关相同的 configmap 命名空间。
- 设置节点选择器和容忍度,以便将网关 pod 调度到 Infra Nodes。
b. 通过添加
infrastructure.parametersRef字段,在 Gateway 资源中引用 ConfigMap:- 指定网关的名称。
- 指定网关的命名空间。
验证
-
执行以下命令创建名为
curl的命名空间: -
为命名空间启用 sidecar 注入。如果您的设置使用
InPlace升级策略,请运行以下命令:NOTE如果您使用
RevisionBased升级策略,请执行以下命令:-
要查找您的
<revision-name>,请运行以下命令:输出示例:
-
使用 revision 名称为命名空间添加标签,以启用 sidecar 注入:
-
-
运行以下命令部署
curl应用: -
初始化并导出包含 curl pod 名称的
CURL_POD环境变量: -
使用
curl客户端,输入以下命令确认可以通过出口网关访问httpbingo.org:期望的输出将显示来自
httpbingo.org的响应,这表示出口流量正通过配置的网关进行路由。输出示例
清理
移除此操作步骤中创建的资源: