启用 Sidecar 注入
以下操作步骤使用 Bookinfo 应用来说明配置 sidecar 注入的不同方法。
先决条件
- 已安装 Alauda Service Mesh v2 Operator,已创建
Istio资源,并且 Operator 已成功部署 Istio。 - 已创建
IstioCNI资源,并且 Operator 已部署所需的IstioCNIpods。 - 已创建用于 mesh 的命名空间,并且 Istio 控制平面可以发现这些命名空间。
- 可选:要纳入 mesh 的工作负载已部署。对于后续示例,Bookinfo 应用部署在
bookinfo命名空间中,但尚未配置 sidecar 注入(如步骤 2 所述)。有关更多详细信息,请参见“部署 Bookinfo 应用”。
使用 Namespace 标签启用 Sidecar 注入
此方法会将 sidecar proxy 注入到给定命名空间中的所有工作负载。对于该命名空间中大多数工作负载都需要加入 mesh 的场景,这是理想的方法。
操作步骤
-
使用以下命令检查 Istio 控制平面的 revision 名称:
你应当会看到类似如下的输出示例:
示例输出
由于 revision 名称是
default,因此可以直接使用标准注入标签,而无需指定具体 revision。 -
运行以下命令,确认目标命名空间中现有工作负载显示
1/1个就绪容器。这可验证这些 pod 当前正在不带 sidecar 的情况下运行。你应当会看到类似如下的输出示例:
示例输出
-
执行以下命令,将注入标签应用到
bookinfo命名空间:示例输出
-
要应用 sidecar 注入,请重新部署
bookinfo命名空间中的工作负载。使用以下命令对所有 deployment 触发滚动更新:
验证
-
要验证滚动更新,请检查新 pod 是否在
READY状态下显示2/2个容器,这表明 sidecar 注入成功。使用以下命令:你应当会看到类似如下的输出示例:
示例输出
将工作负载排除在 Mesh 之外
即使为整个命名空间启用了注入,也可以阻止特定工作负载进行 sidecar 注入。
此示例仅用于演示。对于 Bookinfo 应用要正常运行,其所有工作负载都必须属于 mesh。
操作步骤
-
编辑该应用的
Deployment资源。在此示例中,我们将排除ratings-v1服务。 -
在
Deployment的spec.template.metadata.labels部分中添加标签sidecar.istio.io/inject: "false",以禁用 sidecar 注入。NOTE如果将此标签添加到
Deployment的顶级labels部分,则不会影响 sidecar 注入。当 deployment 更新时,会触发滚动更新,从而创建一个包含已修改 pod 的新 ReplicaSet。
验证
-
通过执行以下命令,确认更新后的 pod 不包含 sidecar 容器,并显示
1/1个运行中的容器:你应当会看到类似如下的输出示例:
示例输出
使用 Pod 标签启用 Sidecar 注入
使用此方法,你可以选择单个工作负载进行 sidecar 注入,而不是为整个命名空间启用注入。此方法最适合仅有少量工作负载需要纳入 service mesh 的场景。示例还展示了如何使用 revision 标签进行 sidecar 注入,其中 Istio 资源名为 my-mesh。当一个集群中存在多个 Istio 控制平面,或者在基于 revision 的控制平面升级期间,必须使用不同的 Istio 资源名称。
操作步骤
-
运行以下命令检查 Istio 控制平面的 revision 名称:
你应当会看到类似如下的输出示例:
示例输出
由于 revision 名称是
my-mesh,因此必须使用 revision 标签istio.io/rev=my-mesh来启用 sidecar 注入。 -
通过检查现有 pod 是否在
READY状态下显示1/1个容器,确认这些 pod 运行时未包含 sidecar。使用此命令:你应当会看到类似如下的输出示例:
示例输出
-
编辑该应用的
Deployment资源。在此示例中,修改ratings-v1服务。 -
修改
Deployment的spec.template.metadata.labels部分,添加所需的 pod 注入或 revision 标签。此处为istio.io/rev: my-mesh:NOTE将该标签放在
Deployment资源的顶级labels部分不会影响 sidecar 注入。对 deployment 的此更新会触发滚动更新,从而生成一个包含已更改 pod 的新 ReplicaSet。
验证
-
通过确认只有
ratings-v1pod 显示2/2个就绪容器,来验证 sidecar 已成功注入。运行以下命令:你应当会看到类似如下的输出示例:
示例输出
-
按相同流程为你想要加入 mesh 的其他工作负载进行配置。