CKA [Storage] – Secrets讲解

就如以上的图片,其实Secret和ConfigMap的结构是相似的,只是Configmap是保存明文不那么安全,而secret的话就会加密保存在etcd当中。

  • 默认的secret是不够安全的,只是他只是简单的做base64的转码然后就保存在etcd而已
  • 你可以设置RBAC权限控制谁才能够读取secret,增加管理安全性

创建好的Secret挂在到pod有以下两种方式
参考文章:https://www.pangzai.win/cka-storage-pvc%e7%9a%84accessmode%e8%ae%b2%e8%a7%a3/

实践测试

1. 创建Generic Secret

kubectl create secret generic auth-secret --from-literal=admin=password

2. 创建pod , 这是volume mount 的 pod

kubectl apply -f pod1.yaml
apiVersion: v1
kind: Pod
metadata:
  name: demo-pod
spec:
  volumes:
   - name: secret-volume
     secret:
       secretName: auth-secret
  containers:
    - name: test-container
      image: nginx
      volumeMounts:
        - name: secret-volume
          mountPath: "/etc/secret-volume"
          readOnly: true

3. 创建pod , 这是enviroment variable 的 pod

kubectl apply -f pod2.yaml
apiVersion: v1
kind: Pod
metadata:
  name: demo-pod-env
spec:
  containers:
    - name: test-container
      image: nginx
      env:
      - name: DB_PASSWORD
        valueFrom:
          secretKeyRef:
            name: auth-secret
            key:  admin

4. 进入Volume mount的container 检查文件是否被挂载了

【进入container】
kubectl exec -it demo-pod -- sh

【去到相关path】
cd /etc/secret-volume

【查看admin文件】
cat admin

5. 进入environent container的container 检查env是否被创建

【进入container】
kubectl exec -it demo-pod-env -- sh

【查看env】
echo $DB_PASSWORD

Loading

Facebook评论