RDC容器构建和部署服务新功能上线

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 通过RDC和容器服务的集成,很好的解决了从代码提交到发布上线,及多环境流水线部署等问题

扫描上述二维码或点我直达 免费领!

容器服务

阿里云容器服务提供了从容器构建到部署的服务。再此基础之上还提供了一系列的阿里云其它服务的集成和扩展,比如监控、日志、负载均衡等。

Devops解决方案

先探讨一下我们期望的Devops研发流程是什么样子。

Devops需求

对于一个应用A(非容器服务中的应用,而是RDC中的应用的概念),会考虑下面的点:

  1. 在进行镜像构建时,我希望运行测试;对于Java之类的编译型语言,我还需要打包。但我不希望把运行测试和进行构建的依赖(比如maven),放入镜像中。目前容器服务提供的构建服务,仅支持docker build命令,因此无法在镜像构建之外再做上述的工作。
  2. 多套环境的需求,比如testingstagingproduction三个环境。容器服务本身并没有环境的概念。一种可能的方式是创建三个集群,分别对应上述的三个环境。但是这个环境是集群级别的,而不是服务级别的(通常一次发布是更新一个服务)。
  3. 对于正常的开发流程(hot fix另说)而言,我希望某个镜像先上testing,验证通过之后上staging,再验证通过之后上production。需要有一个CD流水线来现实化这个过程。
  4. 如果发布出了问题,我也希望可以快速的把某个服务回滚到之前的版本。容器服务没有回滚的概念,只有变更应用配置的概念。也就是说,用户需要记得(或者通过操作日志查询)上一次发布的镜像版本是什么,然后通过变更应用配置的入口,进行操作。
  5. 我希望在不同环境使用同一个镜像,通过环境变量来区分不同的环境。容器服务是支持的,详见查看服务详情中的配置部分

可以看到对于上述的点,单用容器服务,有些无法很好的解决。下面看看结合了RDC之后是如何解决这些问题的:

基于RDC和容器服务的Devops模式

创建应用

创建或者加入到企业之后,可以创建应用

为了满足Devops需求中的第四点,目前需要选择自由模式Git Flow模式分支模式后续也会支持。
create_container_app

发布流水线

创建好应用,进入发布页面后,可以看到RDC预置了三个环境(日常,预发,部署),并且在正常的开发流程中,每次代码变更需要依次经过这三个环境。在这个流水线中,可以在独立的环境中进行软件包构建及单元测试等。

第一个stage(版本制作),将三个环境的包和镜像都打出来。目前还不支持多个环境打一个镜像,后续RDC会支持。不过可以通过配置让三个环境的打包方式一模一样,从而达到多个镜像,但内容相同的效果。
CD_pipeline

RDC和容器服务的概念映射

RDC中有应用和环境的概念,容器服务中有集群、应用和服务的概念。这里明确一下它们之间的对应关系。

容器服务中的集群和服务在RDC中没有对应概念。

RDC中的应用(后面均称为RDC应用),是一个可以独立提供服务的应用程序及其相关信息的结合。“独立提供服务的应用”这个概念与容器服务中的服务相对应,但又不是完全匹配,事实上和容器服务的一个服务对应的是RDC中的一个环境。在RDC中这种关联关系是通过环境的部署配置完成的。如图:

env_mapping
更多信息,详见容器构建和部署中的部署配置

回滚

在流水线的右上角有一个回滚按钮,点击之后,就可以针对特定的环境进行回滚。至于该环境具体对应到哪个集群的哪个应用的哪个服务,只需要一次性配置好,之后就不需要关心了,只关注container-test-rdc这个RDC应用的不同环境的发布即可。RDC会记住某个环境的某次发布所对应的镜像地址是什么,并在回滚时,自动替换掉模板中对应服务的镜像地址,进行一次重新部署。

基于RDC和容器服务的Devops模式的一些限制

可以看到,通过RDC和容器服务的集成,很好的解决了从代码提交到发布上线,及多环境流水线部署等问题。但目前还存在一些局限,这些局限会很快解决掉。

  1. 对于发布,只支持普通发布,不支持蓝绿发布。
  2. 对于应用,只支持通过模板创建的应用,不支持通过镜像创建的应用。
  3. 不支持多个环境打一个镜像。

其它Devops方案

基于容器 HUB 的持续交付和基于 Jenkins 的持续交付。

查看详细容器构建和部署详细操作

作者:阿里云RDC的持续交付技术专家 崔力强(怀虎)

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
5月前
|
缓存 资源调度 Kubernetes
阿里云云效产品使用合集之如何将两个独立的代码仓库构建并部署到同一个容器内
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
8月前
|
运维 前端开发 Devops
云效产品使用报错问题之流水线打包docker镜像时报网络代理有问题如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
8月前
|
Java 关系型数据库 MySQL
部署和发布
部署和发布
47 0
|
8月前
|
Java API Go
Rainbond v5.17 版本发布,统一管理离线镜像和私有仓库
为了更好地应对离线场景,提升私有仓库镜像部署体验。Rainbond v5.17 版本支持上传镜像包和使用本地镜像创建组件。同时对于私有镜像的部署也进行了优化,通过统一配置私有镜像仓库。用户无需重复输入账号密码,即可快速部署私有镜像。
|
Kubernetes jenkins 测试技术
【Kubernetes的DevOps自动化,Jenkins上的Pipeline实现自动化构建、测试、部署、发布以及Bookinginfo实例的部署灰度发布故障注入流量】
【Kubernetes的DevOps自动化,Jenkins上的Pipeline实现自动化构建、测试、部署、发布以及Bookinginfo实例的部署灰度发布故障注入流量】
287 1
|
人工智能 运维 Kubernetes
阿里云 Serverless 容器服务全面升级:新增组件全托管、AI 镜像秒级拉取能力
阿里云 Serverless 容器服务全面升级:新增组件全托管、AI 镜像秒级拉取能力
|
存储 关系型数据库 MySQL
rancher服务部署之DevOps流水线(一)—基础数据库服务部署及rancher相关配置私服信息
rancher服务部署之DevOps流水线(一)—基础数据库服务部署及rancher相关配置私服信息
|
存储 Kubernetes jenkins
Serverless Kubernetes容器服务中快速部署jenkins环境及执行流水线构建
本文主要演示如何在阿里云Serverless Kubernetes服务上快速搭建jenkins持续集成环境,并基于提供的示例应用快速完成应用源码编译、镜像构建和推送以及应用部署的流水线。
383 0
Serverless Kubernetes容器服务中快速部署jenkins环境及执行流水线构建
|
存储 运维 Kubernetes
使用Harbor作为Rainbond默认容器镜像仓库,扩展Rainbond镜像管理能力
Rainbond是一体化的云原生应用管理平台,它提供“以应用为中心”的抽象,使用者不需要学习K8s和容器,平台将K8s和容器封装在内部,这种封装方式能极大提高使用的易用性和安装的便利性,但封装的内部组件如何替换是一个问题,本文将讲解如何使用Harbor替换掉Rainbond原有的默认镜像仓库。
使用Harbor作为Rainbond默认容器镜像仓库,扩展Rainbond镜像管理能力
|
运维 Cloud Native 安全
容器镜像服务 联手 IDE 插件,实现一键部署、持续集成与交付
今天将跟大家分享支撑双十一的容器镜像服务 ACR,以及它是如何实现搭配 IDE 插件和 CICD/云原生应用交付链来实现一键部署与持续集成。
651 0
容器镜像服务 联手 IDE 插件,实现一键部署、持续集成与交付