您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)Kubernetes中secret及configmap如何配置管理的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
配置管理
Pod使用secret兩種方式:
? 變量注入 (就是我們在寫yaml的時候直接讓它以變量的方式注入進(jìn)去,注入pod中,去引用這個變量,去做相關(guān)的處理)
? 掛載(直接從volume的形式掛載到我們指定的目錄下)
Configmap
與Secret類似,區(qū)別在于ConfigMap保存的是不需要加密配置信息。
應(yīng)用場景:應(yīng)用配置
官方文檔使用secret:https://kubernetes.io/docs/concepts/configuration/secret/
可以創(chuàng)建secret主要放一些加密數(shù)據(jù),不希望別人看到的,比如用戶名密碼,保存這樣的數(shù)據(jù)
存儲好怎么讓用戶去訪問,可以通過ingress指定一下secret名字,一般情況下創(chuàng)建pod業(yè)務(wù)容器的話,就需要指定這個secret到哪個地方或者以volume的方式掛載的
加密數(shù)據(jù)并存放Etcd中,讓Pod的容器以掛載Volume方式訪問。
應(yīng)用場景:憑據(jù)
創(chuàng)建資源的時候 , YAML 或 JSON 格式 , 然后創(chuàng)建該對象。在包含兩個映射 : stringdata 和數(shù)據(jù)。該數(shù)據(jù)字段用于存儲任意數(shù)據(jù) , 用 Base64 編碼。在 stringdata 提供 , 并允許您提供秘密數(shù)據(jù)為未編碼的字符串。
例如 , 兩個字符串存儲到在yaml的使用 , 將他們轉(zhuǎn)換成 BASE64:
這里的變量轉(zhuǎn)換為編碼,提示敏感字符,下面的yaml文件沒寫上去,抱歉
[root@k8s-master demo]# echo -n 'root' | base64 [root@k8s-master demo]# echo -n 'zhaocheng' | base64
[root@k8s-master cert]# vim secret.yaml apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque data: username: password:
[root@k8s-master cert]# kubectl create -f secret.yaml [root@k8s-master demo]# vim secret-pod1.yaml apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: nginx image: nginx env: - name: SECRET_USERNAME valueFrom: secretKeyRef: name: mysecret key: username - name: SECRET_PASSWORD valueFrom: secretKeyRef: name: mysecret key: password
[root@k8s-master demo]# kubectl create -f secret-pod1.yaml [root@k8s-master demo]# kubectl get pod NAME READY STATUS RESTARTS AGE busybox 1/1 Running 35 4d1h mypod 1/1 Running 0 2m27s nginx-5ddcc6cb74-m8dwr 1/1 Running 0 5h57m nginx-5ddcc6cb74-rs8b6 1/1 Running 0 4h44m nginx-5ddcc6cb74-zm7cz 1/1 Running 0 4h44m [root@k8s-master demo]# kubectl exec -it mypod sh ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var echo $SECRET_USERNAME root echo $SECRET_PASSWORD zhaocheng
應(yīng)用場景:
一般寫Dockerfile的時候,或者docker-compose的時候,能自動的去處理這些變量,也就是這個值被k8s進(jìn)來解碼
通過volume的形式來掛載
一般使用volume來把一些證書比如https的證書通過變量的形式傳入掛載到目錄中
[root@k8s-master demo]# vim secret-pod2.yaml apiVersion: v1 kind: Pod metadata: name: mypod2 spec: containers: - name: nginx image: nginx volumeMounts: - name: foo mountPath: "/etc/foo" readOnly: true volumes: - name: foo secret: secretName: mysecret
[root@k8s-master demo]# kubectl create -f secret-pod2.yaml [root@k8s-master demo]# kubectl get pod NAME READY STATUS RESTARTS AGE mypod 1/1 Running 0 6m1s mypod2 1/1 Running 0 9s nginx-5ddcc6cb74-lplxl 1/1 Running 0 43m [root@k8s-master demo]# kubectl exec -it mypod2 bash root@mypod2:/# ls /etc/foo/ password username root@mypod2:/# cat /etc/foo/password zhaochengroot@mypod2:/# cat /etc/foo/username rootroot@mypod2:/#
Configmap
與Secret類似,區(qū)別在于ConfigMap保存的是不需要加密配置信息。
應(yīng)用場景:應(yīng)用配置
使用configmap來傳入變量
官方文檔:https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/
[root@k8s-master demo]# vim configmap1.yaml apiVersion: v1 kind: ConfigMap metadata: name: myconfig namespace: default data: special.level: info special.type: hello --- apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: busybox image: busybox command: [ "/bin/sh", "-c", "echo $(LEVEL) $(TYPE)" ] env: - name: LEVEL valueFrom: configMapKeyRef: name: myconfig key: special.level - name: TYPE valueFrom: configMapKeyRef: name: myconfig key: special.type restartPolicy: Never [root@k8s-master demo]# kubectl get pod NAME READY STATUS RESTARTS AGE mypod 1/1 Running 0 26m mypod2 1/1 Running 0 20m mypod3 0/1 Completed 0 41s nginx-5ddcc6cb74-lplxl 1/1 Running 0 63m [root@k8s-master demo]# kubectl logs mypod3 info hello 使用redis的一個實(shí)例 [root@k8s-master demo]# vim configmap2.yaml apiVersion: v1 kind: ConfigMap metadata: name: redis-config data: redis.properties: | redis.host=127.0.0.1 redis.port=6379 redis.password=123456 --- apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: busybox image: busybox command: [ "/bin/sh","-c","cat /etc/config/redis.properties" ] volumeMounts: - name: config-volume mountPath: /etc/config volumes: - name: config-volume configMap: name: redis-config restartPolicy: Never
[root@k8s-master demo]# kubectl create -f configmap2.yaml [root@k8s-master demo]# kubectl get pod NAME READY STATUS RESTARTS AGE mypod 1/1 Running 0 30m mypod2 1/1 Running 0 24m mypod3 0/1 Completed 0 4m58s mypod4 0/1 Completed 0 15s nginx-5ddcc6cb74-lplxl 1/1 Running 0 68m 驗(yàn)證這里已經(jīng)將內(nèi)容發(fā)送到控制臺 [root@k8s-master demo]# kubectl logs mypod4 redis.host=127.0.0.1 redis.port=6379 redis.password=123456
感謝各位的閱讀!關(guān)于“Kubernetes中secret及configmap如何配置管理”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。