热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从零到devops(除了docker还有什么容器)

2月9日,在云栖计算之旅线下沙龙上,阿里云容器服务团队的高级研发工程师mmddy分享了《基于容器技术的DevOps探索》。首先介绍了DevOps和CD,接着分析了Docker如何打


2月9日,mmddy,高级研发;阿里巴巴云容器服务团队d工程师,在云起计算之旅线下沙龙分享《基于容器技术的DevOps探索》。首先介绍了DevOps和CD,然后分析了Docker如何打破传统的CD壁垒,最后说明了如何从零开始构建连续交付系统。


回顾:https://yq.aliyun.com/edu/lesson/play/493


开发和持续交付


DevOps


在一个相对成熟的软件和服务交付团队中,从技术上讲,主要分为三个组成部分:开发、测试和运维。开发团队更注重代码是否能运行,运维更注重系统上线后是否能稳定运行,于是差距就产生了。DevOps似乎解决了这个问题。DevOps的作用是将这三个部分紧密连接起来,提供一条从软件开发到质量保证再到技术运营的汽车生产线,加强不同角色之间的沟通与合作,从而减少资源浪费,提高质量,快速将产品推向市场,快速有效地将一个想法转化为价值,交付给客户。


激光唱片




如何实现DevOps?我们定义了连续集成,连续集成是一种方法。光盘有三个要点:自动化、持续有效的反馈。图中从左到右是从代码到交付的过程。


CD过程中可能会出现几个问题,可以概括为三个方面:环境一致性,开发者之间的环境不一致性;版本管理问题;快速响应(发布、回滚)问题。


那么,问题的根源是什么呢?因为开发人员只提供代码和代码依赖关系,并且保持站点运行需要运行环境而不是代码和运行环境之间的依赖关系。


Docker是如何打破传统CD壁垒的?


Docker是最适合实现DevOps的工具之一,甚至改变了软件交付的方式,可以有效解决持续交付过程中遇到的问题。


阿里巴巴云集装箱服务




阿里巴巴云容器服务在资源层面有集群和节点,在内容层面有组合模板和图片,在应用层面有应用、服务和容器。


完整的集装箱化连续交付流程




在传统的开发过程中,开发人员的代码包括逻辑、应用和代码依赖包,而我们的代码将添加Docker File和Docker Compose来制作和传输容器。代码提交成功后,代码服务器会通知CI服务器,CI服务器会拉代码进行代码打包,然后进行单元测试。如果单元测试失败,有效的反馈会立即告诉开发者。如果应用程序被认为包含应用程序,我们将根据代码给出的Docker文件创建映像,服务器将拥有配置的使用权,映像将被推送到阿里巴巴云容器,代码的可交付结果已经生成。


在部署阶段,如果进行了集成测试或回归测试,并且采用了测试环境,则使用Compose模板来描述如何在部署期间进行部署。用Jenkins丰富功能,用各种插件下拉映像部署到应用环境中,实现了代码提交到整个部署过程的变化。


Jenkins2.0




Jenkins版本包含一个新的管道建设和交付系统。流水线的设计理念基于Groovy DSL,实现一套灵活可扩展的连续发布(CD)工作流,将原本在单个节点或多个节点独立运行的任务连接起来,实现一个复杂的发布流程。此外,Jenkins支持直接从代码库中读取脚本。


从头开始构建一个持续的交付系统。




阶段是整个连续交付过程的明确定义。是自己写的,单元测试结果也能完美显示。每个阶段的时间消耗可以直接从日志中读取,也可以将软件打包的结果存储在本地。


持续交付流程设计




从机的动态生成和作业的最终销毁都是通过插件实现的。我们还支持共享存储OSS,上传战报包,镜像存储要交付的东西,部署阿里巴巴云自主开发的插件,调用容器服务的API。


詹金斯大师和经纪人




docker中的Docker表示代理将使用Docker进行图像打包。如果在詹金斯身上执行十个项目,它将

涉及到在所有项目中安装agent非常消耗资源,所以我们采用父子结构,通过透传的方式,可以使用宿主机上Docker的agent服务器执行镜像构建和打包,做到自动化流程内的隔离。

发布策略

容器服务现在支持两种发布方式:

一是rolling update,依次停止老容器,启动新容器,整个过程自动化,无需用户手动操作,适合测试场景,适合于多副本的应用发布;一是蓝绿发布(热部署):不会停止老容器,为新服务启动新容器,需要用户设置路由权重,实现不同版本应用的上线、下线,适合于版本的快速发布,不会停机影响用户。

未来还会支持金丝雀发布(灰度):不会停止老容器,为新服务启动新容器,需要用户设置路由权重,实现不同版本应用的共存,支持A/B测试,适合多方案选择。

关于云栖计算之旅

云栖技术之旅,是由阿里云云栖社区主办,整合了阿里集团内部多个领域顶级技术专家与技术资源,通过线下技术培训的方式,为热爱技术的朋友提供一个交流&分享技术观点、碰撞精彩火花的平台。

第1期精彩回顾:https://yq.aliyun.com/articles/62414

第3期预告(12月23日前端专场):https://yq.aliyun.com/promotion/140

关于阿里云容器服务

阿里云容器服务(Container Service)提供了高性能可伸缩的容器应用管理服务,支持在一组云服务器上通过Docker容器来进行应用生命周期管理。容器服务极大简化了用户对容器管理集群的搭建工作,无缝整合了阿里云虚拟化、存储、网络和安全能力,打造Docker云端最优化的运行环境。容器服务提供了多种应用发布方式和流水线般的持续交付能力,原生支持微服务架构,助力用户无缝上云和跨云管理。

更多深度文章,欢迎关注云栖社区:https://yq.aliyun.com/cloud


推荐阅读
  • 开发笔记:DevOps Gitlab环境部署
    本文由编程笔记#小编为大家整理,主要介绍了DevOpsGitlab环境部署相关的知识,希望对你有一定的参考价值。DevOps介绍 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • Docker系列 七. Docker 安装Jenkins
    Docker系列七.Docker安装JenkinsJenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 文章目录UnsafeDeserialization反序列化漏洞背景认识Java序列化与反序列化用途应用场景Java中的API实现:序列化基础类型参数序列化对象漏洞是怎么来的呢?解决 ... [详细]
  • 执行jenkins最简单的方法就是通过内置的Jetty的servlet容器。您可以执行jenkins是这样的:$java-jarjenkins.war当然,你可能想jenkins的 ... [详细]
  • Ubuntu下怎么安装docker-ce
    这篇文章主要介绍“Ubuntu下怎么安装docker-ce”,在日常操作中,相信很多人在Ubuntu下怎么安装docker-ce问题上存在疑惑,小编查阅了各式资料,整 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了Java的集合及其实现类,包括数据结构、抽象类和具体实现类的关系,详细介绍了List接口及其实现类ArrayList的基本操作和特点。文章通过提供相关参考文档和链接,帮助读者更好地理解和使用Java的集合类。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • Objective C接入Sonar代码扫描
    目录技术方案环境准备扫描器配置项目配置SonarQube配置jenkins接入一些坑技术方案Sonar本身有对OC的代码扫描插件——SonarCFamily,但是是收费的。出于成本 ... [详细]
  • ps:本文转载于:https:www.ibm.comdeveloperworkscnjavaj-lo-git-mangeindex.htmlGit是目前最流行的源代码管理工具。大量 ... [详细]
  • Jenkins编译错误——you have not accepted the license agreements of the following SDK components:
    jenkins自动化编译时,出现如下类似问题。编译错误.png根据提示是因为缺少AndroidSDKPlatform24.需要手动使用sdk命令行安装该库来解决。从android- ... [详细]
author-avatar
黑夜总好漫长Q
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有