secret:pod提供密码,token,私钥等敏感数据
创建secret
step1: vim mysql.yaml
apiVersion: v1
kind: Secret
metadata:
name: mysqlsecret
data:
username: ****
password: ****
step2: kubectl apply -f mysql.yaml
question:
1,source /opt/bin/common/tool.sh -----k8s指令重命名
2,mysql中name必须是0~9,a-z.不能有大写或者非法字符
3,data中的name,password,必须是base64,
echo -n username | base64
echo -n password | base64
查看secret
step1:
查看secret
kubectl get secret mysqlsecret
查看状态
kubectl describe secret mysqlsecret
显示seceret
kubectl edit secret mysqlscret
由文本中的反编译为mingwen
echo -n ****|base64 --decode
在pod中使用volume使用secret
vim mypod.yml
apiVersion: v1
kind: Pod
metadata:
name: mysqlpods
spec:
containers:
- name: mysqlpods
image: cloud-base/mysql-mha-5.6-0.57:tag
args:
- /bin/bash
- -c
- slepp 10; touch /tmp/health; slepp 300
volumeMounts:
- name: foo
mount Path: "/etc/foo"
readOnly: true
volumes:
- name: foo
secret:
secretName: mysqlsecret
注意:
1:args:必须带上参数 /bin/bash ,否则报错no command specified
2:mypod.yml只能修改某些blockm其余的地方改了会报错,也不会config
3:image参考/opt/bin/conFile
在pod中查看secret
source /opt/bin/common/tool.sh
pod:可以看见mysqlpods is running
kubectl exec -it mypods sh
cat /etc/foo/password;
cat /etc/foo/username;
用ENV使用secert
apiVersion: v1
kind: Pod
metadata:
name: mysqlpods
spec:
containers:
- name: mysqlpods
image: cloud-base/mysql-mha-5.6-0.57:tag
args:
- /bin/bash
- -c
- slepp 10; touch /tmp/health; slepp 300
env:
- name: SECRET_USERNAME
valueFrom
secretKeyRef:
name: mysqlsecret
key: username
- name: SECRET_PASSWORD
valueFrom
secretKeyRef:
name: mysqlsecret
key: password
kubectl apply -f mysqlpods.yml
kubectl exec -it mysqlpods.sh
$echo $SECRET_USERNAME
$echo $SECRET_PASSWORD
可以看见已经有值了
使用文件与使用环境的区别:
文件可以动态更新secret:修改mysql,yml中username的值,重新部署,可以在pod中看到更新值
环境不能动态更新secret
网友评论