k8s数据持久化之Secret

[复制链接]

826

主题

826

帖子

446

积分

中级会员

Rank: 3Rank: 3

积分
446
分享到:
发表于 2022-4-20 14:00:49 | 显示全部楼层 |阅读模式
一、
Secret资源对象:解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec中。Secret可以以Volume或者环境变量的方式使用。
用来保存一些敏感信息,比如数据库的用户名密码或者密钥。
Secret有三种类型:
1.Service Account:用来访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到Pod的/run/secrets/kubernetes.io/serviceaccount目录中。
2.Opaque:base64编码格式的Secret,用来存储密码、密钥等。
3.Kubernetes.io/dockerconfigjson:用来存储私有docker registry的认证信息。
二,以实验测试的方式,创建4种secret资源。
姓名:class=lbs
密码:password=www.com
创建2个Pod,分别以挂载Volume的方式,和以环境变量env的方式去使用,secret2,和secret4.
1)通过 --from-literal(文字的):kubectl create secret generic **lbssecret1 (创建secret资源的名)**--from-literal=class=lbs --from-literal=password=www.comww.comGeneric:通用的、一般的。加密方式。查看secret资源5. kubectl get secrets 6.NAME TYPE DATA AGE 7.lbssecret1 Opaque 2 24s 使用describe可以查看secret资源的详细信息。**(可以看到是以密文的方式存储)**1kubectl describe secrets lbssecret1 2.Name: lbssecret1 3.Namespace: default 4.Labels: <none> 5.Annotations: <none> 6. 7.Type: Opaque 8. 9.Data 10.==== 11.class: 3 bytes     #只能查看到数据的大小,无法查看到数据内容。12.password: 7 bytes 2)通过 --from-file(文件):(**这种方式不推荐使用,需要将存储的数据写入到文件中,注意每个文件只能存储一个数据。)**echo lbs >class echo www.com >password kubectl  create  secret  generic lbssecret2  --from-file=class --from-file=password  查看: 1.kubectl describe secrets lbssecret2 2.Name: lbssecret2 3.Namespace: default 4.Labels: <none> 5.Annotations: <none> 6. 7.Type: Opaque 8. 9.Data 10.==== 11.class: 4 bytes 12.password: 8 bytes 3)通过 --from-env-file:**(这种方式可以在同一个文件内写入多个数据。)**vim lbs.txtclass=lbspassword=www.com(保存退出)kubectl  create secret generic mysecret3 --from-env-file=lbs.txt查看:1.kubectl describe secrets lbssecret3 2.Name: lbssecret3 3.Namespace: default 4.Labels: <none> 5.Annotations: <none> 6. 7.Type: Opaque 8. 9.Data 10.==== 11.class: 3 bytes 12.password: 7 bytes 4)通过yaml配置文件的方式。(把需要保存的数据加密)echo lbs | base64echo www.com | base64 vim lbssecret4.yamlapiVersion: v1kind: Secretmetadata:  name: mysecret4data:  class: #编译的lbs  password: #编译的www.com    执行文件:    kubectl apply -f lbssecret4.yaml    1.kubectl describe secrets lbhsecret4 2.Name: lbhsecret4 3.Namespace: default 4.Labels: <none> 5.Annotations: 6.Type: Opaque 7. 8.Data 9.==== 10.password: 8 bytes 11.class: 4 bytes 创建2个Pod,分别以挂载的方式,和以环境变量的方式去使用,secret2,和secret4.
1)以Volume挂载的方式:使用lbssecret2.vim pod1.yamlapiVersion: v1kind: Podmetadata:  name: lbspod1spec:  containers:  - name: lbspod    image: busybox    args:      - /bin/sh      - -c      - sleep 300000    volumeMounts:    - name: secret-lbs      mountPath: "/etc/secret-lbs"  挂在到pod容器内的路径      readOnly: true  volumes:    - name: secret-lbs      secret:        secretName: lbssecret2执行yaml文件,查看Pod状态:1.[root@master lbhsecret]# kubectl apply -f pod1.yaml br/>1.[root@master lbhsecret]# kubectl apply -f pod1.yaml vim  pod2.yamlapiVersion: v1kind: Podmetadata:  name: lbspod2spec:  containers:  - name: lbspod    image: busybox    args:      - /bin/sh      - -c      - sleep 300000    env:      - name: SECRET_CLASS#容器内的变量名        valueFrom:          secretKeyRef:#提取环境变量的值            name: lbssecret4#调用secret资源的lbssecret4            key: class#调用lbssecret4对应class的值      - name: SECRET_PASSWORD        valueFrom:          secretKeyRef:            name: lbssecret2            key: password执行yaml文件,查看Pod状态:1.[root@master lbhsecret]# kubectl apply -f pod2.yaml br/>1.[root@master lbhsecret]# kubectl apply -f pod2.yaml
云专线_海外IDC http://www.vecloud.com/

使用高级回帖 (可批量传图、插入视频等)快速回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则   Ctrl + Enter 快速发布  

发帖时请遵守我国法律,网站会将有关你发帖内容、时间以及发帖IP地址等记录保留,只要接到合法请求,即会将信息提供给有关政府机构。
快速回复 返回顶部 返回列表