K8s系列之:数据卷挂载–Secret

介绍

与ConfigMap类似,区别在于Secret主要存储敏感数据,所有的数据要经过base64编码
应用场景:凭证

pod使用Secret三种方式

  • docker-registry(kubernetes.io/dockerconfigjson):存储镜像仓库认证信息
  • generic(Opaque):存储密码、密钥等
  • tls(kubernetes.io/tls):存储TLS证书
k8s、新兴技术能力K8s系列之:数据卷挂载–Secret插图

例子:

Step1:创建Secret[secret-test.yaml]和pod[secret-pod.yaml]

shell>echo -n 'admin' | base64
shell>echo -n '1f2d1e2e67df' | base64
shell>vim secret-test.yaml
################################
apiVersion: v1
kind: Secret
metadata:
  name: db-user-pass
type: Opaque
data:
  username: YWRtaW4=
  password: MWYyZDFlMmU2N2Rm
#################################
shell>kubectl apply -f secret-test.yaml
shell>vim secret-pod.yaml
#########################
apiVersion: v1
kind: Pod
metadata:
  name: secret-demo-pod
spec:
  containers:
    - name: demo
      image: nginx
      env:
        - name: USER
          valueFrom:
            secretKeyRef:
              name: db-user-pass
              key: username
        - name: PASS
          valueFrom:
            secretKeyRef:
              name: db-user-pass
              key: password
      volumeMounts:
        - name: config
          mountPath: "/config"
          readOnly: true
  volumes:
  - name: config
    secret:
      secretName: db-user-pass
      items:
      - key: username
        path: my-username-pass
        mode: 0777
#######################################
[root@master ~]# kubectl apply -f secret-pod.yaml 
pod/secret-demo-pod created

查询Secret

shell>kubectl get pod
shell>kubectl get secret
##############进入容器中############################
shell>kubectl exec -it secret-demo-pod -- bash
shell>echo $USER
root@secret-demo-pod:/# shell>ls /config/
my-username-pass
root@secret-demo-pod:/# shell>cat /config/my-username-pass
####因为admin没有换行,测试成功
adminroot@secret-demo-pod:/# 
https://kubernetes.io/docs/concepts/configuration/secret/