有奖捉虫:云通信与企业服务文档专题,速来> HOT
文档中心 > 容器服务 > 最佳实践 > DevOps > 使用 CODING 在 TKE 中完整实现容器 DevOps

敏捷开发及 DevOps

在互联网行业,敏捷开发及 DevOps 理念被越来越多的企业采纳,其本质作为一种协作文化,均为打破壁垒并增加成员共同责任感,同时还减少了交接,提高向客户交付的速度。DevOps 在企业中不仅落地了流程化的工具(例如 CI,CD及容器),还整体改造了开发及团队协作的流程。对于中小企业来说,选择 CICD 工具尤其重要,使用成熟的工具及容器技术,不仅为企业节省成本,并获取了快速迭代和快速应对业务变化的能力。CI/CD 与敏捷开发、DevOps 的关系如下图所示:




操作场景

腾讯云容器服务(TKE)基于原生 Kubernetes 提供以容器为核心的解决方案,解决用户开发、测试及运维过程的环境问题,帮助用户降低成本,提高效率。实践 DevOps 理念需要用到许多工具与底层服务,且完成闭环链路需要长期投入及搭建复杂工具链体系,会消耗巨量时间和资源,甚至影响研发能效与交付能效、耽误业务的发展时机。而 Coding 与云端优势相结合,提供了统一协作平台及研发工具链。在 Coding 一体化研发效能平台上运行工作流,数据将会演化为项目实施过程中所积累的团队知识,沉淀为集体经验,帮助团队不断自我迭代更新。使用 Coding 还能够实施软件研发全生命周期管理,摆脱复杂的基础设施运维托管。Coding 目前无缝对接 TKE 服务,本文档介绍在 Coding 中如何实现 CICD,并将服务部署到 TKE 集群中。

基本概念

CI(Continuous Integration)

持续集成(Continuous Integration)简称 CI。在 CI 环境中,当开发者频繁地对代码进行更改合并,系统就会自动构建应用并运行不同级别的自动化测试来验证更改,以确保更改内容不会对应用造成破坏。测试内容涵盖了从类和函数到构成整个应用的不同模块。如果自动化测试发现新代码和现有代码之间存在冲突,CI 可以轻松且快速地修复错误。如下图所示:



CD(Continuous Delivery 和 Continuous Deployment)

说明
持续交付与持续部署的区别:持续交付是一种能力,持续部署是一种方式。

Continuous Delivery

持续交付(Continuous Delivery)简称 CD。在完成 CI 的流程后,持续交付支持以下操作:
自动将已经验证的代码发布到存储库。
预生产环境部署。
交付给质量团队或用户。
具体流程如下图所示:



Continuous Deployment

持续部署(Continuous Deployment)简称 CD,是 CICD 的最后一个阶段。持续部署将持续交付在内的所有变更自动部署到生产环境。一般情况下,出于业务考虑可以选择不部署,如需部署必须先实施持续交付。具体流程如下图所示:



CI/CD 工具

目前存在两种类型的 CI/CD 工具:On-PremiseHosted 工具类 SaaS 服务

On-Premise

On-Premise 需要用户搭建服务器来运行 CI/CD 工具。

Hosted 工具类 SaaS 服务

Hosted 工具类 SaaS 服务无需用户搭建服务器。 Hosted 的优势如下:
维护成本低:运行环境由服务托管,维护成本为零。而使用 On-Premise 工具,会花大量时间部署和维护服务器。
干净的运行环境:使用 Python 作为项目的开发语言时,需要对不同的 Python 版本(2.7、3.6、3.7)进行持续集成,Hosted CI/CD 每次可创建一个新的运行环境,可随时调整版本。
预装软件和运行时:项目在做持续集成时,需要依赖不同的运行时和工具链,Hosted CI/CD Service 已预装大量常用的软件和运行时,缩减了搭建环境的时间。

Coding

Coding 是实现 CICD 流程的工具。Coding 提供整套的研发流程管理系统(包含完整的 CICD 流程)。从需求提交到产品迭代,产品设计、代码管理、自动化测试、持续集成、构建物管理及持续部署,整套流程均在 Coding 完成。使用 Coding 可以实现流水线标准化作业及自动化版本记录,从而降低企业研发管理难度,提升研发效率。
Coding 同时支持 Hosted 模式和 On-Premise 模式(支持私有化部署)的 CICD 工具
Coding 支持 Jenkins、代码管理(也同时支持 github,gitlab)、敏捷开发管理以及支持 Kubernetes 容器化部署,无缝支持容器服务 TKE。
中小企业可使用 Hosted 模式来快速应对产品交付,实现业务快速迭代。

操作步骤

开通 DevOps 服务

注意
该步骤以初次使用 DevOps 服务的主账号用户为例,如已开通服务则可跳过此步骤,进行 创建项目并创建代码仓库
1. 登录容器服务控制台,选择左侧导航栏中的 DevOps
2. 进入容器 DevOps 页面。如下图所示:


3. 选择开通服务 > 前往访问管理,进入角色管理页面。如下图所示:


4. 单击同意授权,授权成功即跳转至开通服务页面。如下图所示:


5. 完善团队信息后单击确定,即可开通 DevOps 服务。

创建项目并创建代码仓库

1. 登录容器服务控制台,选择左侧导航栏中的DevOps
2. 进入容器 DevOps 页面,单击立即使用,跳转至 Coding DevOps 页面。
3. 在左侧导航中选择项目,进入项目详情页。
4. 在项目详情页,单击页面右上角 +创建项目。如下图所示:


5. 选择项目模板步骤中,单击 DevOps 项目进入下一页。
6. 填写项目基本信息步骤中,自定义设置项目基本信息。本次创建项目名称以 coding-test 为例。如下图所示:



7. 单击完成创建即可创建项目,项目创建完成即跳转至该项目概览页。
8. 单击该概览页左侧导航栏中代码仓库,进入代码仓库详情页。如下图所示:


9. 单击新建代码仓库,自定义设置仓库基本信息。本次创建代码仓库名称以 coding-test 为例。如下图所示:



10. 单击确定即可完成创建代码仓库。

创建制品库

软件制品是指由源码编译打包生成的二进制文件,不同的开发语言对应着不同格式的二进制文件,通常可以直接在服务器运行。

创建流程

1. 登录 Coding DevOps,选择左侧导航中的 项目,进入项目管理页。
2. 项目管理页中,单击需要创建制品库的项目名称,进入该项目详情页。
3. 在左侧导航栏中选择制品库 > 创建仓库,进入新建仓库页面。
4. 新建仓库页面,根据实际需求进行关键信息自定义设置。如下图所示:



5. 单击确认即可完成仓库创建,并自动跳转至仓库详情页。
6. 单击使用访问令牌生成配置,身份验证通过之后进行配置。 如下图所示:
注意
在设置好访问令牌后,需自行记录访问令牌,用于后续 TKE 拉取镜像。




持续集成

注意
在执行构建计划前,需要执行以下命令,在 TKE 集群中把 Coding 的 docker registry 账号添加到集群中用来作为 pull 镜像授权。
kubectl create secret docker-registry coding --docker-server=coding的registry地址 --docker-username=用户名 --docker-password=密码 --docker-email=邮箱地址
1. 登录 Coding DevOps ,选择左侧导航中的 项目,进入项目管理页。
2. 项目管理页中,单击需要创建制品库的项目名称,进入该项目详情页。
3. 在左侧导航栏中选择持续集成 > 构建计划选择新建构建计划。
4. 根据实际情况选择构建计划模板,并确认模板默认设置信息,单击确认即可完成。本文以选择 Golang+Gin+Docker 模板为例,进行 go 项目演示。以下视频将为您介绍具体的操作步骤:


持续部署

1. 登录 Coding DevOps ,选择左侧导航中的 项目,进入项目管理页。
2. 项目管理页中,单击需要创建制品库的项目名称,进入该项目详情页。
3. 在左侧导航栏中选择持续部署 > Kubernetes,在快速发布配置中添加新集群。如下图所示:



4. 部署控制台页面,自定义选择需要配置的云账号类型即可继续进行配置应用和流程、关联项目和应用及开始部署等后续步骤。本文以配置“腾讯云 TKE”类型账号为例,以下视频将为您介绍具体的操作步骤:


更多信息

本文简单介绍了 Coding 基于 TKE 实现 CICD 的基本使用,详细内容请参阅 Coding 官网文档