Kubernetes的Secret對象使用

Secret能夠把想要訪問的加密數據,存放到Etcd中,而後Pod能夠經過的Volume的方式,訪問到Secret保存的信息 ,每當數據修改的時候,Pod掛載的Secret文件也會被修改,特別適合用來存放帳戶密碼mysql

1、建立Secret對象

1. 經過文件建立

生成兩個文件,分別是username.txt和password.txtsql

echo "chenqionghe" > ./username.txt
echo "111111" > ./password.txt

建立ubuntu

kubectl create secret generic user --from-file=./username.txt
kubectl create secret generic pass --from-file=./password.txt

2. 經過yaml建立

注意:值必須是base64轉碼api

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  user:  Y2hlbnFpb25naGUK
  pass: MTExMTExCg==

建立bash

kubectl apply -f mysecret.yaml

2、獲取secret對象

root@VM-0-8-ubuntu:/home/ubuntu/project-volume# kubectl get secrets
NAME TYPE DATA AGE
default-token-gqfrx kubernetes.io/service-account-token 3 20d
mysecret Opaque 2 1m
pass Opaque 1 6m
user Opaque 1 6m

3、經過pod使用secret示例

這裏指定了volume是projected類型,引用的是secret的user和pass,掛載路徑爲/projected-volumeapp

apiVersion: v1
kind: Pod
metadata:
  name: test-projected-volume 
spec:
  containers:
  - name: test-secret-volume
    image: busybox
    args:
    - sleep
    - "86400"
    volumeMounts:
    - name: mysql-cred
      mountPath: "/projected-volume"
      readOnly: true
  volumes:
  - name: mysql-cred
    projected:
      sources:
      - secret:
          name: user
      - secret:
          name: pass

執行建立ui

kubectl apply -f test-projected-volume.yaml

查看pod已經建立出來編碼

root@VM-0-8-ubuntu:/home/ubuntu/project-volume# kubectl get pod
NAME READY STATUS RESTARTS AGE
test-projected-volume 1/1 Running 0 5m

再進入pod內查看,看到文件已經存在,而且內容和設置的同樣加密

root@VM-0-8-ubuntu:/home/ubuntu/project-volume# kubectl exec -it test-projected-volume -- /bin/sh
/ # ls /projected-volume/
password.txt username.txt
/ # cat /projected-volume/username.txt
chenqionghe

而後咱們修改一下username的secret文件,將chenqionghe修改成cqh(對應的base編碼爲Y3FoCg==)spa

kubectl edit secret user

修改內容以下

apiVersion: v1
data:
  username.txt: Y3FoCg==
kind: Secret
metadata:
  creationTimestamp: 2019-09-27T09:14:00Z
  name: user
  namespace: default
  resourceVersion: "2108808"
  selfLink: /api/v1/namespaces/default/secrets/user
  uid: 24566f8f-e107-11e9-8c22-f242c645cfec
type: Opaque

再次查看pod中掛載的文件,已經發生變化

root@VM-0-8-ubuntu:/home/ubuntu# kubectl exec -it test-projected-volume -- cat /projected-volume/username.txt
cqh
相關文章
相關標籤/搜索