用户指南

最佳实践

API 文档

文档中心 > 容器服务 > 最佳实践 > DevOps > 使用 CODING 在 TKE 中完整实现容器 DevOps

使用 CODING 在 TKE 中完整实现容器 DevOps

最近更新时间:2020-09-29 15:14:27

敏捷开发及 DevOps

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

操作场景

腾讯云容器服务(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)简称 CD。在完成 CI 的流程后,持续交付支持以下操作:

    • 自动将已经验证的代码发布到存储库。
    • 预生产环境部署。
    • 交付给质量团队或用户。

    具体流程如下图所示:

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

CI/CD 工具

目前存在以下两种类型的 CI/CD 工具:

  • On-Premise:需要用户搭建服务器来运行 CI/CD 工具。
  • 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”页面。如下图所示:
  3. 单击【立即使用】,跳转至【Coding DevOps】页面。
  4. 在左侧导航中选择【项目】,进入项目详情页。
  5. 在项目详情页,单击页面右上角【+创建项目】。如下图所示:
  6. 在“选择项目模板”步骤中,单击 “DevOps 项目”进入下一页。
  7. 在“填写项目基本信息”步骤中,自定义设置项目基本信息。本次创建项目名称以 coding-test 为例。如下图所示:
  8. 单击【完成创建】即可创建项目,项目创建完成即跳转至该项目概览页。
  9. 单击该概览页左侧导航栏中【代码仓库】,进入代码仓库详情页。如下图所示:
  10. 单击【新建代码仓库】,自定义设置仓库基本信息。本次创建代码仓库名称以 coding-test 为例。如下图所示:
  11. 单击【确定】即可完成创建代码仓库。

创建制品库

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

创建流程

  1. 登录 Coding DevOps,选择左侧导航中的【项目】,进入项目管理页。
  2. 在“项目管理页”中,单击需要创建制品库的项目名称,进入该项目详情页。
  3. 在左侧导航栏中选择【制品库】>【创建仓库】,进入【新建仓库】页面。如下图所示:
    zhipin1.png
  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 官网文档

目录