如何部署秘密资源?

时间:2020-12-19 19:23:36

标签: kubernetes

我是 Kubernetes 的新手,正在努力思考如何设置机密。我将尝试用一个例子来说明。假设我有一个如下所示的秘密资源:

apiVersion: v1
kind: Secret
metadata:
  name: big-secrets
type: Opaque
data:
  secret-password: "secretMeow"
  secret-key: "angryWoof"
  database-password: "happyWhale"

如何使用 kubectl 设置(不确定这里的设置是否正确)这些机密,以及如何检索它们?我已尝试通读以下 documentation,但仍不确定如何从上述 yaml 文件进行设置。

2 个答案:

答案 0 :(得分:2)

使用 stringData 可以使用纯文本值创建秘密:

apiVersion: v1
kind: Secret
metadata:
  name: big-secrets
type: Opaque
stringData:
  secret-password: "secretMeow"
  secret-key: "angryWoof"
  database-password: "happyWhale"

但是值得注意的是,它提供了更多便利,docs 说:

<块引用>

它是作为只写方便的方法提供的。所有键和值在写入时合并到数据字段中,覆盖任何现有值。从 API 读取时从不输出。

关于如何读取secret的问题,如果你想以编程方式,你可以使用像jq这样的工具来解析Kubernetes输出和base64解码:

kubectl get secret big-secrets -o json | jq -r '.data["secret-password"] | @base64d'

这会将创建的机密作为 JSON 获取(-o yaml 也是一个选项),读取给定机密的数据字段(在本例中为机密密码),然后对其进行 base64 解码。

答案 1 :(得分:1)

使用 yaml 文件,您无法在没有编码字符串值的情况下创建机密。秘密数据值必须以 yaml 文件中的 base64 编码。如果你想从 yaml 文件创建一个秘密,那么你需要像下面这样解码数据值。

apiVersion: v1
kind: Secret
metadata:
  name: big-secrets
type: Opaque
data:
  secret-password: c2VjcmV0TWVvdwo=
  secret-key: YW5ncnlXb29mCg==
  database-password: aGFwcHlXaGFsZQo=

您可以使用 kubectl 命令式命令从如下文字值创建一个秘密。

kubectl create secret generic big-secrets --from-literal=secret-password="secretMeow" --from-literal=secret-key="angryWoof"
相关问题