BpFile(id=168, bpId=74, name=基于ASK的弹性低成本CI/CD系统, author=null, keyword=CI,CD,弹性,低成本, description=构建一套高可用、弹性伸缩、低成本的自动化 CI/CD 系统,提高软件交付效率和质量。, position=null, ossUrl=bp-ZILWDSURVAO14CB5.pdf, tags=null, level=null, tagList=null, products=null, productList=null, hotspot=null, oneClick=1, createTime=null, modifiedTime=null, timeConsuming=null, status=1, pdfDescription=
场景描述
基于阿里云ECI的Serverless 阿里云
Kubernetes服务ASK以
及NAS存储可以帮助用户实现服务高可
用、弹性伸缩、资源扩展性好、低成本的
自动化的CI/CD系统。
方案优势
1. 高可用服务
2. 资源弹性伸缩、资源合理利用
3. 资源可扩展性高
解决问题
1.集群Master节点单点故障。
2.集群资源利用率低,资源有浪费。
3.集群资源可扩展性差。
产品列表
⚫容器服务Kubernetes版
⚫容器镜像服务
⚫文件存储NAS
⚫专有网络VPC
⚫弹性容器实例ECI
, templateId=9FTL87SBKJ3ZSCUP, freetry=null, visitTime=null, visitCount=null, video_url=null, buttonName=null, buttonUrl=null, targetId=9FTL87SBKJ3ZSCUP, partner=null, partnerUrl=null, partnerLogo=null, cooperation=, cooperationList=null)
1
基于 ASK的弹性低成本 CI/CD 最佳实践
业务架构 场景描述
基于阿里云 ECI 的 Serverless 阿里云
Kubernetes服务(ASK)以及 NAS存储
可以帮助用户实现服务高可用、弹性伸
缩、资源扩展性好、低成本的自动化的
CI/CD系统。
方案优势
1. 高可用服务
2. 资源弹性伸缩、资源合理利用
3. 资源可扩展性高
解决问题
1. 集群 Master节点单点故障。
2. 集群资源利用率低,资源有浪费。
3. 集群资源可扩展性差。
产品列表
最佳实践频道 阿里云最佳实践技术分享群
⚫ 容器服务 Kubernetes版
⚫ 容器镜像服务
⚫ 文件存储 NAS
⚫ 专有网络 VPC
⚫ 弹性容器实例 ECI
2云服务器 ECS(产品名称) 文档模板(手册名称)/文档版本信息
阿里云
企业上云实践
基于 ASK的弹性
低成本CI/CD系统最佳实践
产品版本:V1.2(软件版本)
文档版本:20210301(发布日期)
文档版本:20210301(发布日期) 1
3基于 ASK的弹性低成本CI/CD系统 文档版本信息
文档版本信息
文本信息
属性 内容
文档名称 基于 ASK的弹性低成本 CI/CD系统最佳实践
文档编号 074
文档版本 V1.3
版本日期 2020-01-20
文档状态 外部发布
制作人 明誉
审阅人 -
文档变更记录
版本编号 日期 作者 审核人 说明
V1.0 2019/07/09 明誉 - 创建
V1.1 2019/07/24 明誉 云滴 按照验证意见进行文档修改
V1.2 2019/08/14 明誉 筱晖 文档优化
V1.3 2020/01/20 明誉 明誉 根据 ASK的最新产品情况
进行了更新
V1.4 2021/03/01 川知 明誉 文档整理优化
文档版本:20210301(发布日期) I
4基于 ASK的弹性低成本CI/CD系统 前言
前言
概述
本实践结合基于 ECI的阿里云 Serverless Kubernetes(ASK)服务以及 NAS存储服务为
用户提供高可用、弹性伸缩、扩展性好、低成本的自动化 CI/CD系统,可以为用户带来
如下价值:
⚫ 服务高可用,避免由于 Master节点单点故障导致的 CI/CD流程不可用。
⚫ 弹性伸缩,合理利用资源,运行 Job和 Job完成以后自动构建 Jenkins Slave资源
创建和释放。
⚫ 资源合理利用,动态分配 Slave空闲节点,避免出现由于节点资源限制导致的 Job
排队等待情况。
⚫ 扩展性好,集群资源严重不足时,可快速添加节点资源到集群中。
应用范围
⚫ 需要使用 Jenkins构建自身 CI/CD系统的用户。
⚫ 对 CI/CD自动构建资源弹性、运维简便以及成本控制有要求的用户。
名词解释
⚫ CI/CD:持续集成/持续交付,持续集成(CI)是源代码变更后自动检测、拉取、
构建单元测试的过程;持续交付(CD)会自动监测源代码变更,并通过构建、测
试、打包和相关操作运行它们,生成可部署的版本。
⚫ ECI:弹性容器实例,是敏捷安全的 Serverless 容器运行服务,用户无需管理底
层服务器,只需要提供打包好的镜像,即可运行容器,并仅为容器实际运行消耗
的资源付费,通过 Virtual Kubelet,ECI能够无缝对接 Kubernetes。
⚫ Serverless Kubernetes:阿里云 Serverless Kubernetes可以让用户无需管理和维
护集群与服务器,即可快速创建 Kubernetes容器应用,并且根据应用实际使用的
CPU和内存资源量进行按需付费,Serverless Kubernetes集群中 Pod基于 ECI
创建,用户可以专注于设计和构建应用程序,而不是管理运行应用程序的基础设
施。
⚫ docker-in-docker:docker-in-docker简单来说,允许在 docker里面运行 docker,
例如大部分应用场景在 CI系统容器化后,需要在 CI系统内构建容器镜像,例如
文档版本:20210301(发布日期) III
5基于 ASK的弹性低成本CI/CD系统 前言
Jenkins对接 Kubernetes然后 Jenkins-slave以 Kubernetes内的 Pod运行实现动
态创建和删除,在这种场景下需要构建镜像时,那么就需要 Jenkins-slave能支持
docker-in-docker的方式
⚫ Kaniko:Google开源的工具,可以不依赖 docker在用户态执行 docker的命令,
kaniko可以支持在 docker-in-docker方式下 Pod可以不需要 privileged权限就可
以构建镜像,具体可以参考:
https://docs.gitlab.com/ee/ci/docker/using_kaniko.html
⚫ Jenkinsfile:Jenkins Pipeline(或简称为“Pipeline”)是一套插件,将持续交付的
实现和实施集成到 Jenkins中,Jenkins Pipeline 提供了一套可扩展的工具,用于
将“简单到复杂”的交付流程实现为“持续交付即代码”。Jenkins Pipeline的定
义通常被写入到一个文本文件中(称为 Jenkinsfile)中,该文件可以被放入项目
的源代码控制库中。
文档版本:20210301(发布日期) IV
6基于 ASK的弹性低成本CI/CD系统 最佳实践描述
最佳实践描述
概述
目前大多数公司都会采用 Jenkins集群来搭建符合应用开发发布需求的 CI/CD系统,
客户需要构建灵活高效低成本的 CI/CD系统,满足服务高可用、弹性伸缩合理利用资
源、集群资源扩展性好等需求,基于这些需求,基于阿里云 ECI的 Serverless 阿里云
Kubernetes服务(ASK)以及 NAS存储可以帮助用户实现服务高可用、弹性伸缩、资
源扩展性好、低成本的自动化 CI/CD系统。
场景描述
客户业务场景
⚫ 基于 Jenkins构建自动化 CI/CD集群系统
⚫ 集群资源合理利用不浪费,控制集群资源成本
⚫ 集群高可用
⚫ 集群资源快速弹性伸缩
遇到的痛点
⚫ Master节点单点故障
⚫ 集群维护运维成本高
⚫ 集群资源分配不均衡
⚫ 集群资源有浪费
⚫ 集群资源无法快速弹性伸缩
文档版本:20210301(发布日期) V
7基于 ASK的弹性低成本CI/CD系统 最佳实践描述
方案架构和优势
⚫ 方案架构
⚫ 方案优势
✓ 服务高可用,不会出现 Master节点单点故障导致集群流程不可用
✓ 弹性伸缩,合理利用资源,每次运行 Job时,自动构建 Jenkins Slave,Job完
成以后,Slave自动注销并删除容器,资源自动释放,节省成本
✓ 资源合理利用,动态分配 Slave到空闲节点,降低出现由于节点资源限制的 Job
排队等待情况
✓ 扩展性好,集群资源严重不足时,可以快速添加节点到集群中,降低集群资源
不足导致 Job排队等待情况
文档版本:20210301(发布日期) VI
8基于 ASK的弹性低成本CI/CD系统 目录
目录
文档版本信息 .............................................................................................................................................................. I
法律声明 ..................................................................................................................................................................... II
前言 ............................................................................................................................................................................ III
最佳实践描述 ............................................................................................................................................................. V
目录 ........................................................................................................................................................................... VII
前置条件 ..................................................................................................................................................................... 1
方案背景 ..................................................................................................................................................................... 2
1. 基于 Serverless Kubernetes的 Jenkins环境部署 ................................................................................................. 3
1.1. 创建 Serverless Kubernetes集群 ........................................................................................................ 3
1.2. 2部署 Jenkins环境 ............................................................................................................................. 7
2. CI/CD流水线应用部署模拟 ............................................................................................................................. 27
2.1. 添加全局凭据 ................................................................................................................................... 27
2.2. 创建私有镜像仓库 ........................................................................................................................... 31
2.3. 创建镜像仓库权限设置 ................................................................................................................... 35
2.4 构建 demo-pipeline部署应用 ................................................................................................................... 42
文档版本:20210301(发布日期) VII