自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

多套環(huán)境的數(shù)據(jù)庫隔離,域名訪問,差異化配置,香!快解鎖!

數(shù)據(jù)庫 其他數(shù)據(jù)庫
Zadig 提供了面向開發(fā)者的云原生環(huán)境,支持分鐘級創(chuàng)建或復(fù)制一套完整的隔離環(huán)境以應(yīng)對頻繁的業(yè)務(wù)變更和產(chǎn)品迭代。在實際使用中,多套環(huán)境的數(shù)據(jù)庫、域名、業(yè)務(wù)配置的差異如何管理呢?

?本文主要介紹 Zadig 服務(wù)管理的變量配置能力,通過一套配置,實現(xiàn)多環(huán)境的隔離:

  • 數(shù)據(jù)庫隔離:每個環(huán)境的業(yè)務(wù)數(shù)據(jù)獨立存放在不同的數(shù)據(jù)庫中,互不影響
  • 差異化域名訪問:使用不同的域名地址訪問不同的環(huán)境
  • 差異化業(yè)務(wù)配置:業(yè)務(wù)配置管理在 Nacos、Apollo 等配置中心,不同的環(huán)境使用不同的配置

數(shù)據(jù)庫隔離

適用:不同環(huán)境的業(yè)務(wù)數(shù)據(jù)互相隔離,一個數(shù)據(jù)庫對應(yīng)多個連接地址,或連接不同的數(shù)據(jù)庫均適用。

配置服務(wù)變量

如圖中 vote 服務(wù),該服務(wù)數(shù)據(jù)庫相關(guān)配置被管理在 ConfigMap 中的,并通過 volume 掛載到應(yīng)用中。在 Zadig 中,我們將數(shù)據(jù)庫配置項抽取為 Zadig 的全局變量 mgo_addr 和 mgo_db,并為其配置默認(rèn)值。

  • mgo_addr 默認(rèn)值設(shè)置:220.16.0.43,可根據(jù)實際情況進(jìn)行配置。
  • mgo_db 默認(rèn)值設(shè)置:$Product$_$EnvName$_vote  ,這里我們用到了系統(tǒng)內(nèi)置全局變量 $Product$、$EnvName$,分別表示項目名稱和環(huán)境名稱。

圖片

變量配置生效

創(chuàng)建環(huán)境時,配置中的變量可以使用默認(rèn)值,也可以重新指定。

圖片

環(huán)境創(chuàng)建時,變量會被自動渲染,效果如下圖。在 dev 環(huán)境中被渲染為:simple-vote-service-dev-vote,qa 環(huán)境中被渲染為:simple-vote-service-qa-vote

圖片

圖片

圖例中服務(wù) 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 中創(chuàng)建多套環(huán)境,使用不同的域名訪問不同的環(huán)境

配置泛域名

給集群入口配置一個泛域名,比如:*.koderover.com,確保域名 DNS 正確解析到集群 Ingress 控制器 [1] LoadBalancer 的外網(wǎng) IP 上。

配置服務(wù)變量

此例中為業(yè)務(wù)入口配置外網(wǎng)訪問地址 host ,Zadig 中配置全局變量: {{.domain}},Value 設(shè)為:vote-$EnvName$.koderover.com

圖片

創(chuàng)建環(huán)境時,系統(tǒng)會自動渲染變量,效果圖示如下。

圖片

圖片

圖例中服務(wù)的 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

差異化業(yè)務(wù)配置

適用:服務(wù)的業(yè)務(wù)配置在第三方配置中心管理(比如 Nacos、Apollo 等),不同環(huán)境使用不同的配置項。下面以一套 Apollo 配置中心舉例,通過 Zadig 管理和使用不同環(huán)境的業(yè)務(wù)配置。

配置服務(wù)變量

以 myapp 服務(wù)為例,我們需要在 Zadig 中設(shè)置 Apollo 配置參數(shù)與 Zadig 環(huán)境變量的對應(yīng)關(guān)系。

在 Zadig 中定義的配置項(可以根據(jù)情況進(jìn)行設(shè)置):

  • APOLLO_APP_NAMESPACE:Apollo 配置中心的命名空間(Namespace),使用 Zadig 自定義變量 apollo_app_namespace 為其賦值,默認(rèn)值設(shè)為 zadig.dev
  • APOLLO_APP_ID:Apollo  配置中心的應(yīng)用(Application),使用 Zadig 系統(tǒng)內(nèi)置變量 $Service$ 為其賦值。
  • APOLLO_APP_ENV:Apollo 配置中心的環(huán)境(Enviroment),使用 Zadig 系統(tǒng)內(nèi)置變量 $EnvName$ 為其賦值。
  • APOLLO_APP_CLUSTER:Apollo 配置中心中的集群(Cluster),用 Zadig 自定義變量 apollo_app_cluster 為其賦值,默認(rèn)值設(shè)為 local。

圖片

變量配置生效

當(dāng)環(huán)境拉起或myapp 服務(wù)啟動時,會去相應(yīng)的配置中心獲取服務(wù)配置。

uat 環(huán)境效果:

圖片

qa 環(huán)境效果:

圖片

圖例中服務(wù)的 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

小結(jié)?

本文主要闡述了如何使用 Zadig 中的變量能力來更高效的配置環(huán)境,只需要維護(hù)一份配置就可以實現(xiàn)不同環(huán)境的業(yè)務(wù)數(shù)據(jù)隔離、差異化域名、差異化業(yè)務(wù)配置等能力。當(dāng)環(huán)境數(shù)量需求高時,可大大降低服務(wù)配置的管理負(fù)擔(dān)。除了文中提及到的變量,可閱 變量配置 | Zadig 文檔 [2] 解鎖更多。社區(qū)小伙伴日常使用中還發(fā)現(xiàn)哪些讓人 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/#變量配置?

責(zé)任編輯:武曉燕 來源: KodeRover
相關(guān)推薦

2011-05-05 09:03:43

數(shù)據(jù)庫選型

2019-09-11 11:25:49

數(shù)據(jù)隱私技術(shù)人工智能

2010-09-02 19:55:35

斐訊數(shù)據(jù)通信

2010-05-12 20:40:53

ITO運維管理摩卡軟件

2011-11-30 10:19:17

iPad游戲體驗移動設(shè)計

2012-10-08 16:18:56

論壇

2014-07-29 10:17:31

銳捷網(wǎng)絡(luò)銳捷智分

2011-03-17 12:53:06

2011-03-16 19:17:57

漢柏差異化

2011-08-18 09:59:19

微軟云計算

2011-11-29 09:21:29

差異化設(shè)計iPad游戲體驗

2013-12-26 15:17:36

2023-07-26 13:21:10

2022-12-09 12:03:19

開發(fā)工程

2020-06-02 21:03:57

物聯(lián)網(wǎng)產(chǎn)品物聯(lián)網(wǎng)IOT

2015-07-23 15:40:42

華為服務(wù)器/華為

2017-03-29 18:39:39

2013-06-07 14:00:38

移動支付

2012-04-19 13:28:36

Avaya

2015-11-04 14:35:10

Windows Azu微軟微軟智能云
點贊
收藏

51CTO技術(shù)棧公眾號