技术
Istio
用于连接、保护和观测微服务的服务网格
Istio 是一个服务网格,为微服务网络添加流量管理、安全和可观测性,而无需修改应用代码。它的工作方式是在每个工作负载旁透明地注入一个代理(Envoy),并从中央控制平面管理这批代理。
工作原理
Istio 的控制平面 istiod 配置注入在每个应用容器旁的 sidecar Envoy 代理。服务之间的所有流量都流经这些 sidecar,这使 Istio 能够强制执行双向 TLS、应用重试和超时、在不同版本之间拆分流量以进行金丝雀发布,并收集统一的指标和追踪 —— 这一切都来自配置,无需任何应用层面的改动。
核心概念
- Sidecar proxy(sidecar 代理) —— 注入在每个工作负载 Pod 旁的 Envoy 实例,拦截并管理其所有入站和出站流量。
- VirtualService —— 定义发往某个服务的流量的路由规则:版本拆分、重试、超时和故障注入。
- DestinationRule —— 定义路由之后应用的策略,例如针对某个服务子集的负载均衡策略和双向 TLS 设置。
- Gateway —— 在网格边缘为入口或出口流量配置负载均衡器。
为什么团队选择 Istio
- 无需改代码的 mTLS。 服务到服务的流量可以仅通过配置在整个网格范围内加密并认证。
- 细粒度的流量控制。 金丝雀发布、A/B 测试和故障注入都是声明式的路由规则,而不是应用逻辑。
- 统一的可观测性。 每个服务都能获得一致的指标、日志和分布式追踪,即使是你自己没有插桩的服务。
- 策略强制执行。 授权、限流和重试在网格中的每个服务上一致地强制执行。
快速开始
将 Istio 安装到集群中,为你想要纳入网格的命名空间打上标签以启用自动 sidecar 注入,然后像往常一样部署你的工作负载 —— 代理会自动附加。下面的指南涵盖启用网格、流量拆分,以及保护服务到服务的通信。