云原生devops,模型化应用交付能力很重要

阿里云开发者 阿里云开发者     2023-02-05     258

关键词:

简介:DevOps 文化及其支撑其落地实践的自动化工具与平台能力在云原生架构渐为普及的背后,发挥了关键的价值。

撰稿:溪洋

审核校对:天元、海珠

编辑&排版:雯燕


云原生正在成为企业业务创新和解决规模化挑战的加速器。


云原生带来的变革绝不限于基础设施和应用架构等技术层面,更是对于研发理念、交付流程和 IT 组织方式的变革,也在推进企业 IT 组织、流程和文化的变革。在云原生架构渐为普及的背后, DevOps 文化及其支撑其落地实践的自动化工具与平台能力,发挥了关键的价值。


云原生带来的研发与运维协作界面


相较于云原生,DevOps 并不是什么新鲜的事情,其实践早已深入企业现代应用程序架构。DevOps 强调团队间的沟通和快速反馈,通过构建自动化的持续交付(Continuous Delivery)及流水线的应用发布方式,达到快速响应业务需求、交付产品和提高交付质量的目的。随着容器技术在企业的规模化应用,云计算可编程基础设施和 Kubernetes 声明式的 API 等能力加速了开发和运维角色的融合。


云原生的大势所趋使上云成为企业标配,围绕云原生去定义下一代研发平台成为必然,也倒逼着 IT 组织方式进一步发生变化——新的平台工程团队开始浮现。在这样的背景下,如何在云原生的环境下更高效地实践 DevOps 成为一个新的课题和诉求。



下一代 DevOps 平台演进趋势


伴随着 Kubernetes 生态从底层到应用层能力的逐步完善,平台工程团队可以更方便地基于业务场景和终端用户实际需求来构建不同的应用平台,却也为上层应用开发者带来了挑战和困扰。


Kubernetes 生态本身的能力池固然丰富,但是社区里却并没有一个可扩展的、方便快捷的方式,为云原生架构下混合、分布式的部署环境引入一致的上层抽象来为应用交付进行建模。应用交付过程上层抽象能力的缺失,使 Kubernetes 的复杂性无法做到向应用开发人员屏蔽。 


下图展示了一个云原生下的 DevOps 流水线的典型流程。首先是代码的开发,代码托管到 Github,再接入单元测试的工具 Jenkins,此时基本研发已完成。再接着到镜像的构建,涉及到配置、编排等。云原生中可以用 HELM 打包应用。打包好的应用部署到各个环境中。但整个过程中会面临很多挑战。



首先,在不同的环境需要不同的运维能力。其次,配置的过程中要创建云上数据库,需要另外打开一个控制台来创建数据库。还需要配置负载均衡。在应用启动以后还需要配置额外的功能,包括日志、策略、安全防护等等。可以发现,云资源和 DevOps 平台体验是割裂的,里面充斥着借助外部平台创建的过程。这对新手来说是非常痛苦的。


在容器出现之前的传统的 DevOps 模式需要不同的流程和工作流。容器技术是以 DevOps 的视角构建的。抽象的容器所提供的功能会影响我们如何看待 DevOps,因为随着微服务的出现,传统的架构开发将发生变化。这意味着要遵循在 Kubernetes 上运行容器的最佳实践,并将 DevOps 的理念向 GitOps、DevSecOps 扩展,使云原生下的 DevOps 更加高效、安全、稳定、可靠。


OAM(Open Application Model) 试图提供一种云原生应用的建模语言,以实现研发和运维的视角分离,使 Kubernetes 的复杂性无需透传至研发,运维通过提供模块化、可移植、可扩展的特性组件,支撑各种复杂的应用交付场景,从而实现云原生应用交付的敏捷性和平台无关性。其在 Kubernetes 上的完整实现 KubeVela,已经被业界认为是构建下一代持续交付方式及 DevOps 实践的核心工具。



最近,阿里云在 2021 云栖大会上发布了云效应用交付平台 AppStack ,旨在进一步加速企业云原生 DevOps 规模化落地。据云效应用交付平台 AppStack 研发团队介绍,其在设计之初就全面支持原生 Kubernetes 和 OAM/KubeVela ,以实现对应用部署架构无绑定、无侵入,使企业不用担心迁移以及技术改造成本。这也标志着 KubeVela 正在成为云原生时代应用交付领域的重要基石。


基于 KubeVela,

构建以应用为中心的交付系统



在云原生理念迅速普及的今天,混合环境部署(混合云/多云/分布式云/边缘)已经成为了大多数企业应用、SaaS 服务、应用持续交付平台的必然选择,而云原生技术的发展趋势也正在朝着“一致的、跨云、跨环境的的应用交付”不断迈进。


KubeVela 作为一个开箱即用、面向现代微服务架构的应用交付与管理平台,已经正式发布 1.1 版本。在此版本中,KubeVela 更加聚焦面向混合环境的应用交付流程,带来了多集群交付、交付流程定义、灰度发布、公有云资源接入等多个开箱即用的能力和更加友好的用户体验,帮助开发者从“静态配置、模板、胶水代码”的初级阶段,直接升级至“自动化、声明式、统一模型、天然面向多环境”的下一代以工作流为核心的交付体验当中。


基于 KubeVela,用户可以非常轻松地处理以下场景:


多环境、多集群应用交付


面向 Kubernetes 的多环境、多集群交付已是一个标准性需求。从 1.1 版本开始,KubeVela 不仅实现了多集群的应用交付,并且既可以独立工作直接纳管多个集群,也可以集成 OCM、Karmada 等各类多集群管理工具来进行更复杂的交付动作。在多集群交付策略的基础上,用户还可以通过定义 Workflow 来控制交付到不同集群的顺序、条件等工作流步骤。


定义交付工作流(Workflow)


Workflow 的具体使用场景则很多,比如在多环境应用交付场景中,用户可以定义不同的环境交付的顺序和前置条件等 。KubeVela 的工作流是面向 CD 过程的,同时也是声明式的,所以它既可以作为 CD 系统直接同 CI 系统(比如 Jenkins 等)对接,也可以嵌入到现有 CI/CD 体系中作为增强和补充,落地方式非常灵活。


在模型上,Workflow 是由一系列 Step 组成的,而在实现上,每一个 Step 则是一个独立的能力模块,由其具体的类型和参数来决定其具体步骤的能力。在 1.1 版本中,KubeVela 内置的 Step 已经比较丰富,也非常容易扩展,帮助用户轻松对接已有的平台能力,做到无缝迁移。


以应用为中心的云资源交付


KubeVela 的设计是从“以应用为中心”的视角出发,因此可以帮助开发者以完全 Serverless 的方式更好、更方便的管理云资源,而不是疲于应付各种不同的云产品和控制台。在实现上,KubeVela 内置集成了 Terraform 来作为云资源的编排工具,并且能够以统一的应用模型支持各个云厂商上百种不同类型云服务的部署、绑定和管理。


在使用上,目前 KubeVela 将云资源分为以下三类:


  • 作为组件:比如数据库、中间件、SaaS 服务等。比如 KubeVela 中的 Alibaba-RDS 服务就属于这种
  • 作为运维特征:比如日志分析、监控可视化、监控报警等服务
  • 作为应用运行基础设施:比如 Kubernetes 托管集群、SLB 负载均衡、NAS文件存储服务等


更容易落地的 GitOps 持续交付实践


KubeVela 作为一个声明式的应用交付控制平面,天然就可以以 GitOps 的方式进行使用(可单独使用,也可配合 ArgoCD 等工具),并且能够为 GitOps 场景提供更多端到端的能力和增强、帮助 GitOps 理念以更加亲民和解决实际问题的方式在企业中落地。这些能力包括:


  • 定义应用交付工作流(CD 流水线)
  • 处理部署过程中的各种依赖关系和拓扑结构 
  • 在现有各种 GitOps 工具的语义之上提供统一的上层抽象,简化应用交付与管理过程
  • 统一进行云服务的声明、部署和服务绑定
  • 提供开箱即用的交付策略(金丝雀、蓝绿发布等)
  • 提供开箱即用的混合环境/多集群部署策略(放置规则、集群过滤规则、跨环境Promotion 等)
  • 在多环境交付中提供 Kustomize 风格的 Patch 来描述部署差异,而用户无需学习任何 Kustomize 本身的细节
  • ……


KubeVela 1.2 版本即将重磅发布


持续打造天然面向混合环境的企业应用操作系统、让开发者享受交付应用的过程,这是 Kubevela 项目的目标和愿景。在接下来的 1.2 版本,KubeVela 将带来以应用为中心的控制面板 UI,实现便捷的企业应用组装、分发、交付流程,提供给开发者更简单的应用交付体验,同时覆盖边缘应用交付等更多的使用场景。



KubeVela 1.2 版本将在 2021 年 12 月举办的 KubeCon China 上重磅发布,敬请持续关注 KubVela 社区以及阿里巴巴云原生动态!


您可以通过如下方式了解更多关于 KubeVela 以及 OAM 项目的细节:


1)项目代码库:

github.com/oam-dev/kubevela 

欢迎 Star/Watch/Fork!


2)项目官方主页与文档:

kubevela.io/

从 1.1 版本开始,已提供中文、英文文档,更多语言文档欢迎开发者进行翻译。


3)项目钉钉群:23310022;Slack:CNCF #kubevela Channel


4)加入微信群:请先扫码添加以下 maintainer 微信号,表明进入 KubeVela 用户群:



这里,查看 KubeVela 项目官方主页与文档!!

原文链接:https://developer.aliyun.com/article/802442?

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

容器云原生devops学习笔记——第二期:如何快速高质量的应用容器化迁移(代码片段)

...一直懵懵懂懂,最近观看了阿里专家带你玩转容器云原生DevOps公开课开始系统的学习DevOps,所以根据学习视频整理出以下学习笔记希望分享给更多对此感兴趣的同学~课程大纲如下图所示,会陆续进行更新:... 查看详情

什么是云原生应用

天生就具备云的基因,适合云环境的业务应用系统云原生技术诞生是在互联网头部企业大规模软件研发交付需求驱动下技术平台化,通过数字基础设施升级解放生产力,围绕降本增效,面向提升可靠性、稳定性、... 查看详情

课程报名|《六周玩转云原生》-云原生下的devops与持续交付

六周玩转云原生为了让开发者们在这个特殊的时期里可以学习到更多干货,京东智联云开发者特别策划了《六周玩转云原生》系列课程,让我们的开发者可以迅速入门,持续充电。时光倒流到本世纪初,“持续交付之父”、“全... 查看详情

为什么原生云应用重要?

   原生云应用是云模型构建的目标。这些应用被负责专用功能的小团队快节奏地构建和部署到一个提供易于横向伸缩、硬件解耦的平台上,在云环境里为组织提供了更强的灵活性、弹性和可移植性。   1、... 查看详情

何朝曦:构建云化安全能力的三个建议

...可以从采用云化交付的安全产品和服务、构建适合云和云原生应用的保 查看详情

云原生应用是啥?它的特点都有哪些?

...IT所不具备的能力。这里说的“云化的应用”也就是“云原生应用”。云原生架构和云原生应用所涉及的技术很多,如容器技术、微服务等,而云原生应用最大的特点就是可以迅速部署新业务。在企业里,提供新的应用程序环境... 查看详情

容器云原生devops——第二期:如何快速高质量的应用容器化迁移(代码片段)

...一直懵懵懂懂,最近观看了阿里专家带你玩转容器云原生DevOps公开课开始系统的学习DevOps,所以根据学习视频整理出以下学习笔记希望分享给更多对此感兴趣的同学&#x 查看详情

容器云原生devops学习笔记——第二期:如何快速高质量的应用容器化迁移(代码片段)

...一直懵懵懂懂,最近观看了阿里专家带你玩转容器云原生DevOps公开课开始系统的学习DevOps,所以根据学习视频整理出以下学习笔记希望分享给更多对此感兴趣的同学&#x 查看详情

云原生devops:cicd持续集成|交付|部署

@TOC基于Jenkins拉取GitLab的SpringBoot代码进行构建发布到测试环境实现持续集成基于Jenkins拉取GitLab指定发行版本的SpringBoot代码进行构建发布到生产环境实现CD实现持续部署一、持续集成为了让程序代码可以自动推送到测试环境基于Do... 查看详情

极简容器化交付|部署组件分析

...活度相对较差,对于经常变更版本的场景,还是需要使用原生接口进行操作,使得整体研发交付流程的复杂度并未降低太多。鉴于此现状华为云容器团队又推出了一款易用性更好、自动化程度更高的服务产品——容器交付流水线... 查看详情

云原生dev0ps实践

云原生DevOps落地实践过程中,从手工、工具化、自动化进而到全链路自运维体系,这种自动化的DevOps可以实现更短的业务迭代周期、更稳固的交付质量、更优化的资源成本、更好的用户体验。云原生DevOps的步骤建议:1)架构升... 查看详情

如何实现devops?

...交付实践去优化资源和扩展应用程序的新方式。DevOps和云原生架构的结合能够实现精益产品开发流程,适应快速变化的市场,更好的服务企业的商业目的。在容器云PaaS、DevOps、微服务治理、服务网格、API网关等等方面,时速云... 查看详情

云原生devops:kubernetes编排工具(代码片段)

@TOCKubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。Kubernetes一个核心的特点就是能... 查看详情

2022-07-10企业构建云原生应用上云知识库最佳实践

本课程从云原生时代大背景下分析应用上云带来的的优势与对业务开发人员带来的挑战,从而说明构建业务-应用服务上云知识库的重要性与必要性;主要根据知识库建设的通用性原理,从知识生产到消费再到知识再... 查看详情

容器云原生devops学习笔记——第一期:devops微服务容器服务(代码片段)

...一直懵懵懂懂,最近观看了阿里专家带你玩转容器云原生DevOps公开课开始系统的学习DevOps,所以根据学习视频整理出以下学习笔记希望分享给更多对此感兴趣的同学~课程大纲如下图所示,会陆续进行更新:De... 查看详情

基于jenkins打造符合devops能力成熟度三级标准的持续集成流水线

...点。本文内容参照《研发运营一体化(DevOps)能力成熟度模型第3部分:持续交付》,基于jenkins,对持续集成流水线建设的一些关键点进行技术应答,带领大家把方法论落地到具体的技术点上。文中涉及到的几个名词解释:1,流... 查看详情

容器云原生devops学习笔记——第三期:从零搭建ci/cd系统标准化交付流程(代码片段)

...一直懵懵懂懂,最近观看了阿里专家带你玩转容器云原生DevOps公开课开始系统的学习DevOps,所以根据学习视频整理出以下学习笔记希望分享给更多对此感兴趣的同学&#x 查看详情

容器云原生devops学习笔记——第三期:从零搭建ci/cd系统标准化交付流程(代码片段)

...一直懵懵懂懂,最近观看了阿里专家带你玩转容器云原生DevOps公开课开始系统的学习DevOps,所以根据学习视频整理出以下学习笔记希望分享给更多对此感兴趣的同学&#x 查看详情