【Kubernetes】配置管理(二):Secret

K8s 配置管理》系列,共包含以下 2 篇文章:

😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持 💖💖💖 将激励 🔥 博主输出更多优质内容!!!

Secret 也是 Kubernetes 配置管理的一种方式,它采用 Base 64 编码机制保存配置信息。与 ConfigMap 不同的是,Secret 中包含敏感的信息,例如用户的登录密码、Token 等。这些敏感信息使用 Secret 来保存,可以更好地控制它们的用途,并降低意外暴露的风险。在成功创建 Secret 后,可以通过 环境变量数据卷 的方式在 Pod 中使用它。

1.创建 Secret

1.1 使用账号密码文件命令创建 Secret

  • 执行以下命令生成账号文件和密码文件。
echo 'collenzhao' > username.txt
echo 'password' > password.txt
  • 使用 kubectl create secret 命令创建 Secret。
kubectl create secret generic demo-secret1 \
--from-file=username.txt --from-file=password.txt
  • 获取创建的 Secret。
kubectl get secret

输出的信息如下:

NAME                    TYPE                                     DATA       AGE
default-token-gp47w     kubernetes.io/service-account-token      3          3d13h
demo-secret1            Opaque                                   2          4s

🚀 Kubernetes 允许用户创建自己的 Secret,同时系统也创建了一些 Secret(例如 default-token-gp47w)。

  • 查看 demo-secret1 的详细信息。
kubectl describe secret demo-secret1

输出的信息如下:

Name:          demo-secretl
Namespace:     default
Labels:        <none>
Annotations:   <none>

Type: Оpaque

Data
====
password.txt:  9 bytes
username.txt:  11 bytes

1.2 使用 YAML 文件创建 Secret

由于 Secret 是采用 Base 64 编码机制来保存配置信息的,因此在创建 YAML 文件前,需要先得到配置信息的 Base 64 编码。

在以下例子中,先将账号和密码进行 Base 64 编码,然后通过 YAML 文件将编码结果保存到了 Secret 中。

  • 得到账号 admin 和密码 hello123 的 Base 64 编码。
echo 'admin' | base64
YWRtaW4K

echo 'hello123' | base64
aGVsbG8xMjMK
  • 创建 demo-secret2.yaml 文件,并在其中输入以下内容。
apiVersion: v1
kind: Secret
metadata:
  name: demo-secret2
type: Opaque
data:
  username: YWRtaW4K
  password: aGVsbG8xMjMK
  • 执行kubectl create 命令创建 Secret。
kubectl create -f demo-secret2.yaml
  • 获取创建的 Secret。
kubectl get secret

输出的信息如下:

NAME                    TYPE                                     DATA       AGE
default-token-gp47w     kubernetes.io/service-account-token      3          3d13h
demo-secret1            Opaque                                   2          9m37s
demo-secret2            Opaque                                   2          18s

2.使用 Secret

在成功创建 Secret 后,就可以在 Pod 中使用它来实现配置信息的管理了。Secret 的使用也有两种方式:环境变量数据卷 volume

2.1 通过环境变量直接将 Secret 的配置信息传递给 Pod

  • 创建 secret-usage01.yaml 文件,并在其中输入以下内容。
apiVersion: v1
kind: Pod
metadata:
  name: secret-usage01
spec:
  containers:
  - name: secret-usage01
    image: nginx
    imagePullPolicy: IfNotPresent
    env:
      - name: SECRET_USERNAME
        valueFrom:
          secretKeyRef:
            name: demo-secret2
            key: username
      - name: SECRET_PASSWORD
        valueFrom:
          secretKeyRef:
            name: demo-secret2
            key: password
  restartPolicy: Never
  • 使用 kubectl apply 命令创建 Pod。
kubectl apply -f secret-usage0l.yaml
  • 使用 kubectl exec 命令进入容器。
kubectl exec it secret-usage01 bash
  • 查看 Secret 的配置信息。
echo $SECRET USERNAME
echo $SECRET PASSWORD
root@secret-usage01:/# echo $SECRET_USERNANE
admin
root@secret-usage01:/# echo $SECRET_PASSWORD
hello123
root@secret-usage01:/#

2.2 通过数据卷 volume 将 Secret 的配置信息挂载到 Pod 内

  • 创建 secret-usage02.yaml 文件将创建的 Secret demo-secret2 挂载到容器指定的目录下。目录下的文件以 key 作为文件名,文件内容为 key 的值。
apiVersion: v1
kind: Pod
metadata:
  name: secret-usage02
spec:
  containers:
  - name: secret-usage02
    image: redis
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - name: foo
      mountPath: "/etc/foo"
      readOnly: true
  volumes:
  - name: foo
    secret:
      secretName: demo-secret2
  • 执行 kubectl apply 命令创建 Pod。
kubectl apply -f secret-usage02.yaml
  • 使用 kubectl exec 命令进入容器。
kubectl exec -it secret-usage02 bash
  • 切换到容器内的 /etc/foo/ 目录下,查看挂载的 Secret 配置信息。
root@secret-usage02:/data# cd /etc/foo/
root@secret-usage02:/etc/foo# ls
password username
root@secret-usage02:/etc/foo# more username
admin
root@secret-usage02:/etc/foo# more password
hello123
root@secret-usage02:/etc/foo#
  • 11
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

G皮T

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

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

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

打赏作者

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

抵扣说明:

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

余额充值