zoukankan      html  css  js  c++  java
  • 如何使用容器镜像服务 TCR 轻松实现容器 DevOps

    作者周明,腾讯云容器产品工程师。目前主要负责腾讯云TKE、TCR等产品控制台的相关研发工作。

    概述

    当你使用云厂商提供的容器服务部署业务服务后,是否对交付部署全链路的效率有更高的需求,例如实现基于容器的 DevOps 服务,自动化地完成镜像构建以及集群内容器的镜像版本更新。腾讯云容器镜像服务 TCR 提供云原生应用交付流水线功能,全链路可追踪、可观测、可自主配置,让用户可以轻松实现代码提交变更后,自动触发镜像的构建和推送,并将镜像更新到容器服务 TKE、弹性容器服务 EKS 等平台创建的集群中,完成最终的交付,为企业级用户在腾讯云上提供一体化云原生 DevOps 解决方案。本文主要介绍如何使用容器镜像服务 TCR 轻松实现容器 DevOps。

    容器镜像服务简介

    容器镜像服务(Tencent Container Registry,TCR)是腾讯云提供的安全独享、高性能的容器镜像托管分发服务,支持 Docker 镜像、Helm Chart 存储分发及镜像安全扫描,为企业级客户提供了细颗粒度的访问权限管理和网络访问控制。

    img

    容器DevOps业务流程

    DevOps 是 Development 和 Operations 的组合词,代表着重视「软件开发人员(Dev)」和「IT 运维技术人员(Ops)」之间沟通合作的文化;旨在透过自动化「软件交付」和「架构变更」的流程,使得构建、 测试、发布软件的过程能够更加地快捷、频繁和可靠。TCR 与容器服务 TKE、CODING DevOps 等产品无缝集成,在腾讯云上提供一体化云原生 DevOps 解决方案,容器 DevOps 的基本业务流程如图所示。

    img

    如何使用容器镜像服务轻松实现容器 DevOps

    前提条件

    • 准备 TCR 企业版实例,创建镜像仓库。

      前往实例列表页面,新建企业版实例,关于如何创建可参考文档创建企业版实例,并在生成的实例中创建一个镜像仓库。

    • 准备 TKE 标准集群,并部署容器应用

      前往 容器服务控制台,新建 TKE 标准集群,可参考文档 创建集群

      当前容器服务 TKE 已支持在控制台内选择容器镜像服务 TCR 企业版镜像创建工作负载。同时,TKE 标准集群可安装 TCR 专属插件,实现内网及免密拉取 TCR 企业版内镜像,参考文档 使用 TCR 企业版实例内容器镜像创建工作负载

    • 开通 CODING DevOps 服务。

    场景一:代码变动后自动构建镜像,并触发部署

    操作场景

    支持用户配置流水线,在代码变更后,自动构建镜像,并触发自动部署到容器平台。

    操作步骤

    配置交付流水线
    1. 登录容器镜像服务 TCR 控制台,选择左侧导航栏中的【交付流水线】,在“交付流水线”页面中,单击【新建】。

      img

    2. 在“基本信息”步骤中,配置以下参数,然后单击【下一步:镜像配置】。
      img

      • 流水线名称:设置交付流水线名称。
      • 流水线描述:为交付流水线添加描述信息,创建后可修改。
    3. 在“镜像配置”步骤中,配置以下参数,单击【下一步:应用部署】。
      img

      • 镜像仓库:选择交付流水线关联的镜像仓库,将自动配置镜像构建及推送,用于托管应用部署所需要的镜像。

      • 镜像版本过滤

        :支持对执行交付流水线中镜像的版本进行限制,可以过滤掉不需要执行部署的镜像版本。

        • 直接部署任意版本:推送到镜像仓库的任意版本镜像都会被部署。
        • 仅部署指定名称版本:需指定镜像版本,多个版本可以使用逗号分隔,非指定版本不会部署。
        • 仅部署指定规则版本:需输入正则表达式。
      • 镜像来源:支持平台构建镜像和本地推送镜像。平台构建镜像允许用户关联不同代码托管平台的代码仓库,当代码变动时自动触发交付流水线,完成自动构建、推送镜像以及应用部署;本地推送镜像支持用户在手动推送镜像时,也能触发应用部署。场景一中我们选择平台构建镜像。

      • 代码源、代码仓库:选择用于构建镜像的代码仓库,流水线将拉取该代码仓库内源代码进行编译及构建,首次选择需要授权。目前已支持GitHub、公有GitLab、私有GitLab、码云以及工蜂等代码托管平台。

      • 触发规则

        :镜像构建被自动触发的规则条件。目前支持以下四种场景:

        • 推送到指定分支触发:需指定分支。
        • 推送新标签时触发构建:新建标签并推送时触发。
        • 推送到分支时触发构建:推送至任意分支时触发,无需指定分支。
        • 符合分支或标签规则时构建:需输入正则表达式,例如 ^refs/heads/master$,可匹配 master 分支进行触发。
      • Dockerfile 路径:镜像构建执行的操作基于代码仓库内的 Dockerfile,需指定该 Dockerfile 文件的路径。如不指定,默认为代码仓库根目录下名为 Dockerfile 的文件。

      • 构建目录:镜像构建执行的工作目录,即上下文环境(context),默认为代码仓库的根目录。

      • 版本规则:定义镜像构建生成的镜像名称,即镜像版本(tag)。支持配置自定义前缀,并组合加入“分支/标签”,“更新时间”,“commit号” 三个环境变量。其中,更新时间为执行 docker tag 指令时构建服务的系统时间。

    4. 在“应用部署”步骤中,配置以下参数,单击【确定】。
      img

      • 部署平台:交付流水线同时支持容器服务 TKE,弹性容器服务 EKS 及边缘容器服务 Edge。本文以容器服务 TKE 为例。
      • 部署地域:目标集群所在地域。选择已创建的 TKE 标准集群所在地域。
      • 部署集群:目标集群。选择已创建的 TKE 标准集群。
      • 部署方式:当前仅支持 “更新已有工作负载”。
      • 命名空间:已部署应用所在的命名空间。
      • 工作负载:已部署应用的关联工作负载。
      • Pod容器:已部署应用的工作负载内的 Pod 容器。

    完成以上配置后,可在“交付流水线” 列表页查看新建的流水线。
    img

    更新容器应用

    完成以上配置后,即可在更新应用代码后,自动触发镜像构建,推送及应用更新。

    1. 更新源代码
      更新源代码,并提交至远端代码仓库。
      img

    2. 执行流水线

      源代码推送完成后,如符合镜像配置中镜像构建的触发条件,将触发流水线执行。可点击流水线查看该流水线执行记录,并查看具体步骤进度。

      • Checkout:检出代码。
      • Docker Build:基于镜像构建配置进行镜像构建,并为生成的镜像打上指定规则的Tag,如 v-{tag}-{date}-{commit}。
      • Docker Push:推送镜像,自动推送至关联镜像仓库内。
      • Deploy To TKE:使用最新推送的镜像更新关联工作负载及Pod 内同名镜像。
    3. 查看应用更新状态
      前往容器服务 TKE 控制台,进入上述集群及工作负载详情页,并选择修订历史,可查看应用更新状态。如下图所示,v1版本是一开始手动部署的nginx镜像,流水线执行完成后更新为 v2 版本,使用的是自动构建出来的新的镜像。
      img
      可以直接访问该应用服务,查看是否已更新。通过查看 Servce 暴露到公网的地址,查看结果,可以看到服务已经更新。
      img

    场景二: 本地推送镜像后,自动触发部署

    操作场景

    在某些场景可能不需要使用 TCR 镜像自动构建能力,但又希望可以在推送镜像后能够自动部署到容器平台。TCR 支持用户配置本地推送镜像后,通过触发器的能力,自动触发镜像部署。

    操作步骤

    配置交付流水线

    参考场景一配置新建一条交付流水线,与场景一的区别在“镜像配置”步骤中,将”镜像来源“选择为”本地推送镜像“。

    img

    更新容器应用

    完成配置后,即可在本地使用命令行指令推送镜像,触发自动部署。

    1. 本地推送镜像

      通过快捷指令我们可以登录腾讯云容器镜像服务 Docker Registry 并向 Registry 中推送镜像。例如这里推送一个 nginx 镜像。

      img

    2. 执行流水线
      本地推动镜像完成后,如符合镜像配置中镜像构建的触发条件,将触发流水线执行,由于此时镜像已经准备好,因此流水线只需要执行自动部署。
      img

    3. 查看应用更新状态

      同场景一,我们可以前往容器服务 TKE 控制台,进入上述集群及工作负载详情页,并选择修订历史,可查看应用更新状态,也可直接访问该应用服务,查看是否已更新。

      img

    总结

    本文分两个场景介绍了如何使用容器镜像服务 TCR 实现容器 DevOps。场景一是代码变动后,自动触发镜像构建以及应用部署;场景二是本地推送镜像后自动触发应用部署。想要快速上手使用容器镜像服务 TCR、容器服务 TKE 实践 CD 流程,本文是个很好的参考。

    【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!

  • 相关阅读:
    This counter can increment, decrement or skip ahead by an arbitrary amount
    LUT4/MUXF5/MUXF6 logic : Multiplexer 8:1
    synthesisable VHDL for a fixed ratio frequency divider
    Bucket Brigade FIFO SRL16E ( VHDL )
    srl16e fifo verilog
    DualPort Block RAM with Two Write Ports and Bytewide Write Enable in ReadFirst Mode
    Parametrilayze based on SRL16 shift register FIFO
    stm32 spi sdcard fatfs
    SPI bus master for System09 (2)
    SQLSERVER中的自旋锁
  • 原文地址:https://www.cnblogs.com/tencent-cloud-native/p/14232814.html
Copyright © 2011-2022 走看看