平台构建与 Istio 应用
本文介绍了 Optum 开发的基于 Istio 的平台,旨在构建一个本地化、多租户且完全管理的无服务器平台。平台的核心目标包括处理跨领域问题(如认证和授权)、提供简单易用的用户体验、降低使用门槛以及实现端到端的可观测性和弹性。
平台概述
平台的主要功能包括函数服务、函数构建、事件驱动、多租户支持、安全、可观测性和弹性。技术选型方面,平台采用了 Kubernetes、Istio、Knative、Tekton、Prometheus、Grafana 和 Banzai Cloud Logging Operator 等技术,并结合内部工具和用户体验设计。
技术能力矩阵
技术能力矩阵展示了平台在不同方面的技术选型,包括函数服务、函数构建、事件驱动、多租户、安全、可观测性、弹性和用户体验等方面。Istio 和 Kubernetes 在安全、可观测性和弹性方面发挥了关键作用。
平台架构
平台架构包括存储、Knative、Istio、Prometheus Operator 和 Logging Operator 等组件。架构通过 BGP、Anycast 和动态 DNS 在多个 Kubernetes 集群之间进行通信。
Istio 应用
Knative 和 Istio
Knative 需要一个 L7 负载均衡器来路由流量到正确的 Knative 服务,并进行流量分割和请求级别的负载均衡。Knative 路由通过 Istio 资源进行配置,包括虚拟服务、路由和 ingress 等组件。
Knative 流量分割
Knative 支持流量分割,允许将流量分配到不同的修订版本。例如,可以将 50% 的流量路由到最新修订版本,另外 50% 的流量路由到特定修订版本。
Knative TLS
Knative 支持 TLS 加密,通过 Istio Gateway 和 Cert-manager 实现证书管理和 TLS 配置。
认证和授权
平台通过 Istio 的 RequestAuthentication 和 AuthorizationPolicy 实现认证和授权。例如,可以配置 JWT 规则和授权策略,确保只有符合条件的请求才能访问特定服务。
外部服务注册
平台支持外部服务注册,通过 ServiceEntry 配置外部主机和端口信息,实现与外部服务的通信。
自定义域名
平台支持自定义域名,通过配置 Knative 服务和 Istio Ingress Gateway,实现自定义域名的解析和访问。
端到端追踪
平台提供端到端追踪功能,通过内部工具和 Istio CNI 实现。追踪工具具有低门槛、易于使用,并能有效识别和防范恶意行为。
Istio 管理
平台使用 Istioctl 进行 Istio 的安装和管理。通过 istioctl 命令可以生成 Istio 配置文件、查看代理状态和启动 Istio 仪表盘。
总结
平台采用 Istio 和相关技术构建了一个功能完善、易于管理且具有高度弹性的无服务器平台。通过 Istio 的强大功能,平台实现了安全、可观测性和弹性等关键特性。建议从小的规模开始,逐步扩展平台功能和应用范围。