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

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

כשמתקינים את Cloud Service Mesh בתוך האשכול, התכונות שמופעלות כברירת מחדל משתנות בהתאם לפלטפורמה. אפשר לשנות את הגדרות ברירת המחדל ולהפעיל תכונה אופציונלית על ידי הוספה של קובץ overlay כשמתקינים את Cloud Service Mesh (או משדרגים אותו). קובץ שכבת-על הוא קובץ YAML שמכיל משאב בהתאמה אישית (CR) מסוג IstioOperator שמשמש להגדרת מישור הבקרה. מציינים תכונה אחת לכל קובץ שכבת-על. אפשר להוסיף עוד שכבות-על, וכל קובץ של שכבת-על מבטל את ההגדרה בשכבות הקודמות.

מידע על קובצי שכבת-העל

קבצי השכבות בדף הזה נמצאים בחבילה anthos-service-mesh ב-GitHub. הקבצים האלה מכילים התאמות אישיות נפוצות להגדרת ברירת המחדל. אפשר להשתמש בקבצים האלה כמו שהם, או לבצע בהם שינויים נוספים לפי הצורך.

כשמתקינים את Cloud Service Mesh באמצעות סקריפט asmcli, אפשר לציין קובץ או קבצים של שכבת-על באמצעות האפשרויות --option או --custom_overlay. אם אתם לא צריכים לבצע שינויים בקבצים במאגר anthos-service-mesh, אתם יכולים להשתמש ב---option, והסקריפט יאחזר את הקובץ מ-GitHub בשבילכם. אחרת, אפשר לבצע שינויים בקובץ השכבה ואז להשתמש באפשרות --custom_overlay כדי להעביר אותו אל asmcli.

אל תכללו כמה CR בקובץ שכבת-על אחד יצירת קובצי שכבת-על נפרדים לכל CR
כמה CR ב-YAML אחד קובצי YAML נפרדים לכל CR

איך מפעילים תכונות אופציונליות

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

הפקודה asmcli install מספקת שתי דרכים להפעלת תכונה אופציונלית. השיטה שבה תשתמשו תלויה בשאלה אם אתם צריכים לבצע שינויים בקובץ השכבה.

  • משתמשים ב---option כשלא צריך לבצע שינויים בקובץ השכבה. עם --option,‏ asmcli מאחזר את הקובץ ממאגר GitHub בשבילכם, ולכן אתם צריכים חיבור לאינטרנט.

    ./asmcli install \
      OTHER_FLAGS \
      --option OPTION_NAME
    

    מחליפים את OPTION_NAME באפשרות שרוצים להפעיל. חשוב להשמיט את הסיומת ‎ .yaml ולכלול רק את השם של קובץ השכבה, כמו iap-operator ו-attached-cluster. רשימת האפשרויות זמינה בחבילת anthos-service-mesh.

  • משתמשים ב---custom_overlay כשרוצים להתאים אישית את קובץ השכבת-העל.

    ./asmcli install \
      OTHER_FLAGS \
      --custom_overlay PATH_TO_FILE
    

    מחליפים את PATH_TO_FILE בנתיב לקובץ השכבה שרוצים להשתמש בו.

YAML לתכונות אופציונליות

בקטעים הבאים מופיע קוד ה-YAML להפעלת תכונות אופציונליות ונתמכות.

מצב mTLS STRICT

ההגדרה global.mtls.enabled הוסרה מה-IstioOperator CR כדי למנוע בעיות בשדרוגים וכדי לספק התקנה גמישה יותר. כדי להפעיל STRICT mTLS, במקום זאת צריך להגדיר מדיניות אימות עמיתים.

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

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

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

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    defaultConfig:
      image:
        imageType: distroless

תמונת ה-distroless לא מכילה קבצים בינאריים מלבד ה-proxy. לכן אי אפשר exec מעטפת או להשתמש ב-curl, ב-ping או בכלי עזר אחרים לניפוי באגים בתוך הקונטיינר.

אם מריצים פקודת curl, מופיעה השגיאה הבאה:

error: Internal error occurred: error executing command in container: failed to exec in container: failed to start exec  "<container-id>"
OCI runtime exec failed: exec failed: unable to start container process: exec: "curl": executable file not found in $PATH: unknown

אם מריצים פקודת מעטפת ומופיעה השגיאה הבאה:

error: Internal error occurred: error executing command in container: failed to exec in container: failed to start exec "<container-id>"
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "sh": executable file not found in $PATH: unknown

אם אתם צריכים גישה לכלים האלה עבור פודים ספציפיים, אתם יכולים לעקוף את imageType באמצעות הערת הפוד הבאה.

sidecar.istio.io/proxyImageType: debug

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

kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME

לרוב סוגי ניפוי הבאגים של פרוקסי, צריך להשתמש ב-istioctl proxy-cmd שלא דורש תמונת בסיס לניפוי באגים.

שימוש בשכבת-על מותאמת אישית עבור רישום מותאם אישית

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

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  hub: {private_registry_url}

זו רשימה של תמונות ל-Cloud Service Mesh שצריך לשכפל למאגר קונטיינרים בהתאמה אישית:

  • Install-cni – gke.gcr.io/asm/install-cni:1.28.2-asm.4
  • מישור נתונים מנוהל – gke.gcr.io/asm/mdp:1.28.2-asm.4
  • פיילוט – gke.gcr.io/asm/pilot:1.28.2-asm.4
  • ‫Proxyv2 – gke.gcr.io/asm/proxyv2:1.28.2-asm.4

הוספת תמונות למאגר פרטי

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

  1. שולפים את התמונות של Cloud Service Mesh:
    docker pull gke.gcr.io/asm/install-cni:1.28.2-asm.4
    docker pull gke.gcr.io/asm/mdp:1.28.2-asm.4
    docker pull gke.gcr.io/asm/pilot:1.28.2-asm.4
    docker pull gke.gcr.io/asm/proxyv2:1.28.2-asm.4
    
  2. יוצרים משתנה לכתובת ה-URL של המאגר הפרטי:
    export PRIVATE_REGISTRY_URL=PRIVATE_REGISTRY_URL
    
    מחליפים את PRIVATE_REGISTRY_URL בכתובת ה-URL של הרישום הפרטי.
  3. מתייגים את התמונות באמצעות כתובת ה-URL של המאגר הפרטי:
    docker tag gke.gcr.io/asm/install-cni:1.28.2-asm.4 \
     ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/install-cni:1.28.2-asm.4
    docker tag gke.gcr.io/asm/mdp:1.28.2-asm.4 \
     ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/mdp:1.28.2-asm.4
    docker tag gke.gcr.io/asm/pilot:1.28.2-asm.4 \
     ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/pilot:1.28.2-asm.4
    docker tag gke.gcr.io/asm/proxyv2:1.28.2-asm.4 \
     ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/proxyv2:1.28.2-asm.4
    
  4. מעבירים את התמונות שתויגו למאגר הפרטי:
    docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/install-cni:1.28.2-asm.4
    docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/mdp:1.28.2-asm.4
    docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/pilot:1.28.2-asm.4
    docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/proxyv2:1.28.2-asm.4
    
  5. (אופציונלי) אם אתם משתמשים בשירות קנוני, אתם צריכים להוסיף את תמונות השירות הקנוני למאגר הפרטי שלכם.
    1. שולפים את תמונות השירות הקנוניות של Cloud Service Mesh:
              docker pull gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1
              docker pull gke.gcr.io/asm/canonical-service-controller:1.10.3-asm.16
              
    2. מתייגים את התמונות באמצעות כתובת ה-URL של המאגר הפרטי:
              docker tag gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1 \
              ${PRIVATE_REGISTRY_URL}/gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1
              docker tag gke.gcr.io/asm/canonical-service-controller:1.10.3-asm.16 \
              ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/canonical-service-controller:1.10.3-asm.16
              
    3. מעבירים את התמונות שתויגו למאגר הפרטי:
              docker push ${PRIVATE_REGISTRY_URL}/gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1
              docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/canonical-service-controller:1.10.3-asm.16
              

אם אתם מצליחים לשלוף את התמונות שתויגו מהמאגר הפרטי, סימן שההליך הצליח.

הארכת משך הניקוז של סיום החיבור

כברירת מחדל, Envoy ימתין חמש שניות (5s) עד שחיבורים קיימים יושלמו כש-pod מסתיים את הפעולה.

הערך של pod terminationGracePeriodSeconds חייב להיות גדול מהערך של terminationDrainDuration.

מידע נוסף זמין במאמר בנושא אפשרויות של רשת גלובלית.

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    defaultConfig:
      terminationDrainDuration: 30s

הפעלת יומני גישה

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    accessLogFile: "/dev/stdout"

מידע נוסף זמין במאמר בנושא הפעלת יומני גישה של Envoy.

Cloud Trace

‫Cloud Trace זמין בהתקנות של Cloud Service Mesh בפלטפורמות הבאות:

  • ‫GKE ב- Google Cloud
  • אשכולות GKE Enterprise מקומיים אם מתקינים באמצעות רשות אישורים של Cloud Service Mesh
---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
  values:
    global:
      proxy:
        tracer: stackdriver

מידע נוסף זמין במאמר בנושא גישה לנתוני מעקב.

תעבורת נתונים יוצאת (egress) דרך שערים ליציאת נתונים

מומלץ להתקין שער מוזרק כמו שמתואר במאמר התקנה ושדרוג של שערים. הזרקה, או הזרקה אוטומטית, מתייחסת לשימוש בווּבּהוּקים (webhook) משנים כדי לשנות את המפרטים של Pod בזמן היצירה. משתמשים בהזרקה כדי להוסיף את הגדרת ה-Sidecar של שרת ה-proxy של Envoy לשירותי ה-Mesh, או כדי להגדיר את שרת ה-proxy של Envoy לשערים.

ממשק רשת של קונטיינר Istio

הדרך להפעלת ממשק רשת הקונטיינרים (CNI) של Istio תלויה בסביבה שבה מותקן Cloud Service Mesh.

  1. הפעלת מדיניות רשת

  2. בוחרים את קובץ השכבה העליונה שמתאים לפלטפורמה שלכם.

הפעלת CNI ב-GKE

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    cni:
      enabled: true
      namespace: kube-system
  values:
    cni:
      cniBinDir: /home/kubernetes/bin
      excludeNamespaces:
        - istio-system
        - kube-system

הפעלת CNI בפריסה מקומית

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    cni:
      enabled: true
      namespace: kube-system
  values:
    cni:
      cniBinDir: /opt/cni/bin
      excludeNamespaces:
        - istio-system
        - kube-system
        - gke-system

הפעלת יומני תנועה עבורGoogle Cloud

התקנה של Cloud Service Mesh עם Istio CA מחוץ ל- Google Cloud מדווחת על מדדים ל-Prometheus כברירת מחדל. אפשר להשתמש באפשרות הזו כדי להפעיל דיווח של יומני תנועה במקום זאת, או גם של Prometheus וגם של Stackdriver, כדי שתוכלו להשתמש בלוחות הבקרה של Cloud Service Mesh.

‫Stackdriver בלבד

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  values:
    telemetry:
      enabled: true
      v2:
        enabled: true
        prometheus:
          enabled: false
        stackdriver:
          enabled: true

‫Stackdriver ו-Prometheus

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  values:
    telemetry:
      enabled: true
      v2:
        enabled: true
        prometheus:
          enabled: true
        stackdriver:
          enabled: true

הפעלת מאזן עומסים פנימי

מומלץ להתקין שער מוזרק כמו שמתואר במאמר התקנה ושדרוג של שערים כדי להגדיר מאזן עומסים פנימי ב-GKE. כשמגדירים את שירות השער, כוללים את ההערה: networking.gke.io/load-balancer-type: "Internal"

ניהול אישורים חיצוניים בשער הכניסה

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