פריסת מסד נתונים וקטורי של Weaviate ב-GKE

במדריך הזה נסביר איך לפרוס אשכול של מסד נתונים וקטורי של Weaviate ב-Google Kubernetes Engine ‏ (GKE).

‫Weaviate הוא מסד נתונים של וקטורים בקוד פתוח עם ביצועים של השהיה נמוכה ותמיכה בסיסית בסוגים שונים של מדיה, כמו טקסט ותמונות. הוא תומך בחיפוש סמנטי, במענה לשאלות ובסיווג. ‫Weaviate מבוסס על Go, והוא מאחסן אובייקטים וגם וקטורים. כך אפשר להשתמש בחיפוש וקטורי, בחיפוש מילות מפתח ובשילוב של שניהם כחיפוש היברידי. מבחינת התשתית, Weaviate הוא מסד נתונים מבוסס-ענן ועמיד בכשלים. עמידות בפני תקלות מושגת באמצעות ארכיטקטורה ללא צומת ראשי, שבה כל צומת באשכול מסד הנתונים יכול לשרת בקשות קריאה וכתיבה, וכך נמנעת נקודת כשל בודדת.

המדריך הזה מיועד לאדמינים ומומחי Cloud Architect של פלטפורמות ענן, למהנדסי ML ולמומחי MLOps (DevOps) שרוצים לפרוס אשכולות של מסדי נתונים וקטוריים ב-GKE.

יתרונות

היתרונות של Weaviate:

  • ספריות לשפות תכנות שונות ו-API פתוח לשילוב עם שירותים אחרים.
  • שינוי גודל אופקי.
  • איזון בין עלות-תועלת לבין מהירות השאילתה, במיוחד כשמדובר במערכי נתונים גדולים. אתם יכולים לבחור כמה נתונים יישמרו בזיכרון וכמה בדיסק.

מטרות

במדריך הזה תלמדו איך:

  • תכנון ופריסה של תשתית GKE ל-Weaviate.
  • פורסים ומגדירים את מסד הנתונים Weaviate באשכול GKE.
  • להריץ מחברת כדי ליצור ולאחסן הטמעות וקטוריות לדוגמה במסד הנתונים, ולבצע שאילתות חיפוש מבוססות וקטורים.

עלויות

במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:

כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.

משתמשים חדשים של Google Cloud ? יכול להיות שאתם זכאים לתקופת ניסיון בחינם.

כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.

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

במדריך הזה משתמשים ב-Cloud Shell כדי להריץ פקודות. ‫Cloud Shell היא סביבת מעטפת לניהול משאבים שמתארחים ב- Google Cloud. הוא מגיע עם כלי שורת הפקודה Google Cloud CLI, ‏ kubectl,‏ Helm ו- Terraform שכבר מותקנים בו. אם אתם לא משתמשים ב-Cloud Shell, אתם צריכים להתקין את Google Cloud CLI.

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. התקינו את ה-CLI של Google Cloud.

  3. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  4. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  5. יוצרים או בוחרים Google Cloud פרויקט.

    תפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים
    • יוצרים Google Cloud פרויקט:

      gcloud projects create PROJECT_ID

      מחליפים את PROJECT_ID בשם של פרויקט Google Cloud שיוצרים.

    • בוחרים את הפרויקט שיצרתם: Google Cloud

      gcloud config set project PROJECT_ID

      מחליפים את PROJECT_ID בשם הפרויקט ב- Google Cloud .

  6. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  7. מפעילים את ממשקי Cloud Resource Manager,‏ Compute Engine,‏ GKE ו-IAM Service Account Credentials API:

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    gcloud services enable cloudresourcemanager.googleapis.com compute.googleapis.com container.googleapis.com iamcredentials.googleapis.com
  8. התקינו את ה-CLI של Google Cloud.

  9. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  10. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  11. יוצרים או בוחרים Google Cloud פרויקט.

    תפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים
    • יוצרים Google Cloud פרויקט:

      gcloud projects create PROJECT_ID

      מחליפים את PROJECT_ID בשם של פרויקט Google Cloud שיוצרים.

    • בוחרים את הפרויקט שיצרתם: Google Cloud

      gcloud config set project PROJECT_ID

      מחליפים את PROJECT_ID בשם הפרויקט ב- Google Cloud .

  12. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  13. מפעילים את ממשקי Cloud Resource Manager,‏ Compute Engine,‏ GKE ו-IAM Service Account Credentials API:

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    gcloud services enable cloudresourcemanager.googleapis.com compute.googleapis.com container.googleapis.com iamcredentials.googleapis.com
  14. מעניקים תפקידים לחשבון המשתמש. מריצים את הפקודה הבאה לכל אחד מהתפקידים הבאים ב-IAM: roles/compute.securityAdmin, roles/compute.viewer, roles/container.clusterAdmin, roles/container.admin, roles/iam.serviceAccountAdmin, roles/iam.serviceAccountUser, roles/monitoring.viewer

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

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

    • PROJECT_ID: מזהה הפרויקט.
    • USER_IDENTIFIER: המזהה של חשבון המשתמש . לדוגמה, myemail@example.com.
    • ROLE: תפקיד ה-IAM שאתם מקצים לחשבון המשתמש.

מגדירים את הסביבה

כדי להגדיר את הסביבה באמצעות Cloud Shell:

  1. מגדירים משתני סביבה לפרויקט, לאזור ולקידומת של משאב אשכול Kubernetes:

    export PROJECT_ID=PROJECT_ID
    export KUBERNETES_CLUSTER_PREFIX=weaviate
    export REGION=us-central1
    

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

    במדריך הזה נעשה שימוש באזור us-central1 כדי ליצור את משאבי הפריסה.

  2. בודקים את הגרסה של Helm:

    helm version
    

    אם הגרסה ישנה יותר מ-3.13, צריך לעדכן אותה:

    curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
    
  3. משכפלים את מאגר הקוד לדוגמה מ-GitHub:

    git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples
    
  4. מנווטים לספרייה weaviate:

    cd kubernetes-engine-samples/databases/weaviate
    

יצירת תשתית האשכול

בקטע הזה מריצים סקריפט של Terraform כדי ליצור אשכול GKE פרטי, זמין מאוד ואזורי, כדי לפרוס את מסד הנתונים של Weaviate.

אפשר לבחור לפרוס את Weaviate באמצעות אשכול סטנדרטי או אשכול במצב Autopilot. לכל אחד מהם יש יתרונות משלו ומודלים שונים של תמחור.

טייס אוטומטי

בתרשים הבא מוצג אשכול GKE במצב Autopilot שנפרס בפרויקט.

אשכול GKE Autopilot

כדי לפרוס את תשתית האשכול, מריצים את הפקודות הבאות ב-Cloud Shell:

export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth print-access-token)
terraform -chdir=terraform/gke-autopilot init
terraform -chdir=terraform/gke-autopilot apply \
-var project_id=${PROJECT_ID} \
-var region=${REGION} \
-var cluster_prefix=${KUBERNETES_CLUSTER_PREFIX}

‫GKE מחליף את המשתנים הבאים בזמן הריצה:

  • GOOGLE_OAUTH_ACCESS_TOKEN משתמש בפקודה gcloud auth print-access-token כדי לאחזר אסימון גישה שמאמת אינטראקציות עם ממשקי Google Cloud API שונים
  • PROJECT_ID, REGION ו-KUBERNETES_CLUSTER_PREFIX הם משתני הסביבה שמוגדרים בקטע הגדרת הסביבה ומוקצים למשתנים הרלוונטיים החדשים עבור אשכול Autopilot שאתם יוצרים.

כשמוצגת בקשה, מקלידים yes.

הפלט אמור להיראות כך:

...
Apply complete! Resources: 9 added, 0 changed, 0 destroyed.

Outputs:

kubectl_connection_command = "gcloud container clusters get-credentials weaviate-cluster --region us-central1"

‫Terraform יוצר את המשאבים הבאים:

  • רשת VPC בהתאמה אישית ורשת משנה פרטית לצמתים של Kubernetes.
  • ‫Cloud Router כדי לגשת לאינטרנט דרך תרגום כתובות רשת (NAT).
  • אשכול GKE פרטי באזור us-central1.
  • ServiceAccount עם הרשאות רישום ביומן ומעקב עבור האשכול.
  • הגדרת השירות המנוהל של Google Cloud ל-Prometheus לצורך מעקב והתראות לגבי אשכולות.

רגילה

בתרשים הבא מוצג אשכול GKE פרטי רגיל שנפרס בשלושה אזורים שונים.

אשכול GKE Standard

כדי לפרוס את תשתית האשכול, מריצים את הפקודות הבאות ב-Cloud Shell:

export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth print-access-token)
terraform -chdir=terraform/gke-standard init
terraform -chdir=terraform/gke-standard apply \
-var project_id=${PROJECT_ID} \
-var region=${REGION} \
-var cluster_prefix=${KUBERNETES_CLUSTER_PREFIX}

‫GKE מחליף את המשתנים הבאים בזמן הריצה:

  • GOOGLE_OAUTH_ACCESS_TOKEN משתמש בפקודה gcloud auth print-access-token כדי לאחזר אסימון גישה שמאמת אינטראקציות עם ממשקי Google Cloud API שונים.
  • PROJECT_ID, ‏REGION ו-KUBERNETES_CLUSTER_PREFIX הם משתני הסביבה שמוגדרים בקטע הגדרת הסביבה ומוקצים למשתנים הרלוונטיים החדשים עבור אשכול Standard שאתם יוצרים.

כשמוצגת בקשה, מקלידים yes. יכול להיות שיחלפו כמה דקות עד שהפקודות האלה יושלמו והאשכול יציג סטטוס מוכן.

הפלט אמור להיראות כך:

...
Apply complete! Resources: 10 added, 0 changed, 0 destroyed.

Outputs:

kubectl_connection_command = "gcloud container clusters get-credentials weaviate-cluster --region us-central1"

‫Terraform יוצר את המשאבים הבאים:

  • רשת VPC בהתאמה אישית ורשת משנה פרטית לצמתים של Kubernetes.
  • ‫Cloud Router כדי לגשת לאינטרנט דרך תרגום כתובות רשת (NAT).
  • אשכול GKE פרטי באזור us-central1 עם התאמה אוטומטית של גודל האשכול (node autoscaling) (צומת אחד עד שני צמתים לכל אזור).
  • ServiceAccount עם הרשאות רישום ביומן ומעקב עבור האשכול.
  • הגדרת השירות המנוהל של Google Cloud ל-Prometheus לניטור של אשכולות ולהתראות.

התחברות לאשכול

מגדירים את kubectl כדי לאחזר פרטי כניסה ולתקשר עם אשכול GKE החדש:

gcloud container clusters get-credentials \
    ${KUBERNETES_CLUSTER_PREFIX}-cluster --location ${REGION}

פריסת מסד הנתונים של Weaviate באשכול

כדי להשתמש בתרשים Helm לפריסת מסד הנתונים של Weaviate באשכול GKE, פועלים לפי השלבים הבאים:

  1. כדי לפרוס את מאגר התרשימים של Weaviate database Helm באשכול GKE, צריך להוסיף אותו קודם:

    helm repo add weaviate https://weaviate.github.io/weaviate-helm
    
  2. יוצרים את מרחב השמות weaviate למסד הנתונים:

    kubectl create ns weaviate
    
  3. יוצרים סוד לאחסון מפתח ה-API:

    kubectl create secret generic apikeys --from-literal=AUTHENTICATION_APIKEY_ALLOWED_KEYS=$(openssl rand -base64 32) -n weaviate
    
  4. פורסים מאזן עומסים פנימי כדי לגשת ל-Weaviate מתוך הרשת הווירטואלית:

    kubectl apply -n weaviate -f manifests/05-ilb/ilb.yaml
    

    במניפסט ilb.yaml מתואר שירות מאזן העומסים:

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        #cloud.google.com/neg: '{"ingress": true}'
        networking.gke.io/load-balancer-type: "Internal"
      labels:
        app.kubernetes.io/name: weaviate
      name: weaviate-ilb
    spec:
      ports:
      - name: http
        port: 8080
        protocol: TCP
        targetPort: 8080
      - name: grpc
        port: 50051
        protocol: TCP
        targetPort: 50051
      selector:
        app: weaviate
      type: LoadBalancer
  5. מחילים את המניפסט כדי לפרוס את אשכול Weaviate:

    helm upgrade --install "weaviate" weaviate/weaviate \
    --namespace "weaviate" \
    --values ./manifests/01-basic-cluster/weaviate_cluster.yaml
    

    weaviate_cluster.yaml המניפסט מתאר את הפריסה. פריסה היא אובייקט Kubernetes API שמאפשר להפעיל כמה רפליקות של Pods שמפוזרות בין הצמתים באשכול:

    initContainers:
      sysctlInitContainer:
        enabled: false
      extraInitContainers: {}
    resources: 
       requests:
         cpu: '1'
         memory: '4Gi'
       limits:
         cpu: '2'
         memory: '4Gi'
    replicas: 3
    storage:
      size: 10Gi
      storageClassName: "premium-rwo"
    service:
      name: weaviate
      ports:
        - name: http
          protocol: TCP
          port: 80
      type: ClusterIP
    grpcService:
      enabled: true
      name: weaviate-grpc
      ports:
        - name: grpc
          protocol: TCP
          port: 50051
      type: ClusterIP
    authentication:
      anonymous_access:
        enabled: false
    authorization:
      admin_list:
        enabled: true
        users:
          - admin@example.com
    modules:
      text2vec-palm:
        enabled: true
    env:
      AUTHENTICATION_APIKEY_ENABLED: 'true'
      AUTHENTICATION_APIKEY_USERS: 'admin@example.com'
      PROMETHEUS_MONITORING_ENABLED: true
    envSecrets:
      AUTHENTICATION_APIKEY_ALLOWED_KEYS: apikeys
    tolerations:
      - key: "app.stateful/component"
        operator: "Equal"
        value: "weaviate"
        effect: NoSchedule

    מחכים כמה דקות עד שהאשכול של Weaviate יופעל באופן מלא.

  6. בודקים את סטטוס הפריסה:

    kubectl get weaviate -n weaviate --watch
    

    אם מסד הנתונים weaviate נפרס בהצלחה, הפלט אמור להיראות כך:

    NAME: weaviate
    LAST DEPLOYED: Tue Jun 18 13:15:53 2024
    NAMESPACE: weaviate
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    
  7. מחכים ש-Kubernetes יפעיל את המשאבים:

    kubectl wait pods -l app.kubernetes.io/name=weaviate --for condition=Ready --timeout=300s -n weaviate
    

הרצת שאילתות באמצעות מחברת Vertex AI Colab Enterprise

בקטע הזה מוסבר איך להתחבר למסד הנתונים של Weaviate באמצעות Colab Enterprise. אתם יכולים להשתמש בתבנית ייעודית של זמן ריצה כדי לבצע פריסה ב-weaviate-vpc, כך שניתן יהיה לתקשר עם משאבים במערכת GKE.

מידע נוסף על Vertex AI Colab Enterprise זמין במאמרי העזרה של Colab Enterprise.

יצירת תבנית בזמן ריצה

כדי ליצור תבנית זמן ריצה של Colab Enterprise:

  1. במסוף Google Cloud , עוברים לדף Runtime Templates של Colab Enterprise ומוודאים שהפרויקט שלכם נבחר:

    עוברים אל Runtime Templates

  2. לוחצים על תבנית חדשה. מופיע הדף יצירת תבנית חדשה של זמן ריצה.

  3. בקטע Runtime basics (יסודות של זמן ריצה):

    • בשדה שם מוצג, מזינים weaviate-connect.
    • ברשימה הנפתחת אזור, בוחרים באפשרות us-central1. זהו אותו אזור כמו באשכול GKE.
  4. בקטע Configure compute (הגדרת מחשוב):

    • ברשימה הנפתחת סוג המכונה בוחרים באפשרות e2-standard-2.
    • בשדה גודל הדיסק, מזינים 30.
  5. בקטע רשתות ואבטחה:

    • ברשימה הנפתחת רשת, בוחרים את הרשת שבה נמצא אשכול GKE.
    • ברשימה הנפתחת Subnetwork, בוחרים את רשת המשנה המתאימה.
    • מבטלים את הסימון בתיבת הסימון הפעלת גישה ציבורית לאינטרנט.
  6. כדי לסיים את יצירת תבנית זמן הריצה, לוחצים על יצירה. התבנית של סביבת זמן הריצה מופיעה ברשימה בכרטיסייה Runtime templates.

יצירת סביבת ריצה

כדי ליצור סביבת ריצה של Colab Enterprise:

  1. ברשימת תבניות זמן הריצה של התבנית שיצרתם, בעמודה פעולות, לוחצים על ואז על יצירת זמן ריצה. מופיעה החלונית Create Vertex AI Runtime.

  2. כדי ליצור סביבת ריצה על סמך התבנית, לוחצים על יצירה.

  3. בכרטיסייה Runtimes (זמני ריצה) שנפתחת, מחכים שהסטטוס ישתנה ל-Healthy (תקין).

ייבוא ה-Notebook

כדי לייבא את ה-notebook ב-Colab Enterprise:

  1. עוברים לכרטיסייה המחברות שלי ולוחצים על ייבוא. החלונית Import notebooks תופיע.

  2. בקטע מקור לייבוא, בוחרים באפשרות כתובת URL.

  3. בקטע כתובות URL של תיקיות Notebook, מזינים את הקישור הבא:

    https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/databases/weaviate/manifests/02-notebook/vector-database.ipynb
    
  4. לוחצים על Import.

התחברות לסביבת זמן ריצה והרצת שאילתות

כדי להתחבר לסביבת זמן הריצה ולהריץ שאילתות:

  1. במחברת, ליד הלחצן Connect (התחברות), לוחצים על Additional connection options (אפשרויות חיבור נוספות). מופיעה החלונית Connect to Vertex AI Runtime (התחברות לסביבת זמן ריצה של Vertex AI).

  2. בוחרים באפשרות Connect to a runtime (התחברות לסביבת זמן ריצה) ואז באפשרות Connect to an existing Runtime (התחברות לסביבת זמן ריצה קיימת).

  3. בוחרים את זמן הריצה שהפעלתם ולוחצים על Connect (קישור).

  4. כדי להריץ את התאים במחברת, לוחצים על הלחצן Run cell (הפעלת התא) לצד כל תא קוד.

המחברת מכילה תאים עם קוד ותאים עם טקסט שמתאר כל בלוק קוד. כשמריצים תא קוד, הפקודות שבו מופעלות ומוצג פלט. אפשר להריץ את התאים לפי הסדר, או להריץ תאים ספציפיים לפי הצורך.

הצגת מדדי Prometheus עבור האשכול

אשכול GKE מוגדר עם השירות המנוהל של Google Cloud ל-Prometheus, שמאפשר איסוף מדדים בפורמט Prometheus. השירות הזה מספק פתרון מנוהל מלא למעקב ולהתראות, שמאפשר איסוף, אחסון וניתוח של מדדים מהאשכול ומהאפליקציות שלו.

בתרשים הבא מוצג אופן איסוף המדדים של Prometheus עבור האשכול:

איסוף מדדים של Prometheus

האשכול הפרטי של GKE בתרשים מכיל את הרכיבים הבאים:

  • ‫Weaviate Pods שחושפים מדדים בנתיב /metrics ובפורט 2112.
  • אוספי נתונים מבוססי Prometheus שמעבדים את המדדים מ-Pods של Weaviate.
  • משאב PodMonitoring ששולח את המדדים אל Cloud Monitoring.

כדי לייצא את המדדים ולראות אותם:

  1. יוצרים את משאב PodMonitoring כדי לגרד מדדים לפי labelSelector:

    kubectl apply -n weaviate -f manifests/03-prometheus-metrics/pod-monitoring.yaml
    

    קובץ המניפסט pod-monitoring.yaml מתאר את המשאב PodMonitoring:

    apiVersion: monitoring.googleapis.com/v1
    kind: PodMonitoring
    metadata:
      name: weaviate
    spec:
      selector:
        matchLabels:
          app: weaviate
      endpoints:
      - port: 2112
        interval: 30s
        path: /metrics
  2. כדי לייבא לוח בקרה בהתאמה אישית של Cloud Monitoring עם ההגדרות שמוגדרות ב-dashboard.json:

    gcloud --project "${PROJECT_ID}" monitoring dashboards create --config-from-file monitoring/dashboard.json
    
  3. אחרי שהפקודה מורצת בהצלחה, עוברים אל לוחות הבקרה ב-Cloud Monitoring:

    מעבר לסקירה הכללית של מרכזי השליטה

  4. ברשימת לוחות הבקרה, פותחים את לוח הבקרה Weaviate Overview. יכול להיות שיעבור זמן עד שהמדדים ייאספו ויוצגו. בלוח הבקרה מוצגים מספר הרסיסים, הווקטורים והחביון של הפעולות.

הסרת המשאבים

כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.

מחיקת הפרויקט

הדרך הקלה ביותר להימנע מחיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך הזה.

כדי למחוק Google Cloud פרויקט:

gcloud projects delete PROJECT_ID

אם מחקתם את הפרויקט, סיימתם את הניקוי. אם לא מחקתם את הפרויקט, צריך למחוק את המשאבים בנפרד.

מחיקת משאבים בודדים

  1. מגדירים משתני סביבה.

    export PROJECT_ID=${PROJECT_ID}
    export KUBERNETES_CLUSTER_PREFIX=weaviate
    export REGION=us-central1
    
  2. מריצים את הפקודה terraform destroy:

    export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth print-access-token)
    terraform  -chdir=terraform/FOLDER destroy \
    -var project_id=${PROJECT_ID} \
    -var region=${REGION} \
    -var cluster_prefix=${KUBERNETES_CLUSTER_PREFIX}
    

    מחליפים את FOLDER ב-gke-autopilot או ב-gke-standard, בהתאם לסוג אשכול GKE שיצרתם.

    כשמופיעה בקשה, כותבים yes.

  3. חיפוש כל הדיסקים שלא צורפו:

    export disk_list=$(gcloud compute disks list --filter="-users:* AND labels.name=${KUBERNETES_CLUSTER_PREFIX}-cluster" --format "value[separator=|](name,region)")
    
  4. מוחקים את הדיסקים:

    for i in $disk_list; do
     disk_name=$(echo $i| cut -d'|' -f1)
     disk_region=$(echo $i| cut -d'|' -f2|sed 's|.*/||')
     echo "Deleting $disk_name"
     gcloud compute disks delete $disk_name --region $disk_region --quiet
    done
    
  5. מחיקת המאגר ב-GitHub:

    rm -r ~/kubernetes-engine-samples/
    

המאמרים הבאים