Filestore 에이전트 볼륨용 GKE 환경 설정

Filestore 에이전트 볼륨은 Google Kubernetes Engine(GKE)과 통합되어 스테이트풀(Stateful) AI 에이전트 샌드박스, 개발자 환경, 멀티 에이전트 워크로드에 고밀도, 짧은 지연 시간의 영구 파일 스토리지를 제공합니다.

이 가이드에서는 GKE에서 Filestore 에이전트 볼륨을 사용하는 데 필요한 기본 요건을 설명합니다.

시작하기 전에

  1. Filestore 에이전트 볼륨 설정에서 초기 설정을 완료합니다.
  2. GKE API를 사용 설정합니다.

    gcloud services enable container.googleapis.com \
        --project=PROJECT_ID
    
  3. gcloud에 필요한 구성요소를 설치합니다.

    gcloud components install kubectl gke-gcloud-auth-plugin
    

GKE 클러스터 만들기

Private Service Connect에 연결된 GKE 클러스터를 만듭니다.

gcloud container clusters create CLUSTER_NAME \
    --region=REGION \
    --project=PROJECT_ID \
    --network=projects/PROJECT_ID/global/networks/VPC_NETWORK \
    --subnetwork=SUBNET_NAME \
    --num-nodes=3 \
    --workload-pool=PROJECT_ID.svc.id.goog\
    --scopes=cloud-platform \
    --enable-agent-sandbox \
    --addons=GcpFilestoreCsiDriver=DISABLED \
    --cluster-version=1.36.0-gke.3302001

다음을 바꿉니다.

  • CLUSTER_NAME: 새 클러스터의 이름
  • REGION: 볼륨 풀이 있는 리전(예: us-central1)
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • VPC_NETWORK: PSC 지원 VPC 네트워크의 이름입니다.
  • SUBNET_NAME: 서브넷의 이름

GKE용 워크로드 아이덴티티 제휴 및 IAM 설정

Filestore 볼륨을 프로비저닝할 권한이 있는 Google 서비스 계정 (GSA)을 구성하고 CSI 드라이버에서 사용하는 Kubernetes 서비스 계정(KSA)에 바인딩합니다.

  1. Google 서비스 계정을 만듭니다.

    gcloud iam service-accounts create filestore-csi-gsa \
        --display-name="Filestore CSI Driver GSA" \
        --project=PROJECT_ID
    
  2. 서비스 계정에 Cloud Filestore 편집자 (roles/file.editor) 역할을 부여합니다.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:filestore-csi-gsa@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/file.editor"
    
  3. Compute Engine 기본 서비스 계정에 Cloud Filestore 편집자 (roles/file.editor) 역할을 부여합니다.

    PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)")
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
        --role="roles/file.editor"
    
  4. gcp-filestore-csi-driver 네임스페이스의 KSA를 GSA에 바인딩합니다.

    gcloud iam service-accounts add-iam-policy-binding \
        filestore-csi-gsa@PROJECT_ID.iam.gserviceaccount.com \
        --role="roles/iam.workloadIdentityUser" \
        --member="serviceAccount:PROJECT_ID.svc.id.goog[gcp-filestore-csi-driver/gcp-filestore-csi-controller-sa]" \
        --project=PROJECT_ID
    

Filestore CSI 드라이버 배포

  1. 클러스터 사용자 인증 정보를 가져옵니다.

    gcloud container clusters get-credentials CLUSTER_NAME \
        --region=REGION \
        --project=PROJECT_ID
    
  2. 드라이버 저장소를 클론하고 volumepool 오버레이를 적용합니다.

    git clone https://github.com/kubernetes-sigs/gcp-filestore-csi-driver.git
    cd gcp-filestore-csi-driver
    kubectl apply -k deploy/kubernetes/overlays/volumepool
    
  3. GSA로 컨트롤러 서비스 계정에 주석을 추가합니다.

    kubectl annotate serviceaccount gcp-filestore-csi-controller-sa \
        --namespace=gcp-filestore-csi-driver \
        --overwrite \
        iam.gke.io/gcp-service-account=filestore-csi-gsa@PROJECT_ID.iam.gserviceaccount.com
    
  4. CSI 드라이버 포드가 실행 중인지 확인합니다.

    kubectl get pods -n gcp-filestore-csi-driver
    

    출력은 다음과 비슷합니다.

    NAME                             READY   STATUS    RESTARTS   AGE
    gcp-filestore-csi-controller-0   5/5     Running   0          2m
    gcp-filestore-csi-node-abcde     3/3     Running   0          2m
    

볼륨 풀에 StorageClass 적용

GKE 워크로드가 볼륨 풀에서 볼륨을 동적으로 프로비저닝할 수 있도록 하려면 클러스터에 Kubernetes StorageClass를 적용하세요.

Filestore 에이전트 볼륨 설정에서 volume-pool-sc.yaml 매니페스트를 이미 만든 경우 2단계로 건너뜁니다.

  1. 다음 구성으로 volume-pool-sc.yaml이라는 파일을 만듭니다.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: volume-pool-sc
    provisioner: filestore.csi.storage.gke.io
    parameters:
      volume-pool: "projects/<var>PROJECT_ID</var>/locations/<var>LOCATION</var>/volumePools/<var>VOLUME_POOL_ID</var>"
    mountOptions:
      - vers=3
      - proto=tcp
      - mountproto=tcp
      - port=2049
      - mountport=2050
    volumeBindingMode: Immediate
    reclaimPolicy: Delete
    

    다음을 바꿉니다.

    • PROJECT_ID: Google Cloud프로젝트의 ID
    • LOCATION: 볼륨 풀이 배포된 리전(예: us-central1)입니다.
    • VOLUME_POOL_ID: 볼륨 풀의 식별자입니다.
  2. 매니페스트를 적용합니다.

    kubectl apply -f volume-pool-sc.yaml
    
  3. StorageClass을 사용할 수 있는지 확인합니다.

    kubectl get storageclass volume-pool-sc
    

    출력은 다음과 비슷합니다.

    NAME             PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    volume-pool-sc   filestore.csi.storage.gke.io   Delete          Immediate           true                   1m
    

이 가이드를 완료하면 GKE 환경에서 Filestore 에이전트 볼륨을 지원할 준비가 됩니다.

다음 단계

GKE 클러스터와 스토리지 클래스가 구성되면 다음 오케스트레이션 패턴 중 하나를 사용하여 스테이트풀 AI 에이전트 워크로드를 배포할 수 있습니다.