容器镜像服务ACR为每个仓库提供了触发器的功能,帮助您在镜像构建成功后进行消息的推送。当镜像仓库的镜像版本有更新时,将根据设置的触发条件自动触发使用最新镜像部署应用。本文将演示如何在镜像构建成功后,自动触发容器服务上应用中心拉取新的镜像,并重新部署应用。

前提条件

已将应用镜像推送至容器镜像仓库。具体操作,请参见使用企业版实例推送拉取镜像

步骤一:创建应用

创建应用,具体操作,请参见创建应用

步骤二:在应用中心生成触发器

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏中,选择多集群 > 应用中心(旧版)
  3. 应用页面单击目标应用名称。
  4. 在应用详情页面右上角单击触发器
  5. 触发器面板单击创建,然后单击复制,复制触发器URL。
    说明 请妥善保管触发器URL,以免泄露。

步骤三:在ACR创建触发器

  1. 登录容器镜像服务控制台
  2. 在顶部菜单栏,选择所需地域。
  3. 在左侧导航栏,选择实例列表
  4. 实例列表页面单击目标企业版实例。
  5. 在企业版实例管理页面选择仓库管理 > 镜像仓库
  6. 镜像仓库页面单击步骤一创建应用时所使用的镜像仓库的名称。
  7. 在镜像仓库详情页面单击触发器,然后单击创建
  8. 创建触发器对话框设置触发器名称,输入步骤二复制的触发器URL,设置触发方式全部触发,单击确定
    容器镜像触发器支持全部触发表达式触发Tag触发。以下为3种触发方式介绍:
    • 全部触发:只要镜像版本有更新,就会触发触发器。
    • 表达式触发:基于正则表达式来进行镜像版本的过滤,只有当符合正则表达式的镜像版本才会触发触发器。
    • Tag触发:基于镜像版本列表来进行镜像版本的过滤,只有镜像版本在设置的镜像版本列表中才会触发触发器。
    说明 如果触发器执行异常,您可以在触发器页面单击目标触发器操作列的访问记录,在访问记录对话框Response Body中查看异常原因。

步骤四:触发应用部署

当镜像仓库的镜像版本有更新时,会自动触发使用最新镜像部署应用。

  1. 执行以下命令,登录步骤一创建应用时所使用的镜像仓库。
    说明 如果您企业版实例所在地域为杭州,则命令行中<企业版实例所在地域>为hangzhou。
    docker login --username=<镜像仓库登录名> <企业版实例名称>-registry.cn-<企业版实例所在的地域>.cr.aliyuncs.com
  2. 执行以下命令,给镜像设置标签。
    docker tag registry.cn-hangzhou.aliyuncs.com/acs/rollouts-demo:green liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:green
  3. 执行以下命令,推送Green版本镜像至步骤一创建应用时所使用的镜像仓库。
    docker push liusheng-registry.cn-beijing.cr.aliyuncs.com/liusheng/rollouts-demo:green

结果验证

  1. 查看编排模板。
    镜像更新后,自动触发容器服务上应用中心拉取新的镜像并更新编排模板。
    1. 登录容器服务管理控制台
    2. 在控制台左侧导航栏选择市场 > 编排模板
    3. 模板列表页面单击步骤一创建的模板名称下的详情。在详情页面可以看到模板镜像已更新为最新的镜像。
  2. 获取应用的端点。
    1. 登录容器服务管理控制台
    2. 在控制台左侧导航栏中,单击集群
    3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
    4. 在集群管理页左侧导航栏中,选择服务与路由 > 路由
    5. 路由页面查看demo的端点。
  3. hosts文件输入以下内容。
    <端点> app.demo.example.com 
  4. 在浏览器中访问app.demo.example.com

    浏览器显示以下页面,说明应用已由Blue版本更新为Green版本。

    结果验证