《构建Serverless体验的云原生应用平台-孙健波.pdf》由会员分享,可在线阅读,更多相关《构建Serverless体验的云原生应用平台-孙健波.pdf(27页珍藏版)》请在三个皮匠报告上搜索。
1、构建 Serverless 体验的云原生应用平台孙健波(天元)阿里云 高级技术专家OAM/KubeVela 项目负责人云原生应用模型(OAM)及 KubeVela 项目主要作者专注于推动标准化云原生应用交付和管理体系在开源和云上全面落地,负责阿里云 Serverless 应用平台建设。技术布道师/开源爱好者多届 KubeCon、ArchSummit 大会讲师参与开源社区近 10 年,先后贡献过 CloudFoundry、Docker、Kubernetes 等数十个云原生、PaaS 领域的开源项目。孙健波(天元)欢迎联系:阿里云 云原生应用平台团队 高级技术专家容器:标准化的交付介质Kubern
2、etes:标准化的基础设施管理与抽象K8s CRD Operator:自动化的运维模型Infrastructure as Code:基础设施即代码云原生的崛起,带来了交付介质、基础设施管理、运维模型和持续交付理论的全面升级和突破,形成了繁荣的技术生态,加速了云计算时代到来。云原生带来了技术的全面升级蓬勃发展的云原生生态Shift Left is about doing things earlier in the development cycle.应用开发的整个生命周期各项职责不断向研发侧左移https:/devopedia.org/shift-leftshift left!更高的效率更高的效
3、率更低的成本更低的成本研发效率研发效率交付效率交付效率运维效率运维效率资源成本资源成本软件成本软件成本人力成本人力成本交付成本交付成本Cloud Infrastructure!#!#$%&()*+,-./012345$%&()*+,-./012345q 测试左移q 安全左移q 交付左移q 监控左移q!#$%&()*+,-./012&3!#$%&()*+,-./012&3应用交付流水线RolloutController基础工作负载制品仓库提交发布YAML 文件安全扫描策略实例灰度/扩缩容策略流量策略日志&监控策略sidecarPrometheusService MonitorPodDeploym
4、entCRDnamespaceLabel&AnnotationsIstioVirtual ServiceServiceHorizontalPodAutoscalerValidatingWebhookMutatingWebhookPV/PVCStatefulSetJob 以容器工作负载为核心构建基础设施 基于代码或脚本对接已有的 CI/CD 体系或内部平台 以 K8s 原生 API 为标准集成界面,无厂商绑定 充分利用 K8s 生态的各类 CRD Operator 做能力扩展Charts6789:);+?6789:);+?ABCDEFABCDEFGHIJ5GHIJ5挑战:云和 K8s 基础设施的
5、复杂性暴露给了开发者应用开发者?水平扩缩容要怎么设置?minReplicas,maxReplicas 设置多少?网关的负载均衡设置成15s 健康检查够吗?Pod 驱逐策略(PDB)是什么?maxUnavailable 设置为多少?CPU 和 内存的 limits 该怎么设置?应用的命名空间 quota 值该设置多少?q 基础设施的 API 版本变更暴露给了开发者应用开发者q 基础设施的功能过度暴露给了应用开发者挑战:现代应用天然面向多云混合环境依赖编排巡检策略故障注入资源绑定端云联调云资源创建/销毁可观测性策略(日志&metrics)安全扫描策略实例灰度/扩缩容 策略流量策略多集群开发测试环境
6、预发联调环境生产环境云资源绑定远端 exec实时日志集群环境初始化断点调试热加载通知、告警可观测性策略(日志&metrics)攻防演练云厂商自建机房现代微服务应用ECSRDS数据库SLB业务 Pod业务 PodPrometheus同一个应用,在不同环境下部署的组件依赖差异巨大数据库、负载均衡、K8s,在不同云上也存在诸多差异ARMS同一个应用,在不同场景下的运维能力要求差异巨大q开发者面对不同场景心智负担重。开发者面对不同场景心智负担重。q系统缺乏统一交付和管理能力。系统缺乏统一交付和管理能力。q需要补充大量人工操作,缺乏自动化需要补充大量人工操作,缺乏自动化。平台开发无法满足日益增长的应用管
7、理诉求传统 PaaS有限的、不可扩展的专有 API 与能力云计算生态“无限”的应用基础设施能力挑战:传统平台模式封装的方法不再适用q 易于使用,但管控能力的扩充主要依靠平台本身升级实现q 封闭、锁定、黑盒化的 APIq 一旦平台层人力投入不足便跟不上研发诉求+?)KLMNO125+?)KLMNO125易于获取且一致一致的开发/测试环境易于理解和使用的统一统一API可灰度可灰度、可回滚、可回滚的发布环境安全、可靠、自动化qServerless 化的运行体验 基础设施无关、免运维免运维高可用高可用且异常行为可观测可观测 具备弹性伸缩弹性伸缩能力构建交付Kubernetes Multi-Cluste
8、rsCloudsIoT/EdgeCI PipelineJenkins.运行按需付费q多环境统一的构建流程q自动化的交付流程业务开发者的核心诉求:Serverless 体验复杂性复杂性认知负荷认知负荷回滚配置回滚配置多集群网络多集群网络开发团队可接受的开发团队可接受的认知负荷认知负荷向开发团队屏蔽向开发团队屏蔽开发团队操作开发团队操作业务发展业务发展场景变化场景变化能力习得能力习得https:/ 和 KubeVela:标准化应用模型和平台构建引擎KubeVela统一应用模型构建自动化可扩展编排持续交付和管理Kubernetes Multi-ClustersCloudsIoT/EdgeCI Pip
9、elineJenkins.CICDAddon CatalogDay-2 OperatingAPIUIGitOpsObservabilityCLIOAM 是标准化应用模型,KubeVela 是基于 OAM 的实现引擎:q面向开发者的 Serverless 体验,基础设施无关q 面向终态的声明式交付工作流,自动化编排q 面向混合环境,天然支持多集群和云资源q IaC/可编程,高度可扩展q CNCF 项目:https:/ Application Modelq统一的顶层应用模型(OAM)描述组件(Component)描述核心工作负载,如 web 服务,数据库云服务、一次性任务等。运维特征(Trait)
10、针对运维方式的定义,如高可用方式、扩缩容、网关、灰度发布方式等。VSKubernetes资源示例资源示例OAM OAM 被信通院采纳发布被信通院采纳发布云计算开放应用模型云计算开放应用模型行业标准。行业标准。标准应用模型(OAM)webservicescalergatewayDeploymentServiceIngress输出多个资源输出单个资源对资源参数增补基于 IaC 的模块定义组件定义组件定义q 面向 IaC 可扩展体系设计imagereplicas运维特征定义运维特征定义运维特征定义运维特征定义按需灵活可扩展运维特征定义运维特征定义path port class domain组件定义组
11、件定义运维特征定义运维特征定义实现无关ApplicationPlatform Team能力模板:X-DefinitionsEnd Users选择部署环境 Environment准备环境部署插件 Addons选择能力模板 X-Definition,填写参数,组装成一个KubeVela Applicatione.g.image=appreplicas=2host=myapp.io注册Component TypesTraitsWeb ServiceCron JobAutoscaleRolloutRouteDatabaseStaging ClusterProduction ClusterProduct
12、ion ClusterWeb ServiceRouteDatabase将“最佳实践”构建成模板享受“以应用为中心”的软件交付体验部署OAMX-DefinitionOAMX-DefinitionOAMApplicationOpenKruiseTerraformControllerDeploymentIstioKEDAFlaggerRDSSLB云服务ECSOAM 模型的工作模式reference the definitionFluxCDOAM ApplicationAddon CatalogEnd UserwebserviceRedisClickhouseTaskhelmRDSRegister a
13、s Definition Modulesq 插件是可发现、可复用、易于安装的能力集合。q 插件中心是 PaaS 能力市场,提供了 PaaS 生态标准化的途径。q 目前社区的插件中心已经有50+50+开箱即用的插件。OAM DefinitionsPlatform BuilderCapability ProvidersClickhouse Operatorhttps:/ 模型的插件生态PullKubeVela Control PlaneACKACKIoT/EdgeCluster GatewayPushPushPullOn-premisesOpen Cluster Managementq天然支持多集
14、群部署天然支持多集群部署,可定义不同的集群部署拓扑和差异化配置。,可定义不同的集群部署拓扑和差异化配置。q同时支持推送(同时支持推送(Push)和子集群订阅()和子集群订阅(Pull)两种集群管理模式。)两种集群管理模式。q运行时无侵入,仅在控制面对子集群操作,可以对接用户的运行时无侵入,仅在控制面对子集群操作,可以对接用户的K8s自定义扩展。自定义扩展。管控集群资源不会对子集群有任何侵入面向现代应用:天然支持跨多集群/混合环境交付Control PlaneRuntime Level CapabilitiesComponent BComponent AComponent CCloudsKube
15、rnetes ClustersApplicationtraitstraitstraitsTerraform controllerData Input/OutputDependencyCommunity addonsKubeVela Addons面向现代应用:天然支持异构环境统一交付用户只需声明式描述需要观测的组件,配置相应的运维特征,无需关心可观测性基础设施的构建方式。可观测性基础设施相应的配置流程基于 IaC 的方式统一可扩展,从采集到大盘展示流程自动化,无需手动操作。GrafanaPrometheusLoki(vector)DashboardMetricsLogsKubeVela Appl
16、icationobservability traitsq Observability as Code.q面向用户自定义的可观测能力面向用户自定义的可观测能力qKubeVela应用应用大盘大盘q K8s原生资源大盘原生资源大盘q KubeVela系统大盘系统大盘q K8s系统大盘系统大盘q 内置大盘自动化生成除了可扩展的可视化大盘能力,KubeVela 内置了大量自动生成的大盘,方便自运维,实时观测系统问题。面向现代应用:将可观测性作为一等公民内置支持开发运维人员Application(统一应用定义)Component AStep 1WorkflowStep 3Step 2支持自定义步骤的工作流
17、引擎(状态机)Component BTrait 1Trait 2面向现代应用:灵活自定义应用交付处理流程内置丰富的流程处理能力可扩展、可编程、可复用、自动化轻量高效无需创建容器执行结构化的流程控制和校验Workflow Step Definition(基于 IaC 的模块化封装)超时:30minStep E发布回滚Step A构建镜像Step B多地域镜像推送Step C安全合规审计Step D部署到预发布环境Step I部署到生产 Region CStep G部署到生产 Region AStep H部署到生产 Region B多步骤并行Step F条件判断Data PassingImage
18、ID参数输出参数输入指标正常Step J发送通知If:.failedIf:Always部署失败CI 集成安全合规多集群多环境部署Multi-ClustersRPC 请求HTTP 请求,K8s API 操作,多集群部署,流程控制等等内置原子化执行函数,支持多语言自定义内置函数基于 RPC 的自定义函数Cloud ProvidersIoT/Edge可观测能力应用交付工作流引擎KubeVela 是一个工作流驱动的统一交付引擎变更管理系统变更管理系统KubeVela ApplicationVela CLIVelaUXvela statusvela topvela execResource Topolo
19、gyvela logsvela debugvela port-forwardCloud ShellHistory LogsWorkflow Progressq面向面向多集群、自定义资源建设的统一、灵活的命令行工具多集群、自定义资源建设的统一、灵活的命令行工具q简单易用、将交付流程透明可视化的简单易用、将交付流程透明可视化的UI界面界面VelaUX:基于 KubeVela 引擎构建的端到端应用平台零门槛、零改造,基于容器生态的一站式应用托管平台企业级特性弹性资源池高可用免运维按需付费核心优势使用场景微服务应用容器工作负载Web 应用批任务处理定时任务大数据 ETLServerless 应用引擎
20、SAE(KubeVela)镜像加速GB 级镜像 秒级启动微服务治理优雅上线/下线+全链路灰度JVM 极致优化启动加速40%,线程占用省20%低门槛、零改造Spring 应用零代码改造迁移安全稳定核心业务打磨、合规安全可观测智能弹性秒级弹性扩缩、100%资源利用微服务架构转型低门槛容器化转型轻松应对流量洪峰脉冲一键启停、降本增效Serverless基础设施神龙裸金属服务器袋鼠安全容器盘古 2.0 存储洛神网络平台提供的全托管 Kubernetes 集群SAE:基于 KubeVela 的阿里云 Serverless 应用平台敏捷变更敏捷变更编写 IaC 配置即可快速验证和变更开发效率从 1d 提升
21、至 1h可复用可复用充分复用 K8s 生态、沉淀扩展能力PaaS 层能力多产品共享,极大减少开发成本面向终态面向终态面向终态的事件监听和自愈状态更新从分钟级延迟降到毫秒级多环境管理多环境管理具备多环境资源管理能力自动化的跨环境部署可扩展可扩展/可编程可编程通过 CUE 编程完成逻辑的处理,包括数据处理(API 解析),状态控制,业务日志等可视化可视化通过页面直观地展示工作流的流转和资源拓扑高效发现问题,降低运维成本KubeVela 带来的研发效能KubeVela 的社区生态超过 300 家海内外企业采纳超过 330 万次镜像下载超过 4500 个 Star超过 4000 个 Issue 和 P
22、R超过 300 位贡献者超过 50 位社区 Member,Maintainer从代码、文档到会议的中英双语国际化社群,超过 5000 位社群成员2022 年度 CNCF 全球活跃项目排名第 25 位,中国第 3 位。https:/ as CodeWorkflowSecurityAcross Clusters DeliveryObservabilityVelaDKubeVela Control PlaneCloud ProvidersMulti Kubernetes ClustersIoT/EdgeVelaUX(UI Console)AddonsVela CLIGitOpsAPI(K8s CRD
23、)https:/ GatewayTerraform ControllerVela UXVela PrismVela WorkflowOpen ClusterManagement社区已经具备社区已经具备50+50+认证插件认证插件KubeVela CLI 工具提供应用交付和管理操作,如应用更新、重启、暂停、状态查看、日志查询等。VelaUX 是 KubeVela 的 UI 控制台 为用户提供简单易用的图形化界面。基于 Terraform 提供云资源接入。基于 k3s 本地一键拉起KubeVela 环境,不依赖 K8s集群,便于构建开发/测试环境。提供简便的 API 扩展能力,让用户以操作 K8s 原生资源的方式调用第三方 API,如 Grafana 的监控报表生成。提供统一的多集群接口,对接 OCM 等不同多集群技术,支持多集群权限认证。独立的工作流引擎 提供一次性的交付动作编排能力,如多应用初始化部署、对多应用做扩缩容运维编排等。KubeVela 生态项目一览Thanks