idou老师教你学Istio 17 : 通过HTTPS进行双向TLS传输
众所周知,HTTPS是用来解决 HTTP 明文协议的缺陷,在 HTTP 的基础上加入 SSL/TLS 协议,依靠 SSL 证书来验证服务器的身份,为客户端和服务器端之间建立“SSL”通道,确保数据运输安全。而Istio的双向TLS也用来保证数据传输安全。那么,Istio的双向TLS是如何与HTTPS服务一起工作的呢?
下面通过实例演示Istio的双向TLS是如何与HTTPS服务一起工作的,包括三个部分:
• 在没有 Istio sidecar 的情况下部署 HTTPS 服务
• 关闭 Istio 双向 TLS 认证情况下部署 HTTPS 服务
• 部署一个启动双向 TLS 的 HTTPS 服务。对于每个部署,请求连接到此服务并验证其是否有效。
环境准备
• 未启用双向TLS的安装了Istio的k8s集群
• 安装openssl,生成证书和configmap
通过openssl生成key和证书:
从给定的公私钥对创建TLS secret:
使用kubectl创建Configmap:
1.没有部署sidecar
创建一个不部署sidecar的基于nginx的HTTPS服务,并创建一个部署sidecar的sleep应用来调度nginx
检查上述pod是否正常运行
在pod正常运行时,从sleep应用的istio-proxy容器内访问HTTPS服务:
可以看到,nginx能正常访问。
2. 部署sidecar并禁用双向TLS
删除上一步创建的未部署sidecar的HTTPS服务,并用sidecar部署它
查看pod是否正常启动:
在pod正常运行时,从istio-proxy容器运行,可以看到,nginx能正常访问:
3. 部署sidecar,并启用双向TLS
通过配置网格级别的认证策略启用全局双向TLS,首先配置网格认证策略:
配置目的地规则:
此时,网格中的所有服务已经开启了双向TLS功能,从sleep容器中访问nginx是正常的:
从sleep容器中访问时,工作流为“sleep→sleep-proxy→nginx-proxy→nginx” ,此时,整个过程是7层流量,在sleep-proxy到nginx-proxy之间有一个L4双向TLS加密。
而在istio-proxy中运行时,它无法工作:
此时,工作流为“sleep-proxy→nginx-proxy→nginx”,nginx-proxy会从sleep-proxy中获得双向TLS流量,但是sleep-proxy无法提供客户端证书,因此,它不起作用。
总结:通过上述演示,可以了解到,当istio sidecar使用HTTPS服务部署时,无论是否启用双向TLS功能,代理自动从L7降到L4,所以,它不会终止原来的HTTPS通信。
idou老师教你学Istio 17 : 通过HTTPS进行双向TLS传输的更多相关文章
- idou老师教你学Istio 15:Istio实现双向TLS的迁移
在Istio中,双向TLS是传输身份验证的完整堆栈解决方案,它为每个服务提供可跨集群的强大身份.保护服务到服务通信和最终用户到服务通信,以及提供密钥管理系统.本文阐述如何在不中断通信的情况下,把现存I ...
- idou老师教你学Istio 07: 如何用istio实现请求超时管理
在前面的文章中,大家都已经熟悉了Istio的故障注入和流量迁移.这两个方面的功能都是Istio流量治理的一部分.今天将继续带大家了解Istio的另一项功能,关于请求超时的管理. 首先我们可以通过一个简 ...
- idou老师教你学istio :基于角色的访问控制
istio的授权功能,也称为基于角色的访问控制(RBAC),它为istio服务网格中的服务提供命名空间级别.服务级别和方法级别的访问控制.基于角色的访问控制具有简单易用.灵活和高性能等特性.本文介绍如 ...
- idou老师教你学istio 21:基于角色的访问控制
istio的授权功能,也称为基于角色的访问控制(RBAC),它为istio服务网格中的服务提供命名空间级别.服务级别和方法级别的访问控制.基于角色的访问控制具有简单易用.灵活和高性能等特性.本文介绍如 ...
- idou老师教你学Istio :如何用istio实现监控和日志采集
大家都知道istio可以帮助我们实现灰度发布.流量监控.流量治理等功能.每一个功能都帮助我们在不同场景中实现不同的业务.那Istio是如何帮助我们实现监控和日志采集的呢? 这里我们依然以Bookinf ...
- idou老师教你学Istio: 如何用Istio实现K8S Egress流量管理
本文主要介绍在使用Istio时如何访问集群外服务,即对出口流量的管理. 默认安装的Istio是不能直接对集群外部服务进行访问的,如果需要将外部服务暴露给 Istio 集群中的客户端,目前有两种方案: ...
- idou老师教你学Istio:如何用 Istio 实现速率限制
使用 Istio 可以很方便地实现速率限制.本文介绍了速率限制的使用场景,使用 memquota\redisquota adapter 实现速率限制的方法,通过配置 rule 实现有条件的速率限制,以 ...
- idou老师教你学Istio 28:istio-proxy check 的缓存
功能概述 istio-proxy主要的功能是连接istio的控制面组件和envoy之间的交互,其中check的功能是将envoy收集的attributes信息上报给mixer,在istio中有几十种a ...
- idou老师教你学Istio :5分钟简析Istio异常检测
异常检测 异常检测和踢出异常主机是一个动态检查上游主机是否正常工作,对不健康主机进行移除的过程.异常检测是一种被动健康检查,根据返回状态码来判断是否满足移除条件,最后将主机移除,首先我们来了解下驱逐算 ...
随机推荐
- python下以api形式调用tesseract识别图片验证码
一.背景 之前在博文中介绍在python中如何调用tesseract ocr引擎,当时主要介绍了shell模式,shell模式需要安装tesseract程序,并且效率相对略低. 今天介绍api形式的调 ...
- [Spark Core] Spark Shell 实现 Word Count
0. 说明 在 Spark Shell 实现 Word Count RDD (Resilient Distributed dataset), 弹性分布式数据集. 示意图 1. 实现 1.1 分步实现 ...
- OpenGL超级宝典笔记——贝塞尔曲线和曲面(转)
http://my.oschina.net/sweetdark/blog/183721 参数方程表现形式 在中学的时候,我们都学习过直线的参数方程:y = kx + b;其中k表示斜率,b表示截距(即 ...
- python3: 数字日期和时间(2)
12.基本的日期与时间转换 Q: 你需要执行简单的时间转换,比如天到秒,小时到分钟等的转换 A: 为了执行不同时间单位的转换和计算,请使用 datetime 模块. 比如,为了表示一个时间段,可以创建 ...
- 卷积神经网络入门:LeNet5(手写体数字识别)详解
第一张图包括8层LeNet5卷积神经网络的结构图,以及其中最复杂的一层S2到C3的结构处理示意图. 第二张图及第三张图是用tensorflow重写LeNet5网络及其注释. 这是原始的LeNet5网络 ...
- 3.Solr4.10.3目录结构
转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.整个目录结构 (1)bin:是脚本的启动目录 (2)contrib:第三方包存放的目录 (3)dist:编 ...
- zepto.js不支持scrollTop的解决办法
zepto.js不支持animate({ scrollTop: 100},1000); 可以在移动端使用原生window.scrollTop(x,y);简便
- JavaScript中的单例模式
单例模式 在JavaScript中,单例(Singleton)模式是最基本又最有用的模式之一.这种模式提供了一种将代码组织为一个逻辑单元的手段,这个逻辑单元中的代码可以通过单一的变量进行访问.确保单例 ...
- PHP生成有背景的二维码图,摘自网络
有一天产品MM高高兴兴的走过来,兴奋的和我分享她想出来的一个新的idea. 产品MM:你看这个(她指了指她的手机),一脸兴奋 那是一张带着二维码的图片,内容如下: 她接着说:如果我们的分销也能做成类似 ...
- oracle数据库flashback系列--闪回数据库在dataguard中的使用
很多人在学习flashback database这个oracle技术的时候,都会有一个疑问,就是如果我只有一个数据库作为生产库的话,是否有这样的业务需求导致我们要把数据库闪回到以前的时间点?以及这样做 ...