当前位置: 当前位置:首页 >IT科技 >多套环境的数据库隔离,域名访问,差异化配置,香!快解锁! 正文

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

2025-11-05 12:12:23 来源:多维IT资讯作者:域名 点击:622次

​本文主要介绍 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: strong1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.

差异化域名访问

适用:在 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: 100

m

spec: rules: - host: {{.domain}} http: paths: - path: / backend: serviceName:

vote

servicePort: 50001.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41. 差异化业务配置

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

配置服务变量

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

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

APOLLO_APP_NAMESPACE:Apollo 配置中心的命名空间(Namespace),使用 Zadig 自定义变量 apollo_app_namespace 为其赋值,默认值设为 zadig.devAPOLLO_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: 100

m

memory: 100Mi1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57. 小结​

本文主要阐述了如何使用 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/#变量配置​

作者:应用开发
------分隔线----------------------------
头条新闻
图片新闻
新闻排行榜