Deseamos proponerte la mejor respuesta que descubrimos online. Nuestro deseo es que te resulte de mucha utilidad y si quieres compartir algo que nos pueda ayudar a perfeccionar nuestra información hazlo con libertad.
Solución:
Los documentos oficiales de Kubernetes para secretos cubren este caso de uso exacto.
Para crear el secreto, utilice:
$ 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
Para montar el secreto en sus contenedores, use la siguiente configuración de 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 en realidad no tiene una forma de controlar los permisos de archivos para un secreto a partir de ahora, pero una solicitud de extracción reciente agregó soporte para cambiar la ruta de los secretos. Este soporte se agregó con 1.3
según este comentario
Estos son los problemas relacionados con los permisos de Github:
- https://github.com/kubernetes/kubernetes/issues/4789
- https://github.com/kubernetes/kubernetes/issues/28317
Desde kubernetes-1.4, las cosas se simplificaron. Esta es mi opinión sobre cómo mejorar el instructivo oficial de Kubernetes.
Para crear el secreto, utilice:
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
Para montar el secreto en sus contenedores, use la siguiente configuración de Pod:
apiVersion: v1
kind: Pod
metadata:
name: secret-test-pod
labels:
name: secret-test
spec:
volumes:
- name: ssh-keys-v
secret:
secretName: ssh-keys
defaultMode: 0600
containers:
- name: ssh-test-container
image: mySshImage
volumeMounts:
- name: ssh-keys-v
readOnly: true
# container will see /root/.ssh/id_rsa as usual:
mountPath: "/root/.ssh"
También quisquilloso: el id_rsa.pub
casi nunca se usa, no me molestaría en ocultarlo hasta que sea necesario.
Recuerda que puedes optar por la opción de interpretar si te fue preciso.