做者周明,腾讯云容器产品工程师。目前主要负责腾讯云TKE、TCR等产品控制台的相关研发工做。nginx
当你使用云厂商提供的容器服务部署业务服务后,是否对交付部署全链路的效率有更高的需求,例如实现基于容器的 DevOps 服务,自动化地完成镜像构建以及集群内容器的镜像版本更新。腾讯云容器镜像服务 TCR 提供云原生应用交付流水线功能,全链路可追踪、可观测、可自主配置,让用户能够轻松实现代码提交变动后,自动触发镜像的构建和推送,并将镜像更新到容器服务 TKE、弹性容器服务 EKS 等平台建立的集群中,完成最终的交付,为企业级用户在腾讯云上提供一体化云原生 DevOps 解决方案。本文主要介绍如何使用容器镜像服务 TCR 轻松实现容器 DevOps。正则表达式
容器镜像服务(Tencent Container Registry,TCR)是腾讯云提供的安全独享、高性能的容器镜像托管分发服务,支持 Docker 镜像、Helm Chart 存储分发及镜像安全扫描,为企业级客户提供了细颗粒度的访问权限管理和网络访问控制。docker
DevOps 是 Development 和 Operations 的组合词,表明着重视「软件开发人员(Dev)」和「IT 运维技术人员(Ops)」之间沟通合做的文化;旨在透过自动化「软件交付」和「架构变动」的流程,使得构建、 测试、发布软件的过程可以更加地快捷、频繁和可靠。TCR 与容器服务 TKE、CODING DevOps 等产品无缝集成,在腾讯云上提供一体化云原生 DevOps 解决方案,容器 DevOps 的基本业务流程如图所示。安全
准备 TCR 企业版实例,建立镜像仓库。网络
前往实例列表页面,新建企业版实例,关于如何建立可参考文档建立企业版实例,并在生成的实例中建立一个镜像仓库。架构
准备 TKE 标准集群,并部署容器应用运维
前往 容器服务控制台,新建 TKE 标准集群,可参考文档 建立集群。性能
当前容器服务 TKE 已支持在控制台内选择容器镜像服务 TCR 企业版镜像建立工做负载。同时,TKE 标准集群可安装 TCR 专属插件,实现内网及免密拉取 TCR 企业版内镜像,参考文档 使用 TCR 企业版实例内容器镜像建立工做负载。测试
开通 CODING DevOps 服务。ui
支持用户配置流水线,在代码变动后,自动构建镜像,并触发自动部署到容器平台。
登陆容器镜像服务 TCR 控制台,选择左侧导航栏中的【交付流水线】,在“交付流水线”页面中,单击【新建】。
在“基本信息”步骤中,配置如下参数,而后单击【下一步:镜像配置】。
在“镜像配置”步骤中,配置如下参数,单击【下一步:应用部署】。
镜像仓库:选择交付流水线关联的镜像仓库,将自动配置镜像构建及推送,用于托管应用部署所须要的镜像。
镜像版本过滤
:支持对执行交付流水线中镜像的版本进行限制,能够过滤掉不须要执行部署的镜像版本。
镜像来源:支持平台构建镜像和本地推送镜像。平台构建镜像容许用户关联不一样代码托管平台的代码仓库,当代码变更时自动触发交付流水线,完成自动构建、推送镜像以及应用部署;本地推送镜像支持用户在手动推送镜像时,也能触发应用部署。场景一中咱们选择平台构建镜像。
代码源、代码仓库:选择用于构建镜像的代码仓库,流水线将拉取该代码仓库内源代码进行编译及构建,首次选择须要受权。目前已支持GitHub、公有GitLab、私有GitLab、码云以及工蜂等代码托管平台。
触发规则
:镜像构建被自动触发的规则条件。目前支持如下四种场景:
^refs/heads/master$
,可匹配 master 分支进行触发。Dockerfile 路径:镜像构建执行的操做基于代码仓库内的 Dockerfile,需指定该 Dockerfile 文件的路径。如不指定,默认为代码仓库根目录下名为 Dockerfile 的文件。
构建目录:镜像构建执行的工做目录,即上下文环境(context),默认为代码仓库的根目录。
版本规则:定义镜像构建生成的镜像名称,即镜像版本(tag)。支持配置自定义前缀,并组合加入“分支/标签”,“更新时间”,“commit号” 三个环境变量。其中,更新时间为执行 docker tag 指令时构建服务的系统时间。
在“应用部署”步骤中,配置如下参数,单击【肯定】。
完成以上配置后,可在“交付流水线” 列表页查看新建的流水线。
完成以上配置后,便可在更新应用代码后,自动触发镜像构建,推送及应用更新。
更新源代码
更新源代码,并提交至远端代码仓库。
执行流水线
源代码推送完成后,如符合镜像配置中镜像构建的触发条件,将触发流水线执行。可点击流水线查看该流水线执行记录,并查看具体步骤进度。
查看应用更新状态
前往容器服务 TKE 控制台,进入上述集群及工做负载详情页,并选择修订历史,可查看应用更新状态。以下图所示,v1版本是一开始手动部署的nginx镜像,流水线执行完成后更新为 v2 版本,使用的是自动构建出来的新的镜像。
能够直接访问该应用服务,查看是否已更新。经过查看 Servce 暴露到公网的地址,查看结果,能够看到服务已经更新。
在某些场景可能不须要使用 TCR 镜像自动构建能力,但又但愿能够在推送镜像后可以自动部署到容器平台。TCR 支持用户配置本地推送镜像后,经过触发器的能力,自动触发镜像部署。
参考场景一配置新建一条交付流水线,与场景一的区别在“镜像配置”步骤中,将”镜像来源“选择为”本地推送镜像“。
完成配置后,便可在本地使用命令行指令推送镜像,触发自动部署。
本地推送镜像
经过快捷指令咱们能够登陆腾讯云容器镜像服务 Docker Registry 并向 Registry 中推送镜像。例如这里推送一个 nginx 镜像。
执行流水线
本地推进镜像完成后,如符合镜像配置中镜像构建的触发条件,将触发流水线执行,因为此时镜像已经准备好,所以流水线只须要执行自动部署。
查看应用更新状态
同场景一,咱们能够前往容器服务 TKE 控制台,进入上述集群及工做负载详情页,并选择修订历史,可查看应用更新状态,也可直接访问该应用服务,查看是否已更新。
本文分两个场景介绍了如何使用容器镜像服务 TCR 实现容器 DevOps。场景一是代码变更后,自动触发镜像构建以及应用部署;场景二是本地推送镜像后自动触发应用部署。想要快速上手使用容器镜像服务 TCR、容器服务 TKE 实践 CD 流程,本文是个很好的参考。
【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!