Kubernetes 存储 Secret

1.定义

2.分类     

 3.Opaque

1.概念

2.创建

 1.base 64 编码 

echo -n "jmj" | base64

2.base 64 解码

echo -n "am1q" | base64 -d

3.切记secret对象的value值必须经过base64位编码 

因为他会对value自动按照base64 解码如果你放入的值没有编码, 那他就会出现错乱

3.实验

echo -n "admin" | base64
echo -n "1f2d1e2e67df" | base64

创建 1.secret.yaml 

apiVersion: v1
kind: Secret
metadata:
 name: mysecret
type: Opaque
data:
 password: MWYyZDFlMmU2N2Rm
 username: YWRtaW4=
kubectl create -f 1.secret.yaml

 他不会告诉你value 只会告诉你字节大小

想要获取value

kubectl get secret mysecret -o yaml

4.使用

1.env方案

创建 8.deployment.yaml 文件 

apiVersion: apps/v1
kind: Deployment
metadata:
 labels:
  app: opaque-secret-env
 name: opaque-secret-env-deploy
spec:
 replicas: 5
 selector:
  matchLabels:
   app: op-se-env-pod
 template:
  metadata:
   labels:
    app: op-se-env-pod
  spec:
   containers:
    - image: wangyanglinux/myapp:v1.0
      name: myapp-continaer
      ports:
        - containerPort: 80
      env:
        - name: TEST_USER
          valueFrom:
            secretKeyRef:
               name: mysecret
               key: username
        - name: TEST_PASSWORD
          valueFrom:
            secretKeyRef:
               name: mysecret
               key: password
kubectl apply -f 8.deployment.yaml
kubectl get pod

 随便进入一个

kubectl exec -it opaque-secret-env-deploy-7f868565fb-22v2b -- /bin/bash
env

 创建的时候 value需要通过base64编码  

我们在挂载的时候 它会把这个value值进行自动的解码 

2.volume 方案

1.案例1 挂载文件

创建   9.pod.yaml

apiVersion: v1
kind: Pod
metadata:
 labels:
  name: secret-volume
 name: secret-volume-pod
spec:
 volumes:
   - name: volumes12
     secret:
     secretName: mysecret
 containers:
   - image: wangyanglinux/myapp:v1.0
     name: myapp-container
     volumeMounts:
       - name: volumes12
         mountPath: "/data"
kubectl create -f 9.pod.yaml
kubectl exec -it secret-volume-pod  -- /bin/bash

进入pod

cd /data

ls -l ..data/password

644 权限  

删除pod

kubectl delete pod  secret-volume-pod
2.案例2 挂载文件的权限修改
apiVersion: v1
kind: Pod
metadata:
 labels:
  name: secret-volume
 name: secret-volume-pod
spec:
 volumes:
   - name: volumes12
     secret:
       secretName: mysecret
       defaultMode: 256
 containers:
   - image: wangyanglinux/myapp:v1.0
     name: myapp-container
     volumeMounts:
       - name: volumes12
         mountPath: "/data"

将刚才的权限改为 256 对应的 8进制 是400

kubectl create -f 10.pod.yaml
 kubectl exec -it secret-volume-pod  -- /bin/bash

400 

3.案例3 指定某个key到某个目录下
apiVersion: v1
kind: Pod
metadata:
 labels:
  name: secret-volume
 name: secret-volume-pod
spec:
 volumes:
   - name: volumes12
     secret:
       secretName: mysecret
       items:
         - key: username
           path: my-group/my-username
 containers:
   - image: wangyanglinux/myapp:v1.0
     name: myapp-container
     volumeMounts:
       - name: volumes12
         mountPath: "/data"
kubectl create -f 11.pod.yaml

把挂载文件名字改为路径最后一段

 他就是一个文件

以单独键进行挂载的话 它不支持热更新

5.热更新

 

kubectl create -f 9.pod.yaml

重复利用案例1 的pod

子路径它的 secret 不能被热更新

环境变量的使用方式不能被热更新

1.我们要对当前的 scret 做改变了

将用户名改成 jiangmingji

 echo -n 'jiangmingji' | base64
amlhbmdtaW5namk=
kubectl edit secret mysecret

修改完保存退出即可

 

发现已经被热更新了

6.不可更改

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值