通过事件总线触发SAE的自动CD

Serverless 应用引擎支持通过事件总线(EventBridge)触发SAE自动持续部署(CD)。本文介绍如何通过EventBridge配置监听特定事件并联动ACR,在检测到新的镜像版本构建完成后,实现从镜像更新到应用自动部署的无缝衔接,以确保系统的实时性和高效性。

前提条件

使用限制

仅适用于微服务应用。

背景信息

通过事件总线(EventBridge)触发的方式,监听ACR容器镜像服务构建镜像完成后,然后由事件总线触发SAE的自动CD,并运行版本镜像应用,实现高效的应用测试,并完成项目开发工作。

image

步骤一:使用ACR企业版实例构建镜像

  1. 登录容器镜像服务控制台

  2. 在左侧导航栏,单击实例列表。在顶部菜单栏,选择目标地域。

  3. 实例列表页面,单击目标企业版实例。

  4. 在企业版实例管理页面选择仓库管理 > 镜像仓库,单击创建镜像仓库

  5. 仓库信息配置向导中设置命名空间仓库名称仓库类型镜像版本摘要描述信息,然后单击下一步

    image

  6. 代码源配置向导中,代码源选择Gitee,在下拉列表中选择目标仓库和仓库名称,构建设置选中代码变更时自动构建镜像,然后单击创建镜像仓库

    image

  7. 镜像仓库页面单击目标仓库右侧的操作列中的管理

  8. 单击左侧导航栏中的构建,在构建规则设置区域单击添加规则,在构建信息配置向导中设置参数,然后单击下一步

    参数

    说明

    类型

    设置源代码仓库的类型,可以是Branch或Tag。

    Branch/Tag

    选择或填写Branch/Tag,支持正则规则。当正则规则为release-(?<imageTag>\w*)时,将识别release-v1源代码变更并自动构建版本为v1的镜像(不支持立即构建),更多信息,请参见正则表达式命名捕获组

    说明

    设置正则规则后仅支持系统自动构建,不支持手动立即构建。

    构建上下文目录

    设置Dockerfile文件所在的目录。指的是相对目录,以Branch/Tag的根目录为父目录,例如您的Branch为master,您的Dockerfile文件放在master下,则您的Dockerfile目录为/。

    Dockerfile文件名

    设置Dockerfile文件名,默认为Dockerfile。

    image

  9. 镜像版本配置向导中设置参数,单击保存,然后单击下一步

    说明

    单击新增配置,可以增加镜像版本,最多可以设置3个镜像版本。

    参数

    说明

    镜像版本

    设置镜像Tag,例如latest。支持命名捕获,例如使用Branch/Tag中捕获的内容。

    时间

    推送源代码的东八区(UTC+8)时间,有两种格式可供选择,例如20201015和202010151613。

    说明

    该参数为可选项,当选中该参数后系统仅支持自动构建,不支持手动立即构建。

    Commit ID

    最近一次推送代码的Commit ID,默认取前6位,可以滑动下方的滑块设置位数。

    说明

    该参数为可选项,当选中该参数后系统仅支持自动构建,不支持手动立即构建。

    image

  10. 构建配置配置向导中设置构建参数,然后单击确定

    参数

    说明

    构建架构

    选择构建架构,支持并行构建,最终形成一个镜像版本对应多个架构镜像。

    构建参数

    镜像构建运行时参数,构建参数由区分大小写的键值对组成,您最多可以设置20个构建参数。您可以设置构建参数,该构建参数会修改Dockerfile文件中的环境变量,使同一个Dockerfile文件呈现多种状态。

    image

  11. 触发构建规则。

    您可以通过以下两种方式触发构建规则:

    • 构建页面的构建规则设置区域,单击目标构建规则操作列下的立即构建,触发构建规则。

      image

    • 向代码仓库的master分支提交代码,触发构建规则。

    说明
    • 构建页面构建日志区域单击目标构建任务操作列的取消,可以取消构建任务。

    • 构建页面构建日志区域单击目标构建任务操作列的日志,可以查看构建过程日志。

    在左侧导航栏单击镜像版本,您可以看到构建的镜像,表示构建镜像成功。

步骤二:使用镜像部署SAE应用

  1. 登录SAE控制台

  2. 在左侧导航栏,选择应用管理 > 应用列表,在顶部菜单栏选择地域,然后单击创建应用

  3. 应用基本信息配置向导中,配置相关信息,然后单击下一步:应用部署配置

    配置项

    说明

    应用名称

    输入自定义的应用名称。

    专有网络配置

    选择自定义配置的专有网络的配置方式。选中后,为创建的应用选择所需的命名空间、VPC、vSwitch及安全组。

    说明

    VPC与ACR企业版实例保持一致。

    命名空间

    从下拉列表中选择已创建的命名空间。命名空间和VPC是一一映射关系。关于修改VPC的更多信息,请参见创建和管理专有网络

    vSwitch

    单击请选择vSwitch,在选择vSwitch对话框配置。

    vSwitch数量至少需要配置1个,建议不超过3个,且每个vSwitch至少匹配1个应用实例。

    安全组

    从下拉列表选择安全组。如果您的VPC内没有创建安全组,请单击创建安全组,根据提示创建安全组。更多信息,请参见创建安全组

    应用实例数

    选择需要创建的实例个数。

    vCPU

    选择需要创建的实例vCPU规格。

    内存

    选择需要创建的实例内存规格。

    应用描述

    填写应用的基本情况。

    image

  4. 在应用部署配置向导中,配置应用部署信息,然后单击下一步:确认规格。更多信息,请参见在SAE控制台使用镜像部署多语言应用

    配置项

    说明

    技术栈语言

    选择其它语言,包括C++、Go、.NET、Node.js等语言。

    应用部署方式

    仅支持镜像

    配置镜像

    指定部署应用的镜像文件。单击我的阿里云镜像页签,单击镜像服务企业版,在下拉列表中选择目标企业版实例。

    说明

    选择容器镜像服务企业版部署应用,您需要为目标企业实例配置专有网络的访问控制

  5. 确认规格配置向导,查看您所创建应用的详细信息以及费用配置情况,然后单击确认创建

    页面会跳转至创建完成配置向导,您可以单击应用详情页进入基本信息页面。

步骤三:创建EventBridge自定义事件总线

  1. 登录事件总线EventBridge控制台

  2. 在左侧导航栏,单击事件总线,在顶部菜单栏,选择地域。

  3. 事件总线页面的自定义事件总线区域,单击快速创建

  4. 创建自定义事件总线面板,配置相关信息。

    1. 总线配置向导中,输入自定义事件总线名称描述,然后单击下一步

    2. 事件源配置向导中,输入事件源名称描述事件提供方选择HTTP/HTTPS 触发,配置以下参数,然后单击确认

      参数名称

      参数说明

      请求类型

      选择HTTP&HTTPS

      请求方法

      请求方法选择GETPOST

      安全配置

      安全配置的类型选择无需配置

      image

    3. 规则配置向导中,输入规则名称描述,在模式内容代码框输入事件模式,然后单击下一步

    4. 目标配置向导中,务类型选择云产品接口触发Serverless 应用引擎接口版本选择2019-05-06,选择接口类型,填写接口参数角色配置信息,然后单击创建

      使用EventBridge触发SAE App

      接口类型选择DeployApplication,填写以下接口参数信息。更多接口参数信息,请参见DeployApplication

      名称

      类型

      位置

      是否必选

      示例值

      描述

      AppId

      String

      Query

      7171a6ca-d1cd-4928-8642-7d5cfe69****

      需要部署的应用ID。

      ImageUrl

      String

      Query

      registry.cn-hangzhou.aliyuncs.com/sae_test/ali_sae_test:0.0.1

      镜像地址。当Package Type为Image时必填。

      AcrInstanceId

      String

      FormData

      cri-xxxxxx

      ACR企业版实例ID。当ImageUrl为容

      器镜像服务企业版时必填。

      image

      image

      image

      image

步骤四:创建ACR事件规则

  1. 登录容器镜像服务控制台

  2. 在左侧导航栏,单击实例列表。在顶部菜单栏,选择地域。

  3. 实例列表页面单击目标企业版实例。

  4. 在实例详情页面左侧导航栏选择实例管理 > 事件通知

  5. 事件规则页签下单击创建规则

  6. 事件范围配置向导中设置参数,然后单击下一步

    参数

    说明

    规则名称

    设置事件规则名称。

    事件类型

    设置事件通知触发的事件类型,在下拉列表中选择镜像构建完成

    勾选镜像构建成功时,触发事件通知。

    生效范围

    设置事件生效的范围,选择仓库,选择命名空间和镜像仓库,设置镜像版本过滤的正则规则,在该镜像仓库下符合正则规则的镜像版本将触发事件通知。

    image

  7. 事件通知配置向导中,通知方式选择HTTPS,输入已创建的事件总线事件源的地址(公网请求URL),然后单击保存

    image

步骤五:更新源码,结果验证

当Gitee上的代码被修改后,ACR会自动构建镜像,并通过事件总线(EventBridge)触发SAE应用自动部署的无缝衔接。

您可以在事件总线控制台查看事件轨迹,查看事件在事件总线EventBridge中的处理轨迹。在事件总线(EventBridge)控制台发布事件后,如果事件目标未接收到事件或接收到的事件与实际场景不符,您可以使用事件追踪功能,帮助您定位事件收发过程中出现问题的环节和原因。

image

您可以在SAE控制台查看应用的变更记录,查看是否产生应用重新部署的变更记录。

image