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