secret-九游平台
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”。
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨