Java 程序员运维Java

大规模微服务想上 K8s?用 Zadig 实在香

2021-10-11  本文已影响0人  马小莫QAQ

大家对 CI/CD 的概念并不陌生,但真实世界的 CI/CD 绝不是一段代码做「构建->部署->发布」那么简单,大部分情况下一个产品是由若干个微服务组成的,而微服务之间互相有依赖,不同角色基于不同测试环境进行协作。这里给大家介绍一个典型的微服务架构项目,如何用 Zadig 实现全流程自动化、持续交付。该项目包含 Python, Redis, Postgres, Node.js, and .Net 等前后端、数据库、中间件、相对典型的微服务应用程序组合。

大家对 CI/CD 的概念并不陌生,但真实世界的 CI/CD 绝不是一段代码做「构建->部署->发布」那么简单,大部分情况下一个产品是由若干个微服务组成的,而

微服务之间互相有依赖,不

准备工作

本案例所用代码及配置 fork 自 GitHub Zadig 仓库,主要包括:

接入 GitHub 代码源

第一步:新建 GitHub OAuth 应用程序

下面以 GitHub Organization 为例,如下所示。

大规模微服务想上 K8s?用 Zadig 实在香

第二步:配置 GitHub OAuth 应用程序

在新建应用程序页面,你需要进行如下步骤:

第三步:获取 Client ID、Client Secret 信息

应用创建成功后,GitHub 会返回应用的基本信息,点击 Generate a new client secret 生成 Client Secret。

第四步:将 Client ID、Client Secret 集成到系统

切换到 Zadig 系统,管理员依次点击系统设置 -> 集成管理 -> 代码源集成 -> 点击添加按钮。

依次填入如下已知信息:

信息确认无误后点击、前往授权,耐心等待,此时系统会跳转到 GitHub 进行授权。

点击授权按钮,同意授权后,GitHub 会跳转到 Zadig 系统,至此 GitHub 集成完毕。

产品交付

第一步:项目配置

进入 Zadig 系统,新建项目 voting。

第二步:创建服务与服务构建

这里我们需要为以下 5 个服务添加服务配置:

并为以下三个业务服务添加构建以支持持续交付:

注:服务配置指的是 YAML 对这个服务的定义。Kubernetes 可以根据这个定义产生出服务实例。可以理解为 Service as Code 。

Zadig 提供两种方式管理这些模板:

这里,我们使用代码仓导入的方式。案例所需 YAML 配置位于 koderover/zadig 仓库 freestyle-k8s-specifications 文件目录中,现在要做的就是把它们导入。

以 result 服务为例,在构建脚本中填写以下代码:

cd $WORKSPACE/voting-app/<service-directory>
docker build -t $IMAGE -f Dockerfile .
docker push $IMAGE

重复以上配置服务构建过程,完成 vote 、 result 和 worker 的构建配置,注意根据不同的服务修改脚本中的 <service-directory> 参数。

第三步:加入运行环境

第四步:工作流交付

vote 页面:

result 页面:

第五步:配置自动触发工作流

添加触发器,使得代码 Push 或者 Pull Request 都触发 result,vote,worker 三个服务的重新构建和部署:

第六步:代码改动持续交付

关于 Zadig

Zadig 是基于 Kubernetes 设计、研发的开源分布式持续交付 (Continuous Delivery) 产品,为开发者提供云原生运行环境,支持开发者本地联调、微服务并行构建和部署、集成测试等。Zadig 内置了面向 Kubernetes、Helm、云主机、大体量微服务等复杂业务场景的最佳实践,为工程师一键生成自动化工作流 。

原文链接:https://my.oschina.net/koderover/blog/5275582?utm_source=tuicool&utm_medium=referral

上一篇 下一篇

猜你喜欢

热点阅读