服务网格 ASM 支持通过 Sidecar 代理来增强服务调用之间的网络安全性、可靠性以及可观测性。本文介绍如何安装 Sidecar 代理。

背景信息

Sidecar 所支持的功能可以从应用程序的容器中抽象出来,并在作为同一 Pod 中的独立容器提供的代理中实现。为了充分利用这些功能,应用程序中的每个服务都需要在其 Pod 中运行一个 Envoy Sidecar 代理。Envoy 代理拦截到该服务的所有入站和出站 HTTP 通信,并与服务网格 ASM 提供的控制平面 Pilot 组件通信。

步骤一:启用 Sidecar 注入

默认情况下,对所有命名空间禁用 Sidecar 自动注入。可以通过更新 Pod 的 Kubernetes 配置手动注入 Envoy 代理,也可以使用基于 Webhook 的机制自动注入。执行以下命令,启用自动注入:
kubectl label namespace NAMESPACE istio-injection=enabled --overwrite
说明 其中,NAMESPACE 表示应用程序服务对应的命名空间,如果没有指定则会使用 default 命名空间。

步骤二:重新启动 Pod

由于在创建 Pod 时会注入 Sidecar,因此必须重新启动正在运行的 Pod 才能使更改生效。
注意 请在测试环境中反复进行重新启动 Pod 的验证测试,以确保您的服务可以处理任何潜在的流量中断。
  1. 重新启动 Pod 的方式取决于 Pod 是否作为 Deployment 的一部分创建。
    • 如果使用了 Deployment,请重新启动 Deployment,这将重新启动所有带有 Sidecar 的 Pod。
      kubectl rollout restart deployment -n NAMESPACE
    • 如果没有使用 Deployment,请删除 Pod,然后 Pod 将会自动重新创建。
      kubectl delete pod -n NAMESPACE --all
  2. 检查 Pod 是否都注入了 Sidecar。每个工作负载都有两个容器:主容器和Sidecar 代理容器。
    kubectl get pod -n NAMESPACE --all