הסרת Cloud Service Mesh

בדף הזה מוסבר איך להסיר את Cloud Service Mesh.

הסרת Cloud Service Mesh

כדי להסיר את כל הרכיבים של Cloud Service Mesh, משתמשים בפקודות הבאות. הפקודות האלה מוחקות גם את מרחב השמות istio-system ואת כל ההגדרות של משאבים מותאמים אישית (CRD), כולל כל ה-CRD שהחלתם.

  1. כדי למנוע שיבוש בתנועת הנתונים של האפליקציה:

    • מבצעים שדרוג לאחור של כל כללי מדיניות mTLS מסוג STRICT ל-PERMISSIVE.
    • מסירים את כל כללי המדיניות AuthorizationPolicy שעלולים לחסום תנועה.
  2. משביתים את הניהול האוטומטי באשכול הזה (בין אם הפעלתם אותו ישירות או באמצעות הגדרת ברירת המחדל של הצי):

      gcloud container fleet mesh update --management manual
    
  3. אם האפשרות הזו מופעלת, משביתים את ההזרקה האוטומטית של 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, סימן שההוספה האוטומטית לא הופעלה במרחב השמות.

  4. מפעילים מחדש את עומסי העבודה שהוחדרו להם קבצים משניים כדי להסיר את ה-proxies.

  5. אם אתם משתמשים ב-Cloud Service Mesh מנוהל, צריך להסיר את כל המשאבים של controlplanerevision באשכול:

    kubectl delete controlplanerevision RELEASE_CHANNEL -n istio-system
    

    RELEASE_CHANNEL הוא ערוץ ההפצה שהקציתם, למשל asm-managed, ‏asm-managed-rapid או asm-managed-stable.

  6. מוחקים את ה-webhook מהאשכול, אם הוא קיים.

    ‫Cloud Service Mesh בתוך האשכול

    מוחקים את validatingwebhooksconfiguration ואת mutatingwebhookconfiguration.

    kubectl delete validatingwebhookconfiguration,mutatingwebhookconfiguration -l operator.istio.io/component=Pilot
    

    Managed Cloud Service Mesh

    א. מוחקים את validatingwebhooksconfiguration.

    kubectl delete validatingwebhookconfiguration istiod-istio-system-mcp
    

    ב. מוחקים את mutatingwebhookconfiguration.

    kubectl delete mutatingwebhookconfiguration istiod-RELEASE_CHANNEL
    
  7. אחרי שכל עומסי העבודה יפעלו ולא יזוהו שרתי proxy, תוכלו למחוק בבטחה את מישור הבקרה בתוך האשכול כדי להפסיק את החיוב. אם פרסתם מישור בקרה מנוהל, הוא יימחק אוטומטית עם השלב הקודם.

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

    istioctl x uninstall --purge
    

    אם אין מישורי בקרה אחרים, אפשר למחוק את מרחב השמות istio-system כדי להיפטר מכל המשאבים של Cloud Service Mesh. אחרת, צריך למחוק את השירותים שמתאימים לגרסאות של Cloud Service Mesh. כך נמנעת מחיקה של משאבים משותפים, כמו CRD.

  8. מחיקת מרחבי השמות istio-system ו-asm-system:

     kubectl delete namespace istio-system asm-system --ignore-not-found=true
    
  9. כדי לבדוק אם המחיקות הצליחו:

     kubectl get ns
    

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

     NAME                 STATUS       AGE
     istio-system         Terminating  71m
     asm-system           Terminating  71m
    
    1. אם אתם מתכוונים למחוק את האשכולות, או שכבר מחקתם אותם, ודאו שכל אשכול לא רשום ב-Fleet.
  10. אם הפעלתם את ההגדרה שקובעת את ברירת המחדל של צי לניהול Cloud Service Mesh ואתם רוצים להשבית אותה באשכולות עתידיים, אתם יכולים לעשות זאת. אפשר לדלג על השלב הזה אם מסירים את התוסף רק מאשכול אחד.

     gcloud container hub mesh disable --fleet-default-member-config --project FLEET_PROJECT_ID
    

    כאשר FLEET_PROJECT_ID הוא מזהה פרויקט המארח של ה-Fleet.

  11. אם אתם משתמשים ב-Cloud Service Mesh מנוהל, צריך למחוק את הפריסה mdp-controller:

     kubectl delete deployment mdp-controller -n kube-system
    
  12. בודקים אם קובץ ה-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
    
  13. מוחקים את ה-daemonset‏ istio-cni-node:

     kubectl delete daemonset istio-cni-node -n kube-system
    

אחרי שמבצעים את השלבים האלה, כל הרכיבים של Cloud Service Mesh, כולל שרתי proxy, רשויות אישורים באשכולות, תפקידים וקישורים של RBAC, מוסרים מהאשכול באופן שיטתי. במהלך תהליך ההתקנה, חשבון שירות בבעלות Google מקבל את ההרשאות הנדרשות כדי ליצור את משאבי Service mesh באשכול. ההוראות האלה להסרת ההתקנה לא מבטלות את ההרשאות האלה, ולכן אפשר יהיה להפעיל מחדש את Cloud Service Mesh בעתיד בצורה חלקה.