Istio实现sidecar自动注入

本文详细介绍了Istio如何通过kube-apiserver实现Sidecar自动注入,包括原理、配置步骤、示例和自动注入的启用与禁用。通过部署示例和配置修改,展示了如何确保只有特定命名空间的Pod接受自动注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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配置
kubectldescribe mutatingwebhookconfiguration istio-sidecar-injector

image.png

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

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

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

image.png

  • 注入结果查看
kubectl getnamespace -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详情
kubectldescribe po nginx-5bbcd878cf-q2l5s -n demo

image.png

  • 也可以在kuboard中查看到

image.png

自动注入配置成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弧襪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值