概述
Secret可让您存储和管理敏感信息,例如密码,OAuth令牌和ssh密钥。与逐字记录在机密信息中相比,将机密信息存储在机密信息中更安全,更灵活。
类型
创建密钥时,可以使用 资源type字段Secret或某些等效的kubectl命令行标志(如果有)来指定其类型。
类型 | 说明 |
---|---|
Opaque | 任意用户定义的数据 |
kubernetes.io/service-account-token | 服务帐户令牌 |
kubernetes.io/dockercfg | 序列化~/.dockercfg文件 |
kubernetes.io/dockerconfigjson | 序列化~/.docker/config.json文件 |
kubernetes.io/basic-auth | 基本身份验证凭证 |
kubernetes.io/ssh-auth | SSH身份验证的凭据 |
kubernetes.io/tls | TLS客户端或服务器的数据 |
bootstrap.kubernetes.io/token | 引导令牌数据 |
创建
1、 通过字面值创建;
# 创建一个名为literral-secret的secret,username为admin,password为123456
kubectl create secret generic literral-secret --from-literal=username=admin --from-literal=password=123456
1、 通过自定义文件创键,键为文件名,值为文件内容,一个文件对应一条键值对数据;
echo -n admin > ./username
echo -n admin123 > ./password
kubectl create secret generic file-secret --from-file=./username --from-file=./password
1、 通过env文件创建,文件内容以键值对形式存放;
cat << EOF > env.txt
username=admin
password=admin123
EOF
kubectl create secret generic env-secret --from-env-file=env.txt
1、 使用yml文件创建;
# Base64编码admin123456,因为通过yml必须使用Base64对数据进行加密,实际只能说是编码....
echo -n 'admin123456' | base64
# 编码后的字符串
YWRtaW4xMjM0NTY=
vim mysql-secret.yaml
# 内容
apiVersion: v1
kind: Secret
metadata:
name: mysql-secret
type: Opaque
data:
password: YWRtaW4xMjM0NTY=
#
kubectl create -f mysql-secret.yaml
查看
# 查看所有
kubectl get secret -n default
# 根据名字查看
kubectl get secret mysql-secret
# yaml格式展示完整信息
kubectl get secret mysql-secret -o yaml
编辑
# yaml文件修改
vim mysql-secret.yaml
kubectl apply -f mysql-secret.yaml
# 在线修改
kubectl edit secret mysql-secret
删除
# 根据yaml文件删除
kubectl delete -f mysql-secret.yaml
# 根据名字删除
kubectl delete secret mysecret
# 删除所有
kubectl delete secret --all
案例
部署mysql,配置root密码从Secret中获取
1、 先按照创建5步骤创建一个secret;
2、 创建mysqlPod;
vim mysql-pod.yaml
# 内容
apiVersion: v1
kind: Pod
metadata:
labels:
app: mysql
name: mysql
spec:
restartPolicy: Never
containers:
- name: mysql-001
image: daocloud.io/library/mysql:5.7.4
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3306
name: mysql-port
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secret
key: password
#
kubectl create -f mysql-pod.yaml
1、 验证;
# 进入容器
kubectl exec -it mysql /bin/bash
# 使用secret配置的密码登录
mysql -uroot -padmin123456