前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Istio实现sidecar自动注入

Istio实现sidecar自动注入

作者头像
2546610233
发布2024-05-08 16:51:43
1850
发布2024-05-08 16:51:43
举报
文章被收录于专栏:误入歧途

Istio实现sidecar自动注入

Sidecar模式

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

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

原理解析

  • 原理图

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

查看配置

  • 查看现有(默认)istio-sidecar-injector的MutatingAdmissionWebhook配置
代码语言:javascript
复制
kubectl describe mutatingwebhookconfiguration istio-sidecar-injector

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

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

  • 指定demo命名空间设置自动注入
代码语言:javascript
复制
kubectl label namespace demo istio-injection=enabled
  • 注入结果查看
代码语言:javascript
复制
kubectl get namespace -L istio-injection

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

  • 修改配置
代码语言:javascript
复制
kubectl edit mutatingwebhookconfiguration istio-sidecar-injector

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

测试自动注入

  • 创建一个简单的deployment   
  • vim nginx.yaml
代码语言:javascript
复制
---
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
代码语言:javascript
复制
代码语言:javascript
复制
  • 创建pod
代码语言:javascript
复制
kubectl apply -f nginx.yaml

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

  • 查看pod详情
代码语言:javascript
复制
kubectl describe po nginx-5bbcd878cf-q2l5s -n demo
  • 也可以在kuboard中查看到

自动注入配置成功

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Istio实现sidecar自动注入
    • Sidecar模式
      • 原理解析
        • 查看配置
          • 单个命名空间设置自动注入
            • 所有命名空间设置自动注入
              • 测试自动注入
                • 自动注入配置成功
                相关产品与服务
                容器服务
                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档