NFS 볼륨 구성

Kf는 kf marketplace를 사용한 NFS 볼륨 마운트를 지원합니다.

기본 요건

NFS 플랫폼 설정을 완료해야 합니다.

NFS 서비스 인스턴스 만들기

kf marketplace를 실행하여 사용 가능한 서비스를 확인합니다. NFS가 플랫폼에서 사용 설정되면 기본 제공되는 NFS 서비스가 목록에 표시됩니다.

Broker           Name  Namespace  Description
nfsvolumebroker  nfs              mount nfs shares

외부 파일 시스템 마운트

서비스 인스턴스 만들기

기존 NFS 서비스에 마운트하려면 다음을 실행합니다.

kf create-service nfs existing SERVICE-INSTANCE-NAME -c '{"share":"SERVER/SHARE", "capacity":"CAPACITY"}'

변수를 해당하는 값으로 바꿉니다.

  • SERVICE-INSTANCE-NAME은 이 NFS 볼륨 서비스 인스턴스에 사용할 이름입니다.
  • SERVER/SHARE는 서버 및 공유의 NFS 주소입니다.
  • CAPACITYKubernetes 수량 형식을 사용합니다.

NFS 볼륨 서비스가 서비스 목록에 표시되는지 확인합니다. 이 예시와 비슷한 출력이 표시됩니다.

$ kf services
...
Listing services in Space: demo-space
Name                Type      ClassName         PlanName  Age    Ready  Reason
filestore-nfs       volume    nfs               existing  6s     True   <nil>
...

앱에 서비스 인스턴스 바인딩

NFS 서비스 인스턴스를 앱에 바인딩하려면 다음을 실행합니다.

kf bind-service YOUR-APP-NAME SERVICE-NAME -c '{"uid":"2000","gid":"2000","mount":"MOUNT-PATH","readonly":true}'

변수를 해당하는 값으로 바꿉니다.

  • YOUR-APP-NAME은 볼륨 서비스를 사용할 앱의 이름입니다.

  • SERVICE-NAME은 이전 단계에서 만든 볼륨 서비스 인스턴스의 이름입니다.

  • uid:UIDgid:GID는 마운트되는 공유의 디렉터리 권한을 지정합니다.

  • MOUNT-PATH는 앱에서 볼륨이 마운트되어야 하는 경로입니다.

  • (선택사항) "readonly":true는 읽기 전용 마운트를 만드는 선택적 JSON 문자열입니다. 기본적으로 볼륨 서비스는 읽기-쓰기 파일 시스템을 마운트합니다.

kf bindings 명령어를 사용하여 공간에 모든 바인딩을 나열할 수 있습니다. 다음 예시와 비슷한 출력이 표시됩니다.

$ kf bindings
...
Listing bindings in Space: demo-space
Name                                     App           Service             Age  Ready
binding-spring-music-filestore-nfs       spring-music  filestore-nfs       71s  True
...

앱에서 볼륨 서비스에 액세스

앱에서 볼륨 서비스에 액세스하려면 코드에서 사용할 파일 경로를 알아야 합니다. 앱의 환경 변수에 표시되는 서비스 결합 세부정보에서 파일 경로를 볼 수 있습니다.

앱의 환경 변수를 봅니다.

kf vcap-services YOUR-APP-NAME

YOUR-APP-NAME을 앱 이름으로 바꿉니다.

다음은 kf vcap-services 명령어의 출력에 대한 예시입니다.

kf vcap-services *YOUR-APP-NAME*
{
  "nfs": [
    {
      "instance_name": "nfs-instance",
      "name": "nfs-instance",
      "label": "nfs",
      "tags": [],
      "plan": "existing",
      "credentials": {
        "capacity": "1Gi",
        "gid": 2000,
        "mount": "/test/mount",
        "share": "10.91.208.210/test",
        "uid": 2000
      },
      "volume_mounts": [
        {
          "container_dir": "/test/mount",
          "device_type": "shared",
          "mode": "rw"
        }
      ]
    }
  ]
}

앱에 필요한 모든 정보를 보려면 volume_mounts의 속성을 사용하세요.

속성 설명
container_dir 앱에 결합하는 마운트된 볼륨의 경로를 포함하는 문자열입니다.
device_type NFS 볼륨 출시 버전입니다. 현재는 공유 기기만 지원됩니다. 공유 기기란 모든 앱 인스턴스에 동시에 마운트할 수 있는 분산 파일 시스템을 의미합니다.
mode NFS에 대한 앱의 액세스 권한 유형을 알려주는 문자열로, ro(읽기 전용) 또는 rw(읽기 및 쓰기)입니다.