简介

secret顾名思义,用于存储一些敏感的需要加密的数据。这些数据可能是要保存在pod的定义文件或者docker的镜像中。把这些数据通过加密的方式存放到secrets对象中,可以降低信息泄露的风险。在secret中存储的数据都需要通过base64进行转换加密后存放。

创建secret

1、加密用户名密码

假设有两个敏感数据,分别是用户名breeze,密码:123456。首先需要使用base64来转换数据:

echo -n "breeze"| base64

YnJlZXpl

echo -n "123456"| base64

MTIzNDU2

然后创建一个secret.yml文件,内容如下:

apiVersion: v1

kind: Secret

metadata:

name: test-secret

data:

username: YnJlZXpl

password: MTIzNDU2

创建secret:

kubectl create -f secret.yml

也可以直接使用命令行生成secret:

kubectl create secret generic test-secret --from-literal=username='breeze',password='123456'

2、加密证书文件

kubectl create secret tls ingress-secret --key server.key --cert ca.crt

使用secret

1、使用volume挂载方式

给出一个pod示例:

apiVersion: v1

kind: Pod

metadata:

name: secret-test-pod

spec:

containers:

- name: test-container

image: nginx

volumeMounts:

- name: secret-volume

mountPath: /etc/secret-volume

volumes:

- name: secret-volume

secret:

secretName: test-secret

2、将secret用于env

创建一介secret.yml文件,内容如下:

apiVersion: v1

data:

data-1: c2ltb25zdQ==

data-2: c2ltb25zdS5tYWlsQGdtYWlsLmNvbQ==

kind: Secret

metadata:

name: test-secret

namespace: default

type: Opaque

与configmap的用法一致,下面直接贴上示例文件:

apiVersion: v1

kind: Pod

metadata:

name: secret-by-env

spec:

containers:

- name: busydayeasylife

image: gcr.io/google_containers/busybox:1.24

command:

- /bin/sh

- -c

- --

args:

- "while [ true ]; do echo $NAME; echo $EMAIL; sleep 30; done;"

env:

- name: NAME

valueFrom:

secretKeyRef:

name: test-secret

key: data-1

- name: EMAIL

valueFrom:

secretKeyRef:

name: test-secret

key: data-2

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐