kubernetes(7)Secret

概述

作用:对数据进行加密,存在etcd中,让Pod容器以挂载Volume方式(变量或Volume形式)进行访问

Secret 解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者 Pod Spec 中。Secret 可以以 Volume 或者环境变量的方式使用

使用场景:凭证

base64编码

如下:便是对admin进行base64编码后的结果
在这里插入图片描述

使用

第一步:创建secret加密数据

编写下面的配置文件(secret.yaml):其里面的数据都是加密后的内容

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  username: YWRtaW4=
  password: MWYyZDFlMmU2N2Rm

将上面的配置文件进行创建并执行
在这里插入图片描述
查看:如此便完成了创建
在这里插入图片描述

第二步:以变量的形式挂载到pod容器中

创建如下的yaml文件(secret-var.yaml)

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: nginx
    image: nginx
    env:
      - name: SECRET_USERNAME
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: username
      - name: SECRET_PASSWORD
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: password

如下图:便是以变量形式挂载,分别将mysecret中的username和password挂载过来,然后赋值给最外层红框中的name

在这里插入图片描述

创建并执行上面的yaml文件
在这里插入图片描述
查看pod,等待pod镜像下载完成
在这里插入图片描述

进入pod并查看变量的值:之前的值被成功导入了
在这里插入图片描述

第二步:以Volume形式挂载到Pod

创建如下的yaml(secret-vol.yaml)文件,内容如下

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: nginx
    image: nginx
    volumeMounts:
    - name: foo
      mountPath: "/etc/foo"
      readOnly: true
  volumes:
  - name: foo
    secret:
      secretName: mysecret

下面的secretName要和之前配置的名字一样,将其挂载到etc/foo目录下,文件类型是只读

在这里插入图片描述
将之前的重复的pod给删除掉
在这里插入图片描述
创建并执行上面的yaml文件
在这里插入图片描述
等待容器创建成功,进入pod查看:便可以发现之前挂载的目录下还有两个目录
在这里插入图片描述
进入对应的目录进行查看:之前的值都被存入了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

?abc!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值