
Secret Manager를 사용하는 Cloud Run에 도움이 필요합니다. 보안 비밀 2개를 볼륨(파일만)으로 마운트해야 합니다. 다음은 Cloud Run의 yaml입니다.
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
mtls 비밀(p12 파일)은 파일로 제대로 마운트되지만 대신 Firebase 비밀(json 파일)이 디렉터리로 마운트됩니다.
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)
도커 규칙에 따라 호스트에서 파일을 찾을 수 없으면 디렉토리로 마운트되지만 이 경우 호스트 경로나 파일 가용성을 제어할 수 없으므로 버그일 수 있습니까?
볼륨 마운트를 사용하여 Docker 컨테이너에서 배포를 테스트할 때 모든 것이 잘 작동하므로 애플리케이션에 결함이 없다고 확신합니다.
이 문제에 대한 지침을 부탁드립니다.
감사해요
답변1
여기에 무엇이 잘못되었는지가 있습니다.
컨테이너 볼륨 사양은 다음과 같이 해석됩니다.
- spec->image->volumeMounts 아래의 'mountPath'는 '상위' 디렉토리 경로를 지정합니다.
- spec->volumes->secret->items 아래의 'path'가 추가됩니다.
따라서 우리의 경우 실제 경로는 다음과 같습니다:- /root/key/firebase/myapp-d2a0f-firebase-adminsdk-irfes-a699971a4d.json/myapp_firebase_token
버전에서 볼륨 마운트를 확인하는 것은 제품 설명서 https://cloud.google.com/run/docs/configuring/secrets#viewing에 설명된 대로 실제 마운트 경로를 확인하는 방법입니다.
HTH