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

概述

DevOps 理念被越来越多的企业采纳,DevOps 是 Development 和 Operations 的组合词,代表着重视“软件开发人员(Dev)”和 “IT 运维技术人员(Ops)”之间沟通合作的文化,旨在透过自动化“软件交付”和“架构变更”的流程,使得构建、测试、发布软件的过程能够更加地快捷、频繁和可靠。在云原生时代,使用 DevOps 思维可实现敏捷开发,本文将介绍和实践专为云原生打造的 TKE 容器 DevOps 服务,实现从代码提交时触发镜像自动构建,镜像构建成功时触发自动部署流程将应用部署、更新到 TKE 集群中的一整套无缝衔接的 Devops 流水线。

TKE 容器 DevOps

简介

TKE 容器 DevOps 是 容器服务 TKE容器镜像服务 TCRCODING DevOps 服务紧密结合,面向容器业务场景,具备自动化代码编译、容器镜像构建、镜像推送及应用部署等功能,为客户提供强大的一站式云原生 DevOps 服务。容器 DevOps 快速入门请参见 TKE 和 Coding 协同业务实现快速迭代

业务流程

TKE 容器 DevOps 服务贯穿了整个应用开发和部署流程的全生命周期管理,实现了从更新代码到应用部署、更新的自动化,业务流程如下图所示:
process



前提条件

已创建 TKE 测试集群,创建过程可参见 部署容器服务 TKE
开通 TCR 服务。并已创建可访问的 TCR 测试实例和生成测试实例访问凭证,TCR 需要开通企业标准版或高级版支持云原生交付工作流,详情请参见 容器镜像服务购买指南。目前 TCR 支持区域请参见 支持地域
已开通 CODING DevOps 服务,并已创建和完善 Coding Devops 团队。如使用子账号进行操作,请使用主账号在 CODING DevOps 控制台 快速创建拥有权限的子用户或参考 子用户权限设置 提前为子账号授予对应实例的操作权限。

操作步骤

TKE 容器 Devops 功能提供了强大的云原生 Devops 服务,本文将介绍 TKE 容器 Devops 如何实现从源码更新到业务发布的整套自动化流程。

访问容器 DevOps

登录容器服务控制台,选择左侧导航栏中的 DevOps,单击立即使用。如下图所示:



配置代码托管

在 Coding 团队主页面创建一个测试项目和测试代码仓库,创建步骤请参见 创建项目并创建代码仓库。关于 Coding 代码托管介绍请参见 代码托管介绍

创建构建计划

1. 登录 Coding DevOps ,选择左侧导航中的 项目,进入项目管理页。
2. 项目管理页中,单击已创建 测试项目 的名称,进入该项目详情页。
3. 在左侧导航栏中选择持续集成 > 构建计划 > 创建构建计划,进入选择构建计划模板页面。
说明
构建计划是持续集成的基本单元,可以通过选择构建计划模板快速创建一个构建计划,详情请参见 快速开始持续集成
4. 选择构建镜像并推送到 TCR 企业版模板快速创建一个构建计划,如下图所示:

根据构建计划模板选择需要检出的代码源和配置 TCR 访问凭证相关环境变量,在右边可查看模板生成的 Jenkinsfile 预览,如下图所示:
说明
Coding DevOps 和 TCR 实例之间内网互通,镜像 push 默认使用内网传输,无需另外配置。


使用构建模板生成的构建项目,也可通过在构建计划详情页中选择项目名称,进入项目详情页后单击设置菜单对构建详情进行自定义配置,构建计划配置页面如下图所示:


基础信息基础配置页面可选择代码源和节点池等基础配置,节点池相关说明请参见 构建节点
流程配置用来配置运行构建任务的环境,相关说明请参见 构建环境
触发规则用来配置构建计划的触发规则,可支持通过多种方式来触发构建计划,相关说明请参见 触发规则
变量与缓存环境变量与缓存配置,相关说明请参见 环境变量缓存目录
通知提醒构建计划完成时可向指定的 Coding 团队成员发送通知提醒。
5. 单击确认即可完成创建构建计划。
6. (可选)在项目配置 > 开发者选项 > WebHook 中选择新建 WebHook,将事件通知推送到企业微信等即时通信平台,详情请参见 WebHook绑定企业微信群机器人。更多关于 Coding 持续集成的介绍请参见 持续集成介绍

创建持续部署

1. 登录 Coding DevOps,选择左侧导航中的 项目,进入项目管理页。
2. 项目管理页中,单击已创建 测试项目 的名称,进入该项目详情页。
3. 在左侧导航栏中选择持续部署 > Kubernetes,单击快速体验。如下图所示:



4. 部署控制台页面,自定义选择 需要配置的云账号 类型即可继续进行 配置应用和流程关联项目和应用开始部署 等后续步骤。

配置云账号

如何选择云账号类型请参见 云账号 官方文档,添加配置部署云上资源的访问云账号信息,可以选择腾讯云 TKE 或者 Kubernetes 类型的云账号,输入相关认证配置添加云账号,本文以选择 Kubernetes 为例介绍如何配置云账号。
1. 基于 Kubernetes 的持续部署页面,单击立即配置
2. 云账号管理页面,单击右侧的绑定云账号
3. 绑定云账号页面,选择 Kubernetes,其他内容按需选择。如下图所示:


4. 单击确定即可完成绑定云账号。

配置应用和流程

关于 Coding 应用与项目相关说明请参见 应用与项目流程配置,本文将介绍配置应用和流程过程中的关键配置项。
1. 在创建应用时,需要勾选 Kubernetes(TKE) 部署方式,如下图所示:


2. 在新建的应用中创建部署流程时,选择 Kubernetes 流程模板,再根据实际需要选择模板流程,本文以“部署 Deployment 和 Service 到 Kubernetes 集群”流程为例。如下图所示:


3. 部署流程中配置部署流程时,启动所需制品选项关联之前的持续集成环节生成的 TCR 仓库镜像制品。如下图所示:


4. 使用自动触发器绑定 TCR 仓库镜像制品,当有新版本镜像构建成功时,将自动触发部署流程。配置方式如下图所示:


5. 配置部署 Deployment部署 Service部署阶段,两个阶段的配置方式类似,选择添加有部署权限的 云账号 和填写自定义的 Manifest,即自定义部署 YAML 模板。


本文将以“手动配置 TKE 拉取 TCR 私有仓库镜像的访问凭证” 的方式为例,自定义 Deployment YAML。示例如下:
注意
本示例仅使用简单的 Deployment YAML 部署到 Kubernetes 集群,使用了默认的滚动部署(RollingUpdate)更新策略。实际上,可以借助 Nginx-ingress / Istio 等工具配置更高级的更新策略,如蓝绿发布、金丝雀、A / B 测试等,具体使用方法可参见 蓝绿发布Nginx-ingress 实现自动化灰度发布持续部署 + TKE Mesh 灰度发布实践
apiVersion: apps/v1
kind: Deployment
metadata:
name: devops-app
spec:
replicas: 2
selector:
matchLabels:
app: devops-app
template:
metadata:
labels:
app: devops-app
spec:
containers:
- image: xxx-test.tencentcloudcr.com/xxx-test/jokey-test # 示例镜像地址
name: devops-app
ports:
- containerPort: 5000
imagePullSecrets: # 私有仓库访问凭证配置
- name: tcr-secret # 访问凭证 secret

其中,spec.template.spec.containers.*.image 的镜像地址字段包含在 Coding 的转换匹配规则中,关于转换匹配规则的说明可参见 在 manifest 中绑定制品
说明
TKE 拉取 TCR 私有仓库镜像有两种方式:
在 TCR 支持区域内可配置 TKE 免密拉取 TCR 容器镜像,关于 TCR 支持区域请参见 支持地域,关于如何配置可参见 TKE 集群使用 TCR 插件内网免密拉取容器镜像
手动配置 TKE 拉取 TCR 私有仓库镜像的访问凭证,配置方式可参见 TKE 配置私有仓库访问示例
自定义的 Service Manifest YAML 示例:
apiVersion: v1
kind: Service
metadata:
labels:
app: devops-svc
name: devops-svc
spec:
ports:
- port: 5000
protocol: TCP
selector:
app: devops-app
6. (可选)为部署流程的每个阶段配置自定义事件通知,可方便快捷获知部署流程执行情况。本文以配置“企业微信”通知方式,获取企业微信 Webbook 机器人链接的方法可参见 创建企业微信群机器人

关联项目和应用

关联项目和应用配置可参见 项目和应用关联

开始部署

提单发布使用和配置请参见 新建发布单。更多关于 Coding 持续部署的详细介绍请参见 持续部署介绍

测试验证

在项目代码文件中修改添加如下图所示的 v2 API 代码后提交 master 分支:

由于持续集成中的构建计划使用了 “代码更新时自动执行” 的事件触发配置,了解相关触发配置请参见 触发规则。当提交修改的代码时,会自动触发关联的构建计划执行,如下图所示:
image-20201028211045329

如果为持续集成配置企业微信 Webhook 通知,企业微信也会收到相应的即时通知消息,如下图所示:

当构建计划生成 Docker 镜像制品时,又会自动触发关联的持续部署流程,将新的镜像应用更新到 TKE 集群中,如下图所示:
image-20201028211358719

如果部署流程有配置企业微信通知的话,当部署流程任务完成时,会收到对应的企业微信部署完成通知,如下图所示:

此时,可以在 TKE 中看到已经成功更新了工作负载,如下图所示:
image-20201028214913813

从测试验证结果可以看出,我们在 TKE 中实现了从源码更新到业务发布的整套 DevOps 流程。