如果我使用 kubectl 从 id_rsa 文件创建一个 secret :
kubectl create secret generic hcom-secret --from-file=ssh-privatekey=./.ssh/id_rsa
然后将 secret 挂载到容器中
"volumeMounts": [
{"name": "cfg", "readOnly": false, "mountPath": "/home/hcom/.ssh"}
]
"volumes": [
{"name": "cfg", "secret": { "secretName": "hcom-ssh" }}
],
生成的文件不是 id_rsa 而是 ssh-privatekey 并且其上的许可不是 ssh 期望的 600
这是一种正确的方法,或者任何人都可以详细说明应该如何做到这一点?
最佳答案
Kubernetes 官方 secret 文档涵盖 this exact use-case .
要创建 secret ,请使用:
$ kubectl create secret generic my-secret --from-file=ssh-privatekey=/path/to/.ssh/id_rsa --from-file=ssh-publickey=/path/to/.ssh/id_rsa.pub
要在容器中挂载 secret ,请使用以下 Pod 配置:
{
"kind": "Pod",
"apiVersion": "v1",
"metadata": {
"name": "secret-test-pod",
"labels": {
"name": "secret-test"
}
},
"spec": {
"volumes": [
{
"name": "secret-volume",
"secret": {
"secretName": "my-secret"
}
}
],
"containers": [
{
"name": "ssh-test-container",
"image": "mySshImage",
"volumeMounts": [
{
"name": "secret-volume",
"readOnly": true,
"mountPath": "/etc/secret-volume"
}
]
}
]
}
}
截至目前,Kubernetes 实际上没有办法控制 secret 文件的权限,但是 a recent Pull Request确实添加了对更改 secret 路径的支持。此支持是通过
1.3
添加的根据 this comment以下是与权限相关的 Github 问题:
关于ssh - 在 kubernetes 中创建 ssh secrets key 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39568412/