פתרון בעיות בהגדרה ברמת הצי

במסמך הזה מפורטות הוראות לפתרון בעיות שקשורות להגדרה ברמת הצי של אימות מספקי זהויות של צד שלישי.

פתרון בעיות בהגדרה ברמת הצי

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

1. אימות ההפעלה של שירות הזהויות של GKE

כדי לוודא ששירות הזהויות של GKE מופעל בפרויקט, מריצים את הפקודה הבאה:

$ gcloud container fleet identity-service describe

אם לא מופיעות שגיאות, שירות הזהויות של GKE מופעל ואפשר להמשיך להוראה הבאה.

שגיאה: Identity Service Feature for project <your-project-id> is not enabled

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

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

2. צפייה בסטטוס של שירות הזהויות של GKE

כדי לראות את הסטטוס הנוכחי של שירות הזהויות של GKE, מריצים את הפקודה הבאה:

$ gcloud container fleet identity-service describe

הפלט של הפקודה הזו כולל את שני החלקים הבאים:

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

  • membershipStates מציג את המצב הנוכחי של שירות הזהויות של GKE בכל אשכול, כולל ההגדרה הרלוונטית של ספק הזהויות ושגיאות שאולי התרחשו במהלך ההגדרה.

כדי לפתור בעיות באשכול, בקטע membershipStates מחפשים את האשכול ומסתכלים על השדות הבאים:

  • state שדה: membershipStates -> <cluster-identifier> -> identityservice -> state
  • failureReason שדה: membershipStates -> <cluster-identifier> -> identityservice -> failureReason.

דוגמה

אם יש לכם שני אשכולות, helloworld ו-foobar, שרשומים ב-Fleet, הפלט ייראה כך:

Identity Service Feature:
  createTime: '222-11-10T23:05:6.146566392Z'
  membershipSpecs:
    projects/<your-project-number>/locations/<location>/memberships/helloworld:
      identityservice:
        authMethods:
        - name: oidc
          oidcConfig:
            clientId: id
            issuerUri: https://accounts.google.com
            ... other fields
    projects/<your-project-number>/locations/<location>/memberships/foobar:
      identityservice:
        authMethods:
        - name: oidc
          oidcConfig:
            clientId: id
            issuerUri: https://accounts.google.com
            ... other fields
  membershipStates:
    projects/<your-project-number>/location/<location>/memberships/helloworld:
      identityservice:
        failureReason: AIS feature does not support this cluster type
        memberConfig:
          authMethods:
          - name: oidc
            oidcConfig:
              clientId: id
              issuerUri: https://accounts.google.com
              ... other fields
        state: ERROR
      state:
        code: OK
        updateTime: '2022-11-11T20:39:59.556176650Z'
    projects/<your-project-number>/location/<location>/memberships/foobar:
      identityservice:
        memberConfig:
          authMethods:
          - name: oidc
            oidcConfig:
              clientId: id
              issuerUri: https://accounts.google.com
              ... other fields
        state: OK
      state:
        code: OK
        updateTime: '2022-11-11T20:39:59.556176650Z'

  name: projects/<project-number>/locations/global/features/identityservice
  updateTime: '2022-11-11T20:40:31.859321901Z'

3. אימות סטטוס האשכול

כדי לאמת את המצב של שירות הזהויות של GKE באשכול, בודקים את הפרטים הבאים:

  • state value is OK: הערך הזה מציין שלא הייתה שגיאה בהגדרת שירות הזהויות של GKE באשכול עם ההגדרה שצוינה בקטע membershipSpecs.

    אם ההגדרה של האשכול שאתם מנסים לפתור בו בעיות (לדוגמה, helloworld) שונה ב-membershipSpecs וב-membershipStates, סביר להניח שעדכנתם את ההגדרה של האשכול. מחכים כמה דקות עד ששירות הזהויות של GKE יפיץ את השינויים לאשכול, ובודקים שוב את הסטטוס.

    אם ההגדרה של האשכול שאתם מנסים לפתור בו בעיות (למשל, helloworld) זהה ב-membershipSpecs וב-membershipStates, אז שירות הזהויות של GKE הוגדר בצורה נכונה.

  • השדה state הוא ERROR: המשמעות היא שהיו שגיאות בהגדרת שירות הזהויות של GKE באשכול עם ההגדרה שצוינה בקטע membershipSpecs.

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

פתרון בעיות נפוצות

‫GKE Identity Service API לא מופעל

הבעיה הזו מתרחשת אם לא מפעילים את GKE Identity Service API.

הודעת השגיאה

anthosidentityservice.googleapis.com is not enabled

הפתרון

כדי להפעיל את ה-API, מריצים את הפקודה הבאה:

$ gcloud services enable anthosidentityservice.googleapis.com

סוג האשכול לא נתמך

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

הודעת השגיאה

GKE Identity Service feature does not support this cluster type

הפתרון

למידע על סוגי האשכולות הנתמכים, אפשר לעיין במאמר בנושא סוגי אשכולות או לפנות לתמיכה של Google Cloud כדי לבקש סוג אשכול חדש .

נמצאו פרוטוקולים שלא נתמכים בהגדרה

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

הודעת השגיאה

unsupported protocol found in configuration, aborting reconciliation.

הפתרון

ההגדרה של שירות הזהויות של GKE ברמת ה-Fleet תומכת בפעולות הבאות:

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

kubectl --kubeconfig CLUSTER_KUBECONFIG -n kube-public edit clientconfig default

מחליפים את הערך CLUSTER_KUBECONFIG בנתיב לקובץ kubeconfig של האשכול. אם יש כמה הקשרים ב-kubeconfig, נעשה שימוש בהקשר הנוכחי. יכול להיות שתצטרכו לאפס את ההקשר הנוכחי לאשכול הנכון לפני שתריצו את הפקודה.

לאשכול אין הגדרת זהות

הבעיה הזו מתרחשת כשלא מוחלת הגדרה על האשכול.

הודעת השגיאה

Authentication configuration is not present for this membership

הפתרון

מחילים הגדרת זהות על האשכול לפי ההוראות במאמר הגדרת אשכולות.

חסרה הרשאת IAM של אדמין ב-GKE Hub

הבעיה הזו מתרחשת כשאין לכם הרשאת תפקיד gkehub.admin בפרויקט שבו אתם משתמשים.

הודעות שגיאה

PERMISSION_DENIED: Permission 'gkehub.memberships.list' denied on '`projects//locations//memberships`'
PERMISSION_DENIED: Permission 'gkehub.features.get' denied on '`projects//locations/global/features/identityservice`'
PERMISSION_DENIED: Permission 'gkehub.features.delete' denied on '`projects//locations/global/features/identityservice`'
PERMISSION_DENIED: Permission 'gkehub.features.create' denied on '`projects//locations/global/features/identityservice`'

הפתרון

בעלי הפרויקט עם המזהה project_id צריכים להריץ את הפקודה הבאה:

gcloud projects add-iam-policy-binding project_id --member=user:USER_ID --role=roles/gkehub.admin

מחליפים את USER_ID בחשבון Google שלכם.

ספקי זהויות לא ייחודיים שמופיעים בהגדרת זהות

הבעיה הזו מתרחשת כשלתצורה של שירות הזהויות של GKE עבור אשכול יש אותו ערך name לכמה ספקי זהויות.

הודעת השגיאה

Configuration contains multiple identity providers with the same name

הפתרון

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

קיימים כמה ספקים מסוג google בהגדרת הזהות

הבעיה הזו מתרחשת כשה-ClientConfig מוגדר עם כמה הגדרות מסוג google.

הודעת השגיאה

configuration contains multiple identity providers of type 'google'

הפתרון

בקטע spec/authentication של ההגדרה יכולה להיות לכל היותר הגדרה אחת מהסוג google.

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

kubectl --kubeconfig CLUSTER_KUBECONFIG -n kube-public edit clientconfig default

מחליפים את הערך CLUSTER_KUBECONFIG בנתיב לקובץ kubeconfig של האשכול. אם יש כמה הקשרים ב-kubeconfig, נעשה שימוש בהקשר הנוכחי. יכול להיות שתצטרכו לאפס את ההקשר הנוכחי לאשכול הנכון לפני שתריצו את הפקודה.

שגיאה באחזור ההגדרה של משאב מותאם אישית של ClientConfig

הבעיה הזו מתרחשת כשיש שגיאה בשליפת ההגדרה של משאב בהתאמה אישית של ClientConfig מהאשכול.

הודעת השגיאה

error fetching the ClientConfig's Custom Resource Definition: ERROR_REASON

הפתרון

כדי לפתור את הבעיה הזו, צריך להשתמש בפרטים שמוצגים בERROR_REASON.

שגיאה בעדכון של GKE Identity Service ClientConfig

הבעיה הזו מתרחשת כשיש שגיאה בעדכון של ClientConfig באשכול.

הודעת השגיאה

Error updating AIS ClientConfig: ERROR_REASON

הפתרון

כדי לפתור את הבעיה הזו, צריך להשתמש בפרטים שמוצגים בERROR_REASON>.

‫ClientConfig לא קיים באשכול

הבעיה הזו מתרחשת כשקובץ ClientConfig, שאמור להיווצר כשמתקינים את שירות הזהויות של GKE, לא נמצא באשכול. היעדר ClientConfig מצביע על כך ששירות הזהויות של GKE לא הותקן בצורה נכונה באשכול.

הודעת השגיאה

ClientConfig CR not present, expected to be created when AIS was installed

הפתרון

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

פוד של שירות הזהויות ב-GKE לא הופעל

הבעיה הזו מתרחשת כשהפוד של שירות הזהויות של GKE נמצא במצב pending.

הודעת השגיאה

GKE Identity Service pod is not running (pending)

הפתרון

הבעיה הזו אמורה להיפתר באופן אוטומטי תוך כמה דקות, ואז ה-pod של שירות הזהויות של GKE יעבור למצב running.