通过kubevela和harbor在持续交付中集成镜像仓库

目录

前言

前提条件

第一部分——本地配置镜像仓库的访问

解决docker push报错

配置镜像仓库访问

第二部分——构建&推送镜像

第三部分——创建应用&触发器

创建应用#

为应用新建触发器#

配置 Harbor 触发器#

第四部分——更新代码&镜像

更新代码

更新镜像 

检查持续交付流程

总结#

参考资料


前言

本文针对私有化场景和本地化的持续交付流程,如果需要做持续集成,需要通过gitlab ci或者jenkins等平台工具将git——harbor/acr/...打通,构建完整的pipeline。

前提条件

开始本教程前,你需要:

1.私有的镜像仓库

参考我的另一篇文章的第一部分——安装harbor私有仓库

通过harbor和rancher在私有化场景发布应用

2.控制平面的k8s集群

参考我的另一篇文章 

sealer——一键构建k8s集群

3.kubevela core和velaux

参考kubevela官方提供的quick start docs

kubevela快速安装

第一部分——本地配置镜像仓库的访问

解决docker push报错

这里将sea.hub:81作为harbor地址,使用默认的library项目。

首先需要配置/etc/docker/daemon.json中的insecure-registries参数,这里贴出我的配置文件

这一步是因为我的harbor仓库的url是http,但是docker push默认走的是https访问,否则会报错:server gave HTTP response to HTTPS client

{
  "registry-mirrors": [
     "https://bxsfpjcb.mirror.aliyuncs.com"
  ],
  "max-concurrent-downloads": 10,
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
    },
  "insecure-registries":
        ["sea.hub:81"],
  "data-root":"/var/lib/docker"
}

然后重启docker

systemctl daemon-reload;systemctl restart docker

因为是内网环境,所以需要修改本地hosts文件配置域名解析

配置镜像仓库访问

登陆到registry,harbor默认的账户名是admin,密码是Harbor12345

docker login -u admin -p Harbor12345 sea.hub:81

会生成一个auth文件/root/.docker/config.json,进行docker push的时候会检查这个文件,如果需要换主机,可以把这个文件拷贝到相同路径下,也可以重新login自动生成

{
        "auths": {
                "sea.hub:81": {
                        "auth": "YWRtaW46SGFyYm9yMTIzNDU="
                }
        },
        "HttpHeaders": {
                "User-Agent": "Docker-Client/19.03.0 (linux)"
        }
}

第二部分——构建&推送镜像

我们使用官方提供的demo去构建镜像,clone下来,并build镜像

docker build -t sea.hub:81/library/vela-demo:0.0.1 .

然后推送到harbor

docker push sea.hub:81/library/vela-demo:0.0.1

第三部分——创建应用&触发器

创建应用#

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

记得指定image为刚才的镜像仓库

新建应用之后即可访问查看

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

为应用新建触发器#

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

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

配置 Harbor 触发器#

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

第四部分——更新代码&镜像

更新代码

我们将代码的版本修改为3.0.0

cd KubeVela-GitOps-Demo-Code-master/src && vi App.vue
export default {
  name: 'App',
  components: {
    HelloWorld
  },
  data(){
    return {
      v: 'v3.0.0',
    }
  },
}

更新镜像 

重新build镜像,这次设置tag为0.0.2

docker build -t sea.hub:81/library/vela-demo:0.0.2

同样push到harbor

docker push sea.hub:81/library/vela-demo:0.0.2

检查持续交付流程

登陆到harbor web,可以查看到相同的镜像仓库有两个artifacts

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

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

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

总结#

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

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

有任何的问题,都欢迎私信我或者在评论下方留言!

参考资料

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

常鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值