客户端 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相关推荐

  1. Istio调用链埋点原理剖析—是否真的“零修改”?

    前言 在Istio的实践中最近经常被问到一个问题,使用Istio做调用链用户的业务代码是不是完全0侵入,到底要不要修改业务代码? 看官方介绍: Istio makes it easy to creat ...

  2. Istio Pilot 源码分析(一)

    张海东, ‍多点生活(成都)云原生开发工程师. Istio 作为目前 Servic Mesh 方案中的翘楚,吸引着越来越多的企业及开发者.越来越多的团队想将其应用于微服务的治理,但在实际落地时却因为不 ...

  3. Istio的零停机滚动更新

    本系列文章的第一部分介绍了如何在Kubernetes集群中实现真正的零停机时间更新. 我们专门解决了将流量从旧实例切换到新实例时出现的请求失败. 本文将展示如何使用Istio群集实现相同的目标. 服务 ...

  4. istio 和 kong_如何启动和运行Istio

    istio 和 kong by Chris Cooney 克里斯·库尼(Chris Cooney) 如何启动和运行Istio (How to get Istio up and running) 而一旦 ...

  5. Istio 在阿里云容器服务的部署及流量治理实践

    目标 在阿里云容器服务 Kubernetes 集群上部署 Istio 服务网格 实践灰度发布.故障注入.熔断等 Istio 流量管理特性 准备工作 安装和设置 kubectl 客户端,请参考不同的操作 ...

  6. Istio的Ingress与Egress网关

    一.认识Ingress 在Istio的流量控制中,Ingress可以理解为前端应用的一个代理网格,当被转发到代理容器的流量到达服务前,会先经过该服务的Ingress Gateway,之后:再有Ingr ...

  7. 腾讯云容器团队内部Istio专题分享

    转载:https://juejin.im/post/5c5408ee6fb9a049f154a160 ServiceMesher 2019年02月01日 阅读 70 腾讯云容器团队内部Istio专题分 ...

  8. Istio系列学习(十四)----Istio策略适配器配置和Env适配器配置

    一.Istio策略适配器配置 Istio Adapter 机制的另外一个重要应用是策略执行. 策略执行Adapter 负责处理 Mixer 转发的 Check 请求,并将该请求分发给对应的策略执行后端 ...

  9. grpc istio_在皮质数据湖中使用grpc envoy和istio进行大规模数据摄取

    grpc istio Cortex Data Lake collects, transforms and integrates your enterprise's security data to e ...

  10. stio简介及基于阿里云ACK安装Istio

    Istio就是Service Mesh的落地实现. ​ 1. Istio的功能 负载均衡,服务发现 故障恢复,指标收集和监控 A/B测试,灰度发布 限流,访问控制和端到端认证 2. Istio的架构 ...

最新文章

  1. 霍夫直线检测python_opencv+python 霍夫直线检测
  2. Jquery 将后台返回的字符串转换成Json格式的数据
  3. 自动化测试中,测试数据如何管理?
  4. 遗传算法求二元函数极值怎么编码_用遗传算法求复杂函数的极值点
  5. leetcode 922. 按奇偶排序数组 II(双指针)
  6. java 8 localdatetime_java8 时间 LocalDateTime常用方法
  7. 50-000-040-配置-MAC 安装MySQL my.cnf配置文件
  8. ahp层次分析法软件
  9. python cnn程序_python cnn训练(针对Fashion MNIST数据集)
  10. OpenERP __sql_constrants doesn't work.
  11. 针对EasyUI的checkbox进行扩展
  12. [SNMP超详解]:简介、抓包分析与编程实战
  13. 计算机组成原理统一试卷,安阳工学院计算机组成原理试卷a
  14. 一级倒立摆MATLAB仿真程序(搬运)
  15. Java中解密微信加密数据工具类
  16. android传感器测试工具,传感器测试工具
  17. Go语言的安装与环境配置
  18. 别了,AlphaGo之魂——黄士杰
  19. Autodesk Flame Education 2020 特别版 Mac 交互设计终极视觉特效制作软件
  20. Java随机更换背景图片_利用Java处理图片,更换背景

热门文章

  1. hadoop之常见命令
  2. 【路径规划-TSP问题】基于粒子群结合蚁群算法求解旅行商问题附matlab代码
  3. 单片机实验说明<二>外部中断基本使用
  4. 崇志宏 【转载】深度学习进阶规划(论文阅读顺序推荐)--东南大学
  5. 20年java面试_Java 20年
  6. 跳棋游戏利用树构建合法路径出现循环的解决办法
  7. JAVA日记之SpringIoC和DI注解开发 ----喝最烈的酒.
  8. 二叉树的基本概念和计算公式
  9. Service ‘Jenkins‘ (Jenkins) failed to start. verify that you have sufficient privileges to start
  10. 360P2建html网站,360P2刷机