שדרוג סביבות

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

בדף הזה מוסבר איך לשדרג את הסביבה לגרסה חדשה של Managed Airflow או Airflow.

מידע על פעולות שדרוג

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

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

  • ‫Managed Airflow פורס מחדש את רכיבי הסביבה באמצעות גרסאות חדשות של תמונות Managed Airflow.

  • אם בסביבה שלכם היו שינויים בהגדרות של Airflow לפני השדרוג, כמו חבילות PyPI מותאמות אישית או ביטולים של אפשרויות הגדרה של Airflow, השינויים האלה יחולו גם ב-Managed Airflow.

  • Managed Airflow מעדכן את החיבור של Airflow airflow_db כך שיצביע על מסד הנתונים החדש של Cloud SQL.

שדרוג לא משנה את אופן ההתחברות למשאבים בסביבה שלכם, כמו כתובת ה-URL של מאגר הנתונים של הסביבה או שרת האינטרנט של Airflow.

מגבלות של פעולות שדרוג

לפעולות שדרוג יש את המגבלות הבאות:

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

  • אי אפשר לשדרג לאחור לגרסה קודמת של Managed Airflow או Airflow.

  • במסוף Google Cloud , אפשר לשדרג רק לגרסאות הנתמכות האחרונות של Managed Airflow (דור 2).

  • ב-Google Cloud CLI, ב-API או ב-Terraform, אפשר לשדרג סביבה לגרסאות הנתמכות האחרונות, לשלוש גרסאות קודמות של Managed Airflow (דור 2), לגרסת הפאצ' האחרונה של הגרסה המשנית הקודמת ולגרסאות עם ציר זמן מורחב לשדרוג. אי אפשר לשדרג לגרסאות אחרות של Managed Airflow (דור 2), גם אם הן עדיין נתמכות ואפשר להשתמש בהן כדי ליצור סביבה חדשה.

    דוגמה לאפשרויות שדרוג ל-Google Cloud CLI, ל-API ול-Terraform:

    • הגרסאות האחרונות: composer-2.11.5-airflow-*
    • שלוש גרסאות קודמות של Managed Airflow (דור 2): ‫composer-2.11.4-airflow-*, composer-2.11.3-airflow-*, ‫composer-2.11.2-airflow-*.
    • הטלאי האחרון של הגרסה המשנית הקודמת של Managed Airflow (דור 2): composer-2.10.2-airflow-*
    • גרסאות של Managed Airflow (דור 2) עם ציר זמן מורחב לשדרוג: ‫composer-2.10.2-airflow-*, composer-2.10.1-ariflow-*, ‫composer-2.9.7-airflow-* וגרסאות אחרות עם ציר זמן מורחב לשדרוג.
  • הגרסה שאליה משדרגים צריכה לתמוך בגרסת Python הנוכחית של הסביבה.

  • מגבלות המכסה של Compute Engine API יכולות למנוע שדרוגים. במסוף Google Cloud , עוברים לדף IAM and Admin> Quotas and System Limits ובודקים אם לא חרגתם מהמכסה של Compute Engine API למעבדים. אם מתקרבים לסף המכסה, צריך לבקש הרחבה של המכסה לפני שממשיכים בפעולת השדרוג.

  • אי אפשר לשדרג את הסביבה אם מסד הנתונים של Airflow מכיל יותר מ-16GB של נתונים. במהלך שדרוג, מוצגת אזהרה אם גודל מסד הנתונים של Airflow גדול מ-16GB. במקרה כזה, צריך לבצע תחזוקה של מסד הנתונים כדי להקטין את הגודל שלו.

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

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

  • מומלץ ליצור תמונת מצב חדשה של הסביבה כדי שתוכלו ליצור אותה מחדש אם יהיה צורך בכך.

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

  • יכול להיות שתראו רשומות של מטא-נתונים של Compute Engine עבור אשכולות GKE ששייכים לסביבות בפרויקט שלכם. במהלך יצירה ושדרוג של אשכול GKE,‏ Google Kubernetes Engine מוסיף באופן אוטומטי רשומות של מטא-נתונים ברמת הפרויקט (google_compute_project_metadata) כדי לעקוב אחרי השימוש בטווח כתובות ה-IP המשני. אין לשנות או להסיר את הרשומות האלה. מערכת Google Kubernetes Engine מנהלת אותם באופן אוטומטי.

בודקים שהסביבה מעודכנת

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

הודעת הוצאה משימוש מוצגת בדף פרטי הסביבה
איור 1. הודעת הוצאה משימוש מוצגת בדף הפרטים של הסביבה

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

כדי לבדוק אם הסביבה שלכם עדכנית:

המסוף

  1. במסוף Google Cloud , עוברים לדף Environments.

    מעבר אל Environments

  2. ברשימת הסביבות, לוחצים על שם הסביבה. הדף Environment details ייפתח.

  3. עוברים לכרטיסייה Environment configuration (הגדרת הסביבה).

  4. בשדה גרסת התמונה מוצגת אחת מההודעות הבאות:

    • הגרסה הזמינה האחרונה. תמונת הסביבה נתמכת באופן מלא.

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

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

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

gcloud

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

API

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

הצגת הצעות לשדרוגים

ב-Managed Airflow מוצגת רשימה של גרסאות Managed Airflow שאפשר לשדרג את הסביבה אליהן.

כדי לראות את הגרסאות של Managed Airflow שמוצעות לשדרוג:

המסוף

  1. במסוף Google Cloud , עוברים לדף Environments.

    מעבר אל Environments

  2. ברשימת הסביבות, לוחצים על שם הסביבה. הדף Environment details ייפתח.

  3. עוברים לכרטיסייה Environment configuration ולוחצים על Upgrade Image Version.

  4. ברשימת הגרסאות המוצעות, לוחצים על התפריט הנפתח גרסת התמונה של Managed Airflow.

gcloud

gcloud composer environments list-upgrades \
  ENVIRONMENT_NAME \
  --location LOCATION

מחליפים את:

  • ENVIRONMENT_NAME בשם הסביבה.
  • LOCATION עם האזור שבו הסביבה ממוקמת.

דוגמה:

gcloud composer environments list-upgrades example-environment \
  --location us-central1

API

אפשר לראות את הגרסאות הזמינות של מיקום מסוים. כדי לעשות את זה, צריך ליצור בקשת API מסוג imageVersions.list.

לדוגמה:

// GET https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/imageVersions

בדיקה אם יש התנגשויות בחבילות PyPI

אתם יכולים לבדוק אם חבילות PyPI שהותקנו בסביבה שלכם מתנגשות עם חבילות שהותקנו מראש בתמונה החדשה של Managed Airflow.

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

המסוף

כדי להריץ בדיקת שדרוג בסביבה שלכם:

  1. במסוף Google Cloud , עוברים לדף Environments.

    מעבר אל Environments

  2. ברשימת הסביבות, לוחצים על שם הסביבה. הדף Environment details ייפתח.

  3. עוברים לכרטיסייה Environment configuration (הגדרת הסביבה), מאתרים את הערך Image version (גרסת התמונה) ולוחצים על Upgrade (שדרוג).

  4. בתיבת הדו-שיח Environment version upgrade, ברשימה הנפתחת New version, בוחרים גרסה של Managed Airflow שרוצים לשדרג אליה.

  5. בקטע PyPI packages compatibility (תאימות של חבילות PyPI), לוחצים על Check for conflicts (בדיקת התנגשויות).

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

gcloud

כדי להריץ בדיקת שדרוג לסביבה שלכם, מריצים את הפקודה environments check-upgrade עם גרסת קובץ האימג' של Managed Airflow שרוצים לשדרג אליה.

gcloud composer environments check-upgrade \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --image-version VERSION

מחליפים את:

  • ENVIRONMENT_NAME בשם הסביבה.
  • LOCATION עם האזור שבו הסביבה ממוקמת.
  • VERSION עם הגרסה החדשה של תמונת Managed Airflow שרוצים לשדרג אליה, בפורמט composer-a.b.c-airflow-x.y.z. אפשר להשתמש בכל כינויי הגרסאות.

דוגמה:

gcloud composer environments check-upgrade example-environment \
  --location us-central1 \
  --image-version composer-2.17.6-airflow-2.11.1

פלט לדוגמה:

Waiting for [projects/example-project/locations/us-central1/environments/
example-environment] to be checked for PyPI package conflicts when upgrading
to composer-2.17.6-airflow-2.11.1. Operation [projects/example-project/locations/
us-central1/operations/04d0e8b2-...]...done.
...

Response:
'@type': type.googleapis.com/
google.cloud.orchestration.airflow.service.v1.CheckUpgradeResponse
buildLogUri: ...
containsPypiModulesConflict: CONFLICT
pypiConflictBuildLogExtract: |-
The Cloud Build image build failed: Build failed; check build logs for
details. Full log can be found at ...
Error details: tensorboard 2.2.2 has requirement
setuptools>=41.0.0, but you have setuptools 40.3.0.

אפשר גם להריץ בדיקת שדרוג באופן אסינכרוני. משתמשים בארגומנט --async כדי לבצע קריאה אסינכרונית, ואז בודקים את התוצאה באמצעות הפקודה gcloud composer operations describe.

API

יוצרים בקשת API של environments.checkUpgrade.

מציינים את גרסת התמונה בשדה imageVersion:

{
  "imageVersion": "VERSION"
}

מחליפים את VERSION בגרסה החדשה שרוצים לשדרג אליה, בפורמט composer-a.b.c-airflow-x.y.z.

בדיקת התנגשויות עם Managed Airflow (דור 3)

אי אפשר להעביר את הסביבה מ-Managed Airflow (דור 2) אל Managed Airflow (דור 3) במקום, אבל אפשר לבדוק אם יש בעיות תאימות באמצעות בדיקת שדרוג. מומלץ לעשות את זה לפני המעבר ל-Managed Airflow (דור 3).

כדי לבדוק תאימות ל-Managed Airflow (דור 3), מבצעים בדיקת שדרוג רגילה של סביבת Managed Airflow (דור 2) ומציינים גרסה של Managed Airflow (דור 3) כיעד.

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

  • BLOCKING conflicts report incompatible environment configuration elements that aren't supported in Managed Airflow (Gen 3). מומלץ לטפל בקונפליקטים האלה לפני שמתחילים בהעברה ל-Managed Airflow (דור 3).

  • NON_BLOCKING דוח הקונפליקטים מציג רכיבי הגדרות סביבה ששונים ב-Managed Airflow (דור 3) ועלולים לגרום להתנהגות לא צפויה. לדוגמה, שינויים בערכי ברירת המחדל, כמו חלונות ברירת המחדל לתחזוקה, מדווחים כהתנגשויות לא חוסמות. מומלץ לבדוק אם העימותים האלה עלולים לגרום לבעיות לפני שמתחילים בתהליך ההעברה.

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

המסוף

כדי לבדוק תאימות ל-Managed Airflow (דור 3), משתמשים ב-CLI של gcloud או ב-Cloud Composer API. Google Cloud במסוף אפשר לבדוק רק תאימות של חבילות PyPI.

gcloud

כדי לבדוק תאימות ל-Managed Airflow (דור 3), מריצים את הפקודה environments check-upgrade ומציינים גרסה של Managed Airflow (דור 3) כיעד.

gcloud composer environments check-upgrade \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --image-version COMPOSER_3_VERSION

מחליפים את:

דוגמה:

gcloud composer environments check-upgrade example-environment \
  --location us-central1 \
  --image-version composer-3-airflow-2

דוגמאות להודעות על התנגשות:

...
- message: Error validating property [core]unit_test_mode. Overriding [core]
unit_test_mode is not permitted.
type: BLOCKING
- message: Environment variables [GOOGLE_CLOUD_PROJECT] may not be overridden.
type: BLOCKING
- message: You have to specify Worker CPUs to be 0.5, 1.0 or multiples of 2.0.
type: BLOCKING
- message: The environment uses a default maintenance window, which is
different in Composer 2 and Composer 3. Unless set to a custom value, the
maintenance window will be changed to a new default after the upgrade.
type: NON_BLOCKING
...

אפשר גם להריץ את הבדיקה הזו באופן אסינכרוני. משתמשים בארגומנט --async כדי לבצע קריאה אסינכרונית, ואז בודקים את התוצאה באמצעות הפקודה gcloud composer operations describe.

API

יוצרים בקשת API של environments.checkUpgrade.

מציינים את גרסת התמונה בשדה imageVersion:

{
  "imageVersion": "COMPOSER_3_VERSION"
}

מחליפים את COMPOSER_3_VERSION בגרסה וב-build של Airflow שרוצים לשדרג אליהם, בפורמט airflow-x.y.z-build.t. אפשר להשתמש בכל כינויי הגרסאות.

שדרוג הסביבה

כדי לשדרג את הסביבה לגרסה חדשה יותר של Managed Airflow או Airflow:

המסוף

  1. במסוף Google Cloud , עוברים לדף Environments.

    מעבר אל Environments

  2. ברשימת הסביבות, לוחצים על שם הסביבה. הדף Environment details ייפתח.

  3. עוברים לכרטיסייה Environment configuration (הגדרת הסביבה).

  4. מחפשים את הפריט גרסת תמונה ולוחצים על שדרוג.

  5. בתפריט הנפתח Image version (גרסת התמונה), בוחרים גרסת Managed Airflow שאליה רוצים לשדרג.

  6. לוחצים על שדרוג.

gcloud

gcloud composer environments update \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --image-version VERSION

מחליפים את:

  • ENVIRONMENT_NAME בשם הסביבה.
  • LOCATION עם האזור שבו הסביבה ממוקמת.
  • VERSION עם הגרסה החדשה של תמונת Managed Airflow שרוצים לשדרג אליה, בפורמט composer-a.b.c-airflow-x.y.z. אפשר גם להשתמש בכל הכינויים של הגרסאות.

לדוגמה:

gcloud composer environments update
  example-environment \
  --location us-central1 \
  --image-version composer-2.17.6-airflow-2.11.1

API

  1. יוצרים בקשת API של environments.patch.

  2. בבקשה הזו:

    1. בפרמטר updateMask, מציינים את המסכה config.softwareConfig.imageVersion.

    2. בגוף הבקשה, בשדה imageVersion, מציינים את הגרסה החדשה שרוצים לשדרג אליה.

לדוגמה:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.softwareConfig.imageVersion

  {
    "config": {
      "softwareConfig": {
        "imageVersion": "composer-2.17.6-airflow-2.11.1"
      }
    }
  }

Terraform

השדה image_version בבלוק config.software_config שולט בתמונה של Managed Airflow בסביבה שלכם. בשדה הזה, מציינים תמונה חדשה של Managed Airflow.

  resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {
    software_config {
      image_version = "VERSION"
    }
  }
}

מחליפים את:

דוגמה:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {
    software_config {
      image_version = "composer-2.17.6-airflow-2.11.1"
    }
  }
}

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