k8s数据持久化之Secret
admin
2023-03-25 19:01:35
0

一、
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.com
Generic:通用的、一般的。加密方式。
查看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:         
5.Annotations:    
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:         
5.Annotations:    
6.  
7.Type:  Opaque  
8.  
9.Data  
10.====  
11.class:     4 bytes  
12.password:  8 bytes  
3)通过 --from-env-file:**(这种方式可以在同一个文件内写入多个数据。)**
vim lbs.txt
class=lbs
password=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:         
5.Annotations:    
6.  
7.Type:  Opaque  
8.  
9.Data  
10.====  
11.class:     3 bytes  
12.password:  7 bytes  
4)通过yaml配置文件的方式。(把需要保存的数据加密)
echo lbs | base64
echo www.com | base64  

vim lbssecret4.yaml
apiVersion: v1
kind: Secret
metadata:
  name: mysecret4
data:
  class: #编译的lbs
  password: #编译的www.com
    执行文件:
    kubectl apply -f lbssecret4.yaml
    1.kubectl describe secrets lbhsecret4   
2.Name:         lbhsecret4  
3.Namespace:    default  
4.Labels:         
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.yaml
apiVersion: v1
kind: Pod
metadata:
  name: lbspod1
spec:
  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   
查看:
3. kubectl get pod  
4.NAME      READY   STATUS              RESTARTS   AGE  
5.lbspod1   1/1     Running   0          26s  
进入pod内,挂载的路径中。使用cat 查看class姓名,密码(cat class)查看数据是否挂载成功。(可以发现会自动帮助解密)
2)以环境变量的方式:使用lbssecret4.

vim  pod2.yaml
apiVersion: v1
kind: Pod
metadata:
  name: lbspod2
spec:
  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   
查看:
3. kubectl get pod  
4.NAME      READY   STATUS    RESTARTS   AGE  
5.lbspod1   1/1     Running   0          10m  
6.lbspod2   1/1     Running   0          39s  
进入pod中查看数据。可使用echo的方式(echo容器内的变量名)
例如:echo $SECRET_CLASS查看保存的姓名,密码。

相关内容

热门资讯

特朗普下令不打了,美国的“余粮... 可以说戛然而止,快得让很多人都无法适应。前两周,每一天美国都要打击伊朗一通。就在7月24日白宫会议前...
穆杰塔巴最新表态:支持黎真主党 △伊朗最高领袖穆杰塔巴·哈梅内伊(资料图)当地时间7月26日晚,伊朗最高领袖穆杰塔巴·哈梅内伊对黎巴...
美军瘫痪一艘驶向伊朗的油轮,特... 美国总统特朗普虽下令暂停打击伊朗,但美军仍在执行对霍尔木兹海峡的封锁任务。针对美军瘫痪一艘驶向伊朗油...
“小牌大耍”的底气到底是哪里来... 澎湃首席评论员 李平这两天,“艺人李权哲乘高铁占座事件”在网上引发热议,该艺人参加的活动主办方曾发布...
越南籍船舶南海遇险沉没,中方已... 据凤凰卫视报道,一艘越南船舶7月24日夜间在越南庆和以东220海里附近遇险沉没,船上共62名越南籍人...
李权哲占座、蒙面、装死:娱乐圈... 你买了一张高铁一等座的票,找到自己的位置,18A。有人坐着。你拿出手机看了眼购票记录——没错,18A...
杭州景区咖啡店闯入1条幼蛇,仅... 夏天气温高、湿度大,蛇类活动进入高峰期,千万别被“小蛇无害”的刻板印象骗了!有些幼蛇看着迷你可爱,实...
AI开源公开信签署企业增至50... IT之家 7 月 26 日消息,英伟达、微软、IBM、Meta 等 25 家美国科技企业本周(7 月...
南阳快手短视频代运营企业的服务... 在短视频平台快速发展的背景下,企业通过快手等渠道进行内容运营已成为常见的市场动作。对于希望借助短视频...
普通人该如何跟上科技发展的步伐 这个被称作科技的词汇, 听起来既有宏大之感, 又颇为遥远, 好似仅仅归属于在实验室里专心致志钻研的科...