3.3. 启用 sidecar 注入
要演示配置 sidecar 注入的不同方法,以下流程使用 Bookinfo 应用程序。
先决条件
-
已安装 Red Hat OpenShift Service Mesh Operator,创建一个
Istio资源,Operator 已部署 Istio。 -
您已创建了
IstioCNI资源,Operator 已部署必要的IstioCNIpod。 - 您已创建了作为网格一部分的命名空间,它们可以被 Istio control plane 发现。
-
可选: 您已部署了要包含在网格中的工作负载。在以下示例中,Bookinfo 已部署到
info命名空间中,但没有配置 sidecar 注入(第 5 步)。如需更多信息,请参阅"部署 Bookinfo 应用程序"。
3.3.1. 使用命名空间标签启用 sidecar 注入 复制链接链接已复制到粘贴板!
在本例中,一个命名空间中的所有工作负载都收到 sidecar 代理注入,当网格中大多数工作负载应该包括尽力时。
流程
使用以下命令验证 Istio control plane 的修订名称:
$ oc get istiorevisions您应该看到类似以下示例的输出:
输出示例
NAME TYPE READY STATUS IN USE VERSION AGE default Local True Healthy False v1.23.0 4m57s由于修订名称为 default,因此您可以在不引用确切的修订名称的情况下使用默认注入标签。
使用以下命令,验证在所需命名空间中运行的工作负载是否显示
1/1容器为READY。这确认 pod 在没有 sidecar 的情况下运行。$ oc get pods -n info您应该看到类似以下示例的输出:
输出示例
NAME READY STATUS RESTARTS AGE details-v1-65cfcf56f9-gm6v7 1/1 Running 0 4m55s productpage-v1-d5789fdfb-8x6bk 1/1 Running 0 4m53s ratings-v1-7c9bd4b87f-6v7hg 1/1 Running 0 4m55s reviews-v1-6584ddcf65-6wqtw 1/1 Running 0 4m54s reviews-v2-6f85cb9b7c-w9l8s 1/1 Running 0 4m54s reviews-v3-6f5b775685-mg5n6 1/1 Running 0 4m54s要将注入标签应用到
info命名空间,请在 CLI 中运行以下命令:$ oc label namespace info istio-injection=enabled namespace/info labeled为确保应用 sidecar 注入,请重新部署
info命名空间中的现有工作负载。使用以下命令对所有工作负载执行滚动更新:$ oc -n info rollout restart deployments
验证
运行以下命令,检查新 pod 是否显示
2/2容器为READY来验证推出部署:$ oc get pods -n info您应该看到类似以下示例的输出:
输出示例
NAME READY STATUS RESTARTS AGE details-v1-7745f84ff-bpf8f 2/2 Running 0 55s productpage-v1-54f48db985-gd5q9 2/2 Running 0 55s ratings-v1-5d645c985f-xsw7p 2/2 Running 0 55s reviews-v1-bd5f54b8c-zns4v 2/2 Running 0 55s reviews-v2-5d7b9dbf97-wbpjr 2/2 Running 0 55s reviews-v3-5fccc48c8c-bjktn 2/2 Running 0 55s
3.3.2. 从网格中排除工作负载 复制链接链接已复制到粘贴板!
您可以从为所有工作负载启用注入的命名空间中的 sidecar 注入中排除特定的工作负载。
这个示例仅用于演示目的。info 应用程序需要所有工作负载作为网格的一部分,才能正常工作。
流程
-
在编辑器中打开应用程序的
Deployment资源。在本例中,排除ratings-v1服务。 修改
Deployment资源的spec.template.metadata.labels部分,使其包含标签sidecar.istio.io/inject: false来禁用 sidecar 注入。kind: Deployment apiVersion: apps/v1 metadata: name: ratings-v1 namespace: info labels: app: ratings version: v1 spec: template: metadata: labels: sidecar.istio.io/inject: 'false'注意在
Deployment的顶层labels部分添加标签不会影响 sidecar 注入。更新部署会触发推出部署,创建一个带有更新的 pod 的新 ReplicaSet。
验证
运行以下命令,验证更新的 pod 不包含 sidecar 容器,并将
1/1容器显示为Running:$ oc get pods -n info您应该看到类似以下示例的输出:
输出示例
NAME READY STATUS RESTARTS AGE details-v1-6bc7b69776-7f6wz 2/2 Running 0 29m productpage-v1-54f48db985-gd5q9 2/2 Running 0 29m ratings-v1-5d645c985f-xsw7p 1/1 Running 0 7s reviews-v1-bd5f54b8c-zns4v 2/2 Running 0 29m reviews-v2-5d7b9dbf97-wbpjr 2/2 Running 0 29m reviews-v3-5fccc48c8c-bjktn 2/2 Running 0 29m
3.3.3. 使用 pod 标签启用 sidecar 注入 复制链接链接已复制到粘贴板!
这个方法允许您包括单个工作负载进行 sidecar 注入,而不是将其应用到命名空间中的所有工作负载,这适用于只有几个工作负载作为服务网格的一部分的情况。本例还演示了在 sidecar 注入中使用修订标签,其中 Istio 资源使用名称 my-mesh 创建。当多个 Istio control plane 存在于同一集群中或基于修订的 control plane 升级过程中时,需要一个唯一的 Istio 资源名称。
流程
运行以下命令,验证 Istio control plane 的修订名称:
$ oc get istiorevisions您应该看到类似以下示例的输出:
输出示例
NAME TYPE READY STATUS IN USE VERSION AGE my-mesh Local True Healthy False v1.23.0 47s由于修订名称为
my-mesh,因此请使用修订标签istio.io/rev=my-mesh启用 sidecar 注入。运行以下命令,验证工作负载已经运行
1/1容器为READY,表明 pod 正在运行而没有 sidecar:$ oc get pods -n info您应该看到类似以下示例的输出:
输出示例
NAME READY STATUS RESTARTS AGE details-v1-65cfcf56f9-gm6v7 1/1 Running 0 4m55s productpage-v1-d5789fdfb-8x6bk 1/1 Running 0 4m53s ratings-v1-7c9bd4b87f-6v7hg 1/1 Running 0 4m55s reviews-v1-6584ddcf65-6wqtw 1/1 Running 0 4m54s reviews-v2-6f85cb9b7c-w9l8s 1/1 Running 0 4m54s reviews-v3-6f5b775685-mg5n6 1/1 Running 0 4m54s-
在编辑器中打开应用程序的
Deployment资源。在本例中,更新ratings-v1服务。 更新
Deployment的spec.template.metadata.labels部分,使其包含适当的 pod 注入或修订标签。在本例中,istio.io/rev: my-mesh:kind: Deployment apiVersion: apps/v1 metadata: name: ratings-v1 namespace: info labels: app: ratings version: v1 spec: template: metadata: labels: istio.io/rev: my-mesh注意在
Deployment资源的顶层labels部分添加标签不会影响 sidecar 注入。更新部署会触发推出部署,使用更新的 pod 创建新 ReplicaSet。
验证
验证 ratings-v1 pod 现在显示
2/2容器READY,表示 sidecar 已成功注入:$ oc get pods -n info您应该看到类似以下示例的输出:
输出示例
NAME READY STATUS RESTARTS AGE details-v1-559cd49f6c-b89hw 1/1 Running 0 42m productpage-v1-5f48cdcb85-8ppz5 1/1 Running 0 42m ratings-v1-848bf79888-krdch 2/2 Running 0 9s reviews-v1-6b7444ffbd-7m5wp 1/1 Running 0 42m reviews-v2-67876d7b7-9nmw5 1/1 Running 0 42m reviews-v3-84b55b667c-x5t8s 1/1 Running 0 42m- 对您要包含在网格中的其他工作负载重复此操作。