我使用如下命令从文件创建了一个秘密:
kubectl create secret generic laravel-oauth \
--from-file=./.work-in-progress/oauth_private.key \
--from-file=./.work-in-progress/oauth_public.key
Run Code Online (Sandbox Code Playgroud)
然而,似乎新行已从文件中删除(当使用秘密作为 ENV 变量时)。
文档中有一个“编码”注释,其中指出:
秘密数据的序列化 JSON 和 YAML 值被编码为 base64 字符串。换行符在这些字符串中无效,必须省略。在 Darwin/macOS 上使用 base64 实用程序时,用户应避免使用 -b 选项来分割长行。相反,Linux 用户应将选项 -w 0 添加到 base64 命令或管道 base64 | tr -d '\n' 如果 -w 选项不可用。
不过,我认为这仅适用于通过 YAML 文件“手动”创建的机密。
新行不会被删除,文件只是进行Base64编码,正如其他答案中提到的那样。例如:
# mycert.pem
-----BEGIN CERTIFICATE-----
xxxxxx
xxxxxx
...
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
然后:
$ kubectl create secret generic mysecret --from-file=./cert.pem
Run Code Online (Sandbox Code Playgroud)
然后:
$ kubectl get secret mysecret -o=yaml
apiVersion: v1
data:
cert.pem: <base64 encoded string>
kind: Secret
metadata:
creationTimestamp: 2018-11-14T18:11:46Z
name: mysecret
namespace: default
resourceVersion: "20180431"
selfLink: /api/v1/namespaces/default/secrets/mysecret
uid: xxxxxx
type: Opaque
Run Code Online (Sandbox Code Playgroud)
然后如果你解码它,你就会得到原始的秘密。
$ echo '<base64 encoded string>' | base64 -D
-----BEGIN CERTIFICATE-----
xxxxxx
xxxxxx
...
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
此外,这在休息时也不一定是安全的。如果您正在寻找更高的安全性,您可以使用Hashicorp Vault之类的东西或 @Alex Bitnami 的密封秘密所暗示的东西。
归档时间: |
|
查看次数: |
12018 次 |
最近记录: |