典型微服务案例(Python + Redis + Node.js)

本文介绍如何在 Zadig 上快速搭建 Voting 项目,该项目包含 Python, Redis, Postgres, Node.js, and .Net 等相对典型的微服务应用程序组合。以下步骤包含从 Code 到 Ship 的整个过程的演示。

准备工作

提示

可参考 GitHub 代码系统接入来配置自己的代码仓库

步骤 1:产品交付-项目配置

进入 zadig 系统。

onboarding-1

新建项目,项目名为voting

onboarding-2 onboarding-3 onboarding-4

步骤 2:产品交付-创建服务与服务构建

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

  • vote
  • worker
  • result
  • redis
  • db

其中以下三个服务我们有代码,还需要添加构建:

  • vote
  • worker
  • result

而redis和db直接使用标准镜像,所以不需要使用构建。

注意

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

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

  • 系统平台管理:在 Zadig 中直接输入 Yaml 。
  • 代码仓导入与同步:从某个 Git 仓中导入,之后提交到代码仓的 Yaml 变更会自动同步到 Zadig 系统上。

提示

服务 Yaml 自动同步到 Zadig 系统上的功能会在配置 Webhook 后生效

这里,我们使用代码仓导入的方式。上面我们已经在代码仓的 freestyle-k8s-specifications典型微服务案例(Python + Redis + Node.js) - 图7 (opens new window) 文件目录中准备好了这些 Yaml 。现在要做的就是把它们导入。

  • 加载服务配置:点击仓库托管 按钮 -> 选择仓库信息 -> 选择文件目录。KodeRover 支持一次性导入多个服务,选择freestyle-k8s-specifications 文件目录可导入 5 个服务。
  • 配置服务构建:选择服务 -> 点击添加构建 -> 填写构建脚本

onboarding-5

构建脚本,填写以下代码,这个服务的构建步骤是使用docker构建镜像,注意根据不同的服务修改脚本中的 <service-directory> 参数。

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

重复以上配置服务构建过程,完成 vote、worker 和 result 的配置。

步骤 3:产品交付-加入运行环境

  • 点击向导的“下一步”。这时,Zadig 会根据你的配置,创建两套环境(dev,qa),以及相关工作流。

onboarding-6

  • 点击下一步完成向导。至此,onboarding 完成。一个有 5 个微服务的系统,2 套环境、3 条工作流已经产生。

onboarding-7

步骤 4:产品交付-工作流交付

  • 点击“运行”,可以运行工作流。

workflow-1

  • 选择需要更新的服务,比如 vote 和 result,点击“启动任务”运行工作流。

workflow-2

  • 查看工作流运行状况:

workflow-3

  • 下面是项目的总体状态:

workflow-4

  • 进入集成环境,查看服务列表并点击 result 和 vote 暴露出来的 URL 可以查看网站。

workflow-5 workflow-6 workflow-7

步骤 5:配置自动触发工作流

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

  • 进入工作流配置页面

trigger-1

  • 添加 Webhook 触发器

trigger-2

  • 配置 Webhook 触发器

trigger-3

  • 保存工作流

trigger-4

步骤 6:改动代码,触发工作流

我们下面对 vote 服务中 Dog 一栏的颜色做改动。

  • 改动代码:

trigger-5

  • 查看工作流运行情况

trigger-6 trigger-7

  • 查看网站运行结果:

trigger-8