הגדרת סביבת GKE עבור כרכים של סוכן Filestore

נפחי אחסון לסוכנים ב-Filestore משתלבים עם Google Kubernetes Engine ‏ (GKE) כדי לספק אחסון קבצים מתמיד בצפיפות גבוהה וזמן אחזור קצר לארגזי חול של סוכני AI עם שמירת מצב, לסביבות פיתוח ול-Agentic Workflows.

במדריך הזה נסביר מה צריך לעשות כדי להשתמש בנפחי אחסון לסוכנים של Filestore ב-GKE.

לפני שמתחילים

  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

יוצרים אשכול GKE שמחובר ל-Private Service Connect.

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.s3ns.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: מזהה הפרויקט ב- Cloud de Confiance by S3NS .
  • ‫VPC_NETWORK: השם של רשת ה-VPC שמופעל בה PSC.
  • ‫SUBNET_NAME: שם תת-הרשת.

הגדרת איחוד זהויות של עומסי עבודה ל-GKE ול-IAM

נותנים ל-Kubernetes ServiceAccount שמשמש את מנהל ההתקן של ה-CSI ולחשבון השירות שמוגדר כברירת מחדל של Compute Engine הרשאות להקצות נפחי אחסון ב-Filestore:

  1. מאתרים את מספר הפרויקט:

    gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)"
    

    מחליפים את PROJECT_ID במזהה הפרויקט.

  2. מקצים את התפקיד 'עריכה ב-Cloud Filestore' (roles/file.editor) בפרויקט לחשבון השירות של Kubernetes‏ (gcp-filestore-csi-controller-sa) במרחב השמות gcp-filestore-csi-driver:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.s3ns.svc.id.goog/subject/ns/gcp-filestore-csi-driver/sa/gcp-filestore-csi-controller-sa" \
        --role="roles/file.editor" \
        --condition=None
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS .
    • ‫PROJECT_NUMBER: מספר הפרויקט ב- Cloud de Confiance by S3NS .
  3. מקצים לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine את התפקיד 'עריכה ב-Cloud Filestore' (roles/file.editor) בפרויקט:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_NUMBER-compute@developer.s3ns-system.iam.gserviceaccount.com" \
        --role="roles/file.editor" \
        --condition=None
    

פריסת מנהל התקן 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. מוודאים שהפודים של מנהל ההתקן של 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 להקצות באופן דינמי נפחים ממאגר הנפחים, צריך להחיל StorageClass של Kubernetes על האשכול.

אם כבר יצרתם את קובץ המניפסט volume-pool-sc.yaml בקטע הגדרת אמצעי אחסון של סוכן Filestore, אפשר לדלג לשלב 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: מזהה הפרויקט ב- Cloud de Confiance.
    • ‫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 עם שמירת מצב באמצעות כל אחד מהדפוסים הבאים של תזמור: