Salesforce Istio 服务网格实践总结
背景:为何采用服务网格
Salesforce 为实现服务间通信的安全、可靠和可观测性,构建了应用网络层,让服务所有者能专注于业务逻辑。设计原则包括保持简单、渐进式采用技术、透明化应用网络层及持续进行技术前瞻。
预 Istio 服务网格
早期采用开源数据平面,后转向 Envoy 并自建 XDS 实现,主要解决常见用例,如基于 Zookeeper 的 EDS 和基于测试框架的配置。生产中部署了数以万计的 Envoy,服务于单体架构。
采用 Istio 的原因
随着服务网格规模增长,维护控制平面变得复杂,支持新用例(如 StatefulSets、TCP 服务、Redis 等)面临挑战。转向 Istio 是战略选择,因其高级功能满足需求,且拥有活跃社区(约 275 名贡献者)。
Istio POC
最小可行产品包括:使用内部 CA 的 mTLS、裸金属和 Kubernetes 服务支持、内部指标系统集成,以及默认弹性策略。Salesforce 对 Istio 的贡献包括自定义 CA 支持、性能修复和弹性改进。优点是 CRD 配置易读,可集成工具和流程;不足是缺乏全局配置支持,且将所有 K8s 服务转为 Sidecar 配置。
Istio 基础服务网格
架构包括 Pilot 配置 WebHook、Kubernetes API、指标中继、内部 CA、istio-proxy 和 Zookeeper 等组件,支持裸金属和 Kubernetes 服务。
Salesforce Hyperforce 的挑战
转向公共云基础设施带来零信任架构、动态基础设施和多底层支持等新挑战,推动 Salesforce 进一步采用 Istio。
Istio 持续采用
新用例包括 QPid、Solr、Zookeeper、Redis 的支持,单体架构的蓝绿部署,基于 Envoy Filter 的声明式授权,OPA 基于的细粒度授权,以及基于 envoy telemetry 的健康信号。Istio 部署和升级通过 Spinnaker 管道管理。
Ingress Gateway
作为边缘代理处理公网流量,集成 DNS 和证书 API 支持。架构包括 istiod、Ingress Assistant、Kubernetes API、DNS API、Certificate Services 和 Vault 等。
即将采用的 Istio 功能
计划支持 HBase、裸金属服务自动注册、DNS 代理(支持 TCP 多集群)、高级流量转移、JWT 认证授权集成和速率限制。
关注的功能
关注点包括多 Kubernetes 集群支持、WebAssembly 技术扩展、DNS 代理改进、扩展支持、Egress Gateway 进化和升级优化。