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

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

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

背景

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

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

ConfigMap

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

存儲到環(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 這些第三方庫來讀取,所有配置都在一個文件中也更方便維護(hù)。

圖片在 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 進(jìn)行編碼,所以我這里存儲的是 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ā)者在管理臺提供維護(hù)配置的頁面進(jìn)行 CRUD。

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

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

但如果團(tuán)隊本身就是多語言研發(fā),想要降低運(yùn)維復(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)雅停機(jī)

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-24 22:47:42

Kubernetes親和性

2023-09-27 22:33:40

KubernetesK8S

2021-03-12 08:20:24

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

2023-12-25 08:05:35

2016-08-03 16:01:47

GitLinux開源

2009-11-17 12:47:05

PHP配置

2025-03-13 06:22:59

2009-11-16 10:53:30

Oracle Hint

2024-12-11 07:00:00

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

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

主站蜘蛛池模板: 国产专区在线 | 国产精品网址 | 亚洲精品一区在线观看 | 日韩视频二区 | 久久99精品国产99久久6男男 | 免费中文字幕日韩欧美 | 日韩一区二区在线免费观看 | 国产日韩免费视频 | 91在线观看 | 黄色毛片网站在线观看 | 亚洲精品视频在线 | www日本在线 | 999视频在线播放 | 一区二区在线免费观看 | 81精品国产乱码久久久久久 | 成人精品视频在线观看 | 中文字幕日韩三级 | 一区二区三区国产精品 | 中文字幕免费在线 | 一区在线观看 | 久久精品久久精品久久精品 | 日本精品视频在线 | 国产精品视频一二三区 | 91精品国产自产精品男人的天堂 | 激情久久网 | 欧美在线精品一区 | 国产伦一区二区三区 | 老司机免费视频 | 呦呦在线视频 | 日日干夜夜操天天操 | 免费成人国产 | 国产精品毛片一区二区三区 | 国产精品美女久久久久久免费 | 涩爱av一区二区三区 | 亚洲女人天堂成人av在线 | 自拍偷拍一区二区三区 | 色伊人 | www.久久| 日韩精品一区二区三区中文字幕 | 国产精品久久久久久久久久 | www.亚洲国产精品 |