多套环境的数据库隔离,域名访问,差异化配置,香!快解锁!

​本文主要介绍 Zadig 服务管理的变量配置能力,通过一套配置,实现多环境的隔离:

  • 数据库隔离:每个环境的业务数据独立存放在不同的数据库中,互不影响
  • 差异化域名访问:使用不同的域名地址访问不同的环境
  • 差异化业务配置:业务配置管理在 Nacos、Apollo 等配置中心,不同的环境使用不同的配置

数据库隔离

适用:不同环境的业务数据互相隔离,一个数据库对应多个连接地址,或连接不同的数据库均适用。

配置服务变量

如图中 vote 服务,该服务数据库相关配置被管理在 ConfigMap 中的,并通过 volume 挂载到应用中。在 Zadig 中,我们将数据库配置项抽取为 Zadig 的全局变量 mgo_addr 和 mgo_db,并为其配置默认值。

  • mgo_addr 默认值设置:220.16.0.43,可根据实际情况进行配置。
  • mgo_db 默认值设置:$Product$_$EnvName$_vote  ,这里我们用到了系统内置全局变量 $Product$、$EnvName$,分别表示项目名称和环境名称。

变量配置生效

创建环境时,配置中的变量可以使用默认值,也可以重新指定。

环境创建时,变量会被自动渲染,效果如下图。在 dev 环境中被渲染为:simple-vote-service-dev-vote,qa 环境中被渲染为:simple-vote-service-qa-vote

图例中服务 K8s YAML 配置如下:

apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: vote
name: vote-rc-origin
spec:
replicas:1
selector:
matchLabels:
app: vote
version: rc-origin
template:
metadata:
labels:
app: vote
version: rc-origin
spec:
containers:
- image: dockersamples/examplevotingapp_vote:before
name: vote-e2e
ports:
- containerPort:80
name: vote
volumeMounts:
- name: config-volume
mountPath:/app/config
volumes:
- name: config-volume
configMap:
name: vote-config
---
apiVersion: v1
kind: ConfigMap
metadata:
name: vote-config
data:
SERVICE_MGO_ADDR:{{.mgo_addr}}
SERVICE_MGO_DB:{{.mgo_db}}
SERVICE_MGO_MODE: strong

差异化域名访问

适用:在 Zadig 中创建多套环境,使用不同的域名访问不同的环境

配置泛域名

给集群入口配置一个泛域名,比如:*.koderover.com,确保域名 DNS 正确解析到集群 Ingress 控制器 [1] LoadBalancer 的外网 IP 上。

配置服务变量

此例中为业务入口配置外网访问地址 host ,Zadig 中配置全局变量: {{.domain}},Value 设为:vote-$EnvName$.koderover.com

创建环境时,系统会自动渲染变量,效果图示如下。

图例中服务的 K8s YAML 配置如下:


apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: vote
name: vote-rc-origin
spec:
replicas:1
selector:
matchLabels:
app: vote
version: rc-origin
template:
metadata:
labels:
app: vote
version: rc-origin
spec:
containers:
- image: dockersamples/examplevotingapp_vote:before
name: vote-e2e
ports:
- containerPort:80
name: vote
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: vote
annotations:
nginx.ingress.kubernetes.io/proxy-body-size:100m
spec:
rules:
- host:{{.domain}}
http:
paths:
- path:/
backend:
serviceName: vote
servicePort:5000

差异化业务配置

适用:服务的业务配置在第三方配置中心管理(比如 Nacos、Apollo 等),不同环境使用不同的配置项。下面以一套 Apollo 配置中心举例,通过 Zadig 管理和使用不同环境的业务配置。

配置服务变量

以 myapp 服务为例,我们需要在 Zadig 中设置 Apollo 配置参数与 Zadig 环境变量的对应关系。

在 Zadig 中定义的配置项(可以根据情况进行设置):

  • APOLLO_APP_NAMESPACE:Apollo 配置中心的命名空间(Namespace),使用 Zadig 自定义变量 apollo_app_namespace 为其赋值,默认值设为 zadig.dev
  • APOLLO_APP_ID:Apollo  配置中心的应用(Application),使用 Zadig 系统内置变量 $Service$ 为其赋值。
  • APOLLO_APP_ENV:Apollo 配置中心的环境(Enviroment),使用 Zadig 系统内置变量 $EnvName$ 为其赋值。
  • APOLLO_APP_CLUSTER:Apollo 配置中心中的集群(Cluster),用 Zadig 自定义变量 apollo_app_cluster 为其赋值,默认值设为 local。

变量配置生效

当环境拉起或myapp 服务启动时,会去相应的配置中心获取服务配置。

uat 环境效果:

qa 环境效果:

图例中服务的 K8s YAML 配置如下:

apiVersion: v1
kind: Service
metadata:
name: a
labels:
app: a
spec:
ports:
- name: http
port:80
targetPort:8080
selector:
app: a

---

apiVersion: apps/v1
kind: Deployment
metadata:
name: a
labels:
app: a
spec:
selector:
matchLabels:
app: a
replicas:1
template:
metadata:
labels:
app: a
spec:
containers:
- name: myapp-1
image: koderover.tencentcloudcr.com/koderover-demo/myapp-1:v0.1__linux_amd64
imagePullPolicy: Always
command:["/myapp-1"]
args:["--downstream-addr","$(DOWNSTREAM_ADDR)","--headers","$(HEADERS)"]
env:
- name: DOWNSTREAM_ADDR
value:"b"
- name: HEADERS
value:"x-request-id"
- name: APOLLO_APP_NAMESPACE
value:{{.apollo_app_namespace}}
- name: APOLLO_APP_ID
value: $Service$
- name: APOLLO_APP_ENV
value: $EnvName$
- name: APOLLO_APP_CLUSTER
value:{{.apollo_app_cluster}}
ports:
- containerPort:8080
resources:
limits:
cpu:100m
memory:100Mi

小结​

本文主要阐述了如何使用 Zadig 中的变量能力来更高效的配置环境,只需要维护一份配置就可以实现不同环境的业务数据隔离、差异化域名、差异化业务配置等能力。当环境数量需求高时,可大大降低服务配置的管理负担。除了文中提及到的变量,可阅 变量配置 | Zadig 文档 [2] 解锁更多。社区小伙伴日常使用中还发现哪些让人 Aha 或者不爽的姿势,欢迎戳论坛 https://community.koderover.com/top 分享你的场景~

参考链接:

[1] https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress-controllers/

[2] https://docs.koderover.com/zadig/v1.13.0/project/service/k8s/#变量配置​

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/231747.html<

赞 (0)
管理的头像管理
上一篇2025-04-19 20:32
下一篇 2025-04-19 20:33

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注