Kubernetes 中Secret

目录

  • 1、创建 Secret
    • 1.1、通过 kubectl 命令行创建(例如,基于明文)
    • 1.2、通过 YAML 配置文件创建
  • 2、使用 Secret
    • 2.1、作为文件挂载
    • 2.2、作为环境变量
  • 3、注意事项

在 Kubernetes 中,Secret 是一种用来存储敏感信息的对象,如密码、OAuth 令牌和 SSH 密钥等。Secret 允许你将这些敏感数据安全地传递给 Pods 中的容器,而无需在配置文件或镜像中硬编码这些信息。Kubernetes 会对 Secret 数据进行加密存储,并在使用时解密。

1、创建 Secret

你可以通过多种方式创建 Secret,以下是两种常见的方法:

1.1、通过 kubectl 命令行创建(例如,基于明文)

kubectl create secret generic my-secret --from-literal=username=admin --from-literal=password=secretpassword

这会创建一个名为 my-secret 的 Secret,其中包含了两个键值对(username 和 password)。

1.2、通过 YAML 配置文件创建

对于更复杂的 Secret 或需要版本控制的情况,通常推荐使用 YAML 文件定义 Secret:

apiVersion: v1
kind: Secret
metadata:
  name: my-secret
type: Opaque # 默认类型,适用于不加密的密钥
data:
  username: YWRtaW4= # base64 编码的 "admin"
  password: c2VjcmV0cGFzc3dvcmQ= # base64 编码的 "secretpassword"

注意,数据字段需要 base64 编码。你可以使用 echo -n "your_value" | base64 命令进行编码。

2、使用 Secret

在 Pod 定义中,你可以通过 volume 或 environment variables 将 Secret 挂载到容器中:

2.1、作为文件挂载

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: my-image
    volumeMounts:
    - name: secret-volume
      mountPath: /var/secrets
      readOnly: true
  volumes:
  - name: secret-volume
    secret:
      secretName: my-secret

2.2、作为环境变量

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: my-image
    env:
    - name: USERNAME
      valueFrom:
        secretKeyRef:
          name: my-secret
          key: username
    - name: PASSWORD
      valueFrom:
        secretKeyRef:
          name: my-secret
          key: password

3、注意事项

  • 尽管 Secret 数据在 etcd 中以加密形式存储,但在使用过程中(例如,挂载为文件时),它们是以明文形式存在的,因此仍然需要确保 Pod 的安全性和隔离性。
  • Secret 类型除了 Opaque 外,还有 kubernetes.io/tlskubernetes.io/dockerconfigjson 等特殊类型,分别用于 TLS 证书和 Docker 登录凭据。
  • 考虑使用外部 Secrets 管理解决方案,如 HashiCorp Vault,以增强安全性。
  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值