הסרת Cloud Service Mesh
בדף הזה מוסבר איך להסיר את Cloud Service Mesh אם אתם משתמשים בממשקי Istio API. אם אתם משתמשים בממשקי Compute Engine API, לא צריך לבצע שום פעולה. ההבדלים מוסברים במאמר סקירה כללית על Cloud Service Mesh.
אם פועלים לפי ההוראות האלה להסרת Cloud Service Mesh, כל ההגדרות יוסרו בלי קשר לסוג מישור הבקרה (בתוך האשכול או מנוהל). אם אתם מבצעים העברה מתוך האשכול לניהול, עליכם לפעול לפי מדריך ההעברה.
הסרת Cloud Service Mesh
כדי להסיר את כל הרכיבים של Cloud Service Mesh, משתמשים בפקודות הבאות. הפקודות האלה מוחקות גם את מרחב השמות istio-system ואת כל ההגדרות של משאבים מותאמים אישית (CRD), כולל כל הגדרות ה-CRD שהחלתם.
כדי למנוע שיבוש בתנועת הנתונים של האפליקציה:
- מבצעים שדרוג לאחור של כל כללי מדיניות mTLS מסוג STRICT ל-PERMISSIVE.
- מסירים את כל כללי המדיניות AuthorizationPolicy שעלולים לחסום תנועה.
משביתים את הניהול האוטומטי באשכול הזה (בין אם הפעלתם אותו ישירות או באמצעות הגדרת ברירת המחדל של הצי):
gcloud container fleet mesh update \ --management manual \ --memberships MEMBERSHIP_NAME \ --project FLEET_PROJECT_ID \ --location MEMBERSHIP_LOCATIONמחליפים את מה שכתוב בשדות הבאים:
- MEMBERSHIP_NAME הוא שם החברות שמופיע כשמאמתים שהאשכול רשום ב-Fleet.
- MEMBERSHIP_LOCATION הוא המיקום של המינוי (אזור או
global).
אם האפשרות הזו מופעלת, משביתים את ההזרקה האוטומטית של sidecar במרחבי השמות. מריצים את הפקודה הבאה כדי להציג את תוויות מרחב השמות:
kubectl get namespace YOUR_NAMESPACE --show-labelsהפלט אמור להיראות כך:
NAME STATUS AGE LABELS demo Active 4d17h istio.io/rev=asm-181-5
אם מופיע
istio.io/rev=בפלט בעמודהLABELS, מסירים אותו:kubectl label namespace YOUR_NAMESPACE istio.io/rev-אם מופיע
istio-injectionבפלט בעמודהLABELS, מסירים אותו:kubectl label namespace YOUR_NAMESPACE istio-injection-אם לא מופיעה התווית
istio.io/revאוistio-injection, סימן שההוספה האוטומטית לא הופעלה במרחב השמות.מפעילים מחדש את עומסי העבודה שהוחדרו להם קבצים מצורפים כדי להסיר את השרתים הפרוקסי.
אם אתם משתמשים ב-Cloud Service Mesh מנוהל, כדאי לבדוק איזו הטמעה של מישור הבקרה יש לכם באשכול. זה יעזור לכם למחוק את המשאבים הרלוונטיים בשלבים הבאים.
אם אתם משתמשים ב-Cloud Service Mesh מנוהל, צריך להסיר את כל המשאבים באשכול:
controlplanerevisionkubectl delete controlplanerevision asm-managed asm-managed-rapid asm-managed-stable -n istio-system --ignore-not-found=trueמוחקים את ה-webhook מהאשכול, אם הוא קיים.
Cloud Service Mesh בתוך האשכול
מוחקים את
validatingwebhooksconfigurationואתmutatingwebhookconfiguration.kubectl delete validatingwebhookconfiguration,mutatingwebhookconfiguration -l operator.istio.io/component=Pilot,istio.io/owned-by!=mesh.googleapis.comManaged Cloud Service Mesh
א. מוחקים את
validatingwebhooksconfiguration.kubectl delete validatingwebhookconfiguration istiod-istio-system-mcpב. מחיקת כל הפעילות
mutatingwebhookconfiguration.kubectl delete mutatingwebhookconfiguration istiod-RELEASE_CHANNELאחרי שכל עומסי העבודה יפעלו ולא יזוהו שרתי proxy, תוכלו למחוק את מישור הבקרה בתוך האשכול כדי להפסיק את החיוב.
כדי להסיר את מישור הבקרה בתוך האשכול, מריצים את הפקודה הבאה:
istioctl uninstall --purgeאם אין מישורי בקרה אחרים, אפשר למחוק את מרחב השמות
istio-systemכדי להיפטר מכל המשאבים של Cloud Service Mesh. אחרת, צריך למחוק את השירותים שמתאימים לגרסאות של Cloud Service Mesh. כך נמנעת מחיקה של משאבים משותפים, כמו CRD.מחיקת מרחבי השמות
istio-systemו-asm-system:kubectl delete namespace istio-system asm-system --ignore-not-found=trueכדי לבדוק אם המחיקות הצליחו:
kubectl get nsהפלט אמור לציין מצב
Terminatingולהופיע כמו שמוצג כאן, אחרת יכול להיות שתצטרכו למחוק ידנית את כל המשאבים שנותרו במרחבי השמות ולנסות שוב.NAME STATUS AGE istio-system Terminating 71m asm-system Terminating 71mאם אתם מתכוונים למחוק את האשכולות, או שכבר מחקתם אותם, אתם צריכים לוודא שכל אשכול לא רשום בצי.
אם הפעלתם את ההגדרה של צי ברירת המחדל של Cloud Service Mesh מנוהל ואתם רוצים להשבית אותה באשכולות עתידיים, אתם יכולים לעשות זאת. אפשר לדלג על השלב הזה אם מסירים את התוסף רק מאשכול אחד.
gcloud container hub mesh disable --fleet-default-member-config --project FLEET_PROJECT_IDכאשר FLEET_PROJECT_ID הוא מזהה הפרויקט המארח של הצי.
אם אתם מתכננים להפסיק להשתמש ב-Cloud Service Mesh ברמת הצי, אתם צריכים להשבית את התכונה של רשת השירות בפרויקט המארח של הצי.
gcloud container hub mesh disable --project FLEET_PROJECT_IDכאשר FLEET_PROJECT_ID הוא מזהה הפרויקט המארח של הצי.
אם הפעלתם את Cloud Service Mesh מנוהל, צריך לבדוק ולמחוק משאבים מנוהלים אם הם מופיעים:
מוחקים את הפריסה
mdp-controller:kubectl delete deployment mdp-controller -n kube-systemמקבלים ואז מוחקים את המשאב המותאם אישית של בקרת מישור הנתונים:
מקבלים את ה-CR של מישור הנתונים:
kubectl get dataplanecontrolמוחקים את ה-CR של אמצעי הבקרה של מישור הנתונים:
kubectl delete dataplanecontrol DATA_PLANE_CONTROL_CR_NAMEמחליפים את DATA_PLANE_CONTROL_CR_NAME בפלט מהפקודה הקודמת.
מחיקת ה-CRD
controlplanerevisionו-dataplanecontrol:kubectl delete crd controlplanerevisions.mesh.cloud.google.com dataplanecontrols.mesh.cloud.google.com
אם יש לכם הטמעה של מישור הבקרה
TRAFFIC_DIRECTOR, צריך לנקות את המשאבים של בדיקת התקינות השקופה. בדרך כלל הם מוסרים אוטומטית, אבל כדי לוודא שהם יוסרו, אפשר לבצע את הפעולות הבאות:מוחקים את
snkdaemonset.kubectl delete daemonset snk -n kube-systemמוחקים את כלל חומת האש.
gcloud compute firewall-rules delete gke-csm-thc-FIRST_8_CHARS_OF_CLUSTER_IDמחליפים את מה שכתוב בשדות הבאים:
- FIRST_8_CHARS_OF_CLUSTER_ID הוא 8 התווים הראשונים של מזהה האשכול עבור האשכול הספציפי שלכם.
בודקים אם קובץ ה-configmap
istio-cni-plugin-configקיים:kubectl get configmap istio-cni-plugin-config -n kube-systemאם הוא קיים, מוחקים את ה-configmap
istio-cni-plugin-config:kubectl delete configmap istio-cni-plugin-config -n kube-systemמחיקת ה-daemonset
istio-cni-node:kubectl delete daemonset istio-cni-node -n kube-system
אם אתם מסירים את Cloud Service Mesh מנוהל, פנו לתמיכה כדי לוודא שכל משאביGoogle Cloud נוקו. אם לא תבצעו את השלב הזה, יכול להיות שמרחב השמות
istio-systemומיפויי ההגדרות ימשיכו להיווצר מחדש.
בסיום השלבים האלה, כל הרכיבים של Cloud Service Mesh, כולל שרתי proxy, רשויות אישורים באשכול, תפקידים וקישורים של RBAC, מוסרים מהאשכול באופן שיטתי. במהלך תהליך ההתקנה, חשבון שירות בבעלות Google מקבל את ההרשאות הנדרשות ליצירת משאבי Service mesh באשכול. ההוראות האלה להסרת ההתקנה לא מבטלות את ההרשאות האלה, ולכן אפשר יהיה להפעיל מחדש את Cloud Service Mesh בעתיד בצורה חלקה.