云社区 博客 博客详情

基于华为云的一个典型的持续部署方案

【摘要】 华为云迄今为止已经有14大类超过100种服务了,可以做很多有用和好玩的方案。

基于华为云的一个典型的持续部署方案:FunctionStage(Serverless)+(Monocular+)Helm Chart + CCE(Kubernetes+Docker)

  • 1. 关于持续集成(CI)和持续部署(CD)

  • 2. 一个华为云上的持续部署方案

  • 3. 部署截图

摘要:华为云迄今为止已经有14大类超过100种服务了,可以做很多有用和好玩的方案。本文以一个实际的案例,讲述如何使用华为云上的相关服务(主要是FuctionStage和CCE)完成自动化持续部署(CD,Continuous Deployment);并且通过Monucular手动部署Helm Charts打包的Kubernetes应用。这充分说明了华为云云容器引擎CCE支持和兼容开源生态Kubernetes以及在DevOps的强大能力,以及华为云支持业界主流自动化部署工具的能力。

1. 关于持续集成(CI)和持续部署(CD)

在软件开发和运维领域,我们经常会听到很多概念,比如DevOps,持续集成(CI,Continuous Integration),持续交付(CD,Continuous Delivery),持续部署(CD,Continuous Deployment)等等。这些新的概念、方法论和工具的出现,主要是为了应对目前业务的挑战。主要是要求业务推出和运维即“快”又“稳”:

  • 快:比竞争对手更快的创新、试验和部署业务的能力。快速推出业务、快速获取反馈、快速迭代、快速试错。

  • 稳:快速、频繁地特性发布,同时保证业务和系统的稳定性、可用性和持久性。

下面我们稍微解释一下持续集成(CI,Continuous Integration),持续交付(CD,Continuous Delivery),持续部署(CD,Continuous Deployment)的概念,可以去参考:持续集成是什么?

  • 持续集成(CI,Continuous Integration):持续集成指的是,频繁地(一天多次)将代码集成到主干。持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。

  • 持续交付(CD,Continuous Delivery):持续交付指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。

  • 持续部署(CD,Continuous Deployment):持续部署是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。

在本文的场景中,主要讲述的是基于华为云的持续部署(CD,Continuous Deployment)。

2. 一个华为云上的持续部署方案

前期在支撑某客户在华为云上的概念验证(PoC,Proof of Concept)中,有一个很重要的测试场景:自动化CI/CD。具体场景是:客户在私有云中完成持续集成(CI),CI采用自建的工具链;生成结果自动在华为云上完成持续部署(CD),部署在Docker容器中。

客户采用Helm charts脚本部署容器应用,因此在客户的CCE(Cloud Container Engine)容器集群所在的VPC中,我们部署了一台服务器安装了Helm client,通过Helm client连接CCE集群的Kubernetes Master完成Docker容器应用部署。

客户部署的容器应用中,其中有一个很重要的容器应用是一个job类应用,它的主要工作是:使用一些自动化部署工具完成应用所需资源的创建,应用环境的初始化等等。完成之后即停止。

我们采用了:FunctionStage(Serverless)+(Monocular+)Helm Chart + CCE(Kubernetes+Docker)的方案完成持续部署。演示效果良好。具体如下图所示:

描述如下:

  • 客户在私有云中完成持续集成(CI),CI采用自建的工具链。CI的结果是:

    • 应用容器镜像上传到华为云容器镜像仓库(SWR, SoftWare Repository for Container)

    • 应用部署脚本(例如Helm Chart.yaml, values.yaml)等以约定的打包方式,上传到华为云对象存储服务(OBS, Object Storage Service)的指定桶(Bucket)的相应目录下

  • 因为华为云的FunctionStage(Serverless)和OBS有集成,事先在FunctionStage中配置触发器(Trigger),当指定桶(Bucket)的相应应用目录下有文件更新时(PUT/POST操作,即用户上传了应用部署脚本),自动触发一个Python程序的执行。

  • 这个Python程序会ssh到Helm client,执行一个自动化部署的脚本。此自动化部署脚本会执行资源清理、helm install等动作完成容器应用的部署。

  • 部署的容器应用中,其中有一个很重要的容器应用是一个job类应用,它的主要工作是:使用一些自动化部署工具完成应用所需资源的创建,应用环境的初始化等等。完成之后即停止。

  • 最后的结果是:应用通过helm client部署在CCE容器集群中,该创建的资源(例如RDS-MySQL)成功创建并初始化,资源和应用运行正常。

  • 当然,我们也安装了一个Monocular(Monocular is a web-based UI for managing Kubernetes applications packaged as Helm Charts),允许用户手动部署Helm Charts打包的Kubernetes应用。

3. 部署截图

一些部署的截图如下。请注意:这个截图是我手动部署的截图,跟自动化部署的截图是类似的,但更能说明部署过程。

  • 通过Helm client部署容器应用到CCE集群

执行kubectl get pods可以看到应用pod(容器)处于Running状态。

  • 部署过程中通过自动化部署工具创建和初始化的华为云RDS-MySQL资源

基于华为云的一个典型的持续部署方案相关推荐

  1. 光大银行刘淼:基于华为云GaussDB(DWS) 数据仓库创新实践

    摘要:面向未来数据平台3.0要做架构减法,平台由N->1,华为云GaussDB(DWS)未来作为数据仓库唯一平台,数据链路实现从数据湖直接到华为云GaussDB(DWS)数据仓库. 日前,华为举 ...

  2. 基于华为云ECS的目标检测与识别的昇腾AI开发体验【华为云至简致远】

    [摘要] 基于华为云弹性云服务器ECS,搭配共享镜像,快速搭建环境,进行目标检测与识别的昇腾AI开发体验,开箱即用,打破时间和空间限制,随时随地进行开发,适合个人开发和团队协作,体验流畅丝滑. 前言 ...

  3. 基于容器云技术的典型遥感智能解译算法集成

    基于容器云技术的典型遥感智能解译算法集成 赵智韬1,2, 赵理君1, 张正1, 唐娉1 1 中国科学院空天信息创新研究院 2 中国科学院大学资源与环境学院 摘要:针对当前航天遥感信息处理向云计算发展的 ...

  4. 某大型化工企业基于华为云构建智慧物流平台

    新钛云服已为您服务986天 化工,作为一个特殊又直接关系社会生产.居民生活的行业,其对相关物流运输体系安全有着更高.更严格的要求. 如何实现从化工企业至终端用户的物流供应链全链条透明可视化,让&quo ...

  5. 基于华为云的Django网站部署

    学习笔记,仅供参考,有错必纠 参考自:Xshell远程连接服务器:win10 开启ssh server服务 远程登录 文章目录 基于华为云的Django网站部署 远程登录华为云 Xftp+Xshell ...

  6. 基于华为云对话机器人技能平台的规则模板概述

    华为云对话机器人服务中的技能平台,向机器人服务提供了一系列即插即用的技能,可为对话机器人增加了用户配置机器人的灵活度. 在邀测的过程中,我们总结了在技能平台上使用的规则配置上的一些功能和想法,与大家分 ...

  7. 基于华为云弹性云服务器ECS(搭载openEuler的鲲鹏通用计算增强型)完成鲲鹏代码迁移工具实践【华为云至简致远】

    [摘要] 基于华为云弹性云服务器ESC(鲲鹏服务器),部署鲲鹏代码迁移工具利用扫描迁移工具进行源码分析,根据扫描建议修改源码,让源码在鲲鹏平台可以正常编译运行 零.前情提要 先来说句题外话,最近华为鲲 ...

  8. 【华为云技术分享】基于华为云IOT及无线RFID技术的智慧仓储解决方案最佳实践系列一

    摘要:仓储管理存在四大细分场景:出入库管理.盘点.分拣和货物跟踪.本系列将介绍利用华为云IOT全栈云服务,端侧采用华为收发分离式RFID解决方案,打造端到端到IOT智慧仓储解决方案的最佳实践. 仓储是 ...

  9. 基于华为云会议SDK 24行代码打造企业专属会议室

    华为已经有着超过20年的视频会议产品研发经验,拥有1000多项视频会议.音视频相关的国际和国内专利技术.华为云会议基于全开放的产品定位,将华为云会议的所有产品能力都开放给伙伴,伙伴可以通过集成华为云会 ...

最新文章

  1. linux y脚本,Linux中脚本的使用方法
  2. jFreeChary初探
  3. 设计模式_单实体模式
  4. jquery中cookie用法实例详解(获取,存储,删除等)
  5. linux合并第一列相同的行,linux – 合并重复的行并在最后添加“N / A...
  6. ajax无法返回视图
  7. IPv4中IP地址分类
  8. 使用VSCode玩转Java (二)
  9. 【知识图谱】08KBQA问答系统(python+fuseki+jena)
  10. pytorch创建新环境
  11. 日常问题(bug)反馈/回复的标准格式
  12. html怎么改项目符号的颜色,word2003项目符号颜色的修改方法
  13. 职工科研项目管理系统的设计与实现附代码
  14. 入坑NLP - 自然语言处理领域概述
  15. 网络路由器协议(OSPF、RIP、BGP、IGRP、IS-IS)
  16. Thinkphp3.2.3安全开发须知
  17. 高通UEFI研究[三]
  18. 2019年蓝桥杯C/C++ B组试题 部分题目答案
  19. (一)Flink从入门到项目实战——Flink介绍——董长春
  20. 四川流行的珠珠钓大致有三种方式

热门文章

  1. c语言100块钱买100只鸡算法,JS计算输出100元钱买100只鸡问题的解决方法
  2. java 测试排序_java排序的几种方法 - 善待自己的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  3. java 热布署 开源_一种简单快捷的 java 热部署方式
  4. 多个vue项目之间跳转_Vue六,路由,ElementUI
  5. anaconda3安装_Ubuntu20.04安装配置Anaconda3
  6. kali 安装volatility_电子取证技术之实战Volatility工具
  7. python中的方法什么意思_python中的函数和方法的区别是什么
  8. python语法学习_python语法学习笔记
  9. 结构体定义小的放前面_编程C语言进阶篇——自定义数据类型:结构体
  10. linux摄像头 自动对焦,基于H3在Linux下驱动OV5640摄像头的方法与流程