k8s的secret基本概念及案例


secret相對於configMap,功能上是相似的
但是secret是以其他編碼方式去記錄配置信息的,但是也可以被解讀,只不過有技術門檻,不是那么容易就被解讀。
使用base64可以解碼:echo ******** | base64 -d
********是kubectl describe secret secretName -o yaml中的值的編碼

pod.spec.volumes.secret

secret有三種類型:(查看:kubectl create secret --help)
  docker-registry  一般保存docker-registry的認證信息
  generic  通用的,一般保存一些密碼數據
  tls  一般保存私鑰或證書

pod創建時若連接到私有倉庫中需要認證,則要創建專用的secret (docker-registry)類型的
pod.spec.imagePullSecrets字段中需要指明secret的name

generic方式的secret,里面的鍵值雖說不是銘文,但是解碼的技術手段要求不高。
對於密碼類型的信息,最好用數據卷掛載方式來實現信息的注入,然后以文件形式掛載到掛載點,設置權限。

例:用數據卷方式,將mysql的密碼注入到pod的容器中。
1.創建secret
kubectl create secret generic test --from-literal=MYSQL_ROOT_PASSWORD=smb@nds

2.創建pod

 1 vim myapp-demo.yaml  2 apiVersion: apps/v1  3 kind: Deployment  4 metadata:  5   name: myapp-demo  6   namespace: default
 7 spec:  8   replicas: 1
 9  selector: 10  matchLabels: 11  app: myapp 12  template: 13  metadata: 14  labels: 15  app: myapp 16  spec: 17  containers: 18       - name: myapp 19         image: ikubernetes/myapp:v1 20  imagePullPolicy: IfNotPresent 21  ports: 22         - name: http 23           containerPort: 80
24  volumeMounts: 25         - name: mysql 26           mountPath: /test/
27  volumes: 28       - name: mysql 29  secret: 30           secretName: test

3.啟動pod,查看信息是否注入

1 kubectl apply -f myapp-demo.yaml 2 kubectl exec -it myapp-demo-75f8f9bf9f-8nbdv -- /bin/sh 3 / # cat test/MYSQL_ROOT_PASSWORD 4 smb@nds/ #

 


可以看到,信息注入后是明文的,可以設置查看訪問權限解決。


   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM