Secret

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”。对象

相关文章
相关标签/搜索