
Necesita ayuda con Cloud Run con Secret Manager, necesitamos montar 2 secretos como volumen (solo archivo), a continuación se muestra el yaml de Cloud Run.
volumeMounts:
- name: secret-2f1d5ec9-d681-4b0f-8a77-204c5f853330
readOnly: true
mountPath: /root/key/mtls/client_auth.p12
- name: secret-29c1417a-d9fe-4c37-8cb0-562c97f3c827
readOnly: true
mountPath: /root/key/firebase/myapp-d2a0f-firebase-adminsdk-irfes-a699971a4d.json
volumes:
- name: secret-2f1d5ec9-d681-4b0f-8a77-204c5f853330
secret:
secretName: myapp_mtls_key
items:
- key: latest
path: myapp_mtls_key
- name: secret-29c1417a-d9fe-4c37-8cb0-562c97f3c827
secret:
secretName: myapp_firebase_token
items:
- key: latest
path: myapp_firebase_token
El secreto mtls (archivo p12) se monta correctamente como un archivo, pero el secreto de Firebase (archivo json) se monta como un directorio.
java.io.FileNotFoundException: /root/key/firebase/myapp-d2a0f-firebase-adminsdk-irfes-a699971a4d.json (Is a directory)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:216)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:111)
at com.myapp.gcp.GCPInit.init(GCPInit.java:39)
Según la convención de Docker, si un archivo no se encuentra en el host, entonces se monta como directorio, pero en este caso no tenemos control sobre la ruta del host o la disponibilidad del archivo, entonces, ¿podría ser un error?
Al probar nuestra implementación en un contenedor acoplable con montajes de volumen, todo funciona bien, por lo que estamos seguros de que nuestra aplicación no tiene la culpa.
Agradecemos cualquier orientación sobre este tema.
Gracias
Respuesta1
Esto es lo que estaba mal.
Las especificaciones de volumen del contenedor se interpretan así: -
- 'mountPath' en especificación->imagen->volumeMounts especifica la ruta del directorio 'principal'.
- Se adjunta 'ruta' en especificaciones->volúmenes->secreto->elementos.
Por lo tanto, en nuestro caso, la ruta real quedó así: - /root/key/firebase/myapp-d2a0f-firebase-adminsdk-irfes-a699971a4d.json/myapp_firebase_token
Verificar el montaje del volumen en Revisiones es la forma de verificar la ruta de montaje real como se describe en la documentación del producto https://cloud.google.com/run/docs/configuring/secrets#viewing
HT