Secret 存在意义
Secret 解决了密码、 token、 密钥等敏感数据的配置问题, 而不需要把这些敏感数据暴露到镜像或者 Pod Spec 中,而是存到etcd中。 Secret 可以以Volume 或者环境变量的方式使用。如下面是base64编码。
Secret 有三种类型
• Service Account :用来访问 Kubernetes API,由 Kubernetes 自动创建, 并且会自动挂
载到 Pod 的/run/secrets/kubernetes.io/serviceaccount 目录中
• Opaque : base64 编码格式的 Secret,用来存储密码、 密钥等
• kubernetes.io/dockerconfigjson : 用来存储私有 docker registry 的认证信息
创建yaml
//secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
username: YWRtaW4=
password: MWYyZDFlMmU2N2Rm
创建secret
以变量的形式挂在到pod容器中
编写yaml
//secret-var.yaml
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: nginx
image: nginx
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: mysecret
key: username
- name: SECRET_PASSWORD
valueFrom:
secretKeyRef:
name: mysecret
key: password
创建
查看
以volume挂在到容器中
编写yaml
//secret-vol.yaml
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: foo
mountPath: "/etc/foo"
readOnly: true
volumes:
- name: foo
secret:
secretName: mysecret
创建
查看
ConfigMap
作用是存储不加密的数据到etcd中,让pod以变量或者Volume挂在到容器中。一般用于项目中的配置文件。
使用
先删除已经创建的所有pod
创建配置文件
//redis.properties
redis.host=127.0.0.1
redis.port=6379
redis.password=123456
创建configMap
kubectl create configmap redis-config --from-file=redis.properties
以volume挂载到pod容器中
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: busybox
image: busybox
command: [ "/bin/sh","-c","cat /etc/config/redis.properties" ]
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
configMap:
name: redis-config
restartPolicy: Never
执行
查看
以变量形式挂在到pod容器中
(1)先删除历史数据,创建yaml,声明变量信息configmap创建。
//myconfig.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: myconfig
namespace: default
data:
special.level: info
special.type: hello
创建
(2)先创建yaml文件,以变量挂载。
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: busybox
image: busybox
command: [ "/bin/sh", "-c", "echo $(LEVEL) $(TYPE)" ]
env:
- name: LEVEL
valueFrom:
configMapKeyRef:
name: myconfig # 与上面的对应
key: special.level
- name: TYPE
valueFrom:
configMapKeyRef:
name: myconfig
key: special.type
restartPolicy: Never