IDC

容器服务 使用 CODING 在 TKE 中快速实现容器 DevOps - 最佳实践

作者:admin 2021-09-17 我要评论

概述 DevOps 理念被越来越多的企业采纳,DevOps 是 Development 和 Operations 的组合词,代表着重视“软件开发人员(Dev)”和 “IT 运维技术人员(Ops)”之间...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

概述

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

TKE 容器 DevOps

简介

TKE 容器 DevOps 是 容器服务 TKE、容器镜像服务 TCR 和 CODING 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. (可选)为部署流程的每个阶段配置自定义事件通知,可方便快捷获知部署流程执行情况。本文以配置“企业微信”通知方式,获取企业微信 Webook 机器人链接的方法可参见 创建企业微信群机器人。

关联项目和应用

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

开始部署

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

测试验证

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

由于【持续集成】中的构建计划使用了 “代码更新时自动执行” 的事件触发配置,了解相关触发配置请参见 触发规则。当提交修改的代码时,会自动触发关联的构建计划执行,如下图所示:
image-20201028211045329
如果为持续集成配置企业微信 Webhook 通知,企业微信也会收到相应的即时通知消息,如下图所示:

当构建计划生成 Docker 镜像制品时,又会自动触发关联的【持续部署】流程,将新的镜像应用更新到 TKE 集群中,如下图所示:
image-20201028211358719
如果部署流程有配置企业微信通知的话,当部署流程任务完成时,会收到对应的企业微信部署完成通知,如下图所示:

此时,可以在 TKE 中看到已经成功更新了工作负载,如下图所示:
image-20201028214913813
从测试验证结果可以看出,我们在 TKE 中实现了从源码更新到业务发布的整套 DevOps 流程。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
腾讯云代理商
精彩导读
海外云服务器
热门资讯
腾讯云代理商