宋净超 从开源 Istio 到企业级服务:如何在企业中落地服务网格
从开源 Istio 到企业服务 ——如何在企业中落地服务网格 From Istio OSS to Enterprise Service Mesh 宋净超(Jimmy Song) September 24, 2022 Shanghai, China Cloud Native Application Networking Secure, Observe and manage microservices0 码力 | 30 页 | 4.79 MB | 6 月前3Envoy原理介绍及线上问题踩坑
io/inject: “false”跳过自动注入过程,或修改部分启动参数。 • 2. 控制面通信 • Pilot-agent进程本身创建UDS接收Envoy连接,用于证书更新下发。并且与istiod建立证书更新通道。 • Envoy 通过pilot-agent转发机制与istiod建立长连接,通过xDS协议接收系统下发的监听器、路由、集群节点等更新信息。 • 3. 数据面通信 • 客户端请求进入容器网络 Copyright © Huawei Technologies Co., Ltd. All rights reserved. Page 10 Envoy常用部署方式 • 网格内部调用,通过自动注入到网格 内的iptables规则进行拦截 • 默认为2个工作线程 • 默认最大上游连接数1024,最大挂起 等待请求数1024 • 外部请求通过直接访问ingressgateway 网关端口进入网格 13 Envoy网络及线程模型-集群信息更新 • 1. Envoy需要在运行中支持添加集群并监控每个集群内目标主机列表变化 • 2. 监控到目标主机健康状态变化时,需要通知到工作线程内主机可用状态。 • 3. 当收到节点变化EDS消息时,需要通知到工作线程内新上线、下线主机。 • 4. Envoy使用前面提到的TLS方式实现集群状态更新,集群管理器保存一个TLS slot ,类型为Thr0 码力 | 30 页 | 2.67 MB | 1 年前313 Istio 流量管理原理与协议扩展 赵化冰
l-mcp) v 通过CRD定义的服务数据 q 自定义流量规则(如何将请求路由到这些服务?) v 通过CRD定义的流量规则 服务数据 流量规则 3 Istio 流量管理 – 控制面 – 服务发现 • K8s Service : Pilot 直接支持 • ServiceEntry: 手动添加 Service 到 Pilot 内部注册表中 • WorkloadEntry:单独添加 Workload,对于虚机支持更友好 Workload,对于虚机支持更友好 • MCP 适配器: 将第三方注册表中的服务加入到 Pilot 中 Consul MCP Adapter https://github.com/istio-ecosystem/consul-mcp 欢迎大家试用、共建! 4 Istio 流量管理 – 控制面 – 流量管理模型 Gateway Virtual Service Destination Rule 外部请求 下游客户端连接。在 Envoy 中,Listener 可以绑定到端口上直接对外服务,也可以不绑 定到端口上,而是接收其他 listener 转发的请求。 • Cluster:集群是指 Envoy 连接的一组上游主机,集群中的主机是对等的,对外提供相 同的服务,组成了一个可以提供负载均衡和高可用的服务集群。Envoy 通过负载均衡 策略决定将请求路由到哪个集群成员。 xDS 协议的主要概念: • Listener0 码力 | 20 页 | 11.31 MB | 6 月前3Extending service mesh capabilities using a streamlined way based on WASM and ORAS
io/docs/envoy/latest/configuration/http/http_filters/http_fi lters ○ …. ● 自定义开发: ○ 静态预编译: ■ 将其他过滤器集成到Envoy的源代码中,并编译新的Envoy版本。 ■ 这种方法的缺点是您需要维护Envoy版本,并不断使其与官方发行版保持同步。 ■ 此外,由于Envoy是用C++实现的,因此新开发的过滤器也必须用C++实现。 可维护性:不必更改Envoy自身基础代码库即可扩展其功能。 ○ 多样性:可以将流行的编程语言(例如C/C++和Rust)编译为WASM,因此开发人员可 以选择实现过滤器的编程语言。 ○ 可靠性和隔离性:过滤器会被部署到VM沙箱中,因此与Envoy进程本身是隔离的;即使 当WASM Filter出现问题导致崩溃时,它也不会影响Envoy进程。 ○ 安全性:过滤器通过预定义API与Envoy代理进行通信,因此它们可以访问并只能修改有 ● OCI Artifacts项目的参考实现, 可显著简化OCI注册库中任意内容的存储; ● 可以使用ORAS API/SDK Library来构建自定义工具, ○ 将WebAssembly模块推入到OCI注册库中; ○ 或者从OCI注册库中拉取WebAssembly模块; ● oras cli类似于docker cli 10 在ACR EE中使用ORAS CLI ● 阿里云容器镜像服务企业版ACR0 码力 | 23 页 | 2.67 MB | 1 年前3在网格的边缘试探:企业 Istio 试水指南
控制服务间的访问路由 • 跟踪服务链路 • 应对服务故障 • 在服务间通信之间进行加密 • 访问控制和频率限制 • …Istio目前的突出问题 • API稳定性问题:流量管理也仅仅是v1alpha3,用alpha特性发布 1.0的情况似乎比较罕见。 • 发布进度和质量:大版本以月计算的发布延迟,据我所知的 Release撤回发生了两次。 • 世纪难题:多出一层Sidecar造成的延迟。 • 评估关联服务的工作情况——尤其是重试、超时特性的应用切换演练 • 在测试版本和后备版本之间根据预案进行切换。 • 验证相关服务的工作状况。 • 最终保障试点上线 • 在通过测试验证和切换演练的过程之后,就可以将试用的网格应 用上线到生产 环境开始试运行了。和所有其他上线活动一样,在 上线之后需要提高监控级别,关注试用服务自身和试用服务影响 范围内的相关功能的健康情况。新书广告0 码力 | 19 页 | 11.41 MB | 5 月前3生产环境 istio
0.8 app app app app apiVersion: "nais.io/v1alpha1" kind: "Application" metadata: name: app labels: team: pension spec: image: navikt/app:1 true accessPolicy: inbound: - name: consumer-a app apiVersion: "nais.io/v1alpha1" kind: "Application" metadata: name: app labels: team: pension spec: image: navikt/app:1 autoscaler networkpolicy servicerole servicerolebinding serviceentry apiVersion: "nais.io/v1alpha1" kind: "Application" metadata: name: app labels: team: pension spec: image: navikt/app:10 码力 | 42 页 | 3.45 MB | 1 年前3Istio Security Assessment
user, kubectl -n restrict-test apply the following configuration apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: evil-bookinfo spec: hosts: 2https://istio.io/latest/doc applyUpstreamTLSSettings, and buildUpstreamClusterTLS Context functions within istio/pilot/pkg/networking/core/v1alpha3/cluster.go Impact An attacker that is able to intercept raw network connections between Envoy proxies Sni } else { ... // configure the validation_context Listing 3: istio/pilot/pkg/networking/core/v1alpha3/cluster.go 12https://github.com/istio/istio/issues/25652 13https://www.envoyproxy.io/docs/envoy0 码力 | 51 页 | 849.66 KB | 1 年前3Istio + MOSN 在 Dubbo 场景下的探索之路
由于没有真正的注册,所以使用手动添加 ServiceEntry 的方式代替 Adapter 功能 • Listener 和 Routers 配置信息目前是固定的 • Provider 只注册到本地 zk • Sidecar 注入到方式使用的是多个 Container感谢聆听 欢迎关注,获取最新分布式架构内容 关注服务网格,关注 ServiceMesher0 码力 | 25 页 | 3.71 MB | 5 月前3百度APP基于Istio实现基础架构升级 - lightning talk - MichaelXu
速服务治理技术的研发和迭代,提升架构 能力可移植性。 #IstioCon 技术方案 l 核心原则 Ø 务实、高稳定性、低迁移成本。 l 核心思路 Ø 先单跳,后双跳。 Ø 服务发现下沉到Envoy。 Ø 基于 RPC + 服务发现实现透明流量劫持。 Ø 自建配置中心,产品化封装。 l 关键技术 Ø 内核劫持,使用Loopback IP 与 服务发现一一对应。 Ø RPC劫持,构建可快速扩展标准方案。 服务发现接入层。 ㊟ 内核劫持:Loopback方案 Ø loopback地址的管理和分配。 Ø 需要打通业务和loopback之间的映射管 理。 RPC劫持:可扩展方案 Ø envoy启动后注册port到bns-agent。 Ø rpc框架查询bns-agent IP与治理策略数据。 Ø bns-agent判断否使用envoy进行服务治理。 Ø rpc框架根据反馈的IP,治理策略信息请求对 应IP,会cache数据,需要即时更新。0 码力 | 9 页 | 2.20 MB | 1 年前3Istio控制平面组件原理解析
08:12:19 GMT","780", • "bc1f172f-b8e3-4ec0-a070-f2f6de38a24f","718"]转换成属性词汇异步Flush到Adapter ü通过Template润色数据 ü使用Go的协程异步Flush到Adapter üAdapter展示数据 ü响应envoy数据处理完成问题讨论 Report流程回顾 üEnvoy异步批量发送数据给Mixer üMixer使用协程池处理Adapter0 码力 | 30 页 | 9.28 MB | 5 月前3
共 21 条
- 1
- 2
- 3