צירוף אשכול שתואם ל-CNCF

אתם יכולים להשתמש באשכולות מצורפים של GKE כדי לנהל באופן מרכזי באשכולות קיימים של Kubernetes שתואמים ל-CNCF ב Google Cloud מסוף, כולל אשכולות שמארחים ב-AWS, ב-Azure או במקומות אחרים. הניהול המרכזי הזה מאפשר לאחד את הפעולות ולפרוס ולהפעיל אשכולות בצורה יעילה יותר בסביבות שונות. במאמר הזה מוסבר לאדמינים של פלטפורמות איך לצרף אשכולות Kubernetes שעומדים בדרישות ל- Google Cloud.

אם אתם מצרפים אשכול Amazon EKS או Azure AKS, כדאי לעיין במאמרים צירוף אשכול EKS או צירוף אשכול AKS. כדי לקבל הוראות לשימוש בדור הקודם של אשכולות GKE מצורפים, אפשר לעיין במאמר צירוף אשכולות של צד שלישי.

אשכולות Kubernetes נתמכים

אתם יכולים להוסיף לצי כל אשכול תואם של Kubernetes עם צמתי x86, ואז לראות אותו במסוף Google Cloud לצד אשכולות GKE.

‫Google לא מאמתת כל הפצה של Kubernetes כדי לוודא שהיא תואמת לתכונות באופן מלא, אבל כל חוסר תאימות שמתגלה מתועד כאן. לפרטים נוספים ולעזרה בפתרון בעיות, אפשר לעיין במאמר בנושא תמיכה בשדרוג ובגרסה של אשכול GKE.

דרישות מוקדמות

מוודאים שהאשכול עומד בדרישות האשכול.

כשמצרפים את האשכול, צריך לציין את הפרטים הבאים:

האזור הניהולי הוא אזור שממנו מנהלים את האשכול המצורף. אפשר לבחור כל אזור נתמך, אבל מומלץ לבחור את האזור שהכי קרוב גיאוגרפית לאשכול. לא מאוחסנים נתוני משתמשים באזור הניהולי. Google Cloud

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

gcloud container attached get-server-config  \
  --location=GOOGLE_CLOUD_REGION

מחליפים את GOOGLE_CLOUD_REGION בשם המיקוםGoogle Cloud שממנו רוצים לנהל את האשכול.

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

במסמכים האלה, הגרסה של אשכולות GKE מצורפים נקראת גרסת הפלטפורמה, כדי להבדיל אותה מגרסת Kubernetes. באשכולות GKE מצורפים משתמשים באותה שיטה למספור גרסאות כמו ב-GKE – לדוגמה, 1.21.5-gke.1. כשמצרפים או מעדכנים את האשכול, צריך לבחור גרסת פלטפורמה שגרסת המשנה שלה זהה לגרסת Kubernetes של האשכול או נמוכה ממנה ברמה אחת. לדוגמה, אתם יכולים לצרף אשכול שמריץ Kubernetes בגרסה ‎1.22.* ‎ עם GKE בגרסה ‎1.21.* ‎ או ‎1.22.*‎.

כך תוכלו לשדרג את האשכול לגרסה המשנית הבאה לפני שתשדרגו את אשכולות GKE המצורפים.

צירוף האשכול

כדי לצרף את האשכול התואם ל-CNCF אל Google Cloud ניהול Fleet, מריצים את הפקודות הבאות:

  1. מוודאים שבקובץ kubeconfig יש רשומה של האשכול שרוצים לצרף. ההוראות הספציפיות משתנות בהתאם להפצה.

  2. מריצים את הפקודה הזו כדי לחלץ את ההקשר של kubeconfig באשכול ולאחסן אותו במשתנה הסביבה KUBECONFIG_CONTEXT:

    KUBECONFIG_CONTEXT=$(kubectl config current-context)
    
  3. הפקודה לרישום האשכול משתנה מעט בהתאם לשאלה אם לאשכול יש מנפיק OIDC ציבורי או פרטי. בוחרים את הכרטיסייה שמתאימה לאשכול:

    מנפיק OIDC פרטי

    משתמשים בפקודה gcloud container attached clusters register כדי לרשום את האשכול:

    gcloud container attached clusters register CLUSTER_NAME \
      --location=GOOGLE_CLOUD_REGION \
      --fleet-project=PROJECT_NUMBER \
      --platform-version=PLATFORM_VERSION \
      --distribution=generic \
      --context=KUBECONFIG_CONTEXT \
      --has-private-issuer \
      --kubeconfig=KUBECONFIG_PATH
    

    מחליפים את מה שכתוב בשדות הבאים:

    • CLUSTER_NAME: שם האשכול. הערך של CLUSTER_NAME צריך לעמוד בדרישות של תקן RFC 1123 Label Names.
    • GOOGLE_CLOUD_REGION: האזור Google Cloud שממנו מנהלים את האשכול
    • PROJECT_NUMBER: פרויקט המארח של ה-Fleet שבו רוצים לרשום את האשכול
    • PLATFORM_VERSION: גרסת הפלטפורמה שבה יש להשתמש עבור האשכול
    • KUBECONFIG_CONTEXT: ההקשר בקובץ kubeconfig לגישה לאשכול
    • KUBECONFIG_PATH: הנתיב לקובץ kubeconfig

    מנפיק OIDC ציבורי

    1. מאחזרים את כתובת ה-URL של מנפיק OIDC של האשכול ושומרים אותה לשימוש מאוחר יותר. ההוראות הספציפיות משתנות בהתאם להפצה.

    2. מריצים את הפקודה הזו כדי לחלץ את ההקשר של kubeconfig באשכול ולאחסן אותו במשתנה הסביבה KUBECONFIG_CONTEXT:

      KUBECONFIG_CONTEXT=$(kubectl config current-context)
      
    3. משתמשים בפקודה gcloud container attached clusters register כדי לרשום את האשכול:

      gcloud container attached clusters register CLUSTER_NAME \
        --location=GOOGLE_CLOUD_REGION \
        --fleet-project=PROJECT_NUMBER \
        --platform-version=PLATFORM_VERSION \
        --distribution=generic \
        --issuer-url=ISSUER_URL \
        --context=KUBECONFIG_CONTEXT \
        --kubeconfig=KUBECONFIG_PATH
      

      מחליפים את מה שכתוב בשדות הבאים:

      • CLUSTER_NAME: שם האשכול. הערך של CLUSTER_NAME צריך לעמוד בדרישות של תקן RFC 1123 Label Names.
      • GOOGLE_CLOUD_REGION: האזור Google Cloud לניהול האשכול
      • PROJECT_NUMBER: פרויקט המארח של ה-Fleet שבו יירשם האשכול
      • PLATFORM_VERSION: הגרסה של GKE Attached Clusters שבה יש להשתמש עבור האשכול
      • ISSUER_URL: כתובת ה-URL של המנפיק שאוחזרה קודם
      • KUBECONFIG_CONTEXT: ההקשר בקובץ kubeconfig לגישה לאשכול, כפי שחולץ קודם
      • KUBECONFIG_PATH: הנתיב לקובץ kubeconfig

איך נותנים הרשאה ל-Cloud Logging ול-Cloud Monitoring

כדי שאשכולות GKE מצורפים יוכלו ליצור ולהעלות יומנים ומדדים של המערכת אלGoogle Cloud, צריך לתת להם הרשאה.

כדי לתת לזהות של עומס העבודה ב-Kubernetes‏ gke-system/gke-telemetry-agentהרשאה לכתוב יומנים ל- Google Cloud Logging ומדדים ל- Google Cloud Monitoring, מריצים את הפקודה הבאה:

gcloud projects add-iam-policy-binding GOOGLE_PROJECT_ID \
  --member="serviceAccount:GOOGLE_PROJECT_ID.svc.id.goog[gke-system/gke-telemetry-agent]" \
  --role=roles/gkemulticloud.telemetryWriter

מחליפים את GOOGLE_PROJECT_ID במזהה הפרויקט של האשכול. Google Cloud

הקישור הזה ב-IAM מעניק גישה לכל האשכולות בפרויקט Google Cloud project להעלאת יומנים ומדדים. צריך להריץ אותה רק אחרי שיוצרים את האשכול הראשון בפרויקט.

הוספת הקישור הזה של IAM תיכשל אלא אם נוצר לפחות אשכול אחד בפרויקט Google Cloud . הסיבה לכך היא שמאגר הזהויות של עומסי עבודה שאליו הוא מתייחס (GOOGLE_PROJECT_ID.svc.id.goog) לא מוקצה עד ליצירת האשכול.