Skip to content

Latest commit

 

History

History

2.injection

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

注入

自动注入

kubectl label namespace default istio-injection=enabled

使用 Istio 提供的准入控制器变更 Webhook,可以将 Sidecar 自动添加到可用的 Kubernetes Pod 中。当你在一个命名空间中设置了 istio-injection=enabled 标签,且 Injection webhook 被启用后,任何新的 Pod 都有将在创建时自动添加 Sidecar。

查看准入控制器变更 Webhook:

kubectl get mutatingwebhookconfigurations

返回:

NAME                     WEBHOOKS   AGE
istio-sidecar-injector   4          23h

什么是准入控制 Webhook:

准入 Webhook 是一种用于接收准入请求并对其进行处理的 HTTP 回调机制。 可以定义两种类型的准入 webhook,即 验证性质的准入 Webhook变更性质的准入 Webhook。 变更性质的准入 Webhook 会先被调用。它们可以更改发送到 kube-apiserver 的对象以执行自定义的设置默认值操作。

在完成了所有对象修改并且 kube-apiserver 也验证了所传入的对象之后, 验证性质的 Webhook 会被调用,并通过拒绝请求的方式来强制实施自定义的策略。

更多信息请参阅:

手动注入

# 由于 default 命令空间已经被设置为自动注入,所以我们需要新建一个命名空间,试验手动注入
kubectl create namespace tutorial
# 新建一个 nginx Deployment
kubectl create deployment nginx --image=nginx --dry-run=client --output=yaml > nginx.yaml
kubectl apply -f nginx.yaml -n tutorial
# 手动注入
istioctl kube-inject -f nginx.yaml > nginx-injection.yaml
kubectl apply -f nginx-injection.yaml -n tutorial
# 比较差异
diff nginx.yaml nginx-injection.yaml

对比两个文件差异,可以看出一些核心变化:

  • 新增了一个名为 istio-init 的初始化容器
  • 新增了一个名为 istio-proxy 的边车容器
  • 原来的 nginx 容器上增加了一些启动参数和环境变量