Zadig 如何支持 AWS 全家桶

探索 AWS 在 Zadig 上的集成,及其对 EKS/ECR/S3/EC2 的支持,简化企业 DevOps 及持续交付流程。

cover.png

Amazon Web Services (AWS) 以其全球性的广泛覆盖和深入的服务,构建了一个卓越的云平台。亚马逊云科技凭借其在云计算领域的卓越表现,已连续 13 年被 Gartner 评为"全球云计算领导者"。AWS 提供的云原生"家族产品",包括 EKS、ECR、S3(Amazon Simple Storage Service)、EC2等,为企业提供了强大的支持,满足各种上云业务场景的需求。

Zadig,作为一款专业的云原生持续交付平台,不仅支持多云架构的交付,而且对 AWS 基础设施的兼容性和适配性表现出色。在本文中,我们将详细展示如何在 AWS 上安装和使用 Zadig,通过Zadig 与 AWS 的全系列产品无缝集成,实现微服务的持续交付。这将帮助企业以更加优雅和高效的方式,快速实现云原生转型,降低运营成本,提高业务敏捷性,并加速创新步伐。

# 安装 Zadig

以下操作以 v3.0.0 版本为例,使用脚本的方式在 EKS 集群上快速安装 Zadig。

EKS 集群版本:v1.21~v1.30

第一步:下载安装脚本:

curl -LO https://github.com/koderover/zadig/releases/download/v3.0.0/install_quickstart.sh
chmod +x ./install_quickstart.sh

第二步:配置环境变量并执行安装脚本:

# 如果安装 Zadig 后要集成外部系统,请确保安装的 Zadig 系统有公网 IP, 以保证其可访问。
export IP=<本机 IP 地址>
export PORT=< 30000 - 32767 任一端口>
./install_quickstart.sh

第三步:访问系统

通过 IP:PORT 访问系统,首次登录系统需注册系统管理员。

更丰富的安装参数和方式可参考文档:安装 Zadig | Zadig 文档 (opens new window) [1]

# 使用 Zadig

# 准备工作

# 集成 AWS 资源

对象存储

系统管理员访问 资产管理 ->资源配置 -> 集群管理 ->添加,提供商选择 Amazon EKS,填写基本配置信息并设置为默认使用后保存。

镜像仓库

系统管理员访问 资产管理 ->资源配置 -> 镜像仓库 -> 添加,提供商选择 AWS ECR,填写基本配置信息后保存即可。

Helm Chart 仓库

系统管理员访问 资产管理 ->资源配置 -> Chart 仓库 -> 添加,填写由 AWS 厂商提供的 Chart 仓库配置后保存即可。

# 准备项目

本文使用 voting-app 案例进行演示,案例源码位于 koderover/zadig (opens new window) [2]代码库中,目录结构说明如下:

本例中集成的 Helm Chart 仓库已有 voting-app 服务的 chart 配置,如果读者完全按照本实践操作,请将 chart 目录的内容上传到自己的 Helm Chart 仓库中。

zadig/examples/voting-app
├── chart    # Helm Chart 配置
├── result   # result 服务源码
├── vote     # vote 服务源码
└── worker   # worker 服务源码

# 集成代码源

系统管理员访问 系统设置 -> 系统集成-> 代码源 -> 添加,集成代码源(即:voting-app 所在的代码源)。

系统管理员可 fork koderover/zadig 代码库,也可以下载后上传到自己的代码仓库中。

# 如何使用

下面以 voting-app-helm-demo 项目为例来演示,包括搭建项目、管理服务配置、持续构建部署服务、版本管理的完整场景。

# 创建项目

系统管理员登录系统后点击 新建项目,创建 K8s Helm Chart 类型的项目 voting-app-helm-demo,点击 下一步

# 导入服务

从 AWS 提供的 Helm Chart 仓库中导入服务的 Chart 配置到 Zadig 中。

点击 从 Chart 仓库同步,选择 Chart 仓库以及 Chart 后新建即可导入服务配置,系统会自动解析 values 文件中的服务和服务组件,导入成功后点击 下一步

# 构建配置

为服务组件配置构建,后续可使用工作流对该服务进行变更。以 examplevotingapp_result 为例,点击 添加构建 并填写构建配置后点击 下一步。本例中构建配置说明如下:

  • 构建名称:voting-app-result
  • 代码信息:准备工作中集成的代码信息
  • 通用构建脚本:内容如下:
#!/bin/bash
set -ex

cd $WORKSPACE/zadig/examples/voting-app/result
docker build -t $IMAGE -f Dockerfile .
docker push $IMAGE
  • 添加步骤:增加文件存储,将 zadig/examples/voting-app/result 目录下的内容归档到 AWS S3 对象存储中

# 创建环境

选择 本地集群 和 ECR 镜像仓库后点击 创建环境,系统会自动在 EKS 集群创建 devqa 两套环境,待环境创建完毕后点击 下一步

# 运行工作流

系统自动创建 3 条工作流,运行 voting-app-helm-demo-workflow-dev 工作流来更新 dev 环境的 result 服务。

构建日志的内容会存储在 AWS S3 对象存储中,在工作流运行时可点击查看实时构建日志,当构建失败时可辅助排查问题。

工作流执行完毕后,会将新的镜像推送到 AWS ECR 镜像仓库中,并使用该镜像更新 dev 环境的 result 服务,实现微服务的持续部署。

登录 AWS 对象存储控制台查看,构建中配置的归档文件被成功上传。

在实际使用中,还可以充分利用工作流的触发器能力:只需在工作流中配置开启 Git 触发器便可实现代码变更后自动构建部署服务的全部流程,缩短代码到交付的时间周期,具体使用可参考 代码变更自动触发工作流 | Zadig 文档 (opens new window) [3]

# 创建版本

在 Zadig 平台上持续部署验证迭代出稳定的服务版本后,可创建完整的 Helm Chart 版本(比如:用于和内部发布系统对接)。

访问项目的 版本管理 -> 创建版本,填写版本基本信息:

选择环境和服务后点击 添加,点击 下一步

选择 AWS 镜像仓库和 Chart 仓库,填写版本号后点击 完成 即可基于指定环境创建服务版本。

创建完毕后,可查看版本详情、将完整的 Helm Chart 包下载到本地,企业内部系统也可以从对应的 Chart 仓库中获取该版本。

# 扩展阅读

Zadig 支持多云架构交付,更多云厂商的支持可参考以下内容。

Background Image

作为一名软件工程师,我们一直给各行各业写软件提升效率,但是软件工程本身却是非常低效,为什么市面上没有一个工具可以让研发团队不这么累,还能更好、更快地满足大客户的交付需求?我们是否能够打造一个面向开发者的交付平台呢?我们开源打造 Zadig 正是去满足这个愿望。

—— Zadig 创始人 Landy