微服务示例
我们这里使用到开源项目是 https://github.com/GoogleCloudPlatform/microservices-demo,该开源项目名叫 Online Boutique(https://onlineboutique.dev/),是一个云原生微服务演示应用程序,其中包含 11 个微服务,该应用程序是一个基于 Web 的电子商务应用程序,用户可以在其中浏览商品、将它们添加到购物车并购买它们。
基于该项目针对 Zadig 做了优化修改,项目地址: https://github.com/cnych/microservices-demo
该项目由 11 个使用不同语言编写的微服务组成,它们通过 gRPC 相互通信。架构如下所示。

微服务架构
每个服务的功能描述如下表所示。

服务功能
Zadig 项目
接下来我们来使用 Zadig 来交付该微服务项目,使用方式和前面基本类似。
首先新建一个名为 microservices-demo 的项目,项目类型为 K8s YAML 项目。

新建项目
点击立即新建按钮,然后进入项目初始化页面。

项目初始化
点击下一步进入到服务配置页面,我们知道服务模板可以通过手动创建、代码仓库中同步或者现有 K8s 资源中导入而来。我们这里服务模板在代码仓库中,所以选择从代码库中进行同步,选择对应的代码仓库、分支和对应的资源清单目录,然后点击同步按钮即可将对应的服务同步到 Zadig 中来。

同步服务
可以看到我们这里同步过来后包含了 12 个服务,每个服务的模板也都直接展示出来了,但是由于是通过仓库同步的,模板是只读模式,右侧会自动读取到服务对应的镜像信息。
注意:Zadig 读取资源清单后, 会以 K8s YAML 中的容器名作为唯一的 key 进行去重 ,所以在编写 K8s YAML 的时候不要让容器名重复,否则导入后会丢失服务。

服务模板
点击右侧读取到的镜像服务组件后面的添加构建按钮,前往配置该服务的镜像是如何进行构建的。
首先需要添加服务代码源信息,我们这里的代码在 GitLab 上面,所以添加对应的代码仓库以及分支信息。我们这里的所有服务代码都位于代码仓库根目录下面的 src 目录下。

代码结构
这属于典型的 Monorepo 类型的仓库(单体),而里面的每个服务我们也并未配置成 submodule,所以每个服务构建的时候均要将整个代码仓库 Clone 下来,但其实我们只需要其中的一个服务即可,Git 是支持这种操作的,比如我们现在只想要获取 adservice 这个服务的数据,可以通过下面的方式来获

本文介绍了如何利用Zadig进行云原生微服务应用的持续集成和交付,以开源项目Online Boutique为例,详细阐述了从新建项目、配置服务、设置触发器到执行工作流和测试用例的全过程。
最低0.47元/天 解锁文章
679

被折叠的 条评论
为什么被折叠?



