Secret

Secret 是 Kubernetes 中专门用于存储敏感数据的对象,它和 ConfigMap 类似,都是以键值对形式保存配置,但 Secret 专门用于保存 密码、证书、API Token 等机密信息,并且在传输和存储时会进行编码和保护。


🧩 Secret 的核心作用

  • 存储敏感数据:以键值对形式保存密码、证书、API Token 等机密信息。
  • 安全访问:Pod 可以通过环境变量、挂载文件或 API 调用来安全地使用这些数据。
  • 与 ConfigMap 区分:ConfigMap 用于非机密配置,Secret 专门用于机密数据。
  • 轻量存储:适合保存小型敏感信息,不适合存储大文件。

📌 类比理解

Secret = 保险柜

  • 普通说明书(ConfigMap)可以放在文件柜里,大家都能查阅。
  • 敏感文件(密码、证书)必须放在保险柜(Secret)里,只有有权限的人才能打开。
  • Pod 启动时,如果需要密码,就会从保险柜里取出。

⚙️ 创建 Secret 的常用方式

方法 命令示例 说明
从字面值创建 kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=12345 直接定义键值对。
从文件创建 kubectl create secret generic tls-secret --from-file=cert.pem --from-file=key.pem 将文件内容作为值。
从目录创建 kubectl create secret generic tls-secret --from-file=./tls/ 将目录下所有文件打包为键值。

查看详情:

kubectl describe secret db-secret
kubectl get secret db-secret -o yaml

🧠 Secret 与 Pod 的结合方式

Pod 可以通过以下四种方式使用 Secret:

  1. 环境变量注入:在容器启动时读取敏感数据。
  2. 命令行参数:将敏感信息作为启动参数传入。
  3. 挂载为文件卷:将 Secret 内容映射到容器文件系统。
  4. 通过 API 动态读取:应用代码直接访问 Kubernetes API 获取敏感数据。

🧱 实践建议

  • 安全性依赖 etcd:Secret 数据在 etcd 中是 Base64 编码存储,必须启用加密和访问控制。
  • 命名空间限制:Pod 与 Secret 必须在同一个 Namespace 中。
  • 不可变配置:支持 immutable: true,防止被修改。
  • 敏感信息专用:不要用 ConfigMap 存储密码或证书,必须用 Secret。

📝 使用示例

apiVersion: v1
kind: Secret
metadata:
  name: dotfile-secret
data:
  .secret-file: dmFsdWUtMg0KDQo=   # Base64 编码后的内容
---
apiVersion: v1
kind: Pod
metadata:
  name: secret-dotfiles-pod
spec:
  volumes:
    - name: secret-volume
      secret:
        secretName: dotfile-secret
  containers:
    - name: dotfile-test-container
      image: registry.k8s.io/busybox
      command:
        - ls
        - "-l"
        - "/etc/secret-volume"
      volumeMounts:
        - name: secret-volume
          readOnly: true
          mountPath: "/etc/secret-volume"

👉 这个 Pod 会通过环境变量使用数据库密码,并挂载 TLS 证书文件。


⚠️ 注意事项

  • 大小限制:单个 Secret 不超过 1 MiB。
  • Base64 编码 ≠ 加密:需要额外启用 etcd 加密。
  • 命名空间限制:Pod 和 Secret 必须在同一个命名空间。
  • 不可变选项:支持 immutable: true,避免误改。

💡 总结

  • Secret 是 Kubernetes 的 保险柜
  • 用于保存敏感数据(密码、证书、Token)。
  • 与 ConfigMap 类似,但专注于安全性。
posted @ 2026-05-29 15:31  Donaver  阅读(16)  评论(0)    收藏  举报