一 . Secret
Secret的主要作用就是加密数据,然后存在etcd里面,让Pod容器以挂载Volume方式进行访问
场景:用户名 和 密码进行加密
一般场景的是对某个字符串进行base64编码 进行加密
echo -n 'admin' | base64

- 创建secret加密数据的yaml文件 secret.yaml
然后使用下面命令创建一个pod(这个应该有命名) ``` kubectl create -f secret.yamlapiVersion: v1kind: Secretmetadata:name: mysecrettype: Opaquedata:username: YWRtaW4=password: MWYyZDFlMmU2N2Rm
查看
kubectl get secret
<a name="lEbzb"></a>### 1.1 变量形式挂载到Pod文件 : secret-var.yaml```yamlapiVersion: v1kind: Podmetadata:name: mypodspec:containers:- name: nginximage: nginxenv:- name: SECRET_USERNAMEvalueFrom:secretKeyRef:name: mysecretkey: username- name: SECRET_PASSWORDvalueFrom:secretKeyRef:name: mysecretkey: password
通过get命令查看
#挂载kubectl apply -f secret-var.yamlkubectl get pods

然后我们通过下面的命令,进入到我们的容器内部
kubectl exec -it mypod bash
然后我们就可以输出我们的值,这就是以变量的形式挂载到我们的容器中
# 输出用户echo $SECRET_USERNAME# 输出密码echo $SECRET_PASSWORD

最后如果我们要删除这个Pod,就可以使用这个命令
kubectl delete -f secret-val.yaml
1.2 数据卷形式挂载
首先我们创建一个 secret-val.yaml 文件
apiVersion: v1kind: Podmetadata:name: mypod2spec:containers:- name: nginximage: nginx# 挂载目录volumeMounts:- name: foomountPath: "/etc/foo"readOnly: truevolumes:- name: foo# 名称secret:secretName: mysecret
然后创建我们的 Pod
# 根据配置创建容器kubectl apply -f secret-val.yaml# 进入容器kubectl exec -it mypod bash# 查看ls /etc/foo

kubectl delete pod -all
二. ConfigMap
ConfigMap作用是存储不加密的数据到etcd中,让Pod以变量或数据卷Volume挂载到容器中
应用场景:配置文件
2.1 创建配置文件
首先我们需要创建一个配置文件 redis.properties
redis.port=127.0.0.1redis.port=6379redis.password=123456
2.2 创建ConfigMap
我们使用命令创建configmap
kubectl create configmap redis-config --from-file=redis.properties
然后查看详细信息
kubectl get cmkubectl describe cm redis-config
2.3 挂载
2.3.1 Volume数据卷形式挂载
首先我们需要创建一个 cm.yaml
apiVersion: v1kind: Podmetadata:name: mypodspec:containers:- name: busyboximage: busybox# 命令输出redis配置command: [ "/bin/sh","-c","cat /etc/config/redis.properties" ]volumeMounts:- name: config-volumemountPath: /etc/configvolumes:- name: config-volumeconfigMap:# 对应刚刚的configMapname: redis-config#Pod重启机制# Always:当容器终止退出后,总是重启容器,默认策略 【nginx等,需要不断提供服务】# OnFailure:当容器异常退出(退出状态码非0)时,才重启容器。# Never:当容器终止退出,从不重启容器 【批量任务】restartPolicy: Never
然后使用该yaml创建我们的pod
# 创建kubectl apply -f cm.yaml# 查看kubectl get pods

最后我们通过命令就可以查看结果输出了
kubectl logs mypodkubectl delete -f cm.yaml
2.3.4 以变量的形式挂载Pod
首先我们也有一个 myconfig.yaml文件,声明变量信息,然后以configmap创建
apiVersion: v1kind: ConfigMapmetadata:name: myconfignamespace: defaultdata:special.level: infospecial.type: hello
然后我们就可以创建我们的配置文件
# 创建podkubectl apply -f myconfig.yaml# 获取kubectl get cm

然后我们创建完该pod后,我们就需要在创建一个 config-var.yaml 来使用我们的配置信息
apiVersion: v1kind: Podmetadata:name: mypodspec:containers:# 容器- name: busyboximage: busybox# 配置输出信息command: [ "/bin/sh", "-c", "echo $(LEVEL) $(TYPE)" ]env:- name: LEVELvalueFrom:# 挂载configMapKeyRef:name: myconfigkey: special.level- name: TYPEvalueFrom:configMapKeyRef:name: myconfigkey: special.typerestartPolicy: Never
最后我们查看输出
kubectl create -f config-var.yamlkubectl get cmkubectl logs mypod

