警戒!别让你的 Service Mesh 变成 Service Mess

做者 | Pankaj Guptagit

编译 | 云原生计算编辑部github

原文连接:安全

https://containerjournal.com/topics/container-management/dont-let-your-service-mesh-become-a-service-mess/服务器

导读:服务网格(Service Mesh)是微服务领域的热门话题,它一般被认为是云原生应用的“北极星架构”。虽然服务网格环境能够加强微服务通讯的流量管理和安全性,也能够提供有关这些应用程序中发生的事情的完整描述,但想要实现它、管理它却不那么容易。微信

本文将给出一些建议来帮助您简化这个实现、管理过程。网络

 

01 肯定重要事项并规划实现路线
   

对许多公司而言,在微服务之间启用零信任网络已成为当务之急,可是每一个组织的需求却不尽相同。也许您须要服务网格能够提供的高级流量管理,也许您须要 Sidecar 代理提供的加强的可观察性。架构

不管您有什么需求,都必须对它们进行优先级排序,并在正式开始实施以前得到开发人员,SRE 和 SecOps 团队的支持,这样您才能够集中精力进行工做。并发

注意,服务网格的实现可能会因为您试图“一次实现全部一切”的贪婪而失败。运维

一旦可以正确规划目标的优先级,就能够为服务网格之旅建立路线图。路线图应列出您解决实施的顺序,并肯定每一个步骤如何与 IT 和业务目标保持一致。分布式

 

02 如何明智地选择服务网格?

 

尽管有许多可用的服务网格控制面,但它们并不彻底相同,而且每一个都有不一样的优点。

选择服务网格时,首先要确保它支持你要运行的环境。若是你被绑定到诸如 Mesos 或您本身的专有/遗留架构或特定的公共云之类的系统中,请检查以确保它受到支持。

其次,肯定要部署的服务网格控制面。尽管全部服务网格控制平面都提供类似的基本功能,但它们具备不一样的功能和成熟度。要肯定服务网格控制面是否适合您的用例,须要研究它如何在对您重要的区域中堆积。目前,Istio 处于领先地位。例如,Istio 在相互 TLS 方面领先于微服务之间的零信任安全性,而其余服务仍在追赶。

第三,评估你拥有的技能和资源能让你轻松管理多少复杂性。当你添加功能时,增长服务网格的大小或者添加多个集群,事情就会变得更加复杂。记住,人们很容易低估这些复杂性,由于你不知道将来会发生什么。

根据关键的“必须具有”项:可观察性,安全性和流量管理以及您的组织已经具有的技能,选择最佳的服务网格 架构。问问本身,每一个 pod 是否真的须要一个 sidecar,或者是否有能够知足您需求的替代或变体架构,例如 Citrix®Service Mesh Lite。

 

03 为突发事件和复杂性作好准备

 

不管您提早作了多少计划,在实现服务网格时,您都会遇到许多意想不到的事情。因此计划,计划,再计划。你将来会很感谢本身这么作~

 

04 要知道代理Proxies并不那么透明

 

一般,当微服务调用不存在或压力较大的资源时,该调用会超时。代理的存在会改变应用程序超时,由于每一个微服务都认为本身几乎当即收到了其请求。

您的应用程序超时可能须要仔细调整,这里提供了超时的最佳作法:

http://github.com/chemicL/envoy-timeouts 

另外,代理对 HTTP 流量也不透明。为了听从一致性和更好的资源消耗,许多代理将 HTTP 头转换为小写,事实上,HTTP/2 报头字段要求所有小写。若是你的应用程序依赖于区分大小写的 HTTP 头,则代理的行为可能会破坏它。你须要确保代理通讯的细微差异不会破坏你的应用程序,并准备好对代理或应用程序进行微调,以适应特定的生态系统。

 

05 尽早测试,常常测试


服务网格是一个复杂的分布式系统,具备许多活动部件,而且有不少发生故障的机会。当应用程序失败时,你须要弄清楚这是应用程序、sidecar 仍是其余什么问题。所以,请确保您的实现是渐进的、监控是持续的以及测试是频繁的。

为此,必须具备完整的可观察性堆栈。包括日志记录,指标,分布式跟踪和服务图。分布式跟踪和服务图对于服务可观察性相当重要。分布式跟踪监视器监视经过微服务的请求流,以经过每一个微服务跃点创建延迟映射,并帮助你解决延迟问题。服务图是微服务及其相互依存关系和运行情况的动态图形表示,它提供了一种简便的方法来可视化您的环境并发现出现的问题。

虽然这彷佛是常识,但持续测试常常被遗忘或跳过,这会给相关人员带来挫败感,并常常致使项目脱轨。积极主动老是没错的,能够考虑编写一个端到端、24×7的测试服务,该服务能够持续测试您的微服务。

 

06 为海啸般涌来的修订作好准备

 

今天只是几个 sidecar,明天就可能变成数千个 sidecar,须要有所准备。您可能须要对默认的 CPU 和 RAM 分配进行调优,以最大程度地减小资源消耗。一样,一旦开始实现服务网格,修订的版本就会如潮水般涌向您。必需要有一个计划,在不中断生产应用程序的状况下对数千个 sidecar 代理进行升级。想象一下,这就像必须在没有人注意到的状况下,在大篷车里更换每一辆摩托车上的每一辆侧斗——而车上却坐着人。

人们说聪明是从你的错误中学习,但智慧是从别人的错误中学习。服务网格在安全性、高级流量管理和可观察性方面承诺了不少,但它们实现起来可能很复杂。仔细计划,并准备好在过程当中作出调整,你的过程将会更顺利——甚至可能更有趣!

 

07 关于百度智能云云原平生台

 

百度智能云云原平生台,为客户建设容器化和无服务器化的基础设施,提供企业级的微服务治理能力,同时集成源自百度自身多年实践的 DevOps 工具链。保障开发者享受到高效、灵活、弹性的开发与运维体验,助力企业更高效率低风险地构建云原生应用,普遍应用于金融、互联网、制造等各行各业的云原生转型阶段。

其中天合 Stack 是私有化云原生技术中台,包含基于 Kubernetes 的容器云平台、基于 Istio 和 SpringCloud 架构的微服务平台和自研函数计算服务三部分,每部分都可独立提供服务。

 

重磅!云原生计算交流群成立

扫码添加小助手便可申请加入,必定要备注:名字-公司/学校-地区,根据格式备注,才能经过且邀请进群。

了解更多微服务、云原生技术的相关信息,请关注咱们的微信公众号【云原生计算】