Filestore エージェント ボリューム用に GKE 環境を設定する

Filestore エージェント ボリュームは Google Kubernetes Engine(GKE)と統合され、ステートフル 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: サブネットの名前。

Workload Identity Federation for 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 Namespace の 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 ドライバ Pod が実行されていることを確認します。

    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: ボリューム プールの 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 エージェント ワークロードをデプロイできます。