国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Kubernetes系列-配置存儲(chǔ) ConfigMap & Secret

這篇具有很好參考價(jià)值的文章主要介紹了Kubernetes系列-配置存儲(chǔ) ConfigMap & Secret。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1?ConfigMap介紹

1.1 概述

在部署應(yīng)用程序時(shí),我們都會(huì)涉及到應(yīng)用的配置,在容器中,如Docker容器中,如果將配置文件打入容器鏡像,這種行為等同于寫死配置,每次修改完配置,鏡像就得重新構(gòu)建。當(dāng)然,我們也可以通過(guò)掛載包含該文件的卷進(jìn)行配置管理和修改。而在k8s中,我們要講一種更好的方式,即ConfigMap,這種資源對(duì)象的出現(xiàn),更是極大的方便了應(yīng)用程序的配置管理。
ConfigMap是一個(gè)或多個(gè)key/value的形式保存在k8s中,內(nèi)部可以管理變量也可以管理完整的配置文件內(nèi)容。

1.2 用法

  • 生成容器內(nèi)的環(huán)境變量,在pod中可以通過(guò)spec.env或者spec.envFrom進(jìn)行引用。
  • 設(shè)置容器啟動(dòng)命令的啟動(dòng)參數(shù),前提是設(shè)置為環(huán)境變量。
  • 以卷volume的方式掛載到容器內(nèi)部的文件或目錄,通過(guò)spec.volumes引用。

注:在使用命令的時(shí)候注意單詞: configmap等價(jià)于cm,cm算是簡(jiǎn)寫,類似于deployment可以使用命令時(shí)寫成deploy,service可以寫成svc,namespace可以寫成ns,pod可以寫成po。

1.3 應(yīng)用場(chǎng)景

configmap配置信息和鏡像解耦,實(shí)現(xiàn)方式是把配置信息放到configmap對(duì)象中,然后在pod中作為volume掛載到pod中,從而實(shí)現(xiàn)導(dǎo)入配置的目的

適用場(chǎng)景:

  • 通過(guò)configmap給pod定義全局環(huán)境變量
  • 通過(guò)configmap給pod傳遞命令行參數(shù),如mysql -u -p中的賬戶名密碼都可以通過(guò)它傳遞
  • 通過(guò)configmap給pod中的容器服務(wù)提供配置文件,配置文件以掛載到容器的形式適用

注意事項(xiàng):

  • configmap需要在pod使用它之前創(chuàng)建
  • pod和configmap必須在同一個(gè)namespace中才能使用
  • 主要用于非安全加密的配置場(chǎng)景
  • configmap通常用于小于1MB的配置,常用于配置文件
  • kubelet只支持可以被API Server管理的Pod使用ConfigMap。
  • kubelet在本Node上通過(guò)--manifest-url--config自動(dòng)創(chuàng)建的靜態(tài) Pod 將無(wú)法引用 Conf1gMap。
  • 在 Pod 對(duì) ConfigMap 進(jìn)行掛載(volumeMount)操作時(shí),容器內(nèi)部只能掛載為“目錄”, 無(wú)法掛載為“文件”。在掛載到容器內(nèi)部后,目錄中將包含 ConfigMap 定義的每個(gè)item,如果該目錄下原來(lái)還有其他文件,則容器內(nèi)的該目錄將會(huì)被掛載的 ConfigMap 覆蓋。 如果應(yīng)用程序需要保留原來(lái)的其他文件,則需要進(jìn)行額外的處理。可以將 ConfigMap 掛載到容器內(nèi)部的臨時(shí)目錄,再通過(guò)啟動(dòng)腳本將配置文件復(fù)制或者鏈接到(cp或link命令)應(yīng)用所用的實(shí)際配置目錄下。

1.4 創(chuàng)建

1.4.1 yaml文件方式創(chuàng)建

示例:

apiVersion: v1
kind: ConfigMap
metadata:
  name: cm-test01
data:
  appconf01: value01
  appconf02: value02

命令:

[root@k8s-master k8s]# kubectl create -f cm-test01.yaml?
configmap/cm-test01 created

1.4.2 命令行方式創(chuàng)建

讀取文件方式(也可以是目錄)通過(guò)--from-file參數(shù)從文件中讀取??梢灾付╧ey的名稱,若不指定,則默認(rèn)使用文件名為key。
案例:如當(dāng)前目錄有一個(gè)配置文件為test.properties

[root@k8s-master k8s]# cat test.properties?
key01:value01
key02:value02
conf01: value03

命令:

[root@k8s-master k8s]# kubectl create cm cm-test-file --from-file=test.properties
configmap/cm-test-file created

//指定參數(shù)方式,通過(guò)--from-literal指定keyxx=valuexx創(chuàng)建confimap中的data內(nèi)配置屬性。

[root@k8s-master k8s]# ?kubectl create configmap cm-test-literal --from-literal=key01=value01 --from-literal=key02=value02
configmap/cm-test-literal created

1.5?查詢

1.5.1 查詢configmap列表

[root@k8s-master k8s]# kubectl get cm
NAME ? ? ? ? ? ? ? DATA ? AGE
cm-test-file ? ? ? 1 ? ? ?3m51s
cm-test-literal ? ?2 ? ? ?3m30s
cm-test01 ? ? ? ? ?2 ? ? ?9m2s
kube-root-ca.crt ? 1 ? ? ?4d16h

1.5.2 查看configmap詳細(xì)信息

[root@k8s-master k8s]# kubectl describe cm cm-test01
Name:         cm-test01
Namespace:    default
Labels:       <none>
Annotations:  <none>
 
Data
====
appconf01:
----
value01
appconf02:
----
value02
Events:  <none>
[root@k8s-master k8s]# kubectl describe cm cm-test-file
Name:         cm-test-file
Namespace:    default
Labels:       <none>
Annotations:  <none>
 
Data
====
test.properties:
----
key01:value01
key02:value02
conf01: value03
 
 
Events:  <none>
[root@k8s-master k8s]# kubectl describe cm cm-test-literal
Name:         cm-test-literal
Namespace:    default
Labels:       <none>
Annotations:  <none>
 
Data
====
key01:
----
value01
key02:
----
value02
Events:  <none>

1.5.3 查看yaml輸出

[root@k8s-master k8s]# kubectl get cm cm-test01 -o yaml
apiVersion: v1
data:
  appconf01: value01
  appconf02: value02
kind: ConfigMap
metadata:
  creationTimestamp: "2022-08-07T00:18:47Z"
  name: cm-test01
  namespace: default
  resourceVersion: "44876"
  uid: 7492a928-b163-4b86-a3dd-54a7fbe59a10
[root@k8s-master k8s]# kubectl get configmap cm-test-file -o yaml
apiVersion: v1
data:
  test.properties: |+
    key01:value01
    key02:value02
    conf01: value03
 
kind: ConfigMap
metadata:
  creationTimestamp: "2022-08-07T00:23:58Z"
  name: cm-test-file
  namespace: default
  resourceVersion: "45341"
  uid: 818a39b4-cbaf-4643-9541-1119b4d61982
[root@k8s-master k8s]# kubectl get cm cm-test-literal -o yaml
apiVersion: v1
data:
  key01: value01
  key02: value02
kind: ConfigMap
metadata:
  creationTimestamp: "2022-08-07T00:24:19Z"
  name: cm-test-literal
  namespace: default
  resourceVersion: "45372"
  uid: 051849e0-bf0a-4926-a549-2405dc4963cc

1.6?更新

1.6.1?edit

[root@k8s-master k8s]# kubectl edit cm cm-test01
configmap/cm-test01 edited

通過(guò)kubectl describe cm cm-test01查看更新是否生效。

[root@k8s-master k8s]# kubectl describe cm cm-test01
Name:         cm-test01
Namespace:    default
Labels:       <none>
Annotations:  <none>
 
Data
====
appconf02:
----
value02
appconf01:
----
value001
Events:  <none>

1.6.2 apply

直接更新yaml文件里的值,通過(guò)?kubectl apply -f configmap-test01.yaml重新發(fā)布一遍進(jìn)行更新。

1.7?刪除

1.7.1 通過(guò)yaml文件方式刪除

$ kubectl delete -f configmap-test01.yaml

1.7.2 直接刪除資源

kubectl delet cm cm-test01

2?ConfigMap和Pod的使用

容器應(yīng)用對(duì)ConfigMap的使用主要是兩種:
1)通過(guò)環(huán)境變量獲取ConfigMap的內(nèi)容:spec.envspec.envFrom
2)通過(guò)卷volume掛載的方式將ConfigMap的內(nèi)容掛載到容器內(nèi)部的文件或目錄:spec.volumes。

2.1 環(huán)境變量方式

2.1.1?sepc.env方式

2.1.1.1?創(chuàng)建pod
[root@k8s-master k8s]# vim pod-test01.yaml
 
apiVersion: v1
kind: Pod
metadata:
  name: cm-pod-test001
spec:
  containers:
  - name: cm-test
    image: tomcat:8
    command: [ "/bin/sh", "-c", "env | grep APP"]
    env:
    - name: APPCONF01 		# 定義環(huán)境變量的名稱
      valueFrom:	  		# key “appconf01”的值獲取
        configMapKeyRef:
          name: cm-test01	# 環(huán)境變量的值來(lái)自于configmap cm-test01
          key: appconf01	# configmap中的配置key為appconf01
    - name: APPCONF02		# 定義環(huán)境變量的名稱
      valueFrom:			# key “appconf02”的值獲取
        configMapKeyRef:
          name: cm-test01	# 環(huán)境變量的值來(lái)自于configmap cm-test01
          key: appconf02	# configmap中的配置key為appconf02
  restartPolicy: Never		# 重啟策略:從不。

執(zhí)行創(chuàng)建pod:

[root@k8s-master k8s]# kubectl create -f pod-test01.yaml
pod/cm-test001 created
2.1.1.2?查看pod
[root@k8s-master k8s]# kubectl get pods
[root@k8s /cm/test]# ?kubectl get pods
NAME ? ? ? ? ? ? READY ? ? STATUS ? ? ?RESTARTS ? AGE
cm-pod-test001 ? 0/1 ? ? ? Completed ? 0 ? ? ? ? ?1h
2.1.1.3 查看pod日志
[root@k8s-master k8s]# kubectl logs cm-pod-test001
APPCONF01=value01
APPCONF02=value02

說(shuō)明容器內(nèi)部的環(huán)境變量使用ConfigMap中進(jìn)行讀取的

2.1.2?spec.envFrom方式

2.1.2.1?創(chuàng)建pod
[root@k8s-master k8s]# vim pod-test02.yaml
?
piVersion: v1
kind: Pod
metadata:
? name: cm-pod-test002
spec:
? containers:
? - name: cm-test2
? ? image: tomcat:8
? ? command: [ "/bin/sh", "-c", "env"]
? ? envFrom:
? ? - configMapRef:
? ? ? name: cm-test01 ?# 根據(jù)ConfigMap cm-test01資源自動(dòng)生成環(huán)境變量
? restartPolicy: Never

執(zhí)行創(chuàng)建pod:

[root@k8s-master k8s]# kubectl create -f pod-test02.yaml
2.1.2.2?查看pod
[root@k8s-master k8s]# ?kubectl get po
NAME ? ? ? ? ? ? READY ? ? STATUS ? ? ?RESTARTS ? AGE
cm-pod-test001 ? 0/1 ? ? ? Completed ? 0 ? ? ? ? ?2h
cm-pod-test002 ? 0/1 ? ? ? Completed ? 0 ? ? ? ? ?1h
注意:
環(huán)境變量的名稱受限制:[a-zA-Z][a-zA-Z0-9_]*,不能以數(shù)字或非法字符開頭。

2.2?卷掛載方式

2.2.1?指定items

[root@k8s-master k8s]#  vim pod-test03.yaml
apiVersion: v1
kind: Pod
metadata:
  name: cm-pod-test003
spec:
  containers:
  - name: cm-test3
    image: tomcat:8
    volumeMounts:
    - name: vm-01-1
      mountPath: /conf
  volumes:
  - name: vm-01-1
    configMap:
      name: cm-test-file
      items:
      - key: key-testproperties
        path: test.properties
  restartPolicy: Never

2.2.2?不指定items

[root@k8s-master k8s]#  vim pod-test04.yaml
apiVersion: v1
kind: Pod
metadata:
  name: cm-pod-test004
spec:
  containers:
  - name: cm-test4
    image: tomcat:8
    volumeMounts:
    - name: vm-02-2
      mountPath: /conf
  volumes:
  - name: vm-02-2
    configMap:
      name: cm-test-file
  restartPolicy: Never

進(jìn)入容器中查看

[root@k8s-master k8s]# kubectl exec -it cm-pod-test004 -c cm-test4 -- bash

進(jìn)入容器后,ls /conf查看是否有test.properties文件。

[root@k8s-master k8s]# ?kubectl exec -it cm-pod-test004 -c cm-test4 ?-- bash
root@cm-pod-test004:/usr/local/tomcat# ls /conf
test.properties

2.3 補(bǔ)充

關(guān)于--from-file的方式的創(chuàng)建指定key和不指定key的區(qū)別
1)不指定key名

創(chuàng)建:

[root@k8s-master k8s]# kubectl create cm cm-test-file --from-file=test.properties

輸出:

[root@k8s-master k8s]# kubectl get cm cm-test-file -o yaml

2)指定key
創(chuàng)建:

[root@k8s-master k8s]# kubectl create cm cm-test-file02 --from-file=tp=test.properties

輸出:

[root@k8s-master k8s]# kubectl get cm cm-test-file -o yaml

若指定key的名稱,configmap中將會(huì)使用指定名稱;若不指定,則默認(rèn)使用文件名為key。

3?Secret

3.1 概述

Secret對(duì)象存儲(chǔ)數(shù)據(jù)的方式是以鍵值方式存儲(chǔ)數(shù)據(jù),在Pod資源進(jìn)行調(diào)用Secret的方式是通過(guò)環(huán)境變量或者存儲(chǔ)卷的方式進(jìn)行訪問(wèn)數(shù)據(jù),解決了密碼、token、密鑰等敏感數(shù)據(jù)的配置問(wèn)題,而不需要把這些敏感數(shù)據(jù)暴露到鏡像或者Pod Spec中。

另外,Secret對(duì)象的數(shù)據(jù)存儲(chǔ)和打印格式為Base64編碼的字符串,因此用戶在創(chuàng)建Secret對(duì)象時(shí),也需要提供該類型的編碼格式的數(shù)據(jù)。在容器中以環(huán)境變量或存儲(chǔ)卷的方式訪問(wèn)時(shí),會(huì)自動(dòng)解碼為明文格式。需要注意的是,如果是在Master節(jié)點(diǎn)上,Secret對(duì)象以非加密的格式存儲(chǔ)在etcd中,所以需要對(duì)etcd的管理和權(quán)限進(jìn)行嚴(yán)格控制。

要使用 Secret,Pod 需要引用 Secret。 Pod 可以用三種方式之一來(lái)使用 Secret:

  • 作為掛載到一個(gè)或多個(gè)容器上的 卷 中的文件。
  • 作為容器的環(huán)境變量
  • 由 kubelet 在為 Pod 拉取鏡像時(shí)使用

Secret 對(duì)象的名稱必須是合法的 DNS 子域名。 在為創(chuàng)建 Secret 編寫配置文件時(shí),你可以設(shè)置 data 與/或 stringData 字段。 data 和 stringData 字段都是可選的。data 字段中所有鍵值都必須是 base64 編碼的字符串。如果不希望執(zhí)行這種 base64 字符串的轉(zhuǎn)換操作,你可以選擇設(shè)置 stringData 字段,其中可以使用任何字符串作為其取值。

3.2?Secret 的類型

在創(chuàng)建 Secret 對(duì)象時(shí),你可以使用 Secret 資源的 type 字段,或者與其等價(jià)的 kubectl 命令行參數(shù)(如果有的話)為其設(shè)置類型。 Secret 的類型用來(lái)幫助編寫程序處理 Secret 數(shù)據(jù)。

Kubernetes 提供若干種內(nèi)置的類型,用于一些常見的使用場(chǎng)景。 針對(duì)這些類型,Kubernetes 所執(zhí)行的合法性檢查操作以及對(duì)其所實(shí)施的限制各不相同。

內(nèi)置類型 用法
Opaque 用戶定義的任意數(shù)據(jù) base64編碼格式的Secret,用來(lái)存儲(chǔ)密碼、密鑰、信息、證書等,類型標(biāo)識(shí)符為generic;
http://kubernetes.io/service-account-token 服務(wù)賬號(hào)令牌 用來(lái)訪問(wèn)Kubernetes API,由Kubernetes自動(dòng)創(chuàng)建,并且會(huì)自動(dòng)掛載到Pod的/run/secrets/http://kubernetes.io/serviceaccount目錄中;
http://kubernetes.io/dockercfg ~/.dockercfg 文件的序列化形式
http://kubernetes.io/dockerconfigjson ~/.docker/config.json 文件的序列化形式 用來(lái)存儲(chǔ)私有docker registry的認(rèn)證信息,類型標(biāo)識(shí)為docker-registry
http://kubernetes.io/basic-auth 用于基本身份認(rèn)證的憑據(jù)
http://kubernetes.io/ssh-auth 用于 SSH 身份認(rèn)證的憑據(jù)
http://kubernetes.io/tls 用于 TLS 客戶端或者服務(wù)器端的數(shù)據(jù) 用于為SSL通信模式存儲(chǔ)證書和私鑰文件,命令式創(chuàng)建類型標(biāo)識(shí)為tls。
http://bootstrap.kubernetes.io/token 啟動(dòng)引導(dǎo)令牌數(shù)據(jù)

通過(guò)為 Secret 對(duì)象的 type 字段設(shè)置一個(gè)非空的字符串值,你也可以定義并使用自己 Secret 類型。如果 type 值為空字符串,則被視為 Opaque 類型。 Kubernetes 并不對(duì)類型的名稱作任何限制。不過(guò),如果你要使用內(nèi)置類型之一, 則你必須滿足為該類型所定義的所有要求。

3.3 Service Account

Kubernetes 在創(chuàng)建 Pod 時(shí)會(huì)自動(dòng)創(chuàng)建一個(gè)服務(wù)賬號(hào) Secret 并自動(dòng)修改你的 Pod 以使用該 Secret。該服務(wù)賬號(hào)令牌 Secret 中包含了訪問(wèn) Kubernetes API 所需要的憑據(jù)。

Service Account 用來(lái)訪問(wèn)kubernetes API,由Kubernetes自動(dòng)創(chuàng)建,并且會(huì)自動(dòng)掛載到Pod的/run/secrets/http://kubernetes.io/serviceaccount目錄中。

Service Account 不需要我們自己去管理的,此證書是由kubernetes自己來(lái)進(jìn)行維護(hù)管理的。

# 創(chuàng)建pod
kubectl run my-nginx --image=nginx:1.20.0

# 查看證書
kubctl exec -it podName -- bash

# 進(jìn)入證書目錄/run/secrets/kubernetes.io/serviceaccount查看即可
ca.crt
namespace
token

# 查看證書
# root@my-nginx:/run/secrets/kubernetes.io/serviceaccount# cat ca.crt 
-----BEGIN CERTIFICATE-----
MIIC5zCCAc+gAwIBAgIBADANBgkqhkiG9w0BAQsFADAVMRMwEQYDVQQDEwprdWJl
cm5ldGVzMB4XDTIxMDUxNzA3MTgyMloXDTMxMDUxNTA3MTgyMlowFTETMBEGA1UE
AxMKa3ViZXJuZXRlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALIB
eVgGvrAomjLyj4fgasSoJQoZnhpZj75wKDOg7gYFKmGb9oLX5qIj33jqmrK4bUI5
symIPTJTrNZ7FsVmeC66JiE50niMpxuD01pDJARTfc0cMgkFWDq7JsVptA7MNILT
81keKB7eOZY0Cx7c/O+9w6f6UrvpHTMgNvE6wG3StFw2YJFPhDC6ZqwduISzBIsK
wbTrwp6jBHPTxsQEmEuHuoe0Hz+sjov5wXFpw7QB5V+P980tVvgK1GGX9wPxMytJ
ofv3vwbvHD/DrotA6HNwdYELIEgFULXPGuO/HL4z7C2MJxqVW7UdirCdnBDtI6HB
m55toVZJtmHj7kCpkzMCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgKkMA8GA1UdEwEB
/wQFMAMBAf8wHQYDVR0OBBYEFIaXFp8Y2aneT8Wk59gysMNJxmOhMA0GCSqGSIb3
DQEBCwUAA4IBAQCuPXfqD25NJagNOoEPjXyTfWGCHHBJSqSknnz3B/KaJu7hzIwD
G5c5zLQwDc/chHNjaRRZWcvOpfQfmqdhRg0EdDIa/B4cVmGa9eUs7f2XwlZuu6aw
5VOoTRZ6h/a9L4RQLxSSWTl2/AR4YeiBiU1tjfrc+gmZTObptmNLyuDfU7A4BG7U
1N8AddG4dojH2a7xbAnIKbTjTXRtLsI5aC0BPWHazwwG5NOreCauD+yVnQlw/dcw
C74QaamuFeWr/K2W0pq0qcjH471xuKhOUnY02HkN7P1zOL2uIZQ613yBYNksmPZB
9AQJ9VZlD6szo0XoniWcSD0Z2J90pbFCJCUd
-----END CERTIFICATE-----

# 查看命名空間
root@my-nginx:/run/secrets/kubernetes.io/serviceaccount# cat namespace 
default

# 查看token
# root@my-nginx:/run/secrets/kubernetes.io/serviceaccount# cat token 
eyJhbGciOiJSUzI1NiIsImtpZCI6ImIyMVg2OTBtZm1jUVNWM2ZGMUI0QkQ2MzJVS0EyOER2N3NuZFpha3pRMDgifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNjU0MzM0NzE4LCJpYXQiOjE2MjI3OTg3MTgsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJkZWZhdWx0IiwicG9kIjp7Im5hbWUiOiJteS1uZ2lueCIsInVpZCI6IjEyNzI5NWFjLWIzN2EtNDc5Zi1hMzYwLWEzNDg4ODA0NDgxZCJ9LCJzZXJ2aWNlYWNjb3VudCI6eyJuYW1lIjoiZGVmYXVsdCIsInVpZCI6IjE5Y2ZkZmM2LThlZGMtNDNjYy05YjUxLTJlNDUzZjMwNTRhZSJ9LCJ3YXJuYWZ0ZXIiOjE2MjI4MDIzMjV9LCJuYmYiOjE2MjI3OTg3MTgsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0OmRlZmF1bHQifQ.i-VcnUBSBGm6FlukqjgcWe50nBQNGgERoKjWhkPod5rTAIswJ9EGyUcADt-vYewT4CYb8R4SVRY53kfk2mPnaH54_b9BbHD5jixA99YxYcDc7N99UE_ySyJj13zHlPNRFgoagBKmwr2b2nXNtw5PEAKqI_lHbDI2oQfUHY_yTqUM9si6HMqGJJ7W2non44OzGnB33RAV--ZzJkr6oZBkgMesPYAwsJa4FMoCOIB8OtczQ3Yvtr7IxvMGoeSRbjcjN5A_v4p8-GpjlkbbXfMME9B04iFeZmhERQpkf6CwtnXgEtNwktYJATQ9jOE9lXLwYd4WpBr7zspmU67yuVtuqQ

3.4?Opaque Secret

3.4.1?創(chuàng)建示例

當(dāng) Secret 配置文件中未作顯式設(shè)定時(shí),默認(rèn)的 Secret 類型是 Opaque。 當(dāng)你使用 kubectl 來(lái)創(chuàng)建一個(gè) Secret 時(shí),你會(huì)使用 generic 子命令來(lái)標(biāo)明 要?jiǎng)?chuàng)建的是一個(gè) Opaque 類型 Secret。

Opaque類型的數(shù)據(jù)一個(gè)map類型,要求value是base64編碼格式

# base64對(duì)用戶名,密碼加密效果演示
# [root@k8s-master configmap]# echo "superadmin" | base64
c3VwZXJhZG1pbgo=

# [root@k8s-master configmap]# echo "passpppp" | base64
cGFzc3BwcHAK
多次加密結(jié)果都是一樣的,破解很容易
# secre-test.yaml配置文件方式
apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
 username: c3VwZXJhZG1pbgo=   # 上面演示用戶名加密結(jié)果
 password: cGFzc3BwcHAK       # 密碼加密結(jié)果
# [root@k8s-master configmap]# kubectl apply -f secret-test.yaml
secret/mysecret created

# [root@k8s-master configmap]# kubectl get secret
NAME                  TYPE                                  DATA   AGE
default-token-cgxwv   kubernetes.io/service-account-token   3      18d
mysecret              Opaque                                2      13s  # 自定義的secret類型為Opaque
tls-secret            kubernetes.io/tls                     2      8d

3.4.2 使用方式

3.4.2.1 作為掛載到一個(gè)或多個(gè)容器上的 卷 中的文件?
# 將secret掛載到volume中
# secret-in-volume.yaml
apiVersion: v1
kind: Pod
metadata:
 name: secret-test
 labels:
   name: secret-test
spec:
  containers:
  - name: nginx-secret-volume
    image: nginx:1.20.0
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - name: myvolsecrets
      mountPath: "/etc/secrets" # 容器掛載數(shù)據(jù)卷,掛載到/etc/secrets目錄下
      readOnly: true
  volumes: # 引入一個(gè)數(shù)據(jù)卷
  - name: myvolsecrets
    secret: # 掛載指定的secret
      secretName: mysecret
# [root@k8s-master configmap]# kubectl apply -f secret-in-volume.yaml
pod/secret-test created

# [root@k8s-master configmap]# kubectl get pods 
NAME          READY   STATUS    RESTARTS   AGE
secret-test   1/1     Running   0          3m1s

# 進(jìn)入容器
[root@k8s-master configmap]# kubectl exec -it secret-test -n default -- bash

# 切換路徑
# root@secret-test:/# cd /etc/secrets/

# 查看掛載文件
# root@secret-test:/etc/secrets# ls
password  username

# 查看文件內(nèi)容--文件內(nèi)容已自動(dòng)解析為明文
# root@secret-test:/etc/secrets# cat password username
passpppp
superadmin

清理環(huán)境 kubectl delete -f secret-in-volume.yaml?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-627921.html

?3.4.2.2?作為容器的環(huán)境變量
# 將secret導(dǎo)出到環(huán)境變量中
# vim secret-to-env.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: secret-to-envdeployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: pod-secret-to-env
  template:
    metadata:
      labels:
        app: pod-secret-to-env
    spec:
      containers:
      - name: secret-to-envdeployment
        image: nginx:1.20.0
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
        env: # 設(shè)置環(huán)境變量
        - name: TEST_USER
          valueFrom:
            secretKeyRef: # 核心在這里 secretKeyRef
              name: mysecret   # secret名稱
              key: username    # key的名稱
        - name: TEST_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysecret
              key: password
# [root@k8s-master configmap]# kubectl apply -f secret-to-env.yaml
deployment.apps/secret-to-envdeployment created

# [root@k8s-master configmap]# kubectl get pods 
NAME                                       READY   STATUS    RESTARTS   AGE
secret-to-envdeployment-67b9584f69-tmlzf   1/1     Running   0          9s

# 進(jìn)入容器
# [root@k8s-master configmap]# kubectl exec -it  pod/secret-to-envdeployment-67b9584f69-tmlzf -n default -- bash

# 打印環(huán)境變量
# root@secret-to-envdeployment-67b9584f69-tmlzf:/# echo ${TEST_USER}
superadmin
# root@secret-to-envdeployment-67b9584f69-tmlzf:/# echo ${TEST_PASSWORD}
passpppp

到了這里,關(guān)于Kubernetes系列-配置存儲(chǔ) ConfigMap & Secret的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • K8S:配置資源管理 Secret和configMap

    K8S:配置資源管理 Secret和configMap

    (1)Secret 是用來(lái)保存密碼、token、密鑰等敏感數(shù)據(jù)的 k8s 資源,這類數(shù)據(jù)雖然也可以存放在 Pod 或者鏡像中,但是放在 secret 中是為了更方便的控制如何使用數(shù)據(jù),并減少暴露的風(fēng)險(xiǎn) (2)類似掛載的方式,使用的時(shí)候調(diào)用即可 ①kubernetes.io/service-account-token 由Kubernetes自動(dòng)創(chuàng)建

    2024年02月03日
    瀏覽(23)
  • kubernetes存儲(chǔ)-configmap

    kubernetes存儲(chǔ)-configmap

    目錄 一、字面值創(chuàng)建 二、通過(guò)文件創(chuàng)建 三、通過(guò)目錄創(chuàng)建 四、通過(guò)yaml文件創(chuàng)建 五、使用configmap設(shè)置環(huán)境變量 六、使用conigmap設(shè)置命令行參數(shù) 七、通過(guò)數(shù)據(jù)卷使用configmap 八、configmap熱更新 ? ? ? 在Kubernetes中,ConfigMap是一種存儲(chǔ)配置數(shù)據(jù)的對(duì)象。它允許將配置數(shù)據(jù)分離出來(lái)

    2024年02月06日
    瀏覽(23)
  • 輕松掌握K8S使用kubectl操作配置文件掛載ConfigMap和密鑰Secret知識(shí)點(diǎn)05

    輕松掌握K8S使用kubectl操作配置文件掛載ConfigMap和密鑰Secret知識(shí)點(diǎn)05

    1、掛載應(yīng)用配置文件配置集ConfigMap 當(dāng)有許多應(yīng)用如redis、mysql,希望將它的配置文件掛載出去,以便隨時(shí)修改,可以用ConfigMap配置集 具體用法查看使用命令行操作里的 3、ConfigMap配置集實(shí)戰(zhàn) 2、掛載應(yīng)用配置文件的敏感信息Secret Secret 對(duì)象類型用來(lái)保存敏感信息,例如使用ya

    2024年02月16日
    瀏覽(26)
  • 【kubernetes系列】Kubernetes之configMap

    工作中,在幾乎所有的應(yīng)用開發(fā)中,都會(huì)涉及到配置文件的變更,比如服務(wù)需要配置MySQL、Redis等相關(guān)信息。而業(yè)務(wù)上線一般要經(jīng)歷開發(fā)環(huán)境、測(cè)試環(huán)境、預(yù)發(fā)布環(huán)境只到最終的線上環(huán)境,每一個(gè)環(huán)境一般都需要其獨(dú)立的配置。如果我們不能很好的管理這些配置文件,運(yùn)維工作

    2024年02月12日
    瀏覽(46)
  • 【Kubernetes 系列】詳解 ConfigMap 九種創(chuàng)建方式

    【Kubernetes 系列】詳解 ConfigMap 九種創(chuàng)建方式

    作者:半身風(fēng)雪 上一節(jié):配置 Java 微服務(wù) 內(nèi)容簡(jiǎn)介:上一節(jié)主要學(xué)習(xí)使用 Kubernetes ConfigMaps 和 Secrets 設(shè)置環(huán)境變量,本節(jié)我們將學(xué)習(xí),創(chuàng)建ConfigMap 的10種方式。 很多應(yīng)用在其初始化或運(yùn)行期間要依賴一些配置信息。大多數(shù)時(shí)候, 存在要調(diào)整配置參數(shù)所設(shè)置的數(shù)值的需求。

    2024年01月17日
    瀏覽(25)
  • Linux高級(jí)---configmap和secret

    Linux高級(jí)---configmap和secret

    1、介紹 ConfigMap 是一種 API 對(duì)象,用來(lái)將非機(jī)密性的數(shù)據(jù)保存到鍵值對(duì)中。使用時(shí), Pods 可以將其用作環(huán)境變量、命令行參數(shù)或者存儲(chǔ)卷中的配置文件。 ConfigMap 將你的環(huán)境配置信息和 容器鏡像 解耦,便于應(yīng)用配置的修改。 注意: ConfigMap 并不提供保密或者加密功能。 如果你

    2024年02月06日
    瀏覽(22)
  • 【云原生 | Kubernetes 系列】K8s 實(shí)戰(zhàn) 管理 Secret 詳解

    【云原生 | Kubernetes 系列】K8s 實(shí)戰(zhàn) 管理 Secret 詳解

    Secret 是一種包含少量敏感信息例如密碼、令牌或密鑰的對(duì)象。 這樣的信息可能會(huì)被放在 Pod 規(guī)約中或者鏡像中。 用戶可以創(chuàng)建 Secret,同時(shí)系統(tǒng)也創(chuàng)建了一些 Secret。 一個(gè) Secret 可以包含 Pod 訪問(wèn)數(shù)據(jù)庫(kù)所需的用戶憑證。 例如,由用戶名和密碼組成的數(shù)據(jù)庫(kù)連接字符串。 你可

    2024年02月02日
    瀏覽(95)
  • Kubernetes配置管理 ConfigMap

    Kubernetes配置管理 ConfigMap

    kubernetes集群可以使用ConfigMap來(lái)實(shí)現(xiàn)對(duì)容器中應(yīng)用的配置管理 。 可以把ConfigMap看作是一個(gè)掛載到pod中的存儲(chǔ)卷 1.2.1 在命令行指定參數(shù)創(chuàng)建 通過(guò)直接在命令行中指定configmap參數(shù)創(chuàng)建,即 --from-literal=key=value ; 1.2.2 在命令行通過(guò)多個(gè)文件創(chuàng)建 通過(guò)指定文件創(chuàng)建,即將一個(gè)配置文

    2024年02月09日
    瀏覽(26)
  • Kubernetes中Pod的配置管理ConfigMap

    應(yīng)用部署的一個(gè)最佳實(shí)踐是將應(yīng)用所需的配置信息與程序進(jìn)行分離,這樣可以使應(yīng)用程序被更好地復(fù)用,通過(guò)不同 的配置也能實(shí)現(xiàn)更靈活的功能。將應(yīng)用打包為容器鏡像后,可以通過(guò)環(huán)境變量或者外掛文件的方式在創(chuàng)建容器時(shí)進(jìn) 行配置注入,但在大規(guī)模容器集群的環(huán)境中,

    2024年02月12日
    瀏覽(20)
  • 【Kubernetes資源篇】ConfigMap配置管理中心詳解

    【Kubernetes資源篇】ConfigMap配置管理中心詳解

    1、ConfigMap配置中心簡(jiǎn)介 官方中文參考文檔: ConfigMap是API對(duì)象,用于存放明文(非機(jī)密性)數(shù)據(jù)保存到鍵值對(duì)中,可以使用環(huán)境變量、命令行參數(shù)或者存儲(chǔ)卷方式應(yīng)用到Pod中,ConfigMap相當(dāng)于Pod中程序的配置文件,通過(guò)修改ConfigMap內(nèi)容來(lái)修改程序的配置。 2、ConfigMap局限性 ConfigM

    2024年02月13日
    瀏覽(54)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包