idou教你学Istio10 : 如何用Istio实现K8S Egress流量管理
上一篇我们了解了如何控制入口流量,本文主要介绍在使用Istio时如何访问集群外服务,即对出口流量的管理。
默认安装的Istio是不能直接对集群外部服务进行访问的,如果需要将外部服务暴露给 Istio 集群中的客户端,目前有两种方案:
1. 配置ServiceEntry
2. 配置global.proxy.includeIPRanges
配置serviceEntry访问外部服务
ServiceEntry用于将额外的条目添加到Istio内部维护的服务注册表中,从而让网格中自动发现的服务能够访问和路由到这些手动加入的服务。
ServiceEntry 描述了服务的属性(DNS 名称、VIP、端口、协议以及端点)。这类服务可能是网格外的 API,或者是处于网格内部但却不存在于平台的服务注册表中的条目(例如需要和 Kubernetes 服务沟通的一组虚拟机服务)。
配置ServiceEntry 也很简单,允许从网格内部访问HTTP,HTTPS,Mongo,TCP等协议的外部服务。下面分别列举了对外部TCP服务和HTTP服务的访问配置。具体的ServiceEntry的配置参数定义可参考:
https://istio.io/docs/reference/config/istio.networking.v1alpha3/#ServiceEntry
外部TCP服务访问配置示例:
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: mysql
spec:
hosts:
- 192.168.0.245
ports:
- number: 3306
name: tcp
protocol: TCP
外部HTTP服务访问配置示例:
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: foo-ext
spec:
hosts:
- foo.com
ports:
- number: 80
name: http
protocol: HTTP
虽然社区推荐的方式是设置ServiceEntry来访问外部服务,但如果集群外需要访问的服务很多,一个个配置起来就很麻烦,也不方便管理。
配置global.proxy.includeIPRanges
如果使用HELM安装Istio, 可以在 Helm 中设置 global.proxy.includeIPRanges 变量为集群clusterIP的范围,然后进行安装。
如果要对已经安装好的Istio修改配置,需要修改名为 istio-sidecar-injector 的 Configmap的“-i”的取值为集群clusterIP,稍后重启所有服务的pod,重新注入sidecar。然后你会看到重启后pod中的initContainers的-i参数值已经变为集群clusterIP的范围。
这种方式使得只有集群内的IP通过sidecar,对外部服务的调用越过了 Istio sidecar proxy,让服务可以直接访问到对应的外部地址。
相比配置ServiceEntry,这种方式简单对 Istio 进行全局配置,就可以直接访问所有外部服务。但缺点是不能治理集群外服务的访问流量,比如不能对集群外中间件服务进行熔断限流;而且需要用户了解云供应商特定的知识和配置。
目前社区还没有完美的解决方案,可参考讨论:
https://groups.google.com/forum/#!searchin/istio-dev/serviceentry%7Csort:date/istio-dev/0RCt7Jqrcg8/7Ylrr4TABQAJ
idou教你学Istio10 : 如何用Istio实现K8S Egress流量管理的更多相关文章
- idou老师教你学Istio: 如何用Istio实现K8S Egress流量管理
本文主要介绍在使用Istio时如何访问集群外服务,即对出口流量的管理. 默认安装的Istio是不能直接对集群外部服务进行访问的,如果需要将外部服务暴露给 Istio 集群中的客户端,目前有两种方案: ...
- idou老师教你学Istio11 : 如何用Istio实现流量熔断
在之前的最佳实践中,已经带大家通过一系列的实践任务领略了Istio的无穷魅力.今天,将向大家介绍如何用Istio实现流量熔断. 熔断机制是创建弹性微服务应用程序的重要模式.熔断可以帮助您自由控制故障影 ...
- idou老师教你学Istio 09: 如何用Istio实现K8S Ingress流量管理
前言 在Istio的世界里,如果想把外部的请求流量引入网格,你需要认识并会学会配置Istio Ingress Gateway 什么是Ingress Gateway 由于Kubernetes Ingr ...
- idou老师教你学Istio06: 如何用istio实现流量迁移
流量迁移是流量管理的一个重要功能.istio提供的流量管理功能将流量从基础设施扩展中解耦,支持动态请求路由,故障注入.超时重试.熔断和流量迁移等.流量迁移的主要目的是将流量从微服务的某一版本的逐步迁移 ...
- idou老师教你学Istio05: 如何用Isito实现智能路由配置
要介绍istio请求路由,我们不由得先从pilot 和 envoy开始谈起. 在服务网格中,Pilot管理和配置所有的envoy实例.在pilot中,你几乎可以配置所有的关于流量导向规则及其他故障恢复 ...
- idou老师教你学Istio 14:如何用K8S对Istio Service进行流量健康检查
Istio利用k8s的探针对service进行流量健康检查,有两种探针可供选择,分别是liveness和readiness: liveness探针用来侦测什么时候需要重启容器.比如说当liveness ...
- idou老师教你学istio :基于角色的访问控制
istio的授权功能,也称为基于角色的访问控制(RBAC),它为istio服务网格中的服务提供命名空间级别.服务级别和方法级别的访问控制.基于角色的访问控制具有简单易用.灵活和高性能等特性.本文介绍如 ...
- idou老师教你学Istio 17 : 通过HTTPS进行双向TLS传输
众所周知,HTTPS是用来解决 HTTP 明文协议的缺陷,在 HTTP 的基础上加入 SSL/TLS 协议,依靠 SSL 证书来验证服务器的身份,为客户端和服务器端之间建立“SSL”通道,确保数据运输 ...
- idou老师教你学istio 21:基于角色的访问控制
istio的授权功能,也称为基于角色的访问控制(RBAC),它为istio服务网格中的服务提供命名空间级别.服务级别和方法级别的访问控制.基于角色的访问控制具有简单易用.灵活和高性能等特性.本文介绍如 ...
随机推荐
- react 生命周期函数的一些心得体会
一.理论 组件本质上是状态机,输入确定,输出一定确定 生命周期的三个阶段,三者时间是不固定的,只是在逻辑上的分类: 二.初始化阶段: getDefaultProps:获取实例的默认属性(即使没有生成实 ...
- 第十三章 RememberMe——《跟我学Shiro》
转发地址:https://www.iteye.com/blog/jinnianshilongnian-2031823 目录贴:跟我学Shiro目录贴 Shiro提供了记住我(RememberMe)的功 ...
- SSRS 2016 Forms Authentication
SSRS 2016 comes with completely new report manager web interface and implementing form authenticatio ...
- CentOS 7 命令
常用命令 文件与目录操作 命令 解析 cd /home 进入 ‘/home’ 目录 cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd - 返回上次所在目录 cp file1 file ...
- CF C.Ivan the Fool and the Probability Theory【思维·构造】
题目传送门 题目大意: 一个$n*m$的网格图,每个格子可以染黑色.白色,问每个格子最多有一个相邻格子颜色相同的涂色方案数$n,m<=1e5$ 分析: 首先,考虑到如果有两个相邻的格子颜色相同, ...
- 排序算法三:Shell插入排序
排序算法三:Shell插入排序 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 引言 在我的博文<"主宰世界"的10种算法短评> ...
- 最新 二六三网络通信java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿. 二六三网络通信等10家互联网公司的校招Offer,因为某些自身原因最终选择了 二六三网络通信.6.7月主要是做系统复习.项 ...
- 彻底理解js中this的指向,不必硬背(转)
转自: http://www.h5cn.com/js/jishu/2016/0226/18248.html 首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定th ...
- 4、1 IK分词器
我们在浏览器地址栏输入 http://127.0.0.1:9200/_analyze?analyzer=chinese&pretty=true&text=我是程序员 默认的中文分词是将 ...
- 在ROS系统下,获取tango的RGBD信息和Pose信息
Project Tango 是从Google 的 Advanced Technology and Projects group (ATAP) 孵化出来的一个项目,诚如ATAP高级工程师Johnny L ...