Secret是一种加密存储的资源对象,您能够将认证信息、证书、私钥等保存在Secret中,而不须要把这些敏感数据暴露到镜像或者Pod定义中,从而更加安全和灵活。nginx
Secret与ConfigMap很是像,都是key-value键值对形式,使用方式也相同,不一样的是Secret会加密存储,因此适用于存储敏感信息。ubuntu
Base64编码
Secret与ConfigMap相同,是以键值对形式保存数据,所不一样的是在建立时,Secret的Value必须使用Base64编码。api
对字符串进行Base64编码,能够直接使用“echo -n 要编码的内容 | base64”命令便可,示例以下:安全
root@ubuntu:~# echo -n "3306" | base64 MzMwNg==
建立Secret
以下示例中定义的Secret中包含两条Key-Value。ide
apiVersion: v1 kind: Secret metadata: name: mysecret data: key1: aGVsbG8gd29ybGQ= # "hello world" Base64编码后的值 key2: MzMwNg== # "3306" Base64编码后的值
在环境变量中引用Secret
Secret最多见的用法是做为环境变量注入到容器中,以下示例。编码
apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - image: nginx:alpine name: container-0 resources: limits: cpu: 100m memory: 200Mi requests: cpu: 100m memory: 200Mi env: - name: key valueFrom: secretKeyRef: name: mysecret key: key1 imagePullSecrets: - name: default-secret
在Volume中引用Secret
在Volume中引用Secret,就是经过文件的方式直接将Secret的每条数据填入Volume,每条数据是一个文件,键就是文件名,键值就是文件内容。加密
以下示例中,建立一个名为vol-secret的Volume,这个Volume引用名为“mysecret”的Secret,再将Volume挂载到容器的“/tmp”路径下。Pod建立成功后,在容器的“/tmp”路径下,就有两个文件key1和key2。spa
apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - image: nginx:alpine name: container-0 resources: limits: cpu: 100m memory: 200Mi requests: cpu: 100m memory: 200Mi volumeMounts: - name: vol-secret # 挂载名为vol-secret的Volume mountPath: "/tmp" imagePullSecrets: - name: default-secret volumes: - name: vol-secret secret: # 引用Secret secretName: mysecret
进入Pod容器中,能够在/tmp目录下发现key1和key2两个文件,并看到文件中的值是base64解码后的值,分别为“hello world”和“3306”。code
进入Pod容器中,能够在/tmp目录下发现key1和key2两个文件,并看到文件中的值是base64解码后的值,分别为“hello world”和“3306”。对象