千家信息网

secret

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,[root@master yaml]# mkdir secret[root@master yaml]# cd secret/Secret:用来保存一些敏感信息,比如数据库的用户名或者密钥。查看k8s自
千家信息网最后更新 2025年01月23日secret

[root@master yaml]# mkdir secret
[root@master yaml]# cd secret/

Secret:用来保存一些敏感信息,比如数据库的用户名或者密钥。

查看k8s自带的名称空间的密钥:

kubectl get s1ecrets -n kube-system

举例:保存数据1库的用户名和密码

​ 用户名:root1

​ 密码:123.com

第一种方法:

通过 --from-literal(文字的方式):

kubectl create secret generic (通用的,一般的) mysecret1 --from-literal=username=root --from-literal=password=123.com

第二种方法:

通过 --from-file(文件的方式):

[root@master secret]# echo root > username[root@master secret]# echo 123.com > password[root@master secret]# lspassword  username[root@master secret]# kubectl create secret generic mysecret2 --from-file=username --from-file=password secret/mysecret2 created

验证删除文件,创建的用户和密码还会存在吗?

[root@master secret]# rm -rf password username 

证明还存在

第三种方法:

通过 --from-env-file:

[root@master secret]# cat env.txt username=rootpassword=123.com[root@master secret]# kubectl create secret generic mysecret3 --from-env-file=env.txt secret/mysecret3 created

第四种方法:

通过yaml配置文件:

输出为yaml文件:

kubectl get secrets mysecret1 -o yaml

把需要保存的数据加密:

[root@master secret]# echo root | base64cm9vdAo=[root@master secret]# echo 123.com | base64MTIzLmNvbQo=

编写yaml文件:

[root@master secret]# vim secret4.yamlapiVersion: v1kind: Secretmetadata:  name: mysectet4data:  username: cm9vdAo=  password: MTIzLmNvbQo=[root@master secret]# kubectl apply -f secret4.yaml secret/mysectet4 created

解码:

[root@master secret]# echo -n cm9vdAo= | base64 --decode root[root@master secret]# echo -n MTIzLmNvbQo= | base64 --decode 123.com

如何来使用Secret资源:

第一种方法:

以Volume挂载的方式:

[root@master secret]# vim pod.yamlapiVersion: v1kind: Podmetadata:  name: mypodspec:  containers:  - name: mypod    image: busybox    args:      - /bin/sh      - -c      - sleep 300000    volumeMounts:    - name: secret-test      mountPath: "/etc/secret-test"      readOnly: true  volumes:  - name: secret-test    secret:      secretName: mysecret1[root@master secret]# kubectl apply -f pod.yaml pod/mypod created

查看是否挂在成功:

[root@master secret]# kubectl exec -it mypod /bin/sh/ # cd /etc/secret-test//etc/secret-test # lspassword  username/etc/secret-test # cat password 123.com/etc/secret-test # /etc/secret-test # cat username root/etc/secret-test # password与username文件只是只读文件,不能修改:/etc/secret-test # echo admin > username/bin/sh: can't create username: Read-only file system

第二种方式:

以环境变量方式:

[root@master secret]# cp pod.yaml pod_env.yaml [root@master secret]# vim pod_env.yamlapiVersion: v1kind: Podmetadata:  name: mypod2spec:  containers:  - name: mypod    image: busybox    args:      - /bin/sh      - -c      - sleep 300000    env:      - name: SECRET_USERNAME        valueFrom:          secretKeyRef:            name: mysecret2            key: username      - name: SECRET_PASSWORD        valueFrom:          secretKeyRef:            name: mysecret2            key: password[root@master secret]# kubectl apply -f pod_env.yaml pod/mypod2 created

[root@master secret]# kubectl exec -it mypod2 /bin/sh/ # echo $SECRET_PASSWORD123.com/ # echo $SECRET_USERNAMEroot
0