במדריך הזה נסביר איך לפרוס את Redis Enterprise באשכולות של Google Kubernetes Engine (GKE).
Redis הוא מסד נתונים NoSQL בקוד פתוח בזיכרון, שמשמש בעיקר לשמירה במטמון. הוא כולל שכפול מובנה, סקריפטים של Lua, פינוי LRU, טרנזקציות, שמירה בדיסק וזמינות גבוהה.
Redis Enterprise הוא פתרון ברמה שמתאימה לארגונים, שמרחיב את Redis בקוד פתוח עם ניהול פשוט, כולל הפצה של נתונים עם שכפול גיאוגרפי, שינוי קנה מידה לינארי של תפוקת פעולות, שכבות נתונים, תכונות אבטחה מתקדמות ועוד.
יש תמחור שונה לכל אפשרות פריסה של Redis Enterprise, כולל: תוכנה, ענן או ענן היברידי וענן מרובה.
המדריך הזה מיועד לאדמינים של פלטפורמות, למומחי Cloud Architect ולמומחי תפעול שרוצים לפרוס את Redis Enterprise ב-Google Kubernetes Engine (GKE).
מטרות
- תכנון ופריסה של תשתית GKE ל-Redis
- פריסת Redis Enterprise Operator
- פריסת אשכול Redis Enterprise
- יצירת מסד נתונים של Redis Enterprise
- הדגמה של אימות מסד נתונים
יתרונות
היתרונות של Redis Enterprise:
- דרך מקורית ל-Kubernetes לניהול מחזור החיים של Redis Enterprise Cluster (REC) ושל Redis Enterprise Databases (REDBs)
- ניצול משאבים באמצעות מיקום משותף של כמה מסדי נתונים של Redis ב-Pod יחיד של Kubernetes
- צמצום התקורה התפעולית באמצעות טיפול במשימות תחזוקה שגרתיות כמו תיקון באגים ושדרוגים
- תמיכה בקובצי אימג' של תוכנת Redis ממאגרי קונטיינרים פרטיים, כמו Artifact Registry, כדי לשפר את האבטחה והזמינות של קונטיינרים
- תמיכה בשירות המנוהל של Google Cloud ל-Prometheus לצורך מעקב אחר מסדי נתונים וניראות (observability)
- תכונות אבטחה משופרות כמו הצפנה, אמצעי בקרה לגישה ושילוב עם Kubernetes RBAC (בקרת גישה מבוססת-תפקידים)
- שיטות אימות מתקדמות, כולל LDAP ומנהלי אישורים של צד שלישי כמו Vault
- יכולת להגדיר גיבויים מתוזמנים
ארכיטקטורת פריסה
Redis Enterprise מנהל את המשאבים הבאים ב-Kubernetes:
- האשכול Enterprise וההגדרה שלו ב-StatefulSet. האשכול מורכב מצמתים (Pods) של Redis עם חבילות Redis מותקנות. בצמתים האלה פועלים תהליכים כדי לוודא שהצומת הוא חלק מאשכול. כל צומת מספק קונטיינר להפעלת כמה מופעים של מסד נתונים (רסיסים). למרות שבשיטות המומלצות של Kubernetes מצוין ש-Pod צריך לייצג אפליקציה אחת עם קונטיינר אחד, Redis Enterprise פורס כמה מסדי נתונים של Redis לקונטיינר אחד. הגישה הזו מאפשרת שימוש טוב יותר במשאבים, ביצועים טובים יותר וקצב העברת נתונים טוב יותר ברשת. בכל מאגר יש גם שרת proxy עם אפס זמן אחזור לניתוב תנועה ולניהול שלה לתהליכים ספציפיים של מסד נתונים של Redis בתוך מאגר.
- משאב מותאם אישית
RedisEnterpriseDatabase(REDBs) שמייצג את מופעי מסד הנתונים של Redis שנוצרו בתוך ה-REC - שירותי Kubernetes שמשרתים מופעי REDB כנקודות קצה של מסד נתונים
- Pod של בקר בשם Service Rigger שיוצר ומוחק נקודות קצה של מסד נתונים כשמסד נתונים נוצר או נמחק
במדריך הזה יוצרים פריסה של אחד לרבים על ידי פריסת REC במרחב שמות ייעודי ושימוש במרחבי שמות נפרדים לפריסות של אפליקציות כדי לשפר את הבידוד.
בתרשים הבא מתוארים הרכיבים של Redis Enterprise והקשר ביניהם:
במדריך הזה תלמדו איך להגדיר את Redis Enterprise Cluster כך שתהיה לו זמינות גבוהה. כדי לעשות זאת, ה-REC צריך מספר אי-זוגי של צמתים, ולפחות שלושה צמתים. אתם גם מגדירים כללי שיוך, כללים למניעת שיוך וכתמי צומת, כדי לוודא שכל צומת Redis ממוקם בצומת Kubernetes אחר, ושהצמתים של Redis מפוזרים באופן שווה באשכול Kubernetes.
שימוש בכמה צמתים ותחומים הוא חיוני כדי להשיג אשכול GKE עם זמינות גבוהה, מהסיבות הבאות:
- סובלנות לתקלות: מספר צמתים מחלקים את עומס העבודה בין הצמתים באשכול, וכך מבטיחים שאם צומת אחד ייכשל, הצמתים האחרים יוכלו להשתלט על המשימות, ולמנוע השבתה והפרעות בשירות.
- יכולת הרחבה: שימוש בכמה צמתים מאפשר הרחבה אופקית על ידי הוספה או הסרה של צמתים לפי הצורך. כך אפשר להקצות משאבים בצורה אופטימלית ולעמוד בדרישות של תנועה מוגברת או עומסי עבודה גדולים יותר.
- זמינות גבוהה: שימוש בכמה תחומים באזור מסוים מבטיח יתירות ומצמצם את הסיכון לנקודת כשל יחידה. אם יש הפסקה זמנית בשירות באזור זמינות שלם, האשכול יכול להמשיך לפעול באזורים אחרים, וכך לשמור על זמינות השירות.
- יתירות גיאוגרפית: באמצעות פריסת הצמתים באזורים שונים, הנתונים והשירותים של האשכול מפוזרים גיאוגרפית, מה שמספק חוסן בפני אסונות טבע, הפסקות חשמל או שיבושים מקומיים אחרים שעשויים להשפיע על אזור יחיד.
- עדכונים הדרגתיים ותחזוקה: באמצעות שימוש בכמה צמתים, אפשר לבצע עדכונים הדרגתיים ותחזוקה בצמתים נפרדים בלי להשפיע על הזמינות הכוללת של האשכול. כך תוכלו להמשיך ליהנות מהשירות בלי הפרעות, וגם לבצע עדכונים נדרשים ולהחיל תיקונים בצורה חלקה.
- הסכמי רמת שירות (SLA): Google Cloud מספקת הסכמי רמת שירות לפריסות מרובות אזורים, שמבטיחים רמת זמינות וזמן פעולה תקינה מינימליים.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים 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 .
מפעילים את ממשקי ה-API של Compute Engine, IAM, GKE ומנהל המשאבים:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידיםgcloud services enable compute.googleapis.com
iam.googleapis.com container.googleapis.com cloudresourcemanager.googleapis.com -
מעניקים תפקידים לחשבון המשתמש. מריצים את הפקודה הבאה לכל אחד מהתפקידים הבאים ב-IAM:
roles/compute.securityAdmin, roles/compute.viewer, roles/container.clusterAdmin, roles/container.admin, roles/iam.serviceAccountAdmin, roles/iam.serviceAccountUsergcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
USER_IDENTIFIER: המזהה של חשבון המשתמש חשבון. דוגמאות מופיעות במאמר ייצוג המשתמשים במאגרי כוח עבודה בכללי מדיניות IAM. -
ROLE: תפקיד ה-IAM שאתם מקצים לחשבון המשתמש.
-
מגדירים את הסביבה
במדריך הזה משתמשים ב-Cloud Shell כדי לנהל משאבים שמתארחים ב-Google Cloud. ב-Cloud Shell מותקנת מראש התוכנה שצריך למדריך הזה, כולל kubectl, ה-CLI של gcloud ו-Terraform.
כדי להגדיר את הסביבה באמצעות Cloud Shell:
מפעילים סשן של Cloud Shell מGoogle Cloud המסוף על ידי לחיצה על Activate Cloud Shell
. Google Cloud ייפתח סשן בחלונית התחתונה של מסוף Google Cloud .
הגדרת משתני סביבה:
export PROJECT_ID=PROJECT_ID export KUBERNETES_CLUSTER_PREFIX=redis export REGION=us-central1מחליפים את
PROJECT_ID: your Google Cloud במזהה הפרויקט.משכפלים את המאגר ב-GitHub:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samplesעוברים לספריית העבודה:
cd kubernetes-engine-samples/databases/redis-enterprise-operator
יצירת תשתית האשכול
בקטע הזה מריצים סקריפט של Terraform כדי ליצור אשכול GKE פרטי, זמין מאוד ואזורי, ו-VPC.
בתרשים הבא מוצג אשכול GKE פרטי אזורי מסוג Standard שנפרס בשלושה אזורים שונים:
כדי לפרוס את התשתית הזו, מריצים את הפקודות הבאות מ-Cloud Shell:
cd terraform/gke-standard
export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth print-access-token)
terraform init
terraform apply -var project_id=${PROJECT_ID} \
-var region=${REGION} \
-var cluster_prefix=${KUBERNETES_CLUSTER_PREFIX}
כשמופיעה בקשה, כותבים yes. יכול להיות שיעברו כמה דקות עד שהפקודה הזו תושלם ועד שהאשכול יציג סטטוס של מוכנות.
Terraform יוצר את המשאבים הבאים:
- רשת VPC ותת-רשת פרטית לצמתים של Kubernetes
- נתב לגישה לאינטרנט דרך NAT
- אשכול GKE פרטי באזור
us-central1 - מאגר צמתים אחד עם הפעלה של התאמה אוטומטית לעומס (צומת אחד עד שני צמתים לכל אזור, צומת אחד לכל אזור לכל הפחות)
הפלט אמור להיראות כך:
...
Apply complete! Resources: 14 added, 0 changed, 0 destroyed.
...
התחברות לאשכול
באמצעות Cloud Shell, מגדירים את kubectl לתקשורת עם האשכול:
gcloud container clusters get-credentials ${KUBERNETES_CLUSTER_PREFIX}-cluster --location ${REGION}
פריסת האופרטור Redis Enterprise באשכול
בקטע הזה פורסים את Redis Enterprise operator באשכול Kubernetes.
יוצרים מרחבי שמות עבור ה-REC והאפליקציות שלו:
kubectl create namespace rec-ns kubectl create namespace applicationנותנים שמות למרחבי השמות:
kubectl label namespace rec-ns connection=redis kubectl label namespace application connection=redisמורידים את הגרסה האחרונה של חבילת Redis Enterprise Operator:
VERSION=`curl --silent https://api.github.com/repos/RedisLabs/redis-enterprise-k8s-docs/releases/latest | grep tag_name | awk -F'"' '{print $4}'`מתקינים את האופרטור של Redis Enterprise:
kubectl apply -n rec-ns -f https://raw.githubusercontent.com/RedisLabs/redis-enterprise-k8s-docs/$VERSION/bundle.yamlהפלט אמור להיראות כך:
role.rbac.authorization.k8s.io/redis-enterprise-operator created rolebinding.rbac.authorization.k8s.io/redis-enterprise-operator created serviceaccount/redis-enterprise-operator created service/admission created customresourcedefinition.apiextensions.k8s.io/redisenterpriseclusters.app.redislabs.com created customresourcedefinition.apiextensions.k8s.io/redisenterprisedatabases.app.redislabs.com created customresourcedefinition.apiextensions.k8s.io/redisenterpriseremoteclusters.app.redislabs.com created customresourcedefinition.apiextensions.k8s.io/redisenterpriseactiveactivedatabases.app.redislabs.com created deployment.apps/redis-enterprise-operator created
פריסת Redis Enterprise Cluster
מחילים את המניפסט על האשכול:
kubectl apply -n rec-ns -f manifests/01-basic-cluster/rec.yamlיכול להיות שיעברו כמה דקות עד שהפקודה תושלם.
בודקים את הסטטוס של פריסת ה-REC:
kubectl get rec -n rec-nsהפלט אמור להיראות כך:
NAME NODES VERSION STATE SPEC STATUS LICENSE STATE SHARDS LIMIT LICENSE EXPIRATION DATE AGE gke-rec 3 7.2.4-52 Running Valid Valid 4 2023-09-29T20:15:32Z 4m7sהאשכול מוכן כש-
STATEהואRUNNING.
אופציונלי: הגדרת בקרת הכניסה
אופציונלי: אתם יכולים להגדיר תשתית לאימות מסד הנתונים במהלך הפריסה.
מגדירים את בקרת הכניסה ובודקים אם יש סוד TLS של אישור בקשות:
kubectl get secret admission-tls -n rec-nsקבלת האישור:
export CERT=$(kubectl get secret admission-tls -n rec-ns -o jsonpath='{.data.cert}')מעתיקים את האישור לקובץ
webhook.yaml:sed -i -e 's/CRT/'$CERT'/g' manifests/01-basic-cluster/webhook.yamlפורסים את ה-Webhook של האימות:
sed -i -e 's/CRT/'$CERT'/g' manifests/01-basic-cluster/webhook.yamlבקרת הכניסה מאמתת את תחביר מסד הנתונים במרחבי שמות עם תוויות.
כדי לאמת את בקרת הכניסה, יוצרים מסד נתונים לא תקין:
kubectl apply -n rec-ns -f - << EOF apiVersion: app.redislabs.com/v1alpha1 kind: RedisEnterpriseDatabase metadata: name: redis-enterprise-database spec: evictionPolicy: illegal EOFהפלט אמור להיראות כך:
Error from server: error when creating "STDIN": admission webhook "redisenterprise.admission.redislabs" denied the request: 'illegal' is an invalid value for 'eviction_policy'. Possible values are ['volatile-lru', 'volatile-ttl', 'volatile-random', 'allkeys-lru', 'allkeys-random', 'noeviction', 'volatile-lfu', 'allkeys-lfu']
יצירת מרחבי שמות
כברירת מחדל, לאופרטור של Redis Enterprise אין הרשאות לבצע פעולות מחוץ למרחב השמות שלו. כדי לאפשר ל-Redis Enterprise Operator ליצור נקודות קצה של REDB ומסדי נתונים במרחבי שמות אחרים, צריך להגדיר RBAC.
מחילים את התפקיד המתאים ואת קישור התפקיד במרחב השמות של האפליקציה:
kubectl apply -f manifests/01-basic-cluster/role.yaml -n application kubectl apply -f manifests/01-basic-cluster/role-binding.yaml -n applicationיוצרים תפקיד באשכול וקישור תפקיד באשכול במרחב השמות
rec-ns:kubectl apply -n rec-ns -f manifests/01-basic-cluster/cluster_role.yaml kubectl apply -n rec-ns -f manifests/01-basic-cluster/cluster_role_binding.yamlעורכים את ה-ConfigMap של ה-REC כדי להוסיף שליטה במרחב השמות של האפליקציה:
kubectl patch ConfigMap/operator-environment-config --type merge -p '{"data": {"REDB_NAMESPACES_LABEL": "connection=redis"}}' -n rec-nsכל מרחב שמות שמסומן כ-ConfigMap עובר תיקון.
בודקים את הסטטוס של המשאבים בתשתית Redis ב-namespace:
rec-ns.kubectl get pod,deploy,svc,rec,statefulset,cm,secrets -n rec-nsהפלט אמור להיראות כך:
NAME READY STATUS RESTARTS AGE pod/gke-rec-0 2/2 Running 0 172m pod/gke-rec-1 2/2 Running 0 171m pod/gke-rec-2 2/2 Running 0 168m pod/gke-rec-services-rigger-5f885f59dc-gc79g 1/1 Running 0 172m pod/redis-enterprise-operator-6668ccd8dc-kx29z 2/2 Running 2 (5m58s ago) 5h NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/gke-rec-services-rigger 1/1 1 1 172m deployment.apps/redis-enterprise-operator 1/1 1 1 5h NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/admission ClusterIP 10.52.11.13 <none> 443/TCP 5h service/gke-rec ClusterIP 10.52.5.44 <none> 9443/TCP,8001/TCP 172m service/gke-rec-prom ClusterIP None <none> 8070/TCP 172m service/gke-rec-ui ClusterIP 10.52.3.29 <none> 8443/TCP 172m NAME NODES VERSION STATE SPEC STATUS LICENSE STATE SHARDS LIMIT LICENSE EXPIRATION DATE AGE redisenterprisecluster.app.redislabs.com/gke-rec 3 7.2.4-52 Running Valid Valid 4 2023-10-05T11:07:20Z 172m NAME READY AGE statefulset.apps/gke-rec 3/3 172m NAME DATA AGE configmap/gke-rec-bulletin-board 1 172m configmap/gke-rec-health-check 5 172m configmap/kube-root-ca.crt 1 5h2m configmap/operator-environment-config 1 5h NAME TYPE DATA AGE secret/admission-tls Opaque 2 5h secret/gke-rec Opaque 2 172m
פריסת מסדי נתונים של Redis Enterprise
יצירת מסדי נתונים של Redis Enterprise במרחבי השמות של האפליקציה:
kubectl apply -f manifests/01-basic-cluster/a-rdb.yaml -n applicationבודקים את הסטטוס של REDB:
kubectl get redb --all-namespacesהפלט אמור להיראות כך:
NAMESPACE NAME VERSION PORT CLUSTER SHARDS STATUS SPEC STATUS AGE application app-db 7.2.0 12999 gke-rec 1 active Valid 15sמוודאים שהשירותים של כל REDB פועלים:
kubectl get svc --all-namespacesהפלט אמור להיראות כך:
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE application app-db ExternalName <none> redis-12999.rec-ns.svc.cluster.local 12999/TCP 72mמוודאים שהסוד נוצר:
kubectl get secrets -n applicationהפלט אמור להיראות כך:
NAME TYPE DATA AGE redb-app-db Opaque 3 96m
אימות באמצעות סיסמאות
אפשר להתחבר ל-REDB באמצעות Pod עם redis-cli במרחב השמות של האפליקציה. ה-Pod של הלקוח משתמש בסודות שזמינים במרחב השמות של האפליקציה (REDB) כדי ליצור חיבור.
מסדי נתונים שנוצרו באמצעות REDB של משאב בהתאמה אישית תומכים רק באימות באמצעות סיסמה ללא ACL.
יוצרים את ה-Pod של הלקוח:
kubectl apply -n application -f manifests/03-auth/client_pod.yamlמתחברים ל-Pod של הלקוח:
kubectl exec -n application -i -t redis-client -c redis-client -- /bin/shמתחברים למסד הנתונים:
redis-cli -h $SERVICE -p $PORT --pass $PASSיוצרים מפתח:
SET mykey "Hello World"הפלט אמור להיראות כך:
OKמקבלים את המפתח:
GET mykeyהפלט אמור להיראות כך:
"Hello World"יציאה מהמעטפת של ה-Pod
exit
הסבר על אופן איסוף המדדים על ידי Prometheus עבור אשכול Redis
בתרשים הבא אפשר לראות איך מתבצע איסוף מדדים של Prometheus:
בתרשים, אשכול פרטי של GKE מכיל:
- Redis Pod שאוסף מדדים בנתיב
/ובפורט8070 - אוספי נתונים מבוססי Prometheus שמעבדים את המדדים מ-Redis Pod
- משאב
PodMonitoringששולח מדדים ל-Cloud Monitoring
האופרטור Redis Enterprise חושף מדדי אשכול בפורמט Prometheus.
יוצרים את פריסת ה-metrics-proxy:
kubectl apply -n rec-ns -f manifests/02-prometheus-metrics/metrics-proxy.yamlמכיוון שהאופרטור מספק רק נקודת קצה של HTTPS עם אישור בחתימה עצמית, והמשאב
PodMonitoringלא תומך בהשבתת אימות אישור TLS, משתמשים ב-Podmetrics-proxyכשרת proxy הפוך לנקודת הקצה הזו כדי לחשוף את המדדים ביציאת HTTP.יוצרים את המשאב PodMonitoring כדי לגרד מדדים באמצעות
labelSelector:kubectl apply -n rec-ns -f manifests/02-prometheus-metrics/pod-monitoring.yamlנכנסים לדף GKE Clusters Dashboard במסוף Google Cloud .
כניסה ללוח הבקרה של GKE Clusters
לוח הבקרה מציג את קצב ההטמעה של מדדים שאינם אפס.
יצירת מרכז בקרה
כדי לראות את המדדים, צריך ליצור מרכז בקרה.
יוצרים את לוח הבקרה:
gcloud --project "${PROJECT_ID}" monitoring dashboards create --config-from-file monitoring/dashboard.jsonהפלט אמור להיראות כך:
Created [f4efbe4e-2605-46b4-9910-54b13d29b3be].נכנסים לדף Dashboards במסוף Google Cloud .
פותחים את לוח הבקרה של Redis Enterprise Cluster. יכול להיות שיחלפו כמה דקות עד שהלוח יוקצה אוטומטית.
אימות המדדים שיוצאו
כדי לאמת את המדדים, יוצרים מסד נתונים חדש ובודקים את המדדים.
פותחים את לוח הבקרה של Redis Enterprise Cluster.
יוצרים מסד נתונים נוסף של Redis:
kubectl apply -n rec-ns -f manifests/02-prometheus-metrics/c-rdb.yamlהערך Database Count (מספר מסדי הנתונים) בלוח הבקרה אמור להתעדכן.
יוצרים Pod של לקוח כדי להתחבר למסד הנתונים החדש:
kubectl apply -n rec-ns -f manifests/02-prometheus-metrics/client_pod.yamlמתחברים ל-Pod של הלקוח ומכינים את המשתנים:
kubectl exec -it redis-client-c -n rec-ns -- /bin/bashמשתמשים בכלי
redis-cliכדי ליצור מפתחות חדשים:for i in {1..50}; do \ redis-cli -h $SERVICE -p $PORT -a $PASS \ --no-auth-warning SET mykey-$i "myvalue-$i"; \ doneמרעננים את הדף ורואים שהגרפים עודכנו כדי להציג את המצב בפועל של מסד הנתונים.
יציאה מהמעטפת של ה-Pod
exit
הסרת המשאבים
מחיקת הפרויקט
כדי למחוק Google Cloud פרויקט:
gcloud projects delete PROJECT_ID
מחיקת משאבים בודדים
מגדירים משתני סביבה.
export PROJECT_ID=${PROJECT_ID} export KUBERNETES_CLUSTER_PREFIX=redis export REGION=us-central1מריצים את הפקודה
terraform destroy:export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth print-access-token) cd terraform/gke-standard terraform destroy -var project_id=${PROJECT_ID} \ -var region=${REGION} \ -var cluster_prefix=${KUBERNETES_CLUSTER_PREFIX}כשמופיעה בקשה, כותבים
yes.חיפוש כל הדיסקים שלא צורפו:
export disk_list=$(gcloud compute disks list --filter="-users:* AND labels.name=${KUBERNETES_CLUSTER_PREFIX}-cluster" --format "value[separator=|](name,zone)")מוחקים את הדיסקים:
for i in $disk_list; do disk_name=$(echo $i| cut -d'|' -f1) disk_zone=$(echo $i| cut -d'|' -f2|sed 's|.*/||') echo "Deleting $disk_name" gcloud compute disks delete $disk_name --zone $disk_zone --quiet doneמחיקת המאגר ב-GitHub:
rm -r ~/kubernetes-engine-samples/
המאמרים הבאים
- כדאי להעמיק את הקריאה ולהכיר דוגמאות לארכיטקטורות, תרשימים ושיטות מומלצות בנושאי Google Cloud. כל אלה זמינים במרכז הארכיטקטורה של Cloud.