Zadig v1.18.0 文档
  • 快速入门

    • 什么是 Zadig
    • 核心概念
    • 快速安装
    • 第一个项目
    • 接入准备
  • 安装与配置

    • 安装简介
    • All in One 模式
    • 使用 Sealos 一键安装
    • 基于 Helm 命令安装
    • 基于现有 Kubernetes 安装
    • 本地安装
    • 兼容性列表
  • 最佳实践
  • 项目

    • 项目

      • 项目介绍
      • K8s YAML 项目
      • K8s Helm Chart 项目
      • K8s 托管项目
      • 主机项目
      • 权限管理
    • 工作流

      • 简介
      • 产品工作流
      • 自定义工作流
      • 工作流任务
      • 工作流审批
      • 工作流通知
      • 工作流触发器
    • 环境

      • K8s YAML 环境
      • K8s Helm Chart 环境
      • K8s 托管环境
      • 主机环境
      • 服务详情
    • 服务

      • 简介
      • K8s YAML 测试服务
      • K8s Helm Chart 服务
      • K8s 托管服务
      • 服务组件
      • 服务变量
      • 主机服务
    • 构建
    • 测试
    • 代码扫描
  • 模板库

    • K8s YAML 模板
    • Helm Chart 模板
    • Dockerfile 模板
    • 构建模板
  • 工作流

    • 工作流的触发
    • 工作流的构建缓存
    • 工作流任务的并发运行
    • 工作流的镜像版本回退
    • 工作流的变量传递
  • 环境

    • 环境的负载均衡
    • 配置多套环境
    • 自测联调环境
  • 测试中心

    • 测试中心
    • 测试工具实践
    • Apipost 测试平台接入
    • Apifox 测试平台接入
  • 交付中心

    • 交付物追踪
  • 数据视图

    • 数据概览
    • 效能洞察
  • 仪表盘

    • 仪表盘
  • 集成管理

    • 账号系统

      • LDAP
      • OAuth 2.0
      • GitHub
    • 项目管理
    • 代码源

      • 简介
      • GitLab 集成
      • GitHub 集成
      • Gerrit 集成
      • Gitee 公有云集成
      • 其他代码源集成
    • CI/CD 工具
    • 代码扫描
    • 镜像仓库
    • 对象存储
    • Helm 仓库
    • Kubernetes 集群
    • 主机管理
    • 其他系统
    • 软件包管理
    • 自定义镜像管理
  • 系统设置

    • 系统配置
    • 用户管理
    • 公告管理
    • 操作日志
    • 通知设置
  • 账号设置

    • 偏好设置
  • 开发者中心

    • OpenAPI 开发文档

      • API 调用方式
      • 交付中心
      • 工作流
      • 效能洞察
    • 外部系统接入开发文档

      • 自定义账号系统
      • 自定义工作流任务
    • VS Code Toolkit 插件

      • 使用指南
  • 常见问题

    • 产品使用 FAQ
    • 部署运维 FAQ
    • 集群故障 FAQ
    • 认证鉴权 FAQ
    • 诊断手册
  • 版本发布历史

    • Zadig Roadmap
    • v1.18.0 Release Notes
    • v1.17.0 Release Notes
    • v1.16.0 Release Notes
    • v1.15.0 Release Notes
    • v1.14.0 Release Notes
    • v1.13.0 Release Notes
    • v1.12.0 Release Notes
    • v1.11.0 Release Notes
    • v1.10.0 Release Notes
    • v1.9.0 Release Notes
    • v1.8.0 Release Notes
    • v1.7.1 Release Notes
    • v1.7.0 Release Notes
    • v1.6.0 Release Notes
    • v1.5.0 Release Notes
    • v1.4.0 Release Notes
    • v1.3.1 Release Notes
    • v1.3.0 Release Notes
    • v1.2.0 Release Notes
    • v1.1.0 Release Notes
    • v1.0.0 Release Notes
    • v1.0.0-rc.1 Release Notes
  • 术语表

    • 术语表

本文介绍如何使用 Zadig 创建多套业务数据隔离的环境。Zadig 支持一套服务配置创建多个环境,通常情况下,会有以下几个问题需要解决:

  1. 每个独立环境的业务数据需要区分开,存放在不同的数据库中
  2. 不同的独立环境需要有不同的访问地址

Zadig 提供了系统内置变量和自定义变量来区分不同环境的不同变量值。下面具体介绍以上问题在 Zadig 系统中的实践。

数据库隔离

如果你的服务中用到了数据库,在创建多个环境时,一定希望不同环境的业务数据是隔离的,那么可以结合 Zadig 系统内置变量和自定义变量来解决这个问题,下面举个例子来详细说明。

数据库隔离

图中所选服务需要做数据存储,在服务配置中有数据库的相关配置,现在需要实现数据的隔离,配置过程如下:

  • 服务配置中将数据库变量抽取出来,作为自定义变量 mgo_db,在服务 YAML 中引用该变量,该变量值在创建环境和更新环境的时候自动渲染到服务 YAML 中。
  • 在自定义变量中使用系统内置变量 $Product$_$EnvName$。其中 $Product$ 和 $EnvName$ 都是系统内置变量,在创建和更新环境的时候自动传入对应的变量值然后渲染到服务配置里。比如当前项目名称为 voting-app-demo,创建的环境名称为 dev,在创建环境的时候 $Product$_$EnvName$ 组合渲染出来的值为voting-app-demo_dev。

创建环境时,也可以按需修改自定义变量值,基于一份服务 YAML 实现不同环境的差异化配置。

数据库隔离

域名区分

在 Zadig 环境中要想创建多套环境,使用不同的访问地址,可以按照以下步骤来配置:

  1. 给集群入口配置一个泛域名,比如:*.abc.com,确保域名 dns 正确解析到集群 Ingress 控制器 LoadBalancer 的外网 IP 上,Ingress 控制器的外网 IP 可以通过以下命令获得。
kubectl get svc --all-namespaces| head -1;kubectl get svc --all-namespaces|grep ingress-controller

执行结果如下图所示。

Ingress控制器外网IP

  1. 入口服务,使用变量配置 Ingress host。

Ingress控制器变量

如上图所示,

  1. 定义变量vote_domain,变量值为vote-$EnvName$.koderover.demo.com(我们预先已经配置泛域名 *.koderover.demo.com dns 解析到当前集群入口)
  2. 在vote服务 YAML 中引用该变量{{.vote_domain}}
  3. 在vote_domain变量中,我们使用系统内置变量$EnvName$,在创建环境时该变量值会被系统渲染成对应的环境名称。

完成配置后,创建一套名称为dev的环境。如下图所示,生成的访问地址为vote-dev.koderover.demo.com。

Ingress 配置结果

关于变量的更多功能可参考文档:变量配置。

Prev
环境的负载均衡
Next
自测联调环境