当前位置:主页 > 查看内容

容器服务 使用 TCR 交付流水线在 TKE 中快速实现容器 DevOps -

发布时间:2021-09-17 00:00| 位朋友查看

简介:操作场景 在云原生时代,DevOps 理念已被广泛接受,而容器技术的兴起和普及加速了 DevOps 的落地。基于容器 DevOps 实现持续集成和持续部署,可显著提升企业的业务应用创建和交付速度,提升企业的竞争力。 本文将介绍如何通过使用 TCR 交付流水线功能,与容……

操作场景

在云原生时代,DevOps 理念已被广泛接受,而容器技术的兴起和普及加速了 DevOps 的落地。基于容器 DevOps 实现持续集成和持续部署,可显著提升企业的业务应用创建和交付速度,提升企业的竞争力。

本文将介绍如何通过使用 TCR 交付流水线功能,与容器服务 TKE、CODING DevOps 服务联合为用户提供简单易上手的容器 DevOps 能力,可实现 推送代码自动触发镜像构建和应用部署 或 本地推送镜像后自动触发部署。

前提条件

  • 已有容器镜像服务 TCR 企业版实例,并已创建镜像仓库。详情可参见 创建企业版实例、创建镜像仓库。
  • 已有容器服务 TKE 集群,并已部署容器应用。详情可参见 创建集群。
  • 已开通 CODING DevOps 服务。
说明

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

操作步骤

场景1:推送代码后自动触发镜像构建和应用部署

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

配置交付流水线

  1. 登录容器镜像服务控制台,选择左侧导航栏中的【交付流水线】。
  2. 在“交付流水线”页面中,单击【新建】。如下图所示:
  3. 在“基本信息”步骤中,配置以下参数,单击【下一步:镜像配置】。如下图所示:
    • 流水线名称:设置交付流水线名称。
    • 流水线描述:为交付流水线添加描述信息,创建后可修改。
  4. 在“镜像配置”步骤中,配置以下参数,单击【下一步:应用部署】。如下图所示:
    • 镜像仓库:选择交付流水线关联的镜像仓库,将自动配置镜像构建及推送,用于托管应用部署所需要的镜像。
    • 镜像版本过滤:支持对执行交付流水线中镜像的版本进行限制,可以过滤不需要执行部署的镜像版本。
      • 直接部署任意版本:推送到镜像仓库的任意版本镜像都会被部署。
      • 仅部署指定名称版本:需指定镜像版本,多个版本可以使用逗号分隔,非指定版本不会部署。
      • 仅部署指定规则版本:需输入正则表达式。
    • 镜像来源:支持平台构建镜像和本地推送镜像。本场景以选择“平台构建镜像”为例。
      • 平台构建镜像:允许用户关联不同代码托管平台的代码仓库,当代码变动时自动触发交付流水线,完成自动构建、推送镜像以及应用部署。
      • 本地推送镜像:支持用户在手动推送镜像时可以触发应用部署。
    • 代码源、代码仓库:选择用于构建镜像的代码仓库,流水线将拉取该代码仓库内源代码进行编译及构建,首次选择需要授权。目前已支持 GitHub、公有GitLab、私有GitLab、码云以及工蜂等代码托管平台。
    • 触发规则:镜像构建被自动触发的规则条件。目前支持以下四种场景:
      • 推送到指定分支触发:需指定分支。
      • 推送新标签时触发构建:新建标签并推送时触发。
      • 推送到分支时触发构建:推送至任意分支时触发,无需指定分支。
      • 符合分支或标签规则时构建:需输入正则表达式,例如 ^refs/heads/master$,可匹配 master 分支进行触发。
    • Dockerfile 路径:镜像构建执行的操作基于代码仓库内的 Dockerfile,需指定该 Dockerfile 文件的路径。如不指定,默认为代码仓库根目录下名为 Dockerfile 的文件。
    • 构建目录:镜像构建执行的工作目录,即上下文环境(context),默认为代码仓库的根目录。
    • 版本规则:定义镜像构建生成的镜像名称,即镜像版本(tag)。支持配置自定义前缀,并组合加入“分支/标签”,“更新时间”,“commit 号” 三个环境变量。其中,更新时间为执行 docker tag 指令时构建服务的系统时间。
  5. 在“应用部署”步骤中,配置以下参数,单击【完成】。如下图所示:
    • 部署平台:交付流水线同时支持容器服务 TKE、弹性容器服务 EKS 及边缘容器服务 Edge。本场景以容器服务 TKE 为例。
    • 部署地域:目标集群所在地域。选择已创建的 TKE 标准集群所在地域。
    • 部署集群:目标集群。选择已创建的 TKE 标准集群。
    • 部署方式:当前仅支持 “更新已有工作负载”。
    • 命名空间:已部署应用所在的命名空间。
    • 工作负载:已部署应用的关联工作负载。
    • Pod 容器:已部署应用的工作负载内的 Pod 容器,该容器内使用了上步骤中关联镜像仓库内的镜像。
  6. 完成以上配置后,可在“交付流水线” 列表页查看新建的流水线。如下图所示:

更新容器应用

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

  1. 更新源代码
    更新源代码,并提交至远端代码仓库。如下图所示:
    image-20201208195919986
  2. 执行流水线
    源代码推送完成后,如符合镜像配置中镜像构建的触发条件,将触发流水线执行。可单击流水线查看该流水线执行记录,并查看具体步骤进度。如下图所示:
    • Checkout:检出代码。
    • Docker Build:基于镜像构建配置进行镜像构建,并为生成的镜像打上指定规则的 Tag。例如,v-{tag}-{date}-{commit}
    • Docker Push:推送镜像,自动推送至关联镜像仓库内。
    • Deploy To TKE:使用最新推送的镜像更新关联工作负载及Pod 内同名镜像。
  3. 查看应用更新状态
    1. 登录容器服务控制台,选择左侧导航栏中的【集群】。
    2. 单击需查看应用更新状态的集群 ID,进入集群的“工作负载”页面。
    3. 在 “Deployment” 页中,选择实例名称,进入实例的详情页面。
    4. 在“修订历史”页签中,即可查看应用更新状态。如下图所示,v1版本是一开始手动部署的 nginx 镜像,流水线执行完成后更新为 v2版本,使用的是自动构建出来的新的镜像。

      您也可以直接访问该应用服务,查看是否已更新。通过 Service 暴露到公网的地址,查看服务更新结果。如下图所示:

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

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

配置交付流水线

  1. 登录容器镜像服务控制台,选择左侧导航栏中的【交付流水线】。
  2. 在“交付流水线”页面中,单击【新建】。如下图所示:
  3. 在“基本信息”步骤中,配置以下参数,单击【下一步:镜像配置】。如下图所示:
    • 流水线名称:设置交付流水线名称。
    • 流水线描述:为交付流水线添加描述信息,创建后可修改。
  4. 在“镜像配置”步骤中,配置以下参数,单击【下一步:应用部署】。如下图所示:
    • 镜像仓库:选择交付流水线关联的镜像仓库,将自动配置镜像构建及推送,用于托管应用部署所需要的镜像。
    • 镜像版本过滤:支持对执行交付流水线中镜像的版本进行限制,可以过滤不需要执行部署的镜像版本。
      • 直接部署任意版本:推送到镜像仓库的任意版本镜像都会被部署。
      • 仅部署指定名称版本:需指定镜像版本,多个版本可以使用逗号分隔,非指定版本不会部署。
      • 仅部署指定规则版本:需输入正则表达式。
    • 镜像来源:支持平台构建镜像和本地推送镜像。本场景以选择“本地推送镜像”为例。
      • 平台构建镜像:允许用户关联不同代码托管平台的代码仓库,当代码变动时自动触发交付流水线,完成自动构建、推送镜像以及应用部署。
      • 本地推送镜像:支持用户在手动推送镜像时可以触发应用部署。
  5. 在“应用部署”步骤中,配置以下参数,单击【完成】。如下图所示:
    • 部署平台:交付流水线同时支持容器服务 TKE、弹性容器服务 EKS 及边缘容器服务 Edge。本场景以容器服务 TKE 为例。
    • 部署地域:目标集群所在地域。选择已创建的 TKE 标准集群所在地域。
    • 部署集群:目标集群。选择已创建的 TKE 标准集群。
    • 部署方式:当前仅支持 “更新已有工作负载”。
    • 命名空间:已部署应用所在的命名空间。
    • 工作负载:已部署应用的关联工作负载。
    • Pod 容器:已部署应用的工作负载内的 Pod 容器,该容器内使用了上步骤中关联镜像仓库内的镜像。

更新容器应用

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

  1. 本地推送镜像
    1. 登录 容器镜像服务控制台,选择左侧导航栏中的【镜像仓库】。
      在“镜像仓库”页面即可查看当前实例内的镜像仓库列表。如需切换实例,请在页面上方的“实例名称”下拉列表中进行选择。
    2. 单击实例右侧的【快捷指令】,在弹窗中查看快捷指令。如下图所示:
  2. 执行流水线
    本地推动镜像完成后,如符合镜像配置中镜像构建的触发条件,将触发流水线执行。由于此时镜像已经准备好,因此流水线只需要执行自动部署。如下图所示:
  3. 查看应用更新状态
    1. 登录容器服务控制台,选择左侧导航栏中的【集群】。
    2. 单击需查看应用更新状态的集群 ID,进入集群的“工作负载”页面。
    3. 在 “Deployment” 页中,选择实例名称,进入实例的详情页面。
    4. 在“修订历史”页签中,即可查看应用更新状态。
      您也可以直接访问该应用服务,查看是否已更新。通过 Service 暴露到公网的地址,查看服务更新结果。如下图所示:

本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文

  • 周排行
  • 月排行
  • 总排行

随机推荐