通过网关注入安装网关
本操作步骤说明如何通过网关注入安装网关。
以下操作步骤适用于 ingress 和 egress 网关部署。
前提条件
- 已安装 Alauda Service Mesh v2 Operator。
- 已部署 Istio 控制平面。
- 确认Linux 内核兼容性。
- 确认命名空间要求。
操作步骤
-
创建网关命名空间:
NOTE请将网关和 Istio 控制平面安装在不同的命名空间中。
你可以将网关安装在专用的网关命名空间中。 这种方式允许网关被多个运行在不同命名空间的应用共享。 另外,也可以将网关安装在应用命名空间中。 这种方式下,网关作为该命名空间内应用的专用网关。
-
创建名为
secret-reader.yaml的 YAML 文件,定义网关部署所需的 service account、role 和 role binding。 这些配置允许网关读取 secret,以获取 TLS 凭据。secret-reader.yaml -
运行以下命令应用该 YAML 文件:
-
创建名为
gateway-deployment.yaml的 YAML 文件,定义网关的 KubernetesDeployment对象。gateway-deployment.yaml- 表示 Istio 控制平面使用网关注入模板,而非默认的 sidecar 模板。
- 确保为网关部署设置唯一标签。
唯一标签是 Istio
Gateway资源选择网关工作负载的必要条件。 - 通过设置
sidecar.istio.io/inject标签为true启用网关注入。 如果 Istio 资源名称非默认,必须使用istio.io/rev: <istio_revision>标签,其中 revision 表示 Istio 资源的活动版本。 - 将 image 字段设置为
auto,以便每次 Pod 启动时自动更新镜像。 - 将
serviceAccountName设置为之前创建的ServiceAccount名称。 - (可选)设置 nodeSelector,将网关 Pod 调度到 Infra Nodes。
- (可选)设置 tolerations,允许网关 Pod 被调度到 Infra Nodes。
-
运行以下命令应用该 YAML 文件:
-
运行以下命令,验证网关
Deployment是否成功发布:你应该看到类似如下输出:
示例输出
-
创建名为
gateway-service.yaml的 YAML 文件,定义网关的 KubernetesService对象。gateway-service.yaml- 当将
spec.type设置为ClusterIP时,网关Service对象只能在集群内部访问。 若网关需处理来自集群外部的入口流量,应将spec.type设置为LoadBalancer。 - 将
selector设置为之前创建的网关部署 Pod 模板中指定的唯一标签或标签集合。
- 当将
-
运行以下命令应用该 YAML 文件:
-
运行以下命令,验证网关服务是否正确指向网关 Pod 的端点:
你应该看到类似如下示例输出:
示例输出
-
可选 :创建名为
gateway-hpa.yaml的 YAML 文件,定义网关的水平 Pod 自动扩缩器。 以下示例将最小副本数设置为2,最大副本数设置为5,当平均 CPU 利用率超过 Pod 模板中部署定义的 CPU 资源限制的 80% 时,自动扩容。gateway-hpa.yaml- 将
spec.scaleTargetRef.name设置为之前创建的网关部署名称。
- 将
-
可选 :运行以下命令应用该 YAML 文件:
-
可选 :创建名为
gateway-pdb.yaml的 YAML 文件,定义网关的 Pod 中断预算。 以下示例允许只有在驱逐后集群中至少还剩1个健康的网关 Pod 时,才允许驱逐网关 Pod。gateway-pdb.yaml- 将
spec.selector.matchLabels设置为之前创建的网关部署 Pod 模板中指定的唯一标签或标签集合。
- 将
-
可选 :运行以下命令应用该 YAML 文件: