在kubernetes中创建ssh secrets密钥文件

Kev*_*lor 7 ssh kubernetes

如果我使用kubectl从id_rsa文件创建一个秘密:

kubectl create secret generic hcom-secret --from-file=ssh-privatekey=./.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

然后将秘密装入容器中

"volumeMounts": [
        {"name": "cfg", "readOnly": false, "mountPath": "/home/hcom/.ssh"}
      ]

"volumes": [
      {"name": "cfg", "secret": { "secretName": "hcom-ssh" }}
    ],
Run Code Online (Sandbox Code Playgroud)

结果文件不是id_rsa,而是ssh-privatekey,其上的许可证不是ssh所期望的600

这是一种正确的方法,还是有人可以详细说明应该如何做到这一点?

ffl*_*ing 11

官方Kubernetes秘密文档涵盖了这个确切的用例.

要创建秘密,请使用:

$ 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
Run Code Online (Sandbox Code Playgroud)

要在容器中安装机密,请使用以下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"
          }
        ]
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,Kubernetes实际上没有办法控制秘密的文件权限,但最近的Pull Request确实增加了对更改秘密路径的支持.1.3根据此评论添加了此支持

以下是与Github相关的权限问题:


kub*_*zyk 11

从 kubernetes-1.4 开始,事情变得更简单了。这是我的看法,基于旧的指南

要创建秘密,请使用:

kubectl create secret generic ssh-keys --from-file=id_rsa=/path/to/.ssh/id_rsa --from-file=id_rsa.pub=/path/to/.ssh/id_rsa.pub
Run Code Online (Sandbox Code Playgroud)

要将机密装载到容器中,请使用以下 Pod 配置:

kubectl create secret generic ssh-keys --from-file=id_rsa=/path/to/.ssh/id_rsa --from-file=id_rsa.pub=/path/to/.ssh/id_rsa.pub
Run Code Online (Sandbox Code Playgroud)

还有吹毛求疵:这个id_rsa.pub几乎从来没有被使用过,除非需要,我不会费心去保密它。