介绍
与ConfigMap类似,区别在于Secret主要存储敏感数据,所有的数据要经过base64编码
应用场景:凭证
pod使用Secret三种方式
- docker-registry(kubernetes.io/dockerconfigjson):存储镜像仓库认证信息
- generic(Opaque):存储密码、密钥等
- tls(kubernetes.io/tls):存储TLS证书
例子:
Step1:创建Secret[secret-test.yaml]和pod[secret-pod.yaml]
shell>echo -n 'admin' | base64
shell>echo -n '1f2d1e2e67df' | base64
shell>vim secret-test.yaml
################################
apiVersion: v1
kind: Secret
metadata:
name: db-user-pass
type: Opaque
data:
username: YWRtaW4=
password: MWYyZDFlMmU2N2Rm
#################################
shell>kubectl apply -f secret-test.yaml
shell>vim secret-pod.yaml
#########################
apiVersion: v1
kind: Pod
metadata:
name: secret-demo-pod
spec:
containers:
- name: demo
image: nginx
env:
- name: USER
valueFrom:
secretKeyRef:
name: db-user-pass
key: username
- name: PASS
valueFrom:
secretKeyRef:
name: db-user-pass
key: password
volumeMounts:
- name: config
mountPath: "/config"
readOnly: true
volumes:
- name: config
secret:
secretName: db-user-pass
items:
- key: username
path: my-username-pass
mode: 0777
#######################################
[root@master ~]# kubectl apply -f secret-pod.yaml
pod/secret-demo-pod created
查询Secret
shell>kubectl get pod
shell>kubectl get secret
##############进入容器中############################
shell>kubectl exec -it secret-demo-pod -- bash
shell>echo $USER
root@secret-demo-pod:/# shell>ls /config/
my-username-pass
root@secret-demo-pod:/# shell>cat /config/my-username-pass
####因为admin没有换行,测试成功
adminroot@secret-demo-pod:/#