码迷,mamicode.com
首页 > 其他好文 > 详细

secret

时间:2020-02-15 11:53:08      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:volume   pat   环境变量   cat   ntp   ast   ada   img   用户名   

[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]# ls
password  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=root
password=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 | base64
cm9vdAo=
[root@master secret]# echo 123.com | base64
MTIzLmNvbQo=

编写yaml文件:

[root@master secret]# vim secret4.yaml
apiVersion: v1
kind: Secret
metadata:
  name: mysectet4
data:
  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.yaml
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  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 # ls
password  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.yaml
apiVersion: v1
kind: Pod
metadata:
  name: mypod2
spec:
  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_PASSWORD
123.com
/ # echo $SECRET_USERNAME
root

secret

标签:volume   pat   环境变量   cat   ntp   ast   ada   img   用户名   

原文地址:https://blog.51cto.com/13997536/2471050

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!