קישור קבוצות Google ל-GKE ב-AWS

במאמר הזה מוסבר איך להתחבר ל-GKE ב-AWS כחברים בקבוצה ב-Google.

יעיל יותר להשתמש בקבוצות Google כדי להעניק גישה לאשכול מאשר ליצור הרשאות נפרדות למשתמשים פרטיים. לדוגמה, נניח שרוצים להוסיף 50 משתמשים לקבוצת האדמינים של האשכול, 75 משתמשים לקבוצת העורכים ו-100 משתמשים לקבוצת הקוראים. כדי לאפשר לכל המשתמשים האלה להתחבר לאשכול, תצטרכו ליצור כללי RBAC בקובץ המניפסט של Kubernetes עבור 225 משתמשים. לעומת זאת, אם תפעילו גישה לאשכול באמצעות קבוצות Google, תוכלו לחסוך זמן כי תצטרכו ליצור כללי RBAC רק לשלוש קבוצות Google.

לפני שמתחילים

כדי להתחבר לאשכול כחברים בקבוצת Google, צריך לעמוד בדרישות המוקדמות הבאות:

  1. מוודאים שמותקנת הגרסה העדכנית של Google Cloud CLI. מידע על עדכון ה-CLI של gcloud זמין במאמר בנושא gcloud components update.

  2. משתמשים ב-GKE ב-AWS בגרסה 1.25 ומעלה, שנדרשת לגישה באמצעות שער חיבור.kubectl

חיבור לאשכול באמצעות קבוצות Google

כדי לתת לקבוצות Google הרשאה להתחבר ל-GKE ב-AWS, מבצעים את השלבים הבאים:

  1. מפעילים את ממשקי ה-API‏ connectgateway ו-cloudresourcemanager באמצעות הפקודה הבאה:

      gcloud services enable --project=PROJECT_ID \
          connectgateway.googleapis.com \
          cloudresourcemanager.googleapis.com
    

    מחליפים את PROJECT_ID במזהה של פרויקט AWS.

  2. אם הקבוצה gke-security-groups לא קיימת, יוצרים אותה כקבוצה בדומיין של הפרויקט.

  3. יוצרים קבוצה אחת או יותר של קבוצות משנה בתוך הקבוצה gke-security-groups לאימות אשכול.

  4. מוסיפים משתמשים לקבוצות המשנה החדשות שנוצרו.

  5. כדי לתת גישה ל-kubectl באמצעות שער חיבור, צריך להקצות תפקידי IAM לקבוצות Google:

    1. בוחרים תפקיד מתאים לקבוצה. התפקיד הזה קובע את אופן האינטראקציה של הקבוצה עם שער החיבור. התפקיד יכול להיות אחד מהתפקידים הבאים: roles/gkehub.gatewayAdmin,‏ roles/gkehub.gatewayEditor, ‏ roles/gkehub.gatewayReader. (שימו לב: בשלב הזה אתם לא מעניקים הרשאות לגבי האשכול – השלב הזה יגיע בהמשך. במקרה הזה, אתם רק קובעים איך משתמשים בקבוצה יכולים לתפעל את שער החיבור.)

    2. מריצים את הפקודה הבאה כדי להקצות את התפקיד לקבוצה:

      gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=group:GROUP_NAME@DOMAIN \
        --role=GATEWAY_ROLE
      

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

      • PROJECT_ID: מזהה הפרויקט ב-Google
      • GROUP_NAME: השם של הקבוצה שרוצים לתת לה גישה
      • DOMAIN: הדומיין שלכם ב-Google Workspace
      • GATEWAY_ROLE: התפקיד שנבחר. לדוגמה, roles/gkehub.gatewayAdmin, ‏ roles/gkehub.gatewayEditor או roles/gkehub.gatewayReader.
  6. במניפסט של Kubernetes, מגדירים את ההרשאות של כל קבוצת Google באשכול. לדוגמה, המניפסט הבא מקצה לקבוצת Google‏ cluster-admin-team את התפקיד של אדמין אשכול:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: gateway-cluster-admin-group
    subjects:
    - kind: Group
      name: cluster-admin-team@example.com
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io
    
  7. שומרים את המניפסט בקובץ ומריצים את הפקודה הבאה כדי להחיל אותו על האשכול:

    kubectl apply -kubeconfig=KUBECONFIG_PATH -f FILENAME
    

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

    • KUBECONFIG_PATH: הנתיב לקובץ kubeconfig.
    • FILENAME: השם של קובץ המניפסט שיצרתם.

אחרי שמבצעים את השלבים האלה, משתמשים ששייכים לקבוצות Google מסוימות יכולים להתחבר לאשכול. בדוגמה שצוינה, משתמשים ששייכים לקבוצת Google‏ cluster-admin-team יכולים להתחבר לאשכול כאדמינים.