התקנה של כלים תלויים ואימות של האשכול

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

התקנת הכלים הנדרשים

אפשר להריץ את asmcli ב-Cloud Shell או במחשב המקומי שבו פועל Linux. כל הכלים הנדרשים מותקנים מראש ב-Cloud Shell.

אם אתם מריצים את asmcli באופן מקומי, ודאו שהכלים הבאים מותקנים אצלכם:

  • Google Cloud CLI
  • כלי שורת הפקודה הרגילים: awk,‏ curl,‏ grep,‏ sed ו-tr
  • git
  • kubectl
  • jq
  • (אופציונלי, כדי לבדוק את הקישוריות) netcat ‏ (nc)

הגדרת gcloud

צריך לבצע את השלבים הבאים גם אם משתמשים ב-Cloud Shell.

  1. כדי לאמת עם Google Cloud CLI:

    gcloud auth login --project PROJECT_ID
    
  2. מעדכנים את הרכיבים:

    gcloud components update
    
  3. אם אתם מתקינים את Cloud Service Mesh באשכול GKE, צריך להגדיר את kubectl כך שיצביע על האשכול.

    gcloud container clusters get-credentials CLUSTER_NAME \
         --location CLUSTER_LOCATION \
         --project PROJECT_ID
    

הורדה של asmcli

בקטע הזה מוסבר איך להוריד את asmcli.

  1. מורידים את הגרסה שמתקינה את Cloud Service Mesh 1.28.2 לספריית העבודה הנוכחית:

    curl https://storage.googleapis.com/csm-artifacts/asm/asmcli_1.28 > asmcli
    

    הפלט אמור להיראות כך:

    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
    100  167k  100  167k    0     0   701k      0 --:--:-- --:--:-- --:--:--  701k
    
  2. הופכים את הסקריפט לניתן להרצה:

    chmod +x asmcli
    

הענקת הרשאות אדמין של אשכול

  1. מוודאים שהגדרתם את ההקשר לאשכול המשתמשים:

    kubectl config use-context CONTEXT
  2. נותנים הרשאות אדמין באשכול לחשבון המשתמש (כתובת האימייל שלכם Google Cloud לכניסה). אתם צריכים את ההרשאות האלה כדי ליצור את הכללים הנדרשים של בקרת גישה מבוססת-תפקידים (RBAC) ל-Cloud Service Mesh:

    kubectl create clusterrolebinding cluster-admin-binding \
      --clusterrole=cluster-admin \
      --user=USER_ACCOUNT

אימות הפרויקט והאשכול

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

asmcli מאמת את הדברים הבאים:

כברירת מחדל, asmcli מוריד ומחלץ את קובץ ההתקנה ומוריד את חבילת ההגדרות asm מ-GitHub לספריית temp. לפני שיוצאים, asmcli מוציא הודעה עם השם של ספריית הטמפ. מומלץ לציין ספרייה להורדות באמצעות האפשרות --output_dir DIR_PATH. האפשרות --output_dir מאפשרת לכם להשתמש בקלות בכלי שורת הפקודה istioctl. (יכול להיות שתצטרכו istioctl כדי לפתור בעיות בהגדרות או להגדיר רשת מרובת אשכולות באשכולות פרטיים של GKE). בנוסף, בספרייה asm/istio/options כלולים קובצי התצורה להפעלת תכונות אופציונליות באמצעות asmcli.

מריצים את הפקודה הבאה כדי לאמת את התצורה ולהוריד את קובץ ההתקנה ואת חבילת asm לספרייה OUTPUT_DIR.

GKE

./asmcli validate \
  --project_id PROJECT_ID \
  --cluster_name CLUSTER_NAME \
  --cluster_location CLUSTER_LOCATION \
  --fleet_id FLEET_PROJECT_ID \
  --output_dir DIR_PATH
  • --project_id, --cluster_name ו---cluster_location מציינים את מזהה הפרויקט שבו נמצא האשכול, את שם האשכול ואת האזור או האזור של האשכול.

  • --fleet_id מזהה הפרויקט של פרויקט המארח של הצי. ‫asmcli validate בודקת שהאשכול רשום ב-Fleet שצוין.

  • --output_dir כוללים את האפשרות הזו כדי לציין ספרייה שבה asmcli מוריד את חבילת asm ומחלץ את קובץ ההתקנה, שמכיל את istioctl, דוגמאות ומניפסטים. אחרת, asmcli מוריד את הקבצים לספרייה tmp. אפשר לציין נתיב יחסי או נתיב מלא. משתנה הסביבה $PWD לא פועל כאן.

מחוץ ל-Google Cloud

מריצים את הפקודה הבאה ב-asmcli validate בפלטפורמות הבאות: Google Distributed Cloud,‏ GKE on AWS,‏ Amazon EKS ו-Microsoft AKS.

  1. מגדירים את ההקשר הנוכחי לאשכול המשתמשים:

    kubectl config use-context CLUSTER_NAME
    
  2. מריצים את הפקודה הבאה כדי לאמת את התצורה ולהוריד את קובץ ההתקנה ואת חבילת asm לספרייה OUTPUT_DIR:

    ./asmcli validate \
      --kubeconfig KUBECONFIG_FILE \
      --fleet_id FLEET_PROJECT_ID \
      --output_dir DIR_PATH \
      --platform multicloud
    
    • --kubeconfig הנתיב אל kubeconfig אפשר לציין נתיב יחסי או נתיב מלא. משתנה הסביבה $PWD לא פועל כאן.

    • --fleet_id מזהה הפרויקט של פרויקט המארח של הצי. ‫asmcli validate בודקת שהאשכול רשום ב-Fleet שצוין.

    • --output_dir כוללים את האפשרות הזו כדי לציין ספרייה שבה asmcli מוריד את חבילת asm ומחלץ את קובץ ההתקנה, שמכיל את istioctl, דוגמאות ומניפסטים. אחרת, asmcli מוריד את הקבצים לספרייה tmp. אפשר לציין נתיב יחסי או נתיב מלא. משתנה הסביבה $PWD לא פועל כאן.

    • --platform multicloud מציין שהפלטפורמה היא לא Google Cloud, למשל פלטפורמה מקומית או פלטפורמה מרובת עננים.

אם הפעולה בוצעה בהצלחה, asmcli מחזירה את הפלט הבא:

asmcli: Setting up necessary files...
asmcli: Using asm_kubeconfig as the kubeconfig...
asmcli: Checking installation tool dependencies...
asmcli: Fetching/writing GCP credentials to kubeconfig file...
asmcli: Verifying connectivity (10s)...
asmcli: kubeconfig set to asm_kubeconfig
asmcli: using context gke_example-project-12345_us-central1_cluster-2
asmcli: Getting account information...
asmcli: Downloading ASM..
asmcli: Downloading ASM kpt package...
fetching package "/asm" from "https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages" to "asm"
asmcli: Checking required APIs...
asmcli: Checking for project example-project-12345...
asmcli: Reading labels for us-central1/cluster-2...
asmcli: Checking for istio-system namespace...
asmcli: Confirming node pool requirements for example-project-12345/us-central1/cluster-2...
asmcli: Checking Istio installations...
asmcli: [WARNING]: There is no way to validate that the meshconfig API has been initialized.
asmcli: [WARNING]: This needs to happen once per GCP project. If the API has not been initialized
asmcli: [WARNING]: for example-project-12345, please re-run this tool with the --enable_gcp_components
asmcli: [WARNING]: flag. Otherwise, installation will succeed but Anthos Service Mesh
asmcli: [WARNING]: will not function correctly.
asmcli: Successfully validated all requirements to install ASM.

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

ERROR: One or more APIs are not enabled. Please enable them and retry, or run
`asmcli` with the '--enable_gcp_apis' flag to allow `asmcli` to enable them
on your behalf.

אם קיבלתם הודעת שגיאה שצריך להריץ את asmcli עם דגל הפעלה, יש לכם את האפשרויות הבאות:

  • כדי לבצע את ההתקנה בפועל, צריך לכלול את הדגל הספציפי מהודעת השגיאה או את הדגל --enable_all כשמריצים את asmcli.

  • אם אתם מעדיפים, אתם יכולים לעדכן את הפרויקט ואת האשכול בעצמכם לפני שתריצו את הפקודה asmcli כמו שמתואר במאמר הגדרה עצמית של הפרויקט ואשכול GKE.

שימו לב: asmcli validate לא מאפשר דגלי הפעלה כי הוא רק בודק שהפרויקט והאשכול מוכנים להתקנה.

בדיקת הדרישות להתקנה ולשדרוג של אשכול

לפני השדרוג, כדאי לוודא שההגדרה שלכם תואמת לגרסה החדשה של Cloud Service Mesh.

  1. עוברים לספרייה שצוינה ב---output_dir.

  2. מריצים את הפקודה הבאה כדי לבדוק את דרישות ההתקנה והשדרוג של אשכול Kubernetes. חשוב לוודא שאתם משתמשים בגרסה של istioctl שמופצת עם הגרסה החדשה של Cloud Service Mesh.

    istioctl experimental precheck
    

מה השלב הבא?