Istio入坑篇

https://istio.io/docs/concepts

1、什么是Istio

云平台为使用它们的组织提供了很多好处。但是,不可否认的是,采用云技术会对DevOps团队造成压力。开发人员必须使用微服务来构建可移植性,同时运营商正在管理超大型混合和多云部署。Istio使您可以连接,保护,控制和观察服务。

从较高的角度来看,Istio有助于降低这些部署的复杂性,并减轻开发团队的负担。它是一个完全开源的服务网格,可以透明地分层到现有的分布式应用程序上。它也是一个平台,包括可将其集成到任何日志记录平台,遥测或策略系统中的API。Istio的多样化功能集使您能够成功,高效地运行分布式微服务架构,并提供一种统一的方式来保护,连接和监视微服务。

2、为什么要使用Istio

Istio可以轻松创建带有负载平衡,服务到服务的身份验证,监视等功能的已部署服务网络,而服务代码中的代码更改很少或没有更改。通过在整个环境中部署一个特殊的sidecar代理来拦截微服务之间的所有网络通信,然后使用其控制平面功能配置和管理Istio,可以为服务添加Istio支持,包括:

  • HTTP,gRPC,WebSocket和TCP通信的自动负载平衡。
  • 通过丰富的路由规则,重试,故障转移和故障注入对流量行为进行细粒度控制。
  • 可插拔的策略层和配置API,支持访问控制,速率限制和配额。
  • 集群内所有流量的自动度量,日志和跟踪,包括集群的入口和出口。
  • 通过强大的基于身份的身份验证和授权,在群集中进行安全的服务间通信。

Istio专为可扩展性而设计,可满足多种部署需求。

3、核心功能

Istio在服务网络中统一提供了许多关键功能:

3.1 流量管理

Istio的简单规则配置和流量路由使您可以控制服务之间流量和API调用的流。Istio简化了诸如断路器,超时和重试之类的服务级别属性的配置,并使其轻而易举地设置了重要任务(如A / B测试,canary部署和基于百分比的流量拆分的分阶段部署)。

借助对流量的更好可见性和开箱即用的故障恢复功能,无论遇到什么情况,您都可以在问题引起问题之前及时发现问题,使呼叫更加可靠,网络也更加强大。

流量管理概念指南:https://istio.io/docs/concepts/traffic-management/

3.2 安全

Istio的安全功能使开发人员可以将精力集中在应用程序级别上。Istio提供基础安全通信通道,并大规模管理服务通信的身份验证,授权和加密。借助Istio,默认情况下可以保护服务通信的安全,从而使您能够在各种协议和运行时之间一致地实施策略-所有这些操作几乎不需要更改应用程序。

尽管Istio是独立于平台的,但将其与Kubernetes(或基础架构)网络策略配合使用,其好处更大,包括能够在网络和应用程序层保护Pod到Pod或服务到服务的通信的能力。

安全性概念指南:https://istio.io/docs/concepts/security/

3.3 策略规定

Istio允许您为应用程序配置自定义策略,以在运行时强制执行规则,例如:

  • 速率限制以动态限制服务流量
  • 拒绝,白名单和黑名单,以限制对服务的访问
  • 标头重写和重定向

Istio还允许您创建自己的策略适配器,以添加例如自己的自定义授权行为。

策略概念指南:https://istio.io/docs/concepts/policies/

3.4 可观察性

Istio强大的跟踪,监视和日志记录功能使您可以深入了解服务网格部署。借助Istio的监视功能,可以真正了解服务性能如何影响上游和下游事物,而其自定义仪表板可提供对所有服务性能的可视性,并让您了解该性能如何影响您的其他流程。

Istio的Mixer组件负责策略控制和遥测收集。它提供了后端抽象和中介,使Istio的其余部分与各个基础架构后端的实现细节隔离开来,并为操作员提供了对网格和基础架构后端之间所有交互的精细控制。

所有这些功能使您可以更有效地设置,监视和实施服务上的SLO。当然,最重要的是您可以快速有效地检测和修复问题。

可观察性概念指南:https://istio.io/docs/concepts/observability/

3.5 平台支援

Istio是独立于平台的,旨在在多种环境中运行,包括跨Cloud,本地,Kubernetes,Mesos等的环境。您可以在Kubernetes或Consul的Nomad上部署Istio。Istio当前支持:

  • Kubernetes上的服务部署
  • 向领事注册的服务
  • 在单个虚拟机上运行的服务

3.6 集成和定制

Istio的策略执行组件可以扩展和定制,以与现有的ACL,日志记录,监视,配额,审核等解决方案集成。