Istio+K8s,微服务的双剑合璧( 四 )


目前 Envoy 包括支持自动重试、断路、通过外部速率限制服务限制全局速率、请求隐藏和异常值检测 。未来计划为 Request Racing 提供支持 。
④前端/边缘系统代理支持
虽然 Envoy 主要是为服务通信系统而设计的,但对前端/边缘系统也是很有用的,如:可观测性、管理、相同的服务发现和负载平衡算法等 。
Envoy 包含足够的功能,使其可用作大多数 Web 应用服务用例的边缘代理 。这包括作为 TLS 的终点、HTTP/1.1 和 HTTP/2 支持,以及 HTTP L7 路由 。
⑤最好的观察统计能力
Envoy 的首要目标是使网络透明 。但是在网络级别和应用程序级都无法避免的容易出现问题 。
Envoy 包含了对所有子系统的强有力的统计支持 。statsd 和其他兼容的数据提供程序是当前支持的统计接收器,插入不同的统计接收器也并不困难 。
Envoy 可以通过管理端口查看统计信息,还支持通过第三方供应商进行分布式追踪 。
方案畅想应用上面的原理,我们可以有很多具体的方案应用于日常开发 。
方案一:应用 Istio 改造微服务
模仿在线书店的一个分类,显示一本书的信息 。页面上会显示一本书的描述,书籍的细节(ISBN、页数等),以及关于这本书的一些评论 。
应用的端到端架构:Bookinfo 应用中的几个微服务是由不同的语言编写的 。
这些服务对 Istio 并无依赖,但是构成了一个有代表性的服务网格的例子:它由多个服务、多个语言构成,并且 reviews 服务具有多个版本 。

Istio+K8s,微服务的双剑合璧

文章插图
 
用 Istio 改造后架构如下:要在 Istio 中运行这一应用,无需对应用自身做出任何改变 。我们只需要把 Envoy Sidecar 注入到每个服务之中 。
最终的部署结果将如下图所示:
Istio+K8s,微服务的双剑合璧

文章插图
 
所有的微服务都和 Envoy Sidecar 集成在一起,被集成服务所有的出入流量都被 Sidecar 所劫持 。
这样就为外部控制准备了所需的 Hook,然后就可以利用 Istio 控制平面为应用提供服务路由、遥测数据收集以及策略实施等功能 。
方案二:用 Istio 改造 CI/CD 流程
Istio+K8s,微服务的双剑合璧

文章插图
 
对上述流程图简单解释一下:
  • 通过 Docker 对代码进行容器化处理 。
  • 通过 Gitlab 托管代码 。
  • Jenkins 监听 Gitlab 下的代码,触发自动构建,并执行 Kustomize 文件 。
  • Kustomize 通过配置文件,设置了 Istio 的配置(染色识别、流量分发),并启动 K8s 部署应用 。
  • 最终我们通过 Rancher 来对多容器进行界面化管理 。
  • 打开浏览器进行访问 。
看到这里,相信你也了解了,我们实现了一个前端多容器化部署的案例 。
它有什么意义呢?
  • 首先,当然是环境隔离了,研发每人一个容器开发,互不干扰 。
  • 其次,我们可以做很多小流量、灰度发布等事情 。
  • 自动化部署,一站式的流程体验 。
如果你对容器化还不太了解,请先看看前面两篇文章:
  • Docker 边学边用
  • 一文了解 Kubernetes
Istio 还是有很多可圈可点的地方,相信看到这里你也有了更全面的认识 。如果你想深入了解,不妨仔细研究官方示例,并且在实际项目中不断打磨 。




推荐阅读