本文主要介绍如何使用 Zadig 环境托管能力,让开发过程更顺畅。

我们都知道,服务的容器化消除了线上线下的环境差异,保证了应用生命周期的环境一致性标准化,为软件交付提供了诸多好处。但上了容器以后研发过程中使用测试环境却存在诸多不便。环境的不透明,导致联调测试过程诊断问题困难;而原生 kubectl 方式操作繁琐,调试服务不方便等等。

Zadig 可以通过托管项目解决以上问题,并且对现有集群无任何的侵入性,平滑实现云原生 DevOps 开发模式。不同业务线可以清晰的管理所属的服务,开发者也可以方便的对服务进行查看、管理和更新,比如服务查看、Pod Debug、实时日志等。原理如下:

host_principle

案例背景

下面以 host-microservice-demo 项目为例来演示。该项目的基本情况简述如下:

小贴士

如果完全依照本教程进行托管的实践,需要参考上述背景在自己的集群中部署相关服务,将案例源码 microservice-demo 克隆到本地后,根据自己的域名及解析情况按需修改 ingress 域名,执行以下快捷操作:

cd {microservice-demo 所在的目录}/k8s-yaml/backend && kubectl -n microservice apply -f .
cd {microservice-demo 所在的目录}/k8s-yaml/frontend && kubectl -n microservice apply -f .

此外,为部署更新服务,下文中有为服务配置构建的环节,依赖 Zadig 代码库,请先 fork Zadig 代码库至个人仓库,并在系统设置中集成对应代码源,参考:集成代码源

系统管理员进入 Zadig 系统,点击新建项目 -> 填写项目名称 host-microservice-demo -> 选择 K8s 托管项目 -> 点击立即创建。

create_project

create_project

创建项目后,进入产品交付向导的第一步,配置环境托管环节。

config-host-env

说明如下:

点击下一步,进入配置服务构建步骤。

frontend 服务

frontend-build-config

frontend-build-config-details

#!/bin/bash
set -e

cd zadig/examples/microservice-demo/frontend
docker build -t $IMAGE -f Dockerfile .
docker push $IMAGE

backend 服务

backend-build-config-details

#!/bin/bash
set -e

cd zadig/examples/microservice-demo/backend
make build-backend
docker build -t $IMAGE -f Dockerfile .
docker push $IMAGE

host-onboarding-end

创建托管环境成功后,进入项目的环境页面,就可以看到 dev 环境下的所有服务基本信息,如下图所示:

show-host-env

点击具体的服务进入详情页,可以对被托管服务进行更新,包括重复服务实例、切换服务镜像、调整服务副本数量;还可以查看/搜索服务实时日志、登入服务容器中进行调试等等。

service-operation

pod-log

pod-debug

手动运行工作流部署更新服务

run-pipeline

show-pipeline-build-log

show-pipeline-effect

[可选]配置 Webhook 自动更新服务

webhook-config

webhook-config

pr-change

webhook-trigger-pipeline-run

show-env-updated

IM

IM