Secret與ConfigMap都是用來存盤配置資訊的,不同之處在于ConfigMap是明文存盤的,而Secret用來保存敏感資訊,如:密碼、OAuth令牌,ssh key等等,Secret常用有三種型別:
-
Opaque:使用base64編碼格式存盤密碼等資訊,加密性很弱,
-
kubernetes.io/dockerconfigjson:用來存盤私有docker registry的認證資訊(倉庫地址、登錄用戶名密碼),
-
kubernetes.io/service-account-token:用來創建服務賬號(Service Account),是一種自動被啟用的用戶認證機制,用來驗證請求的合法性,
一、創建Opaque型別的Secret物件
1.使用命令創建Opaque型別的Secret物件
kubectl create secret generic mysecret1 --from-literal=username=root --from-literal=password=123456
(1)引數說明:
-
generic 子命令表示創建的是Opaque型別的Secret
-
--from-literal:表示從對字面量值進行編碼,后面跟kv鍵值對,對v進行編碼;
你也可以使用--from-file引數指定對檔案內容進行編碼,此處讀者可以自行練習,
(2)查看創建結果:
kubectl get secret

(3)使用describe命令查看詳情
kubectl describe secret mysecret1

可以看到被編碼的資料沒有顯示出來,只能看到資料大小,可以使用以下方法查看被編碼資料的明文
(4)輸出yaml檔案格式查看詳情
kubectl get secret mysecret1 -o yaml

然后使用linux命令查看被編碼資料的明文
echo -n "MTIzNDU2" | base64 -d

注意截圖中被解碼后的明文是不含換行符的
2.使用yaml檔案創建Opaque型別的Secret物件
(1)獲取要保存資料的編碼
假如要保存username=admin,password=654321的資料,先用linux命令獲取對應的base64編碼資料,
echo -n "admin" | base64
echo -n "654321" | base64

(2)新建yaml檔案
vi secret-my2.yaml
(3)撰寫yaml檔案內容
apiVersion: v1
kind: Secret
metadata:
name: mysecret2
type: Opaque
data:
username: YWRtaW4=
password: NjU0MzIx
(4)執行創建命令
kubectl create -f secret-my2.yaml
(5)查看創建結果
可以使用上面的方法查看,這里不再贅述

二、使用Opaque型別的secret物件
1.通過環境變數的方式
liunx自帶的命令env,可以用來查看當前系統的環境變數,我們可以把secret物件設定到環境變數上來進行測驗

(1)新建yaml檔案
vi mysecret1-env.yaml
(2)撰寫使用secret物件的pod的yaml檔案內容
apiVersion: v1
kind: Pod
metadata:
name: pod-test-mysecret1
spec:
containers:
- name: pod-test-mysecret1-bb
image: busybox
command: ["/bin/sh", "-c", "env"]
# 從secret物件中獲取對應key的值賦值給環境變數
env:
- name: USERNAME
valueFrom:
secretKeyRef:
name: mysecret1
key: username
- name: PASSWORD
valueFrom:
secretKeyRef:
name: mysecret1
key: password
(3)執行yaml檔案創建pod
kubectl create -f mysecret1-env.yaml
(4)查看pod,在默認名稱空間下

通過查看此pod的日志,可以看到輸出的環境變數資訊是mysecret1物件的資訊

2.通過vloume掛載方式
(1)新建yaml檔案
vi mysecret2-volume.yaml
(2)撰寫使用secret物件的pod的yaml檔案內容
apiVersion: v1
kind: Pod
metadata:
name: pod-test-mysecret2
spec:
containers:
- name: pod-test-mysecret2-bb
image: busybox
command: ["/bin/sh", "-c", "cat /etc/secrets/my-username;cat /etc/secrets/my-password;"]
volumeMounts:
- name: secrets
mountPath: /etc/secrets
volumes:
- name: secrets
secret:
secretName: mysecret2
items:
# 把secret物件掛載到檔案名
- key: username
path: my-username
- key: password
path: my-password
(3)執行yaml檔案創建pod
kubectl create -f mysecret2-volume.yaml
(4)查看pod,在默認名稱空間下

通過查看此pod的日志,可以看到輸出的資訊是mysecret2物件中的資料

三、創建kubernetes.io/dockerconfigjson型別的Secret物件
- 通過命令創建
kubectl create secret docker-registry aliyun --docker-server=https://registry.aliyun.com --docker-username=root --docker-password=123456 [email protected]
2.查看創建結果

3.查看詳細資訊

4.解碼密文資訊

5.使用此型別的secret物件
指定 imagePullSecrets 屬性的name欄位值為你創建的secret物件
apiVersion: v1
kind: Pod
metadata:
name: myapp
spec:
containers:
- name: myapp
image: xxx-api:v1.0
imagePullSecrets:
- name: aliyun
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/470653.html
標籤:其他
上一篇:交換機及路由基礎
