Version: v1.2

在持续交付中集成镜像仓库

简介

在日常研发的过程中,当项目中的镜像版本发生变化时,通常我们需要将最新版本更新到各个环境中。在这个更新部署的过程中,手动部署不仅繁琐,且容易出错。因此,我们需要一个工具来完成基于镜像版本的自动化部署。

在 KubeVela 1.2 版本中,VelaUX 自带的应用触发器提供了一个很好的入口。我们可以使用这个触发器,来帮助我们完成这些自动部署的工作。

本文将详细介绍如何使用 KubeVela 触发器来完成基于镜像版本的自动化部署,在本文的例子当中,我们将使用 GitLab 作为代码仓库,ACR 作为镜像仓库来完成演示。

创建应用

要使用触发器,首先我们需要在 VelaUX 上新建一个应用。在这里,我们可以新建一个 WebService 类型的应用,并使用 LoadBalancer 为其暴露 80 端口以便访问。

alt

为应用新建触发器

在新建完应用后,使用 New Trigger 来创建新的触发器,这里我们选择 ACR 格式的触发器,使该触发器支持来自 ACR 镜像仓库的请求。

alt

查看这个触发器的详细信息,可以看到具体的 Webhook URL 以及手动触发的命令。

alt

配置 ACR 触发器

ACR 格式触发器需要配合阿里云 ACR 镜像仓库使用。当创建完 ACR 类型的触发器后,我们可以复制该触发器的 Webhook URL,并在 ACR 镜像仓库中进行配置。

alt

测试部署

完成这些触发器的配置之后,我们可以进行一个简单的测试来查看自动部署效果。

首先我们来查看一下当前应用的页面,通过应用的 Service Endpoint,可以直接跳转到应用的 LoadBalancer 地址。

alt

可以看到,当前的 Demo 应用显示版本为 v1.0.0

alt

这个 Demo 应用的源码放在了 GitLab 上。仓库里除了源码,还有一份 CI 文件,里面的步骤也十分简单,每次代码被更新时,都将自动构建镜像推送到镜像仓库中。

我们将代码的版本修改为 v2.0.0

  1. data(){
  2. return {
  3. v: 'v2.0.0',
  4. }
  5. },

修改完成后,GitLab CI 将自动构建并推送最新镜像。

在 ACR 触发器的访问记录中,我们可以看到,当镜像仓库中有了最新镜像时,ACR 会往我们配置的 Webhook URL 中发送一个请求。

alt

查看 VelaUX 的应用部署版本列表,可以看到,最近一次部署是来自 webhook 的部署。

alt

重新查看应用页面,可以看到,应用的版本已经变更成了 v2.0.0,同时页面的背景也随版本发生了变化。

alt

总结

KubeVela 触发器与制品仓库的对接是十分顺滑且无缝的,除了 ACR 之外,KubeVela 还支持 Harbor 以及自定义触发的格式。

通过使用 KubeVela 触发器,我们可以轻松地根据镜像版本实现自动部署,从而完成应用版本的迭代。