istio-code
客户端 sleep.yaml
apiVersion: v1
kind: Service
metadata:name: sleeplabels:app: sleepversion: v1
spec:selector:app: sleepversion: v1ports:- name: sshport: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:name: sleep
spec:replicas: 1selector:matchLabels:app: sleepversion: v1template:metadata:labels:app: sleepversion: v1spec:containers:- name: sleepimage: dustise/sleepimagePullPolicy: IfNotPresent
服务端 flaskapp.yaml
apiVersion: v1
kind: Service
metadata:name: flaskapplabels:app: flaskapp
spec:selector:app: flaskappports:- name: httpport: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:name: flaskapp-v1namespace: default
spec:replicas: 1selector:matchLabels:app: flaskappversion: v1template:metadata:labels:app: flaskappversion: v1spec:containers:- name: flaskappimage: dustise/flaskappimagePullPolicy: IfNotPresentenv:- name: versionvalue: v1
---
apiVersion: apps/v1
kind: Deployment
metadata:name: flaskapp-v2namespace: default
spec:replicas: 1selector:matchLabels:app: flaskappversion: v2template:metadata:labels:app: flaskappversion: v2spec:containers:- name: flaskappimage: dustise/flaskappimagePullPolicy: IfNotPresentenv:- name: versionvalue: v2
目标规则
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:name: flaskapp
spec:host: flaskappsubsets:- name: v1labels:version: v1- name: v2labels:version: v2
路由规则
只有v2
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: flaskapp-default-v2
spec:hosts:- flaskapphttp:- route:- destination:host: flaskappsubset: v2
路由拆分按权重
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: flaskapp
spec:hosts:- flaskapp.default.svc.cluster.localhttp:- route:- destination:host: flaskapp.default.svc.cluster.localsubset: v2weight: 50- destination:host: flaskapp.default.svc.cluster.localsubset: v1weight: 50
金丝雀部署
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: flaskapp
spec:hosts:- flaskapp.default.svc.cluster.localhttp:- match:- headers:lab:exact: canaryroute:- destination:host: flaskapp.default.svc.cluster.localsubset: v2- route:- destination:host: flaskapp.default.svc.cluster.localsubset: v1
根据服务来源路由
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: flaskapp
spec:hosts:- flaskapp.default.svc.cluster.localhttp:- match:- sourceLabels:app: sleepversion: v1route:- destination:host: flaskapp.default.svc.cluster.localsubset: v1- route:- destination:host: flaskapp.default.svc.cluster.localsubset: v2
超时重试
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: httpbin
spec:hosts:- httpbin.default.svc.cluster.localhttp:- timeout: 3sroute:- destination:host: httpbin.default.svc.cluster.local
故障重试
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: httpbin
spec:hosts:- httpbin.default.svc.cluster.localhttp:- route:- destination:host: httpbin.default.svc.cluster.localretries:attempts: 3
黑白名单
根据label进行区分
apiVersion: "config.istio.io/v1alpha2"
kind: handler
metadata:name: code-7
spec:compiledAdapter: denierparams:status:code: 7message: Not allowed
---
apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:name: palce-holder
spec:compiledTemplate: checknothing
---
apiVersion: "config.istio.io/v1alpha2"
kind: rule
metadata:name: deny-sleep-v1-to-httpbin
spec:match: destination.labels["app"] == "httpbin" && source.labels["app"]== "sleep" && source.labels["version"] == "v1"actions:- handler: code-7instances: [ palce-holder ]
根据名单列表进行区分
apiVersion: config.istio.io/v1alpha2
kind: handler
metadata:name: whitelist
spec:compiledAdapter: listcheckerparams:overrides: [ "v2"] # overrides provide a static listblacklist: false
---
apiVersion: config.istio.io/v1alpha2
kind: instance
metadata:name: appversion
spec:compiledTemplate: listentryparams:value: source.labels["version"]
---
apiVersion: config.istio.io/v1alpha2
kind: rule
metadata:name: checkversion
spec:match: destination.labels["app"] == "httpbin"actions:- handler: whitelistinstances: [ appversion ]
memQuota限流
apiVersion: "config.istio.io/v1alpha2"
kind: handler
metadata:name: quotahandler
spec:compiledAdapter: memquotaparams:quotas:- name: requestcountquota.instance.defaultmaxAmount: 20validDuration: 1soverrides:- dimensions:destination: httpbinmaxAmount: 1validDuration: 5s---apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:name: requestcountquota
spec:compiledTemplate: quotaparams:dimensions:destination: destination.labels["app"] | destination.service.name | "unknown"
---apiVersion: config.istio.io/v1alpha2
kind: rule
metadata:name: quota
spec:actions:- handler: quotahandlerinstances:- requestcountquota---apiVersion: config.istio.io/v1alpha2
kind: QuotaSpec
metadata:name: request-count
spec:rules:- quotas:- charge: 500quota: requestcountquota---apiVersion: config.istio.io/v1alpha2
kind: QuotaSpecBinding
metadata:name: spec-sleep
spec:quotaSpecs:- name: request-countnamespace: defaultservices:- name: httpbinnamespace: default
redis 限流
apiVersion: "config.istio.io/v1alpha2"
kind: handler
metadata:name: quotahandler
spec:compiledAdapter: memquotaparams:quotas:- name: requestcountquota.instance.defaultmaxAmount: 20validDuration: 1soverrides:- dimensions:destination: httpbinmaxAmount: 1validDuration: 5s
---apiVersion: "config.istio.io/v1alpha2"
kind: handler
metadata:name: redishandler
spec:compiledAdapter: redisquotaparams:redisServerUrl: redis:6379connectionPoolSize: 10quotas:- name: requestcountquota.instance.defaultmaxAmount: 20validDuration: 10sbucketDuration: 1srateLimitAlgorithm: ROLLING_WINDOWoverrides:- dimensions:destination: httpbinmaxAmount: 1
---apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:name: requestcountquota
spec:compiledTemplate: quotaparams:dimensions:destination: destination.labels["app"] | destination.service.name | "unknown"
---apiVersion: config.istio.io/v1alpha2
kind: rule
metadata:name: quota
spec:actions:- handler: quotahandlerinstances:- requestcountquota---apiVersion: config.istio.io/v1alpha2
kind: QuotaSpec
metadata:name: request-count
spec:rules:- quotas:- charge: 500quota: requestcountquota---apiVersion: config.istio.io/v1alpha2
kind: QuotaSpecBinding
metadata:name: spec-sleep
spec:quotaSpecs:- name: request-countnamespace: defaultservices:- name: httpbinnamespace: default
---
apiVersion: apps/v1
kind: Deployment
metadata:name: redis
spec:replicas: 1selector:matchLabels:name: redistemplate:metadata:labels:name: redisspec:containers:- name: redisimage: redisports:- containerPort: 6379
---
apiVersion: v1
kind: Service
metadata:name: redislabels:name: redis
spec:ports:- port: 6379targetPort: 6379selector:name: redis
istio-code相关推荐
- Istio调用链埋点原理剖析—是否真的“零修改”?
前言 在Istio的实践中最近经常被问到一个问题,使用Istio做调用链用户的业务代码是不是完全0侵入,到底要不要修改业务代码? 看官方介绍: Istio makes it easy to creat ...
- Istio Pilot 源码分析(一)
张海东, 多点生活(成都)云原生开发工程师. Istio 作为目前 Servic Mesh 方案中的翘楚,吸引着越来越多的企业及开发者.越来越多的团队想将其应用于微服务的治理,但在实际落地时却因为不 ...
- Istio的零停机滚动更新
本系列文章的第一部分介绍了如何在Kubernetes集群中实现真正的零停机时间更新. 我们专门解决了将流量从旧实例切换到新实例时出现的请求失败. 本文将展示如何使用Istio群集实现相同的目标. 服务 ...
- istio 和 kong_如何启动和运行Istio
istio 和 kong by Chris Cooney 克里斯·库尼(Chris Cooney) 如何启动和运行Istio (How to get Istio up and running) 而一旦 ...
- Istio 在阿里云容器服务的部署及流量治理实践
目标 在阿里云容器服务 Kubernetes 集群上部署 Istio 服务网格 实践灰度发布.故障注入.熔断等 Istio 流量管理特性 准备工作 安装和设置 kubectl 客户端,请参考不同的操作 ...
- Istio的Ingress与Egress网关
一.认识Ingress 在Istio的流量控制中,Ingress可以理解为前端应用的一个代理网格,当被转发到代理容器的流量到达服务前,会先经过该服务的Ingress Gateway,之后:再有Ingr ...
- 腾讯云容器团队内部Istio专题分享
转载:https://juejin.im/post/5c5408ee6fb9a049f154a160 ServiceMesher 2019年02月01日 阅读 70 腾讯云容器团队内部Istio专题分 ...
- Istio系列学习(十四)----Istio策略适配器配置和Env适配器配置
一.Istio策略适配器配置 Istio Adapter 机制的另外一个重要应用是策略执行. 策略执行Adapter 负责处理 Mixer 转发的 Check 请求,并将该请求分发给对应的策略执行后端 ...
- grpc istio_在皮质数据湖中使用grpc envoy和istio进行大规模数据摄取
grpc istio Cortex Data Lake collects, transforms and integrates your enterprise's security data to e ...
- stio简介及基于阿里云ACK安装Istio
Istio就是Service Mesh的落地实现. 1. Istio的功能 负载均衡,服务发现 故障恢复,指标收集和监控 A/B测试,灰度发布 限流,访问控制和端到端认证 2. Istio的架构 ...
最新文章
- 霍夫直线检测python_opencv+python 霍夫直线检测
- Jquery 将后台返回的字符串转换成Json格式的数据
- 自动化测试中,测试数据如何管理?
- 遗传算法求二元函数极值怎么编码_用遗传算法求复杂函数的极值点
- leetcode 922. 按奇偶排序数组 II(双指针)
- java 8 localdatetime_java8 时间 LocalDateTime常用方法
- 50-000-040-配置-MAC 安装MySQL my.cnf配置文件
- ahp层次分析法软件
- python cnn程序_python cnn训练(针对Fashion MNIST数据集)
- OpenERP __sql_constrants doesn't work.
- 针对EasyUI的checkbox进行扩展
- [SNMP超详解]:简介、抓包分析与编程实战
- 计算机组成原理统一试卷,安阳工学院计算机组成原理试卷a
- 一级倒立摆MATLAB仿真程序(搬运)
- Java中解密微信加密数据工具类
- android传感器测试工具,传感器测试工具
- Go语言的安装与环境配置
- 别了,AlphaGo之魂——黄士杰
- Autodesk Flame Education 2020 特别版 Mac 交互设计终极视觉特效制作软件
- Java随机更换背景图片_利用Java处理图片,更换背景
热门文章
- hadoop之常见命令
- 【路径规划-TSP问题】基于粒子群结合蚁群算法求解旅行商问题附matlab代码
- 单片机实验说明<二>外部中断基本使用
- 崇志宏 【转载】深度学习进阶规划(论文阅读顺序推荐)--东南大学
- 20年java面试_Java 20年
- 跳棋游戏利用树构建合法路径出现循环的解决办法
- JAVA日记之SpringIoC和DI注解开发 ----喝最烈的酒.
- 二叉树的基本概念和计算公式
- Service ‘Jenkins‘ (Jenkins) failed to start. verify that you have sufficient privileges to start
- 360P2建html网站,360P2刷机