日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

五分鐘k8s入門到實戰(zhàn)-應用配置

來源: 責編: 時間:2023-09-28 10:08:10 309觀看
導讀背景在前面三節(jié)中已經講到如何將我們的應用部署到 k8s 集群并提供對外訪問的能力,x現(xiàn)在可以滿足基本的應用開發(fā)需求了。現(xiàn)在我們需要更進一步,使用 k8s 提供的一些其他對象來標準化我的應用開發(fā)。首先就是 ConfigMap,從

背景

在前面三節(jié)中已經講到如何將我們的應用部署到 k8s 集群并提供對外訪問的能力,x現(xiàn)在可以滿足基本的應用開發(fā)需求了。3r128資訊網(wǎng)——每日最新資訊28at.com

現(xiàn)在我們需要更進一步,使用 k8s 提供的一些其他對象來標準化我的應用開發(fā)。首先就是 ConfigMap,從它的名字也可以看出這是用于管理配置的對象。3r128資訊網(wǎng)——每日最新資訊28at.com

ConfigMap

不管我們之前是做 Java、Go 還是 Python 開發(fā)都會使用到配置文件,而 ConfigMap 的作用可以將我們原本寫在配置文件里的內容轉存到 k8s 中,然后和我們的 Container 進行綁定。3r128資訊網(wǎng)——每日最新資訊28at.com

存儲到環(huán)境變量

綁定的第一種方式就是將配置直接寫入到環(huán)境變量,這里我先定義一個 ConfigMap:3r128資訊網(wǎng)——每日最新資訊28at.com

apiVersion: v1  kind: ConfigMap  metadata:    name: k8s-combat-configmap  data:    PG_URL: "postgres://postgres:postgres@localhost:5432/postgres?sslmode=disable"

重點是 data 部分,存儲的是一個 KV 結構的數(shù)據(jù),這里存儲的是一個數(shù)據(jù)庫連接。3r128資訊網(wǎng)——每日最新資訊28at.com

需要注意,KV 的大小不能超過 1MB3r128資訊網(wǎng)——每日最新資訊28at.com

接著可以在容器定義中綁定這個 ConfigMap 的所有 KV 到容器的環(huán)境變量:3r128資訊網(wǎng)——每日最新資訊28at.com

# Define all the ConfigMap's data as container environment variables envFrom:    - configMapRef:        name: k8s-combat-configmap

我將 ConfigMap 的定義也放在了同一個 deployment 中,直接 apply:3r128資訊網(wǎng)——每日最新資訊28at.com

? k apply -f deployment/deployment.yamldeployment.apps/k8s-combat createdconfigmap/k8s-combat-configmap created

此時 ConfigMap 也會被創(chuàng)建,我們可以使用3r128資訊網(wǎng)——每日最新資訊28at.com

? k get configmapNAME                   DATA   AGEk8s-combat-configmap   1      3m17s? k describe configmap k8s-combat-configmapData====PG_URL:----postgres://postgres:postgres@localhost:5432/postgres?sslmode=disable

拿到剛才聲明的配置信息。3r128資訊網(wǎng)——每日最新資訊28at.com


同時我在代碼中也讀取了這個環(huán)境變量:3r128資訊網(wǎng)——每日最新資訊28at.com

http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {     name, _ := os.Hostname()     url := os.Getenv("PG_URL")      fmt.Fprint(w, fmt.Sprintf("%s-%s", name, url))  })

訪問這個接口便能拿到這個環(huán)境變量:3r128資訊網(wǎng)——每日最新資訊28at.com

root@k8s-combat-7b987bb496-pqt9s:/# curl http://127.0.0.1:8081k8s-combat-7b987bb496-pqt9s-postgres://postgres:postgres@localhost:5432/postgres?sslmode=disableroot@k8s-combat-7b987bb496-pqt9s:/# echo $PG_URLpostgres://postgres:postgres@localhost:5432/postgres?sslmode=disable

存儲到文件

有些時候我們也需要將這些配置存儲到一個文件中,比如在 Java 中可以使用 spring 讀取,Go 也可以使用 configor 這些第三方庫來讀取,所有配置都在一個文件中也更方便維護。3r128資訊網(wǎng)——每日最新資訊28at.com

圖片在 ConfigMap 中新增了一個 key:APP 存放了一個 yaml 格式的數(shù)據(jù),然后在容器中使用 volumes 和 volumeMounts 將數(shù)據(jù)掛載到容器中的指定路徑/go/bin/app.yaml3r128資訊網(wǎng)——每日最新資訊28at.com

apply 之后我們可以在容器中查看這個文件是否存在:3r128資訊網(wǎng)——每日最新資訊28at.com

root@k8s-combat-7b987bb496-pqt9s:/# cat /go/bin/app.yamlname: k8s-combatpulsar:  url: "pulsar://localhost:6650"  token: "abc"

配置已經成功掛載到了這個路徑,我們便可以在代碼中讀取這些數(shù)據(jù)。3r128資訊網(wǎng)——每日最新資訊28at.com

Secret

可以看到 ConfigMap 中是明文存儲數(shù)據(jù)的;3r128資訊網(wǎng)——每日最新資訊28at.com

k describe configmap k8s-combat-configmap

可以直接查看。3r128資訊網(wǎng)——每日最新資訊28at.com

對一些敏感數(shù)據(jù)就不夠用了,這時我們可以使用 Secret:3r128資訊網(wǎng)——每日最新資訊28at.com

apiVersion: v1  kind: Secret  metadata:    name: k8s-combat-secret  type: Opaque  data:    PWD: YWJjCg==---env:    - name: PG_PWD      valueFrom:        secretKeyRef:          name: k8s-combat-secret          key: PWD

這里我新增了一個 Secret 用于存儲密碼,并在 container 中也將這個 key 寫入到環(huán)境變量中。3r128資訊網(wǎng)——每日最新資訊28at.com

? echo 'abc' | base64YWJjCg==

Secret 中的數(shù)據(jù)需要使用 base64 進行編碼,所以我這里存儲的是 abc.3r128資訊網(wǎng)——每日最新資訊28at.com

apply 之后我們再查看這個 Secret 是不能直接查看原始數(shù)據(jù)的。3r128資訊網(wǎng)——每日最新資訊28at.com

? k describe secret k8s-combat-secretName:         k8s-combat-secretType:  OpaqueData====PWD:  4 bytes

Secret 相比 ConfigMap 多了一個 Type 選項。圖片3r128資訊網(wǎng)——每日最新資訊28at.com

我們現(xiàn)階段在應用中用的最多的就是這里的 Opaque,其他的暫時還用不上。3r128資訊網(wǎng)——每日最新資訊28at.com

總結

在實際開發(fā)過程中研發(fā)人員基本上是不會直接接觸 ConfigMap,一般會給開發(fā)者在管理臺提供維護配置的頁面進行 CRUD。3r128資訊網(wǎng)——每日最新資訊28at.com

由于 ConfigMap 依賴于 k8s 與我們應用的語言無關,所以一些高級特性,比如實時更新就無法實現(xiàn),每次修改后都得重啟應用才能生效。3r128資訊網(wǎng)——每日最新資訊28at.com

類似于 Java 中常見的配置中心:Apollo,Nacos 使用上會有不小的區(qū)別,但這些是應用語言強綁定的,如果業(yè)務對這些配置中心特性有強烈需求的話也是可以使用的。3r128資訊網(wǎng)——每日最新資訊28at.com

但如果團隊本身就是多語言研發(fā),想要降低運維復雜度 ConfigMap 還是不二的選擇。3r128資訊網(wǎng)——每日最新資訊28at.com

下一章節(jié)會更新大家都很感興趣的服務網(wǎng)格 Istio,感興趣的朋友多多點贊轉發(fā)

本文鏈接:http://www.www897cc.com/showinfo-26-11853-0.html五分鐘k8s入門到實戰(zhàn)-應用配置

聲明:本網(wǎng)頁內容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Spring BOOT 啟動參數(shù)

下一篇: 實時數(shù)據(jù)推送并非只有WebSocket一種選擇

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 邮箱| 德保县| 资源县| 三江| 武义县| 东阳市| 霍山县| 马公市| 开江县| 秦皇岛市| 柯坪县| 惠州市| 温宿县| 瑞安市| 谢通门县| 漳州市| 祁阳县| 白朗县| 清徐县| 屏边| 甘南县| 九台市| 襄汾县| 溧阳市| 太仆寺旗| 常山县| 定州市| 滦平县| 若尔盖县| 维西| 闽侯县| 通化市| 祥云县| 临邑县| 锡林郭勒盟| 盐山县| 沐川县| 阜新| 宜昌市| 呼图壁县| 商水县|