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

בדף הזה מוסבר איך להפעיל תכונות אופציונליות ב-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 בקובץ 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 הוסרה מה-CR IstioOperator כדי למנוע בעיות בשדרוגים וכדי לספק התקנה גמישה יותר. כדי להפעיל mTLS ב-STRICT, צריך להגדיר מדיניות לאימות עמיתים.

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

‫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

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

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.30.4-asm.14
  • מישור נתונים מנוהל – gke.gcr.io/asm/mdp:1.30.4-asm.14
  • פיילוט – gke.gcr.io/asm/pilot:1.30.4-asm.14
  • Proxyv2 - gke.gcr.io/asm/proxyv2:1.30.4-asm.14

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

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

  1. שולפים את התמונות של Cloud Service Mesh:
    docker pull gke.gcr.io/asm/install-cni:1.30.4-asm.14
    docker pull gke.gcr.io/asm/pilot:1.30.4-asm.14
    docker pull gke.gcr.io/asm/proxyv2:1.30.4-asm.14
    
  2. יוצרים משתנה לכתובת ה-URL של הרישום הפרטי:
    export PRIVATE_REGISTRY_URL=PRIVATE_REGISTRY_URL
    
    מחליפים את PRIVATE_REGISTRY_URL בכתובת ה-URL של הרישום הפרטי.
  3. מתייגים את התמונות באמצעות כתובת ה-URL של הרישום הפרטי:
    docker tag gke.gcr.io/asm/install-cni:1.30.4-asm.14 \
     ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/install-cni:1.30.4-asm.14
    docker tag gke.gcr.io/asm/mdp:1.30.4-asm.14 \
     ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/pilot:1.30.4-asm.14
    docker tag gke.gcr.io/asm/proxyv2:1.30.4-asm.14 \
     ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/proxyv2:1.30.4-asm.14
    
  4. מעבירים את התמונות עם התגים למאגר הפרטי:
    docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/install-cni:1.30.4-asm.14
    docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/pilot:1.30.4-asm.14
    docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/proxyv2:1.30.4-asm.14
    
  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

האופן שבו מפעילים את Istio Container Network Interface‏ (CNI) תלוי בסביבה שבה מותקן Cloud Service Mesh.

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

  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.