启用 Sidecar 注入
以下操作步骤使用 Bookinfo 应用程序演示配置 sidecar 注入的各种方法。
目录
前提条件
- 已安装 Alauda Service Mesh v2 Operator,已创建
Istio资源,且 Operator 已成功部署 Istio。 - 已创建
IstioCNI资源,Operator 已部署所需的IstioCNIpods。 - 计划加入网格的命名空间已创建,并且 Istio 控制平面能够发现它们。
- 可选:计划加入网格的工作负载已部署。以下示例中,Bookinfo 应用部署在
bookinfo命名空间,但尚未配置 sidecar 注入(如步骤 2 所述)。详情请参见“部署 Bookinfo 应用”。
使用命名空间标签启用 Sidecar 注入
此方法会向指定命名空间内的所有工作负载注入 sidecar 代理。当该命名空间中大多数工作负载都需要加入网格时,这是理想的做法。
操作步骤
-
使用以下命令检查 Istio 控制平面的 revision 名称:
你应看到类似如下示例的输出:
示例输出
由于 revision 名称为
default,可以使用标准注入标签,无需指定具体 revision。 -
通过运行以下命令确认目标命名空间中现有工作负载显示
1/1就绪容器,验证 pods 当前运行且未注入 sidecar。你应看到类似如下示例的输出:
示例输出
-
通过执行以下命令为
bookinfo命名空间添加注入标签:示例输出
-
为应用 sidecar 注入,重新部署
bookinfo命名空间中的工作负载。使用以下命令对所有 Deployment 进行滚动更新:
验证
-
通过检查新 pods 显示
2/2就绪容器,确认 sidecar 注入成功。使用以下命令:你应看到类似如下示例的输出:
示例输出
从网格中排除某个工作负载
即使为整个命名空间启用了注入,也可以阻止特定工作负载进行 sidecar 注入。
此示例仅作演示。要使 Bookinfo 应用正常工作,其所有工作负载必须加入网格。
操作步骤
-
编辑应用的
Deployment资源。此处示例排除ratings-v1服务。 -
在
Deployment的spec.template.metadata.labels部分添加标签sidecar.istio.io/inject: "false",以禁用 sidecar 注入。NOTE如果将该标签添加到
Deployment的顶层labels部分,sidecar 注入过程不会受到影响。更新部署后,将触发滚动更新,创建包含修改后 pod 的新 ReplicaSet。
验证
-
通过执行以下命令确认更新后的 pod 不包含 sidecar 容器,且显示
1/1运行中容器:你应看到类似如下示例的输出:
示例输出
使用 Pod 标签启用 Sidecar 注入
此方法允许选择单个工作负载进行 sidecar 注入,而不是为整个命名空间启用。适用于仅需少量工作负载加入服务网格的场景。示例中还展示了如何使用 revision 标签进行 sidecar 注入,假设 Istio 资源名为 my-mesh。当集群中存在多个 Istio 控制平面或基于 revision 的控制平面升级时,需使用不同的 Istio 资源名称。
操作步骤
-
运行以下命令检查 Istio 控制平面的 revision 名称:
你应看到类似如下示例的输出:
示例输出
由于 revision 名称为
my-mesh,必须使用标签istio.io/rev=my-mesh来激活 sidecar 注入。 -
通过检查 pods 显示
1/1就绪容器,确认现有 pods 运行且未注入 sidecar。使用以下命令:你应看到类似如下示例的输出:
示例输出
-
编辑应用的
Deployment资源。此处示例修改ratings-v1服务。 -
在
Deployment的spec.template.metadata.labels部分添加所需的 pod 注入或 revision 标签,此处为istio.io/rev: my-mesh:NOTE将标签放在
Deployment资源的顶层labels部分不会影响 sidecar 注入。更新部署后,将触发滚动更新,创建包含修改后 pod 的新 ReplicaSet。
验证
-
通过确认只有
ratings-v1pod 显示2/2就绪容器,验证 sidecar 注入成功。运行以下命令:你应看到类似如下示例的输出:
示例输出
-
对其他需要加入网格的工作负载重复相同步骤。