הפעלת תכונות אופציונליות במישור הבקרה המנוהל

בדף הזה מוסבר איך להפעיל תכונות אופציונליות ב-Cloud Service Mesh מנוהל. מידע על מישור הבקרה בתוך האשכול מופיע במאמר הפעלת תכונות אופציונליות במישור הבקרה בתוך האשכול.

כשמפעילים שירות מנוהל של Cloud Service Mesh, התכונות הנתמכות משתנות בהתאם להטמעה של רמת הבקרה, ותכונות מסוימות זמינות רק דרך רשימת היתרים. פרטים נוספים מופיעים במאמר בנושא תכונות נתמכות. אם אתם משתמשים היום בהגדרה שמבוססת על IstioOperator, הכלי Migrate from IstioOperator יכול לעזור לכם להמיר אותה להגדרה שנתמכת על ידי מישור הבקרה המנוהל.

תמונת proxy ללא הפצה

  • אם עברתם ישירות אל Cloud Service Mesh עם TRAFFIC_DIRECTOR הטמעה מנוהלת של מישור הבקרה, נתמך רק סוג התמונה distroless. אי אפשר לשנות אותו.

  • אם הצי שלכם השתמש במקור בהטמעה של ISTIOD מישור הבקרה ועבר מיגרציה להטמעה של TRAFFIC_DIRECTOR, סוג התמונה לא השתנה במהלך המיגרציה, ואתם יכולים לשנות את סוג התמונה ל-distroless בעצמכם.

השיטה המומלצת היא להגביל את התוכן של זמן ריצה של קונטיינר רק לחבילות הנדרשות. הגישה הזו משפרת את האבטחה ואת יחס האות לרעש של סורקי חשיפות ופגיעויות נפוצות (CVE). ‫Istio מספק תמונות של שרת proxy שמבוססות על תמונות בסיסיות ללא הפצה.

תמונת ה-proxy ללא מערכת הפעלה לא מכילה קבצים בינאריים מלבד ה-proxy. לכן אי אפשר exec מעטפת או להשתמש ב-curl, ב-ping או בכלי ניפוי באגים אחרים בתוך הקונטיינר. עם זאת, אפשר להשתמש בקונטיינרים זמניים כדי להתחבר ל-Pod של עומס עבודה שפועל, לבדוק אותו ולהריץ פקודות מותאמות אישית. לדוגמה, ראו איסוף יומנים של Cloud Service Mesh.

ההגדרה הבאה מאפשרת שימוש בתמונות distroless בכל Cloud Service Mesh. כדי שהשינוי בסוג התמונה ייכנס לתוקף, כל פוד צריך להפעיל מחדש ולהזריק מחדש.

     apiVersion: v1
     kind: ConfigMap
     metadata:
       name: istio-release-channel
       namespace: istio-system
     data:
       mesh: |-
         defaultConfig:
           image:
             imageType: distroless

אפשר לבטל את ההגדרה imageType באמצעות הערת ה-Pod הבאה.

sidecar.istio.io/proxyImageType: debug

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

kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME

מכיוון שלא נדרש דימוי בסיס לניפוי באגים, ברוב סוגי ניפוי הבאגים של Proxy צריך להשתמש ב-gcloud beta container fleet mesh debug proxy-status / proxy-config (פרטים).

מדיניות תנועה יוצאת

כברירת מחדל, הערך של outboundTrafficPolicy הוא ALLOW_ANY. במצב הזה, כל התנועה לכל שירות חיצוני מותרת. כדי לשלוט בתעבורה ולהגביל אותה רק לשירותים חיצוניים שמוגדרים עבורם ערכי שירות, אפשר לשנות את התנהגות ברירת המחדל של ALLOW_ANY ל-REGISTRY_ONLY.

  1. ההגדרה הבאה מגדירה את outboundTrafficPolicy ל-REGISTRY_ONLY:

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: istio-release-channel
        namespace: istio-system
      data:
        mesh: |-
          outboundTrafficPolicy:
           mode: REGISTRY_ONLY
    

    כאשר release-channel הוא ערוץ ההפצה שלכם (asm-managed, ‏asm-managed-stable או asm-managed-rapid).

  2. אפשר לבצע את שינויי ההגדרות הקודמים הנדרשים ב-configmap באמצעות הפקודה הבאה:

    kubectl edit configmap istio-release-channel -n istio-system -o yaml
    
  3. מריצים את הפקודה הבאה כדי להציג את ה-configmap:

    kubectl get configmap istio-release-channel -n istio-system -o yaml
    
  4. כדי לוודא שהאפשרות outboundTrafficPolicy מופעלת באמצעות REGISTRY_ONLY, מוודאים שהשורות הבאות מופיעות בקטע mesh:.

    ...
    apiVersion: v1
    data:
      mesh: |
        outboundTrafficPolicy:
         mode: REGISTRY_ONLY
    ...
    

אימות משתמשי קצה

אתם יכולים להגדיר אימות משתמשים מנוהל ב-Cloud Service Mesh לאימות משתמשי קצה מבוסס-דפדפן ולבקרת גישה לעומסי העבודה שפרסתם. מידע נוסף זמין במאמר בנושא הגדרת אימות משתמשים ב-Cloud Service Mesh.

הגדרת גרסת ה-TLS המינימלית לעומסי העבודה

אם הצטרפתם ישירות ל-Cloud Service Mesh עם TRAFFIC_DIRECTOR הטמעה מנוהלת של מישור הבקרה, לא תוכלו לשנות את ההגדרה הזו.

אתם יכולים להשתמש בשדה minProtocolVersion כדי לציין את גרסת ה-TLS המינימלית לחיבורי TLS בין עומסי העבודה. מידע נוסף על הגדרת גרסת ה-TLS המינימלית ובדיקת הגדרת ה-TLS של עומסי העבודה זמין במאמר Istio Workload Minimum TLS Version Configuration.

בדוגמה הבאה אפשר לראות הגדרה של ConfigMap שקובעת את גרסת ה-TLS המינימלית לעומסי עבודה ל-1.3:

apiVersion: v1
kind: ConfigMap
metadata:
  name: istio-release-channel
  namespace: istio-system
data:
  mesh: |-
    meshMTLS:
      minProtocolVersion: TLSV1_3