成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

五分鐘K8S入門到實戰(zhàn)-應(yīng)用配置

開發(fā) 前端
不管我們之前是做 Java、Go? 還是 Python? 開發(fā)都會使用到配置文件,而 ConfigMap? 的作用可以將我們原本寫在配置文件里的內(nèi)容轉(zhuǎn)存到 k8s? 中,然后和我們的 Container 進行綁定。

背景

在前面三節(jié)中已經(jīng)講到如何將我們的應(yīng)用部署到 k8s 集群并提供對外訪問的能力,x現(xiàn)在可以滿足基本的應(yīng)用開發(fā)需求了。

現(xiàn)在我們需要更進一步,使用 k8s 提供的一些其他對象來標(biāo)準(zhǔn)化我的應(yīng)用開發(fā)。首先就是 ConfigMap,從它的名字也可以看出這是用于管理配置的對象。

ConfigMap

不管我們之前是做 Java、Go 還是 Python 開發(fā)都會使用到配置文件,而 ConfigMap 的作用可以將我們原本寫在配置文件里的內(nèi)容轉(zhuǎn)存到 k8s 中,然后和我們的 Container 進行綁定。

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

綁定的第一種方式就是將配置直接寫入到環(huán)境變量,這里我先定義一個 ConfigMap:

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

重點是 data 部分,存儲的是一個 KV 結(jié)構(gòu)的數(shù)據(jù),這里存儲的是一個數(shù)據(jù)庫連接。

需要注意,KV 的大小不能超過 1MB

接著可以在容器定義中綁定這個 ConfigMap 的所有 KV 到容器的環(huán)境變量:

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

我將 ConfigMap 的定義也放在了同一個 deployment 中,直接 apply:

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

此時 ConfigMap 也會被創(chuàng)建,我們可以使用

? k get configmap
NAME                   DATA   AGE
k8s-combat-configmap   1      3m17s

? k describe configmap k8s-combat-configmap
Data
====
PG_URL:
----
postgres://postgres:postgres@localhost:5432/postgres?sslmode=disable

拿到剛才聲明的配置信息。


同時我在代碼中也讀取了這個環(huán)境變量:

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)境變量:

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

root@k8s-combat-7b987bb496-pqt9s:/# echo $PG_URL
postgres://postgres:postgres@localhost:5432/postgres?sslmode=disable

存儲到文件

有些時候我們也需要將這些配置存儲到一個文件中,比如在 Java 中可以使用 spring 讀取,Go 也可以使用 configor 這些第三方庫來讀取,所有配置都在一個文件中也更方便維護。

圖片在 ConfigMap 中新增了一個 key:APP 存放了一個 yaml 格式的數(shù)據(jù),然后在容器中使用 volumes 和 volumeMounts 將數(shù)據(jù)掛載到容器中的指定路徑/go/bin/app.yaml

apply 之后我們可以在容器中查看這個文件是否存在:

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

配置已經(jīng)成功掛載到了這個路徑,我們便可以在代碼中讀取這些數(shù)據(jù)。

Secret

可以看到 ConfigMap 中是明文存儲數(shù)據(jù)的;

k describe configmap k8s-combat-configmap

可以直接查看。

對一些敏感數(shù)據(jù)就不夠用了,這時我們可以使用 Secret:

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)境變量中。

? echo 'abc' | base64
YWJjCg==

Secret 中的數(shù)據(jù)需要使用 base64 進行編碼,所以我這里存儲的是 abc.

apply 之后我們再查看這個 Secret 是不能直接查看原始數(shù)據(jù)的。

? k describe secret k8s-combat-secret
Name:         k8s-combat-secret
Type:  Opaque

Data
====
PWD:  4 bytes

Secret 相比 ConfigMap 多了一個 Type 選項。圖片

我們現(xiàn)階段在應(yīng)用中用的最多的就是這里的 Opaque,其他的暫時還用不上。

總結(jié)

在實際開發(fā)過程中研發(fā)人員基本上是不會直接接觸 ConfigMap,一般會給開發(fā)者在管理臺提供維護配置的頁面進行 CRUD。

由于 ConfigMap 依賴于 k8s 與我們應(yīng)用的語言無關(guān),所以一些高級特性,比如實時更新就無法實現(xiàn),每次修改后都得重啟應(yīng)用才能生效。

類似于 Java 中常見的配置中心:Apollo,Nacos 使用上會有不小的區(qū)別,但這些是應(yīng)用語言強綁定的,如果業(yè)務(wù)對這些配置中心特性有強烈需求的話也是可以使用的。

但如果團隊本身就是多語言研發(fā),想要降低運維復(fù)雜度 ConfigMap 還是不二的選擇。

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

本文的所有源碼和資源文件在這里可以訪問:https://github.com/crossoverJie/k8s-combat

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

2023-11-27 13:54:00

kubernetes高可用

2023-09-15 08:00:20

Ingress網(wǎng)關(guān)Istio

2023-11-15 13:44:00

k8s-域名日志

2020-02-19 19:26:27

K8S開源平臺容器技術(shù)

2023-11-30 08:08:30

k8s優(yōu)雅停機

2023-09-06 08:12:04

k8s云原生

2023-09-21 11:28:28

Kubernetes云原生

2023-09-08 08:09:12

k8sservice服務(wù)

2022-09-30 15:46:26

Babel編譯器插件

2023-08-04 08:19:02

2024-01-12 08:03:29

k8s配置持久化

2023-09-27 22:33:40

KubernetesK8S

2021-03-12 08:20:24

架構(gòu)網(wǎng)絡(luò)模型

2023-12-25 08:05:35

2023-09-24 22:47:42

Kubernetes親和性

2016-08-03 16:01:47

GitLinux開源

2024-01-29 13:03:02

2009-11-17 12:47:05

PHP配置

2020-05-12 10:20:39

K8s kubernetes中間件

2024-12-11 07:00:00

面向?qū)ο?/a>代碼
點贊
收藏

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

主站蜘蛛池模板: avhd101在线成人播放 | 国产精品亚洲一区 | 羞羞的视频在线观看 | 久久精品| 成人欧美 | 久久久综合精品 | 精品国产乱码久久久久久牛牛 | 欧美日韩1区2区3区 欧美久久一区 | 在线免费观看黄a | 精品av | 亚洲福利视频一区二区 | 亚洲永久在线 | 一级在线 | 久久精品亚洲精品国产欧美 | 男人天堂色| 精品福利在线 | 国产区免费视频 | 国产精品一区二区欧美黑人喷潮水 | 欧美成年网站 | 国产精品福利网站 | 色视频一区二区 | 免费日韩网站 | 岛国av免费在线观看 | 国产乱精品一区二区三区 | 国产日韩一区二区三免费高清 | 综合一区 | 欧美一区永久视频免费观看 | 欧美中文一区 | 国产欧美一区二区精品久导航 | 国产9999精品 | 精品久久久久香蕉网 | 罗宾被扒开腿做同人网站 | 亚洲综合大片69999 | 亚洲精品视频免费观看 | 91视视频在线观看入口直接观看 | 久久久久久久久淑女av国产精品 | 欧美性video 精品亚洲一区二区 | 日韩免费网站 | www.精品国产 | 日本一区二区高清不卡 | 久久免费精品视频 |