我想将 envoy 代理作为 sidecar 添加到现有的 Kubernetes 部署中。我尝试关注多篇博客文章,但这似乎没有帮助。我想知道是否有人做过,如果有,怎么做?
谢谢!
我想将 envoy 代理作为 sidecar 添加到现有的 Kubernetes 部署中。我尝试关注多篇博客文章,但这似乎没有帮助。我想知道是否有人做过,如果有,怎么做?
谢谢!
您必须重新启动部署。
来自 istio手册:
如果您使用手动 sidecar 注入,请使用以下命令
$ kubectl apply -f <(istioctl kube-inject -f bookinfo.yaml)
istioctl kube-inject 命令用于在创建部署之前手动修改 bookinfo.yaml 文件,如此处所述。
如果您使用启用了自动 sidecar 注入的集群,请使用 istio-injection=enabled 标记默认命名空间
$ kubectl 标签命名空间默认 istio-injection=enabled
然后只需使用 kubectl 部署服务
$ kubectl apply -f bookinfo.yaml
补充一下李坤的回答,如果你的情况是 kubernetes 集群已经有很多服务在运行,那么将autoInjection
策略设置为disabled
默认会更安全,并让服务所有者明确设置它要使用 istio 侧车。
为此,您必须:
--global.proxy.autoInject=disabled --sidecarInjectorWebhook.enabled=true
。kubectl label namespace bar istio-injection=enabled
和--sidecarInjectorWebhook.enabled=true
labeling your namespace: 意味着 istio sidecar injector webhook 已为您的命名空间激活。但是,由于您指定了global.proxy.autoInject=disabled
,它不会注入任何 pod。因此,服务所有者必须明确定义 pod 的注释(在您的部署 yaml 文件中),如下所示:
template:
metadata:
annotations:
sidecar.istio.io/inject: "true"
要检查您的 istio 的 sidecar 注入策略,
kubectl get cm istio-sidecar-injector -n istio-system -o yaml
看一下data.config
value,它应该包含policy: disable
or policy: enabled
。
参考: - https://istio.io/docs/setup/kubernetes/sidecar-injection/#policy - 亲自动手(我试过了)