GKE용 Cloud Storage FUSE CSI 드라이버 설정


이 페이지에서는 GKE용 Cloud Storage FUSE CSI 드라이버를 설정하고 사용 준비를 하는 방법을 설명합니다.

Cloud Storage FUSE CSI 드라이버를 사용하려면 다음 단계를 따르세요.

Cloud Storage 버킷 만들기

아직 만들지 않았다면 Cloud Storage 버킷을 만듭니다. 이러한 버킷을 GKE 클러스터에 볼륨으로 마운트합니다. 성능을 향상시키려면 위치 유형리전으로 설정하고 GKE 클러스터와 일치하는 리전을 선택합니다.

Cloud Storage FUSE CSI 드라이버 사용 설정

GKE Autopilot 또는 Standard 클러스터를 사용하는지에 따라 다음 단계를 따르세요. 완전 관리형 Kubernetes 환경을 위해서는 Autopilot을 사용하는 것이 좋습니다. 워크로드에 가장 적합한 모드를 선택하려면 GKE 작업 모드 선택을 참고하세요.

Autopilot

Cloud Storage FUSE CSI 드라이버는 Autopilot 클러스터에 기본적으로 사용 설정됩니다. Cloud Storage 버킷에 대한 액세스 구성으로 건너뛰어도 됩니다.

스탠더드

Standard 클러스터에 Cloud Storage FUSE CSI 드라이버가 사용 설정된 경우 Cloud Storage 버킷에 대한 액세스 구성으로 건너뜁니다.

Cloud Storage FUSE CSI 드라이버가 사용 설정된 Standard 클러스터를 만들려면 gcloud container clusters create` 명령어를 사용하면 됩니다.

gcloud container clusters create CLUSTER_NAME \
    --addons GcsFuseCsiDriver \
    --cluster-version=VERSION \
    --location=LOCATION \
    --workload-pool=PROJECT_ID.svc.id.goog

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터 이름
  • VERSION: GKE 버전 번호. 1.24 이상을 선택해야 합니다.
  • LOCATION: 클러스터의 Compute Engine 리전 또는 영역
  • PROJECT_ID: 프로젝트 ID입니다.

기존 Standard 클러스터에서 드라이버를 사용 설정하려면 [gcloud container clusters update](/sdk/gcloud/reference/container/clusters/update)` 명령어를 사용합니다.

gcloud container clusters update CLUSTER_NAME \
    --update-addons GcsFuseCsiDriver=ENABLED \
    --location=LOCATION

클러스터에서 Cloud Storage FUSE CSI 드라이버가 사용 설정되어 있는지 확인하려면 다음 명령어를 실행합니다.

gcloud container clusters describe CLUSTER_NAME \
    --location=LOCATION \
    --project=PROJECT_ID \
    --format="value(addonsConfig.gcsFuseCsiDriverConfig.enabled)"

Cloud Storage 버킷에 대한 액세스 구성

Cloud Storage FUSE CSI 드라이버는 GKE용 워크로드 아이덴티티 제휴를 사용하므로 GKE 포드가 Cloud Storage에 저장된 데이터에 액세스하는 방법에 관한 세분화된 권한을 설정할 수 있습니다.

GKE 클러스터에서 Cloud Storage 버킷에 액세스할 수 있게 하려면 포드 사양에 마운트할 Cloud Storage 버킷으로 GKE용 워크로드 아이덴티티 제휴를 사용하여 인증합니다.

  1. GKE용 워크로드 아이덴티티 제휴가 사용 설정되어 있지 않으면 이 단계에 따라 사용 설정하세요.
  2. 클러스터의 사용자 인증 정보를 가져옵니다.

    gcloud container clusters get-credentials CLUSTER_NAME \
        --location=LOCATION
    

    다음을 바꿉니다.

  3. Kubernetes ServiceAccount에 사용할 네임스페이스를 만듭니다. default 네임스페이스 또는 기존 네임스페이스를 사용할 수도 있습니다.

    kubectl create namespace NAMESPACE
    

    NAMESPACE를 Kubernetes ServiceAccount의 Kubernetes 네임스페이스 이름으로 바꿉니다.

  4. 애플리케이션이 사용할 Kubernetes ServiceAccount를 만듭니다. 또한 default Kubernetes ServiceAccount을 포함하여 모든 네임스페이스에서 기존 Kubernetes ServiceAccount을 사용할 수 있습니다.

    kubectl create serviceaccount KSA_NAME \
        --namespace NAMESPACE
    

    KSA_NAME를 Kubernetes 서비스 계정의 이름으로 바꿉니다.

  5. Cloud Storage에 대한 IAM 역할 중 하나를 Kubernetes ServiceAccount에 부여합니다. Kubernetes ServiceAccount에 특정 Cloud Storage 버킷에 대한 액세스 권한만 부여할지 아니면 프로젝트의 모든 버킷에 대한 전역 액세스 권한을 부여할지에 따라 다음 단계를 따르세요.

    특정 버킷 액세스

    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
        --member "principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/KSA_NAME" \
        --role "ROLE_NAME"
    

    다음을 바꿉니다.

    • BUCKET_NAME: Cloud Storage 버킷 이름
    • PROJECT_NUMBER: GKE 클러스터의 숫자 프로젝트 번호. 프로젝트 번호를 찾으려면 프로젝트 식별을 참조하세요.
    • PROJECT_ID: GKE 클러스터의 프로젝트 ID
    • NAMESPACE: Kubernetes ServiceAccount의 Kubernetes 네임스페이스 이름
    • KSA_NAME: 새 Kubernetes ServiceAccount의 이름
    • ROLE_NAME: Kubernetes ServiceAccount에 할당할 IAM 역할
      • 읽기 전용 워크로드의 경우 스토리지 객체 뷰어 역할(roles/storage.objectViewer)을 사용합니다.
      • 읽기-쓰기 워크로드의 경우 스토리지 객체 사용자 역할(roles/storage.objectUser)을 사용합니다.

    전역 버킷 액세스

    gcloud projects add-iam-policy-binding GCS_PROJECT \
        --member "principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/KSA_NAME" \
        --role "ROLE_NAME"
    

    다음을 바꿉니다.

    • GCS_PROJECT: Cloud Storage 버킷의 프로젝트 ID입니다.
    • PROJECT_NUMBER: GKE 클러스터의 숫자 프로젝트 번호. 프로젝트 번호를 찾으려면 프로젝트 식별을 참조하세요.
    • PROJECT_ID: GKE 클러스터의 프로젝트 ID
    • NAMESPACE: Kubernetes ServiceAccount의 Kubernetes 네임스페이스 이름
    • KSA_NAME: 새 Kubernetes ServiceAccount의 이름
    • ROLE_NAME: Kubernetes ServiceAccount에 할당할 IAM 역할
      • 읽기 전용 워크로드의 경우 스토리지 객체 뷰어 역할(roles/storage.objectViewer)을 사용합니다.
      • 읽기-쓰기 워크로드의 경우 스토리지 객체 사용자 역할(roles/storage.objectUser)을 사용합니다.

다음 단계