פתרון בעיות ביצירת סביבה

Managed Airflow (דור 3) | Managed Airflow (דור 2) | Managed Airflow (דור 1 מדור קודם)

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

מידע על פתרון בעיות שקשורות לעדכון ולשדרוג של סביבות זמין במאמר פתרון בעיות בעדכונים ובשדרוגים של סביבות.

כשיוצרים סביבות Managed Airflow, רוב הבעיות נובעות מהסיבות הבאות:

  • בעיות בהרשאות של חשבון שירות.

  • מידע שגוי על חומת אש, DNS או ניתוב.

  • בעיות שקשורות לרשת. לדוגמה, הגדרת VPC לא תקינה, כתובות IP שמתנגשות או טווחי כתובות IP ברשת שהם צרים מדי.

  • בעיות שקשורות למכסה.

  • מדיניות ארגון לא תואמת.

אין הרשאות מספיקות ליצירת סביבה

אם אי אפשר ליצור סביבה ב-Managed Airflow כי אין לחשבון שלכם הרשאות מספיקות, מוצגות הודעות השגיאה הבאות:

ERROR: (gcloud.composer.environments.create) PERMISSION_DENIED: The caller
does not have permission

או

ERROR: (gcloud.composer.environments.create) PERMISSION_DENIED: User not
authorized to act as service account <service-account-name>.
The user must be granted iam.serviceAccounts.actAs permission, included in
Owner, Editor, Service Account User role. See https://cloud.google.com/iam/docs
/understanding-service-accounts for additional details.

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

  • ב-Managed Airflow (דור 2), מוודאים שחשבון השירות Cloud Composer Service Agent‏ (service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com) קיבל את התפקיד Cloud Composer v2 API Service Agent Extension.

  • מוודאים שלסוכן השירות של Google APIs‏ (Google APIs Service Agent)‏ (PROJECT_NUMBER@cloudservices.gserviceaccount.com) מוקצה התפקיד עריכה.

  • במסגרת ההגדרה של VPC משותף, פועלים לפי ההוראות במאמר הגדרת VPC משותף.

לחשבון השירות של הסביבה אין הרשאות מספיקות

כשיוצרים סביבת Managed Airflow, מציינים חשבון שירות שמריץ את צמתי אשכול GKE של הסביבה. אם לחשבון השירות הזה אין מספיק הרשאות לפעולה המבוקשת, המערכת של Managed Airflow מציגה את השגיאה הבאה:

Errors in: [Web server]; Error messages:
  Creation of airflow web server version failed. This may be an intermittent
  issue of the App Engine service. You may retry the operation later.
{"ResourceType":"appengine.v1.version","ResourceErrorCode":"504","ResourceError
Message":"Your deployment has failed to become healthy in the allotted time
and therefore was rolled back. If you believe this was an error, try adjusting
the 'app_start_timeout_sec' setting in the 'readiness_check' section."}

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

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

אם יצירת הסביבה נכשלת, Managed Airflow יוצר את הודעת האזהרה הבאה אחרי שמתרחשת שגיאה: The issue may be caused by missing IAM roles in the following Service Accounts ....

בהודעת האזהרה מפורטות סיבות אפשריות לשגיאה. ‫Airflow מנוהל בודק אם יש בחשבונות השירות בפרויקט את התפקידים הנדרשים, ואם התפקידים האלה לא קיימים, הוא יוצר את הודעת האזהרה הזו.

פתרון: בודקים שלחשבונות השירות שמוזכרים בהודעת האזהרה יש את התפקידים הנדרשים. מידע נוסף על תפקידים והרשאות ב-Managed Airflow זמין במאמר בקרת גישה.

במקרים מסוימים, אפשר להתעלם מהאזהרה הזו. ב-Managed Airflow לא מתבצעת בדיקה של הרשאות ספציפיות שמוקצות לתפקידים. לדוגמה, אם אתם משתמשים בתפקידי IAM בהתאמה אישית, יכול להיות שלחשבון השירות שמוזכר בהודעת האזהרה כבר יש את כל ההרשאות הנדרשות. במקרה כזה, אפשר להתעלם מהאזהרה הזו.

מדיניות ארגונית לא תואמת

כדי ליצור סביבות Managed Airflow בהצלחה, צריך להגדיר את המדיניות הבאה בצורה מתאימה.

מדיניות הארגון ‫Managed Airflow (דור 3) ‫Managed Airflow (דור 2) ‫Managed Airflow (דור קודם 1)
compute.disableSerialPortLogging מותר להזין כל ערך חייב להיות מושבת מושבת בגרסאות מוקדמות יותר מ-1.13.0; אחרת, כל ערך
compute.requireOsLogin מותר להזין כל ערך מותר להזין כל ערך חייב להיות מושבת
compute.vmCanIpForward מותר להזין כל ערך מותר להזין כל ערך צריך לאפשר את ההגדרה (נדרש לאשכולות GKE בבעלות Airflow מנוהל) אם לא מוגדר מצב מקורי של VPC (באמצעות כתובת IP של כינוי)
compute.vmExternalIpAccess מותר להזין כל ערך צריך לאפשר שימוש בכתובות IP ציבוריות צריך לאפשר שימוש בכתובות IP ציבוריות
compute.restrictVpcPeering אפשר לאכוף אי אפשר לאכוף אי אפשר לאכוף
compute.disablePrivateServiceConnectCreationForConsumers מותר להזין כל ערך אי אפשר לאסור על SERVICE_PRODUCERS בסביבות עם כתובות IP פרטיות וציבוריות. לא משפיע על סביבות קיימות, הן יכולות לפעול כשהמדיניות הזו מופעלת. אי אפשר לאסור על SERVICE_PRODUCERS בסביבות עם כתובות IP פרטיות. לא משפיע על סביבות קיימות, הן יכולות לפעול כשהמדיניות הזו מופעלת.
compute.restrictPrivateServiceConnectProducer כשההגדרה פעילה, צריך להוסיף את הארגון google.com לרשימת ההיתרים כשההגדרה פעילה, צריך להוסיף את הארגון google.com לרשימת ההיתרים מותר להזין כל ערך

מדיניות לא תואמת לקביעת גבול הגישה לחשבונות משתמשים (PAB)

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

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

Operations on resource are denied due to an IAM Principal Access Boundary Policy.

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

הפתרון:

הגבלת השירותים שנעשה בהם שימוש בארגון או בפרויקט

אדמינים של ארגונים או פרויקטים יכולים להגביל את השימוש בשירותי Google בפרויקטים שלהם באמצעות האילוץ gcp.restrictServiceUsage של מדיניות הארגון.

כשמשתמשים במדיניות הארגון הזו, חשוב לאפשר את כל השירותים שנדרשים על ידי Managed Airflow.

המאמרים הבאים