(十八)Kubernetes資源管理Secret
阿新 • • 發佈:2022-05-12
官方文件:https://kubernetes.io/docs/concepts/configuration/secret/
- 加密資料並存放Etcd中,讓Pod的容器以掛載Volume方式訪問。
- 應用場景:憑據
一、通過文字檔案建立使用者密碼
1、建立使用者名稱密碼檔案
echo -n 'admin' > ./username.txt
echo -n '1f2d1e2e67df' > ./password.txt
2、通過檔案建立使用者名稱密碼
kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt
3、檢視建立使用者名稱密碼
kubectl get secret
NAME TYPE DATA AGE
db-user-pass Opaque 2 37s
4、檢視詳情
kubectl describe secret db-user-pass
Name: db-user-pass
Namespace: default
Labels: <none>
Annotations: <none>
Type: Opaque
Data
====
password.txt: 12 bytes
username.txt: 5 bytes
二、通過yaml檔案建立使用者名稱密碼
1、編碼使用者名稱密碼
echo -n 'admin' | base64
echo -n '1f2d1e2e67df' | base64
2、建立yaml檔案 vim user.yaml
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
username: YWRtaW4=
password: MWYyZDFlMmU2N2Rm
3、建立使用者名稱密碼
kubectl create -f user.yaml
4、檢視建立使用者
kubectl get secret NAME TYPE DATA AGE db-user-pass Opaque 2 5m42s mysecret Opaque 2 18s
三、通過環境變數匯入到容器中
1、建立yaml檔案
vim secret-var.yaml
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: nginx
image: nginx
env:
# 環境變數名稱:使用者
- name: SECRET_USERNAME
valueFrom:
# 選擇輸入secret使用者
secretKeyRef:
name: mysecret
key: username
# 環境變數名稱:密碼
- name: SECRET_PASSWORD
valueFrom:
# 選擇輸入secret密碼
secretKeyRef:
name: mysecret
key: password
2、建立容器
kubectl create -f secret-var.yaml
3、檢視建立容器
kubectl get pods
NAME READY STATUS RESTARTS AGE
mypod 1/1 Running 0 23s
4、進入容器檢視變數
kubectl exec -it mypod bash
root@mypod:/# echo $SECRET_USERNAME
admin
root@mypod:/# echo $SECRET_PASSWORD
1f2d1e2e67df
四、通過volume掛載使用者名稱密碼
1、建立yaml檔案
vim secret-vol.yaml
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: foo
mountPath: "/etc/foo"
readOnly: true
volumes:
- name: foo
secret:
# 建立的secret
secretName: mysecret
2、建立容器
kubectl create -f secret-vol.yaml
3、檢視容器
kubectl get pod
NAME READY STATUS RESTARTS AGE
mypod 1/1 Running 0 46s
4、進入容器檢視
kubectl exec -it mypod bash
root@mypod:/# ls /etc/foo/
password username
root@mypod:/# cat /etc/foo/password
1f2d1e2e67dfroot@mypod:/# cat /etc/foo/username
adminroot@mypod:/#
K8S1.19版本之後可以設定Configmap和Secret配置不可變
只需要在最後加引數:(immutable: true)即可實現。
subpath掛載配置檔案不會覆蓋目錄