期刊介绍
期刊导读
如何基于K8s构建下一代DevOps平台?
阿里妹导读:OAM是阿里巴巴与微软联合推出的开放应用模型,旨在解耦应用研发、应用运维与基础设施人员在应用生命周期中各自的关注点,明晰责任与界限,聚焦自身业务,同时又依然能紧密协作。当前云原生DevOps体系现状如何?面临哪些挑战?如何通过OAM解决云原生DevOps场景下的诸多问题?云原生开发应用模型OAM(Open Application Model)社区核心成员孙健波将为大家一一解答,并分享如何基于OAM和Kubernetes打造无限能力的下一代DevOps平台。
一 什么是DevOps?为什么基于Kubernetes构建?
2009年举办了第一届DevOpsDays大会,DevOps名字被首次提出。到2010年,DevOps的概念越来越火,出了What is DevOps的文章,讲解了DevOps的概念,方法论及配套的工具。简单来说,研发工程师需要和运维工程师深度的合作,同时通过一系列工具保证研发更加顺畅,从而更容易的接触生产环境。到2013年,Docker出现了,工程师可以第一次到软件生产环境中定义,通过Docker image完成单机软件的交付和分发。此时DevOps开始慢慢落地。2015年开始,DevOps相关的工具越来越多,资源利用率出现了一些问题,CNCF的成立使得DevOps的实践往Kubernetes上走。
DevOps的三个阶段
阿里在Kubernetes上的实践也取得了非常好的成果。在规模方面,阿里内部集成了数十个节点可以达到上万的集群,同时具备高性能和安全特性,秒级扩容,神龙+安全容器。具备极致的弹性,分钟级拆解公有云计算资源,无限资源池。另一方面,Kubernetes社区已经具备非常丰富的DevOps生态基础功能,包括镜像托管、CI\\CD流水线、任务编排、发布策略、镜像打包、分发、丰富的应用运行时的负载支撑、丰富弹性和应用扩容能力。
为什么阿里基于Kubernetes构建DevOps平台?
1)阿里基于Kubernetes的无限资源池与基础设施能力
大规模 – 单集群最高可达节点、百万Pod
高性能 – 秒级扩容,智能伸缩,神龙 + 安全容器
极致弹性 – 分钟级拆解公有云计算资源,无限资源池
2)社区围绕Kubernetes已经具备丰富的DevOps生态基础功能
源码到容器镜像仓库,Kubernetes是容器平台事实标准:Github/DockerHub
CI/CD流水线、任务编排、发布策略:Argo/Teckton/Spinnaker/Jenkins-X/Flagger
镜像打包、分发:Helm/CNAB
丰富的应用运行负载支撑:Deployment(无状态)/StatefulSet(有状态)/OpenKruise(原生有状态增强)
丰富的弹性和应用扩缩容能力:HPA/KEDA
二 基于Kubernetes的DevOps平台新挑战
下图展示了一个云原生下的DevOps流水线的典型流程。首先是代码的开发,代码托管到Github,再接入单元测试的工具Jenkins,此时基本研发已完成。再接着到镜像的构建,涉及到配置、编排等。云原生中可以用HELM打包应用。打包好的应用部署到各个环境中。但整个过程中会面临很多挑战。首先,在不同的环境需要不同的运维能力。
一个云原生 DevOps 流水线的典型流程
其次,配置的过程中要创建云上数据库,需要另外打开一个控制台来创建数据库。还需要配置负载均衡。在应用启动以后还需要配置额外的功能,包括日志、策略、安全防护等等。可以发现,云资源和DevOps平台体验是割裂的,里面充斥着借助外部平台创建的过程。这对新手来说是非常痛苦的。
挑战一:云资源与 DevOps 平台体验割裂
DevOps流程中充斥着大量需要外部平台创建的过程:
挑战二:研发、运维、基础设施关注点耦合
下图是常用的K8s的YAML配置文件,大家经常吐槽这个配置文件很复杂。简单来说YAML配置文件可以分为三大块,一块是运维比较关心的配置,包括实例数,策略和发布。第二块是研发关心的,涉及到镜像、端口号等。第三块是基础设施工程师看得懂的,如调度策略等。K8s的配置文件中将方方面面的信息都耦合在一起,这对K8s工程师来说是非常适合的,但是对应用侧的终端工程师而言,有很多不需要关心的配置指标。
DevOps流程中缺乏对“应用”这个概念的描述
K8s 的YAML文件的定位并不是终端用户
挑战三:平台的自定义封装,简单却能力不足
DevOps平台对K8s能力封装抽象,只剩下5个Deployment的字段需要研发填写。从用户角度而言,这种设置非常好用简单。但是针对稍微复杂的应用,涉及到应用状态管理,健康检查等等一系列的操作,此时这5个字段是不够的。
文章来源:《下一代英才》 网址: http://www.xydbjb.cn/zonghexinwen/2020/0828/732.html
上一篇:Gen.G将投入100万美元成立基金 培养下一代游戏产
下一篇:2020软件供应链:开源带来的下一代软件供应链,