Managed Airflow (דור 3) | Managed Airflow (דור 2) | Managed Airflow (דור 1 מדור קודם)
Apache Airflow כולל ממשק משתמש באינטרנט שנקרא Airflow UI, שבו אפשר לנהל DAG של Airflow, לראות יומני הפעלה של DAG, לנטר את Airflow ולבצע פעולות ניהוליות.
מידע על שרת האינטרנט של Airflow
לכל סביבת Managed Airflow יש שרת אינטרנט שמריץ את ממשק המשתמש של Airflow. שרת האינטרנט הוא חלק מארכיטקטורת סביבת Airflow מנוהלת.
לפני שמתחילים
צריך להיות לכם תפקיד שמאפשר לכם לראות סביבות Managed Airflow. מידע נוסף מופיע במאמר בקרת גישה.
במהלך יצירת הסביבה, Managed Airflow מגדיר את כתובת ה-URL של שרת האינטרנט שמריץ את ממשק המשתמש של Airflow. אי אפשר לשנות את כתובת ה-URL.
Managed Airflow (Gen 2) תומך בתכונה Airflow UI Access Control (Airflow Role-Based Access Control) לממשק המשתמש של Airflow.
אם האפשרות אמצעי בקרה על API > אפליקציות צד שלישי שלא הוגדרו > המשתמשים לא יכולים להיכנס לאפליקציות צד שלישי מופעלת ב-Google Workspace, ואפליקציית Apache Airflow ב-Managed Airflow לא מורשית באופן מפורש, אז המשתמשים לא יכולים לגשת לממשק המשתמש של Airflow אלא אם הם מאשרים את הגישה לאפליקציה באופן מפורש. כדי לאפשר גישה, מבצעים את השלבים שמפורטים במאמר איך מאשרים גישה לממשק המשתמש של Airflow ב-Google Workspace.
אם משתמשים בקישורי גישה מודעת-הקשר של Chrome Enterprise Premium עם רמות גישה שמסתמכות על מאפייני מכשיר, ואפליקציית Apache Airflow ב-Managed Airflow לא מוחרגת, אי אפשר לגשת לממשק המשתמש של Airflow בגלל לולאת התחברות. כדי לאפשר גישה, צריך לבצע את השלבים שמפורטים במאמר איך מאפשרים גישה לממשק המשתמש של Airflow בהתאמות של בקרת גישה מבוססת-הקשר.
אם כללי תעבורת נתונים נכנסת (ingress) מוגדרים ב-service perimeter של VPC Service Controls שמגן על הפרויקט, וכלל תעבורת הנתונים הנכנסת שמאפשר גישה לשירות Managed Airflow משתמש בסוג הזהות
ANY_SERVICE_ACCOUNTאוANY_USER_ACCOUNT, המשתמשים לא יכולים לגשת לממשק המשתמש של Airflow, והם נתקעים בלולאת התחברות. מידע נוסף על פתרון הבעיה הזו זמין במאמר מתן גישה לממשק המשתמש של Airflow בכללי הכניסה של VPC Service Controls.ב-Managed Airflow אין תמיכה בשימוש בזהויות של צד שלישי בכללי כניסה ויציאה כדי לאפשר פעולות בממשק המשתמש של Apache Airflow. עם זאת, אפשר להשתמש ב
ANY_IDENTITYסוג הזהות בכללי כניסה ויציאה כדי לאפשר גישה לכל הזהויות, כולל זהויות של צד שלישי. מידע נוסף על סוג הזהותANY_IDENTITYזמין במאמר כללי כניסה ויציאה.
גישה לממשק המשתמש של Airflow
ב-Managed Airflow (דור 2), שרת האינטרנט של Airflow פועל כעומס עבודה באשכול של הסביבה. שרת האינטרנט נפרס בדומיין composer.googleusercontent.com ומספק גישה לממשק המשתמש של Airflow.
ב-Managed Airflow (דור 2) הגישה לממשק ניתנת על סמך זהויות המשתמשים והקשרים של מדיניות IAM שהוגדרו למשתמשים. בהשוואה ל-Managed Airflow (Legacy Gen 1), Managed Airflow (Gen 2) משתמש במנגנון אחר שלא מסתמך על שרת proxy לאימות זהויות (IAP).
גישה לממשק המשתמש של Airflow ממסוף Google Cloud
כדי לגשת לממשק המשתמש של Airflow ממסוף Google Cloud :
נכנסים לדף Environments במסוף Google Cloud .
בעמודה Airflow webserver, לוחצים על הקישור Airflow של הסביבה.
נכנסים לחשבון Google עם ההרשאות המתאימות.
קבלת כתובת ה-URL של ממשק המשתמש של Airflow באמצעות Google Cloud CLI
אפשר לגשת לממשק המשתמש של Airflow מכל דפדפן אינטרנט. כדי לקבל את כתובת ה-URL של ממשק המשתמש של Airflow, מריצים את הפקודה הבאה ב-CLI של Google Cloud:
gcloud composer environments describe ENVIRONMENT_NAME \
--location LOCATION
מחליפים את מה שכתוב בשדות הבאים:
-
ENVIRONMENT_NAME: השם של הסביבה. -
LOCATION: האזור שבו נמצאת הסביבה.
הפקודה Google Cloud CLI מציגה את המאפיינים של סביבת Managed Airflow, כולל כתובות ה-URL של ממשק המשתמש של Airflow.
כתובות ה-URL שצוינו הן airflowUri ו-airflowByoidUri:
- כתובת ה-URL
airflowUriנמצאת בשימוש בחשבונות Google. - כתובת ה-URL
airflowByoidUriמשמשת זהויות חיצוניות אם מגדירים איחוד שירותי אימות הזהות של כוח עבודה בפרויקט.
config:
airflowUri: https://example-dot-us-central1.composer.googleusercontent.com
airflowByoidUri: https://example-dot-us-central1.composer.byoid.googleusercontent.com
הפעלה מחדש של שרת האינטרנט
כשמבצעים ניפוי באגים או פותרים בעיות בסביבות Managed Airflow, לפעמים אפשר לפתור בעיות מסוימות על ידי הפעלה מחדש של שרת האינטרנט של Airflow. אפשר להפעיל מחדש את שרת האינטרנט באמצעות restartWebServer API או באמצעות הפקודה restart-web-server ב-Google Cloud CLI:
gcloud composer environments restart-web-server ENVIRONMENT_NAME \
--location=LOCATION
מחליפים את מה שכתוב בשדות הבאים:
-
ENVIRONMENT_NAME: השם של הסביבה. -
LOCATION: האזור שבו נמצאת הסביבה.
הגדרת גישה לרשת של שרת אינטרנט
פרמטרי הגישה לשרת האינטרנט של Airflow לא תלויים בהגדרות הרשת של הסביבה. במקום זאת, צריך להגדיר את הגישה לשרת האינטרנט בנפרד. לדוגמה, בסביבת כתובות IP פרטיות עדיין אפשר לגשת לממשק המשתמש של Airflow מהאינטרנט.
אי אפשר להגדיר את טווחי כתובות ה-IP המותרים ככתובות IP פרטיות.
המסוף
נכנסים לדף Environments במסוף Google Cloud .
ברשימת הסביבות, לוחצים על שם הסביבה. הדף Environment details ייפתח.
עוברים לכרטיסייה Environment configuration (הגדרת הסביבה).
בקטע תצורת רשת, מאתרים את הפריט בקרת גישה לשרת אינטרנט ולוחצים על עריכה.
בתיבת הדו-שיח Web server network access control (בקרת גישה לרשת של שרת האינטרנט):
כדי לספק גישה לשרת האינטרנט של Airflow מכל כתובות ה-IP, בוחרים באפשרות Allow access from all IP addresses.
כדי להגביל את הגישה רק לטווחים ספציפיים של כתובות IP, בוחרים באפשרות Allow access only from specific IP addresses. בשדה טווח כתובות IP, מציינים טווח כתובות IP בסימון CIDR. בשדה Description, מציינים תיאור אופציונלי לטווח הזה. אם רוצים לציין יותר מטווח אחד, לוחצים על הוספת טווח כתובות IP.
כדי לחסום את הגישה לכל כתובות ה-IP, בוחרים באפשרות Allow access only from specific IP addresses ולוחצים על Delete item לצד הרשומה הריקה של טווח כתובות ה-IP.
gcloud
כשמעדכנים סביבה, הארגומנטים הבאים שולטים בפרמטרים של הגישה לשרת האינטרנט:
--web-server-allow-allמאפשר גישה ל-Airflow מכל כתובות ה-IP. זו האפשרות שמוגדרת כברירת המחדל.
--update-web-server-allow-ipמגביל את הגישה רק לטווחים ספציפיים של כתובות IP של מקורות. כדי לציין כמה טווחים של כתובות IP, משתמשים בארגומנט הזה כמה פעמים.--web-server-deny-allאוסר גישה לכל כתובות ה-IP.
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--update-web-server-allow-ip ip_range=WS_IP_RANGE,description=WS_RANGE_DESCRIPTION
מחליפים את מה שכתוב בשדות הבאים:
-
ENVIRONMENT_NAME: השם של הסביבה. -
LOCATION: האזור שבו נמצאת הסביבה. -
WS_IP_RANGE: טווח כתובות ה-IP, בסימון CIDR, שיכולות לגשת לממשק המשתמש של Airflow. -
WS_RANGE_DESCRIPTION: תיאור טווח כתובות ה-IP.
דוגמה:
gcloud composer environments update example-environment \
--location us-central1 \
--update-web-server-allow-ip ip_range=192.0.2.0/24,description="example range" \
--update-web-server-allow-ip ip_range=192.0.4.0/24,description="example range 2"
API
יוצרים בקשת API מסוג [
environments.patch][api-patch].בבקשה הזו:
בפרמטר
updateMask, מציינים את המסכהconfig.webServerNetworkAccessControl.בגוף הבקשה, מציינים איך צריך לשמור את יומני המשימות של Airflow:
כדי לספק גישה ל-Airflow מכל כתובות ה-IP, צריך לציין רכיב
configריק (אסור שרכיבwebServerNetworkAccessControlיהיה קיים).כדי להגביל את הגישה רק לטווחים ספציפיים של כתובות IP, מציינים טווח אחד או יותר ב-
allowedIpRanges.כדי לאסור גישה לכל כתובות ה-IP, צריך לציין רכיב
webServerNetworkAccessControlריק. הרכיבwebServerNetworkAccessControlחייב להיות נוכח, אבל אסור לו להכיל רכיבallowedIpRanges.
{
"config": {
"webServerNetworkAccessControl": {
"allowedIpRanges": [
{
"value": "WS_IP_RANGE",
"description": "WS_RANGE_DESCRIPTION"
}
]
}
}
}
מחליפים את מה שכתוב בשדות הבאים:
-
WS_IP_RANGE: טווח כתובות ה-IP, בסימון CIDR, שיכולות לגשת לממשק המשתמש של Airflow. -
WS_RANGE_DESCRIPTION: תיאור טווח כתובות ה-IP.
דוגמה:
// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.webServerNetworkAccessControl
{
"config": {
"webServerNetworkAccessControl": {
"allowedIpRanges": [
{
"value": "192.0.2.0/24",
"description": "example range"
},
{
"value": "192.0.4.0/24",
"description": "example range 2"
}
]
}
}
}
Terraform
בבלוק allowed_ip_range, בשורה web_server_network_access_control specify IP ranges that can access שרת אינטרנט.
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
web_server_network_access_control {
allowed_ip_range {
value = "WS_IP_RANGE"
description = "WS_RANGE_DESCRIPTION"
}
}
}
}
מחליפים את מה שכתוב בשדות הבאים:
-
WS_IP_RANGE: טווח כתובות ה-IP, בסימון CIDR, שיכולות לגשת לממשק המשתמש של Airflow. -
WS_RANGE_DESCRIPTION: תיאור טווח כתובות ה-IP.
דוגמה:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
web_server_network_access_control {
allowed_ip_range {
value = "192.0.2.0/24"
description = "example range"
},
allowed_ip_range {
value = "192.0.4.0/24"
description = "example range 2"
}
}
}