北京时间 7 月 31 日,Istio 正式发布了 1.0 版本,并表示已经可用于生产环境。该版本的主要新特性包括跨集群 mesh 支持、细粒度流量控制以及在一个 mesh 中增量推出 mutual TLS 的能力。 Istio 是一个开源平台,可以有效充当 Envoy 代理数据平面的控制平面。虽然看上去是谷歌在主导这个项目,但许多其他的组织也在积极贡献,包括 Lyft(Envoy 代理的创建者)、IBM、Pivotal、思科、红帽和 VMware。 InfoQ 联系到了 IBM 的高级技术成员 Lin Sun,她同时还是 Istio 开源项目版本释放团队的参与者,讨论了 Istio 的总体情况以及 1.0 发布版本的具体情况。 Sun 介绍了 Istio 相关的多个话题,包括微服务、1.0 版本中的特性、服务网格(service mesh)、sidecar 代理、Istio 平台的路线图,以及它不仅能够与 Kubernetes 协作,还能与其他平台协作的能力。

\\

InfoQ:Istio是围绕服务网格构建的,你能为开发人员和架构师介绍一下这到底意味着什么吗?

\\

\

Lin Sun:关于服务网格该如何连接、保护、控制和观察微服务的问题,我们给出的观点就是Istio。微服务为新的云架构带来了巨大的收益,比如敏捷、速度以及灵活性。但是,它们的一个不足之处就是复杂性。

\\

当用户从单体应用转移到容器和微服务架构时,它们要做的就是将这些大型的应用拆分为很多可移动的组成部分。同样的理念也可以用到基于微服务构建的新云应用上,唯一的区别在于这些不同的组成是完全从头开始构建的。但是,这种模型所面临的挑战依然是相同的。

\\

同时管理这些不同的组成部分是很困难的,可能还会带来安全性方面的问题。Istio是一种将控制权交还给开发人员的方法,能够确保微服务在处理故障的时候能够以一种预先定义的方式来进行相互之间的连接。这样的话,就能更容易地观察整个网络的微服务发生了什么状况,同时能够保护服务之间的通信,并确保策略得到了执行。

\\

这不仅仅是IBM的观点。Istio是一个开放的服务网格平台,目前贡献者超过了200人。Istio是由IBM、Google和Lyft创建的,围绕着它成长起来了一个蓬勃发展的社区,包含其他的合作伙伴,如Cisco、Redhat、Pivotal、Tigera等。Istio开放的架构和生态系统是它如此高效的原因之一,至于使用何种类型的服务,这里没有任何的厂商限制,它可以在任何云模型上运行,无论是公有云、私有云、内建云(on-premise)还是对它们进行组合均可以。

\\

Istio另外的一个好处就是它几乎不需要对应用程序进行任何修改。它并不关心你的服务是使用Javscript、Go、Java、Python还是其他语言编写的。一旦实现了这种方式,唯一需要的代码变更就是恰当地转发请求头信息,以便于利用分布式跟踪的功能。通用的任务都抽象出来了,比如负载均衡、路由、重试和mTLS,并且它们会由Istio跨所有微服务以一致的方式进行解决,而不必关心它们是使用何种语言编写的。

\

\\

InfoQ:你能简单描述Istio 0.8和Istio 1.0之间的差异吗,或者说Istio 1.0怎样在生产就绪方面做得更好?

\\

\

Sun:从Istio 0.8到1.0版本,Istio的很多重要特性从Alpha提升到了Beta阶段,或者从Beta提升到了Stable阶段。这些功能组成了Istio迄今最新和最稳定的版本,这是社区密切协作的结果,社区测试并强化了Istio对越来越庞大和复杂的微服务进行扩展和管理的功能。

\\

例如,流量管理中的HTTP1.1 / HTTP2 / gRPC / TCP协议进入了Stable阶段。WebSockets和MongoDB进入了Beta阶段,除此之外,还有流量控制、弹性、网关、TLS终止以及网关中对SNI的支持。1.0版本新增了对过滤器的支持,因此我们将该特性的状态设置为Alpha。在开发很多特性的时候,IBM将我们在为复杂企业迁移到云端所学习到的经验贡献了出来。与社区一道,我们为开发团队交付了将Istio用于生产环境时想要具备的功能,包括稳定性、安全性和控制。

\\

你可能也注意到了,我们会首先将一个特性声明为Alpha状态,如果它在我们的测试、经验以及用户反馈中都相对稳定的话,我们会将其提升为Beta状态,然后会将其升级为Stable状态,该状态会包含多次的长期支持(Long Term Supported,LTS)版本发布。一旦某个特性达到Beta状态,我们就会建议用户使用它,但是需要当心一些。

\\

随着Istio的很多特性达到Stable和Beta状态,Istio 1.0就已经生产环境就绪了。我们的很多用户已经按照这种方式使用Istio了,比如AutoTrader、Ebay和Namely等等。在IBM,我们内部在使用Istio,我们的一些客户正在预生产环境(pre-production)使用Istio。

\\

Istio 1.0其他很强大的特性包括:

\\

  • 虚拟服务中对SNI路由的支持,这样的话就允许用户基于SNI主机的值配置流量路由;\\t
  • 进程外的mixer适配器,允许开发人员编写mixer适配器时无需向核心Istio mixer组件提交pull request (PR)。开发人员可以按照自己的进度构建和发布自己的mixer适配器;\\t
  • 在envoy sidecar代理中完成了很多的策略检查,提升了性能和可靠性。例如,在将RBAC规则用到你的微服务的时候,不再需要mixer了;\\t
  • 除了认证策略,还有一个新的“permissive”模型,能够更容易地转换为mutual TLS。在转换过程中,你将会处于“permissive”模式,一旦转换完全完成,就能强制执行安全性。\

\\

InfoQ:sidecar代理模式是Istio的核心理念。它主要是为了采集pods的遥测数据(telemetry)还是有更大的用途?

\\

\

Sun:收集遥测数据仅仅是sidecar模式能够完成的众多任务之一。Envoy是我们默认的代理实现,它会处理通用的任务,比如跨所有语言的负载均衡、路由以及重试一致性。

\\

Envoy基于目标端口捕获所有的传入流量以及所有的传出流量,并发送遥测数据给Istio,这是Mixer的一个子组件。它还能够执行策略检查,例如限速、RBAC或其他基于属性的策略检查,这些策略可以是本地的,也可以是使用Istio-policy的组件。最后,Envoy还能处理网格内微服务之间的安全通信,这是通过检查身份、认证以及mutual TLS启用时的key来实现的。

\

\\

InfoQ:Istio并不仅仅适用于Kubernetes,对吧?它能够与其他的平台协作吗,如Cloud Foundry、OpenShift等?

\\

\

Sun:Istio的创建和运行都是开放式的,这是Istio非常棒的一点。你几乎可以在任何地方运行Istio,不管是Kubernetes集群、虚拟机还是在Cloud Foundry环境中。Istio可以运行在任何通过了Kubernetes v1.9和CNCF一致性认证的环境中。我们可以在任何的Kubernetes 1.9集群中运行Istio,包括在IBM Cloud Kubernetes服务中,以及其他的云平台中。

\\

如果你看一下安装文档的话,我们提供了跨不同环境搭建Istio的指南。来自虚拟机的服务也可以作为Istio网格的一部分参与进来。

\\

Istio还嵌入到了Cloud Foundry中,Cloud Foundry团队也在为Istio积极地做着贡献

\

\\

InfoQ:除了bookinfo样例之外,你还能为开发人员和架构师提供一些Istio的学习资源吗?

\\

\

Sun:Bookinfo是一个非常棒的样例,它是为云原生微服务编写的,在istio.io上,我们使用它来展现Istio的各种特性。另外,还有很多其他非常好的资源,包括:

\\

  • 在Istio.io上的各种Istio博客、任务和样例;\\t
  • Katacoda的Istio和Kubernetes起步教程;\\t
  • IBM扩展了Kubernetes的Guestbook样例,包含了如何将其与机器学习和其他服务进行集成;\\t
  • IBM Cloud同时还维护了一个Istio资源的页面。\

其他的一些社区成员(比如Redhat和Google)也发布了各种博客、任务和样例,能够帮助你们开始学习Istio。

\

\\

InfoQ:你能介绍一下Istio 1.0之后的路线图以及与Kubernetes、Knative和其他社区协作的计划吗?

\\

\

Sun:从IBM的角度来说,我们一直关注让Istio在IBM Cloud中更易于搭建和使用。Istio是BM Cloud战略的核心组件。除此之外,我们专注于跨集群提供联邦Istio服务网格功能,跨越公有的IBM Cloud Kubernetes服务和内建的IBM Cloud私有环境,提供统一的微服务体验。

\\

从更广的社区视角来看,IBM和Istio的贡献者会发布1.0和1.1的补丁,目标是让Istio更易于使用,从而扩大它的采用范围。 这包括按需采用Istio某些组成部分的能力、继续改进其性能和扩展性并积极构建关键的特性,如路由API的改进、每个节点运行mixer的能力以及Istio跨多个环境的能力。我们还关注于不断增长的非平面网络(non-flat)下多集群的支持,在这种网络中,pods不能跨多个Kubernetes集群进行路由。

\\

Istio在与Kubernetes社区密切合作,社区会继续选择Kubernetes作为其首选平台。我们很高兴地看到其他的开放项目,如Knative和Fission也在使用Istio,它们具备让Istio未来更容易消费和使用的潜力。 .

\

\\

Istio 1.0的技术细节可以通过其发布说明查阅。

\\

查看英文原文:Q\u0026amp;A with IBM's Lin Sun on Istio 1.0 and Microservices

与IBM的Lin Sun关于Istio 1.0和微服务的问答的更多相关文章

  1. Istio Service Mash管理微服务

    Istio Service Mash管理微服务 今天的文章通过Istio开源项目展示如何为Kubernetes管理的微服务提供可见性,弹性,安全性和控制. 服务是现代软件体系结构的核心.比起复杂庞大的 ...

  2. Istio 知多少 | 下一代微服务的守护者

    1. 引言 在写完eShopOnContainers 知多少[12]:Envoy gateways后,就一直想进一步探索Service Mesh,最近刚在极客时间上学完<Service Mesh ...

  3. 为什么Dapr是比SpringCloud和Istio更优雅的微服务框架?

    Dapr 是微软主导的云原生开源项目,2019年10月首次发布,到正式发布 V1.0 版本的不到一年的时间内,github star 数达到了 1.2万(现在已经超过1.7万星),超过同期的 kube ...

  4. 基于Istio构建微服务安全加固平台的探索

    简介 An open platform to connect, secure, control and observe services. Istio 是一个由谷歌.IBM 与Lyft共同开发的开源项 ...

  5. Google、IBM和Lyft开源其大型微服务系统管理工具Istio

    Istio 的优势 集群规模可视性:在故障状况出现时,运营人员需要利用多种工具以始终关注集群运行状况并分析微服务状态图表.Istio 项目能够监控与应用程序及网络活动相关的数据,利用 Promethe ...

  6. istio: 无法提供内部访问外部服务

    现象 能够内部无法访问外部服务. 在部署测试服务 kubectl apply -f samples/sleep/sleep.yaml 设置环境变量 export SOURCE_POD=$(kubect ...

  7. 云容器云引擎:容器化微服务,Istio占C位出道

    在精彩的软件容器世界中,当新项目涌现并解决你认为早已解决的问题时,这感觉就像地面在你的脚下不断地移动.在许多情况下,这些问题很久以前被解决,但现在的云原生架构正在推动着更大规模的应用程序部署,这就需要 ...

  8. 容器云技术:容器化微服务,Istio占C位出道

    在精彩的软件容器世界中,当新项目涌现并解决你认为早已解决的问题时,这感觉就像地面在你的脚下不断地移动.在许多情况下,这些问题很久以前被解决,但现在的云原生架构正在推动着更大规模的应用程序部署,这就需要 ...

  9. 使用Istio治理微服务入门

    近两年微服务架构流行,主流互联网厂商内部都已经微服务化,初创企业虽然技术积淀不行,但也通过各种开源工具拥抱微服务.再加上容器技术赋能,Kubernetes又添了一把火,微服务架构已然成为当前软件架构设 ...

随机推荐

  1. jmeter发送Query String Parameters格式参数报错

    当发起一次GET请求时,参数会以url string的形式进行传递.即?后的字符串则为其请求参数,并以&作为分隔符 当参数为json格式时,这时需要勾选编码,否则会报错

  2. 页面静态化--Thymeleaf

    1.Thymeleaf简介 官方网站:https://www.thymeleaf.org/index.html Thymeleaf是用来开发Web和独立环境项目的现代服务器端Java模板引擎. Thy ...

  3. 家庭版记账本app开发完成

    经过这几天关于android的相关学习,对于家庭版记账本app以及开发结束. 实现的功能为:用户的注册.登录.添加支出账单.添加收入账单.显示所有的该用户的账单情况(收入和支出).生产图表(直观的显示 ...

  4. LInux文件管理篇,权限管理

    一: chgrp 改变文件所属用户组 chown 改变文件所有者 注意: 1.使用格式 chgrp/chown     user      file eg: chgrp lanyue permissi ...

  5. 30.4 Map HashMap

    本文将会讲解到: Map和Collection的对比 Map接口的使用,实现类HashMap的使用 /* * 需求:实现学号和姓名这样有对应关系的数据存储 * 为了体现这种有对应关系的数据,我们使用以 ...

  6. Date 对象-->概念、创建以及方法

    1.概念: Date 对象用于处理日期与时间. 2.创建: 方法1:直接用Date()函数,返回值当前时间 格式:var d = Date(); 注意:不论Date()是否带参数,返回都是当前时间 举 ...

  7. 深圳博客第一篇(Json)

    JSON JSON是纯文本 JSON具有自我描述性 JSON具有层级结构 JSON可通过javascript进行解析 JSON数据可使用Ajax进行传输 JSON对象的取值 var myObj = { ...

  8. python 异步 I/O

    如果你想了解异步编程,那么必然会涉及出许多相关概念. 堵塞/非堵塞 同步/异步 多进程/多线程/协程 为什么我要学习这个话,因为我想搞懂异步框架和异步接口的调用.所以,我的学习路线是这样的: 1.py ...

  9. 详解 普通数组 —— Arrays类 与 浅克隆

    我们在C语言中,编一些代码量规模比较大的程序,几乎都会用到 "数组" 或 "链表" ,但是,在本人之前的博文中,却对这两个知识点从未提到过,那么,本人将通过这篇 ...

  10. 好用的mitmproxy代理抓包

    安装证书 浏览器输入 `mitm.it` 下载证书有时候打不开,可能是起的服务卡死了,回车下命令行,再再网页刷新下载证书就可以了. mitmweb Chrome浏览器代理设置 打开的话,记得保存点一下 ...