配置多套环境
- 每个独立环境的业务数据需要区分开,存放在不同的数据库中
Zadig 提供了系统内置变量和自定义变量来区分不同环境的不同变量值。下面具体介绍以上问题在 Zadig 系统中的实践。
如果您的服务中用到了数据库,在创建多个环境时,一定希望不同环境的业务数据是隔离的,那么可以结合 Zadig 系统内置变量和自定义变量来解决这个问题,下面举个例子来详细说明。
- 服务配置中将数据库变量抽取出来,作为自定义变量 ,在服务 YAML 中引用该变量,该变量值在创建环境和更新环境的时候自动渲染到服务 YAML 中。
- 在自定义变量中使用系统内置变量
$Product$_$EnvName$
。其中$Product$
和$EnvName$
都是系统内置变量,在创建和更新环境的时候自动传入对应的变量值然后渲染到服务配置里。比如当前项目名称为 voting-demo ,创建的环境名称为 dev ,在创建环境的时候$Product$_$EnvName$
组合渲染出来的值为。
当然也可以在服务 YAML 中直接引用系统内置变量。系统内置变量和自定义变量的主要区别是,创建和更新环境,您可以修改自定义变量值,而系统内置变量值由系统根据指定环境的相关属性自动产生。
域名区分
在 Zadig 环境中要想创建多套环境,使用不同的访问地址,可以按照以下步骤来配置:
- 给集群入口配置一个泛域名,比如:*.abc.com,确保域名 dns 正确解析到集群 Ingress 控制器
(opens new window) LoadBalancer 的外网 IP 上,Ingress 控制器的外网 IP 可以通过以下命令获得。
执行结果如下图所示。
如上图所示,
- 定义变量
vote_domain
,变量值为vote-$EnvName$.test.8slan.com
(我们预先已经配置泛域名*.test.8slan.com
dns 解析到当前集群入口) - 在
vote
服务 YAML 中引用该变量 - 在
vote_domain
变量中,我们使用系统内置变量$EnvName$
,在创建环境时该变量值会被系统渲染成对应的环境名称。
完成配置后,创建一套名称为dev
的环境。如下图所示,生成的访问地址为vote-dev.test.8slan.com
。