华为云DevOps系列之 —— 持续部署与发布(八)自动化部署

举报
ruochen 发表于 2021/09/01 10:52:31 2021/09/01
【摘要】 华为云DevOps系列之 —— 持续部署与发布(八)自动化部署

部署的发展历程

  • 手工管理时代
    • IP 地址存放在 Excel 表格里
    • 用 SSH 连接服务器
    • 手工执行,进行部署配置等工作
  • 自动化时代
    • 数据库方式管理 IP 地址 —— CMDB
    • 基于 ssh 或者 agent 分布式脚本执行平台
    • 运用自动化工具,用脚本自动化执行
  • DevOps 阶段
    • 以应用为中心的微服务快速发布的诉求,通过流水线出发部署任务,实现标准化,版本化的部署
    • 统一支持开发和运营的交付工作及软件管理工作

传统部署下的矛盾

  • 开发人员手动部署,每次需要发布、更新都要远程连接到服务器上,手动地部署更新版本
    • 容易出错,效率低
    • 依赖人员、耗费大量人力成本
    • 流程繁琐、操作复杂
    • 对于机器集群部署服务实现困难
  • 随着业务的不断扩大、项目迭代速度变快,实现自动化部署极为重要

自动化部署

  • 自动化部署 将可交付产品,快速且安全地交付用户使用的一套系统和工具。系统会自动构建、测试并准备代码变更,以便将其发布到指定环境的过程,包括 开发环境预发布环境生产环境
  • 自动化部署在实际运维场景中会一一对应一个部署任务,比如当每一次软件包更新后,启动应用部署升级,先针对 10% 的主机进行部署,完成更新后触发业务测试,如果验证通过,再针对剩下 90% 机器进行部署,这一切都封装在一个 部署任务 中,部署的时间和质量都得到了成倍地提升

DevCloud 部署服务

  • 部署应用到物理机、虚机、容器
    • 支持将应用部署到物理机、虚拟机、容器
    • 支持主机有 Agent 或无 Agent 模式提供应用监控数据
    • 支持以代理记的方式进行部署
    • 支持部署到应用管理平台,纳管容器云集群或客户的私有 K8S 的集群
  • 支持多种技术栈应用的部署
    • 支持 Tomcat,Sprintboot,Nodejs 等多种技术栈
    • 支持 SprintCloud,ServiceComb,Dubbo 等微服务应用部署和治理能力
    • 提供通用模板,且支持自定义模板,提供 25+ 原子步骤组装成部署任务
  • 支持与流水线,运维管理无缝集成
    • 在流水线能关联部署任务
    • 通过流水线关联构建、代码检查、测试等服务。实现端到端 DevOps 流程

部署服务的工作原理

  • 云主机部署:用户通过手动上传、或者编译构建任务,将软件包保存在软件发布库内;部署任务将软件包上传并安装到云主机中
  • 容器部署:用户通过手动上传、或者编译构建任务,将镜像保存到容器镜像仓中;部署任务将镜像上传到容器镜像集群中

部署服务功能模块

  • 自动化部署作为流水线中间的一环,它位于构建任务与发布之间
  • Devclou 提供 Ansible 部署框架,基于 Ansible 的部署,目标主机无需安装代理
  • 开发、测试、运维人员通过统一平台进行部署,部署环境标准化
  • CloudDeploy 服务中包含部署任务执行,部署任务管理,主机管理的模块,部署过程可视

部署服务关键特性

系统模板

  • 使用系统模板快速创建部署任务:通过 Springboot、Tomcat、CCE 容器应用部署、Docker 应用部署等系统模板快速创建部署任务
  • 支持保存自定义模板:可以将组合的部署步骤保存为自定义模板,其他部署任务就可以直接使用模板

批量部署

  • 实现批量部署:多个目标主机并行执行部署任务
  • 主机组:主机组是多台主机的组合。将多个主机添加到某一台主机中,通过该主机组在多台主机上并行执行部署任务
  • 环境:环境是计算、存储、网络等基础设施的集合。环境内部网络互通环境中,通常可以包含主机、集群、数据库、ELB、微服务、引擎等资源。用户通过创建不同的环境实现不同资源的分组管理,如开发环境、测试环境等等

自定义组合部署步骤

  • 提供 25+ 部署步骤自由组合任务

支持参数化

  • 支持部署任务内容参数化:部署任务支持参数设置并动态执行,通过配置任务参数用户可以根据自定义的参数执行任务
  • 通过 ${变量} 引用动态的参数

Tomcat 部署步骤示例

部署服务应用场景

简单 Web 应用

  • 应用:用户需要开发简单 Web 应用并使用软件开发云编译构建和部署
  • 适用场景:适用于 Web 应用程序和微服务的部署,支持 Tomcat、Java、Python、NodeJS、Go、PHP、Ruby 语言

微服务容器部署

  • 应用:大型应用软件网站有很多的组件或微服务组合协调,需要软件开发云实现容器化部署
  • 适用场景:支持 Linux 下多服务、多组件、多层次的大型应用,用户需要自定义部署模板,定制适合自己应用的部署脚本和部署参数,并应用流水线编排各个组件的统一部署,实现全系统的自动化部署

最后,欢迎大家关注我的个人微信公众号 『小小猿若尘』,获取更多IT技术、干货知识、热点资讯。同时,我在公众号中分享了精心整理的一些视频资料(包括 Python全栈教程、AI教程、前端、数据库等),大家回复相应关键词即可获取网盘视频链接,感谢大家的关注😊

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。