官方文档
http://kubernetes.io/docs/user-guide/secrets/
Secrets
- 存储敏感信息password、OAuth、ssh keys
- 归属于namespace下,不能跨namespace
- 当pod被schedule,pod中引用Secret时,会验证是否存在,必须先创建好
- 创建的配置文件中密码已经用base64编码,引用到pod中,会自动decode
base64 编码
- 编码:echo -n "admin" | base64
- 解码:echo "MWYyZDFlMmU2N2Rm" | base64 --decode
使用Secrets方式
demo
用户密码管理
配置文件形式
kubectl create -f password.yaml, 配置文件中的用户名和密码必须经过base64编码(echo -n "admin" | base64)
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
username: YWRtaW4=
password: MTIzNA==
命令行形式
kubectl create secret generic mysecret --from-literal=username="admin",password="1234"
私有仓库用户认证
命令行方式
kubectl create secret docker-registry hub.docker.io --docker-username=janedoe --docker-password=123456 --docker-email=jdoe@example.com
secret "myregistrykey" created
使用docker配置文件
- ~/.docker/config.json 文件内容(docker login 登录后会生成该文件)
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "Y2R6NjIwOmNkejYyMGRvY2tlcg=="
}
}
}
- auth编码, cat ~/.docker/config.json | base64
- 编辑配置文件 kubectl create -f docker_password.yaml (type 官网文档没有说明)
apiVersion: v1
kind: Secret
metadata:
name: myregistrykey
data:
.dockerconfigjson: eyAiaHR0cHM6Ly9pbmRleC5kb2NrZXIuaW8vdjEvIjogeyAiYXV0aCI6ICJabUZyWlhCaGMzTjNiM0prTVRJSyIsICJlbWFpbCI6ICJqZG9lQGV4YW1wbGUuY29tIiB9IH0K
type: kubernetes.io/dockerconfigjson
- pod使用
apiVersion: v1
kind: Pod
metadata:
name: foo
spec:
containers:
- name: foo
image: janedoe/awesomeapp:v1
imagePullSecrets:
- name: myregistrykey
网友评论