更新时间:2022-09-27 gmt 08:00

secret-凯发k8国际娱乐官网入口

secret是一种加密存储的资源对象,您可以将认证信息、证书、私钥等保存在secret中,而不需要把这些敏感数据暴露到镜像或者pod定义中,从而更加安全和灵活。

secret与configmap非常像,都是key-value键值对形式,使用方式也相同,不同的是secret会加密存储,所以适用于存储敏感信息。

base64编码

secret与configmap相同,是以键值对形式保存数据,所不同的是在创建时,secret的value必须使用base64编码。

对字符串进行base64编码,可以直接使用“echo -n 要编码的内容 | base64”命令即可,示例如下:

root@ubuntu:~# echo -n "3306" | base64
mzmwng==

创建secret

如下示例中定义的secret中包含两条key-value。

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。

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”

分享:
网站地图