서비스의 NFS 볼륨 마운트 구성

이 페이지에서는 Cloud Run에서 NFS 파일 공유를 볼륨으로 마운트하는 방법을 보여줍니다. 온프레미스 또는 Compute Engine VM에서 호스팅되는 자체 NFS 서버를 포함하여 모든 NFS 서버를 사용할 수 있습니다. 아직 NFS 서버가 없는 경우 Google Cloud의 완전 관리형 NFS 제품인 Filestore를 사용하는 것이 좋습니다.

NBD, 9P, CIFS/Samba, Ceph 네트워크 파일 시스템을 사용하려면 NBD, 9P, CIFS/Samba, Ceph 네트워크 파일 시스템 사용을 참조하세요.

제한사항

  • NFS 볼륨에 쓰려면 컨테이너가 루트로 실행되어야 합니다. 컨테이너가 파일 시스템에서만 읽는 경우 모든 사용자로 실행될 수 있습니다.

  • Cloud Run은 NFS 잠금을 지원하지 않습니다. NFS 볼륨은 잠금 없음 모드로 자동으로 마운트됩니다.

시작하기 전에

Cloud Run에서 NFS 서버를 볼륨으로 마운트하려면 다음을 확인하세요.

  • NFS 서버 또는 Filestore 인스턴스가 실행되는 VPC 네트워크
  • Cloud Run 서비스가 연결된 VPC 네트워크에서 실행되는 NFS 서버 아직 NFS 서버가 없으면 Filestore 인스턴스 만들기로 하나를 만듭니다.
  • Cloud Run 서비스는 NFS 서버가 실행 중인 VPC 네트워크에 연결됩니다. 최상의 성능을 위해서는 VPC 커넥터 대신 직접 VPC를 사용하세요.
  • 기존 프로젝트를 사용하는 경우 VPC 방화벽 구성에서 Cloud Run이 NFS 서버에 연결할 수 있는지 확인합니다. (새 프로젝트에서 시작하는 경우 기본값은 true입니다.) Filestore를 NFS 서버로 사용하는 경우 Filestore 문서에 따라 Cloud Run이 Filestore에 연결할 수 있도록 방화벽 이그레스 규칙을 만듭니다.

NFS 볼륨 마운트

여러 NFS 서버, Filestore 인스턴스 또는 기타 볼륨 유형을 서로 다른 마운트 경로에 마운트할 수 있습니다.

여러 컨테이너를 사용하는 경우 먼저 볼륨을 지정한 후 각 컨테이너의 볼륨 마운트를 지정합니다.

명령줄

참고: 여기서는 gcloud beta run services update 명령어를 보여주지만 다음과 같이 매개변수와 함께 gcloud beta run services deploy 명령어를 사용할 수 있습니다.

  • 볼륨을 추가하고 마운트하려면 다음 명령어를 실행합니다.
gcloud beta run services update SERVICE \
--add-volume=name=VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH \
--add-volume-mount=volume=VOLUME_NAME,mount-path=MOUNT_PATH

다음과 같이 바꿉니다.

  • SERVICE를 서비스 이름으로 바꿉니다.
  • VOLUME_NAME을 볼륨에 지정할 이름으로 바꿉니다.
  • IP_ADDRESS를 NFS 파일 공유 위치로 바꿉니다.
  • NFS_PATH를 슬래시로 시작하는 NFS 파일 공유의 경로로 바꿉니다(예: /example-directory).
  • MOUNT_PATH: 볼륨을 마운트할 상대 경로(예: /cache)
  • VOLUME_NAME: 볼륨에 사용할 이름. VOLUME_NAME 값은 볼륨을 볼륨 마운트에 매핑하는 데 사용됩니다.

  • 볼륨을 읽기 전용 볼륨으로 마운트하려면 다음 명령어를 실행합니다.

    --add-volume=name=VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH,readonly=true
  • 여러 컨테이너를 사용하는 경우 먼저 볼륨을 지정한 후 각 컨테이너의 볼륨 마운트를 지정합니다.

    gcloud beta run services update SERVICE \
    --add-volume=name VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH \
    --container CONTAINER_1 \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH \
    --container CONTAINER_2 \
    --add-volume-mount volume= VOLUME_NAME,mount-path=MOUNT_PATH2

YAML

  1. 새 서비스를 만드는 경우에는 이 단계를 건너뜁니다. 기존 서비스를 업데이트하는 경우 YAML 구성을 다운로드합니다.

    gcloud run services describe SERVICE --format export > service.yaml
  2. 필요에 따라 MOUNT_PATH, VOLUME_NAME, IP_ADDRESS, NFS_PATH를 업데이트합니다. 볼륨 마운트가 여러 개 있으면 이러한 속성이 여러 개 포함됩니다.

    apiVersion: run.googleapis.com/v1
    kind: Service
    metadata:
      name: SERVICE
        annotations:
          run.googleapis.com/launch-stage: BETA
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/execution-environment: gen2
        spec:
          containers:
          - image: IMAGE_URL
            volumeMounts:
            - name: VOLUME_NAME
              mountPath: MOUNT_PATH
          volumes:
          - name: VOLUME_NAME
            nfs:
              server: IP_ADDRESS
              path: NFS_PATH
              readOnly: IS_READ_ONLY

    다음과 같이 바꿉니다.

    • SERVICE를 Cloud Run 서비스 이름으로 바꿉니다.
    • MOUNT_PATH: 볼륨을 마운트할 상대 경로(예: /cache)
    • VOLUME_NAME: 볼륨에 사용할 이름. VOLUME_NAME 값은 볼륨을 볼륨 마운트에 매핑하는 데 사용됩니다.
    • IP_ADDRESS를 NFS 파일 공유 주소로 바꿉니다.
    • NFS_PATH를 슬래시로 시작하는 NFS 파일 공유의 경로로 바꿉니다(예: /example-directory).
    • IS_READ_ONLYTrue로 지정하여 볼륨을 읽기 전용으로 설정하거나 False로 지정하여 쓰기를 허용합니다.
  3. 다음 명령어를 사용하여 서비스를 새 구성으로 바꿉니다.

    gcloud beta run services replace service.yaml

NFS 문제 해결

문제가 발생하면 다음을 확인하세요.

  • Cloud Run 서비스가 NFS 서버가 있는 VPC 네트워크에 연결되어 있습니다.
  • Cloud Run이 NFS 서버에 연결하는 것을 방지하는 방화벽 규칙이 없습니다.
  • 컨테이너가 NFS 서버에 쓰는 경우 루트로 실행 중인지 확인합니다.