Istio实现sidecar自动注入

Istio实现sidecar自动注入

Sidecar模式

在Sidecar部署方式中,你会为每个应用的容器部署一个伴生容器。对于Service Mesh,Sidecar接管进出应用程序容器的所有网络流量。

Sidecar有利于工作审计,特别是在一些与安全相关的方面。

image.png

原理解析

  • 原理图

image.png

自动注入是通过 kube-apiserver 准入控制实现的。简单来说,istio-sidecar-injector 服务提供一个 webservice 用于提供自动注入服务(该服务使用 istio-sidecar-injector ConfigMap 作为注入配置),而定义在何种情况下 kube-apiserver 需要向 istio-sidecar-injector 服务发送请求进行注入的是 istio-sidecar-injector MutatingAdmissionWebhook。

查看配置

  • 查看现有(默认)istio-sidecar-injector的MutatingAdmissionWebhook配置
kubectl describe mutatingwebhookconfiguration istio-sidecar-injector

image.png

默认配置只包含istio-injection=enabled标签的命名空间内的pod在创建时才能调用istio-sidecar-injector服务完成自动注入。

单个命名空间设置自动注入

  • 指定demo命名空间设置自动注入
kubectl label namespace demo istio-injection=enabled

image.png

  • 注入结果查看
kubectl get namespace -L istio-injection

image.png

所有命名空间设置自动注入

  • 修改配置
kubectl edit mutatingwebhookconfiguration istio-sidecar-injector

image.png

修改namespaceSelector配置,如果某个命名空间不想自动注入,则加上istio-injection=disabled标签即可。

测试自动注入

  • 创建一个简单的deployment   
  • vim nginx.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: '1'
    k8s.kuboard.cn/displayName: nginx
    k8s.kuboard.cn/workload: nginx
  generation: 1
  labels:
    k8s.kuboard.cn/layer: ''
    k8s.kuboard.cn/name: nginx
  name: nginx
  namespace: demo
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s.kuboard.cn/layer: ''
      k8s.kuboard.cn/name: nginx
  template:
    metadata:
      labels:
        k8s.kuboard.cn/layer: ''
        k8s.kuboard.cn/name: nginx
    spec:
      containers:
        - image: nginx:1.19.10-alpine
          imagePullPolicy: IfNotPresent
          name: nginx
 


  • 创建pod
kubectl apply -f nginx.yaml

image.png

image.png

一个pod生成了两个容器,一个为nginx本身容器,另一个就是Sidecar代理容器。

  • 查看pod详情
kubectl describe po nginx-5bbcd878cf-q2l5s -n demo

image.png

  • 也可以在kuboard中查看到

image.png

自动注入配置成功

posted @ 2022-11-13 10:53  xiao智  阅读(304)  评论(0编辑  收藏  举报