【发布时间】:2020-02-24 23:49:00
【问题描述】:
如果我使用 kubectl 从 id_rsa 文件创建秘密:
kubectl create secret generic hcom-secret --from-file=ssh-privatekey=./.ssh/id_rsa
然后将秘密挂载到容器中
"volumeMounts": [
{"name": "cfg", "readOnly": false, "mountPath": "/home/hcom/.ssh"}
]
"volumes": [
{"name": "cfg", "secret": { "secretName": "hcom-ssh" }}
],
生成的文件不是 id_rsa 而是 ssh-privatekey 并且其中的许可不是 ssh 期望的 600
这是一种正确的方法吗,或者任何人都可以详细说明应该如何做到这一点?
【问题讨论】:
-
如果您希望名称为 id_rsa,您可能应该这样做
--from-file=id_rsa=./.ssh/id_rsa -
id_rsa 不是有效的文件名 - 正则表达式验证失败。即使我生成一个 json 文件并尝试对其进行编辑并使用 id_rsa 作为文件名,它也不会加载该密钥
-
我明白了,Kubernetes 似乎有一个奇怪的限制,其中秘密名称(和其他名称,如标签)必须是有效的 DNS 名称,符合
[a-z0-9]([-a-z0-9]*[a-z0-9])?这里是 relevant code跨度> -
我实际上可以使用文件名,因为我可以使用 -i 将它传递给 ssh,但我必须在我的 docker 容器中将权限级别更改为 600
标签: ssh kubernetes