Istio

最后更新: 2023-04-28 08:11:31 +0800 +0800
原文以英文撰写。您正在阅读AI翻译版本。

Istio 通过 Envoy 代理和控制平面配置,向工作负载应用流量策略、身份、遥测和安全策略。只有当这些横向需求足以证明额外的运维面是合理的情况下,才应采用 Istio。

数据平面和控制平面 #

数据平面由 Envoy sidecar,或由每个节点上的 ztunnel 与可选 waypoint 代理组成的 ambient 部署构成。istiod 通过 xDS 计算并分发服务发现、证书和流量配置。工作负载路径会根据所选模式捕获入站和出站流量;绕过该路径的流量无法受网格策略管理。Ambient 模式与 sidecar 的 L4/L7 执行位置不同,因此迁移时必须验证每项策略的执行位置。

流量管理 #

Gateway 和 VirtualService 资源定义入口监听器和路由规则。DestinationRule 定义目标的子集、负载均衡、连接和 TLS 策略。使用 version 等稳定标签进行路由,并确保子集使用的标签存在于工作负载上。

加权路由可以将测量比例的流量从稳定子集转移到金丝雀版本。可以先通过请求头或身份匹配将测试流量导向目标。每次变更都必须以代理配置收敛和工作负载健康状态为前提;路由权重无法弥补缺失的端点或错误的子集选择器。

重试、超时、熔断器和故障注入会改变故障行为。应根据调用方的截止时间设置预算;不受限制的重试策略可能放大过载,并重复执行不可幂等的工作。

身份和安全 #

Istio 基于 Kubernetes 服务账户签发工作负载身份,并可以在代理之间使用双向 TLS。在确认每个必需的工作负载都参与网格后,使用 AuthorizationPolicy 强制执行授权。迁移初期仅为发现未受管理的流量而使用 permissive 模式,然后根据明确的迁移计划转为 strict 双向 TLS。

使用 PeerAuthentication 设置 mTLS 状态;在需要时使用 RequestAuthentication 验证最终用户 JWT,并使用 AuthorizationPolicy 做出访问决策。工作负载身份不能替代针对租户或业务权限的应用程序授权。

istiod 充当证书颁发机构或与外部 CA 集成,然后在短期工作负载证书到期前轮换证书。监控证书签发、根证书切换、信任域配置和时钟偏差。在根证书轮换期间,应先分发重叠的信任关系,再替换叶证书,从而使旧工作负载和新工作负载能够相互认证。

运维 #

有计划地管理网格控制平面和数据平面的版本,在发布前检查分析器输出,并监控代理资源使用量、证书到期时间和配置收敛状态。使用 istioctl proxy-status 和 istioctl proxy-config 诊断代理实际接收到的内容,而不要依赖原本 intended to apply 的 YAML。

Envoy 根据遥测配置生成请求指标、访问日志和追踪数据。在入口、waypoint 或 sidecar 与应用程序之间保留请求 ID 和采样策略。遥测缺失可能意味着流量绕过了代理、配置尚未收敛,或采集失败。

控制平面健康、数据平面健康和应用程序健康属于不同的故障域。在短暂的控制平面中断期间,现有代理可以继续使用最后接受的配置运行,但新端点、证书和策略变更可能停滞。按修订版本或受限的工作负载集合进行发布,检查被拒绝的 xDS 更新和代理版本,并保留经过测试的回滚路径。

参考资料 #

评论

在 GitHub 上阅读或评论(发表评论需要登录)