服务网格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。
    kubectl get pod {podname} -n {namespace} -o yaml | kubectl replace --force -f -
  2. 检查Pod是否都注入了Sidecar。每个工作负载都有两个容器:主容器和Sidecar代理容器。
    kubectl get pod -n {namespace} --all