כלי ההעברה של Apigee Hybrid Helm

<0x0

אם אתם משתמשים ב-Apigee Hybrid גרסה 1.11, תוכלו לעיין במאמר Apigee hybrid Helm migration tool במסמכי התיעוד של Apigee Hybrid גרסה 1.11.

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

אפשר להעביר את כל רכיבי apigee בבת אחת, ואחרי הפעלת הכלי אפשר לבצע פעולות שדרוג של Helm על בסיס כל רכיב בנפרד.

במאמר התקנה וניהול של Apigee hybrid באמצעות תרשימי Helm יש מידע על ניהול אשכולות היברידיים שהועברו לניהול Helm באמצעות הכלי הזה.

דרישות מוקדמות

  • ‫Helm גרסה 3.10 ואילך.
  • קובץ kubeconfig תקין שמפנה לאשכול עם התקנה תקינה של Apigee Hybrid 1.10.
  • הרשאות לשינוי המטא-נתונים וההערות במשאבי Kubernetes של הרכיבים ההיברידיים שרוצים להעביר.

היקף

הכלי הזה תומך באפשרויות הבאות בזמן הריצה:

  • התאמה אישית של מרחב השמות של משאבי apigee. מרחב שמות שמוגדר כברירת מחדל: apigee
  • העברה רק של רכיבים היברידיים נבחרים. ברירת מחדל: כל הרכיבים מועברים
  • העברה של ארגון יחיד בלבד
  • העברה של סביבה אחת בלבד
  • העברה של קבוצת סביבות אחת (apigee-virtualhost) בלבד
  • התאמה אישית של שמות של גרסאות Helm לארגונים, לסביבות ולקבוצות של סביבות.

מגבלות

  • הכלי הזה לא תומך בהתאמה אישית של שמות של מהדורות Helm לרכיבים ההיברידיים הבאים: apigee-operator,‏ apigee-datastore,‏ apigee-redis,‏ apigee-telemetry ו-apigee-ingress-manager.
  • התאמות אישיות אינטראקטיביות שבוצעו בשמות של מהדורות Helm בארגונים, בסביבות ובקבוצות סביבות לא נשמרות אוטומטית בין הפעלות. אפשר לערוך את קובץ ה-temp ולספק אותו כאפשרות בהרצות הבאות.
  • סינון של סביבות וקבוצות סביבות מתבצע רק לפי שם. במקרים מסוימים, התהליך הזה יכול לגרום להעברה של כמה סביבות וקבוצות סביבות באשכולות של כמה ארגונים.

    לדוגמה, באשכול עם כמה ארגונים, org1 ו-org2, אם המשתנה prod קיים בשני הארגונים, וצוין רק --env=prod, שני המשתנים יועברו. אם רוצים להעביר רק סביבה אחת, צריך לציין גם מסנן ארגון --org=org1 או --org=org2.

Usage

תחביר

apigee-helm-migration [--apigee-namespace=] [--components=] [--dry-run] [--env=org1] [--env-group=org2] [--org=baz] [--kubeconfig=] [-y] [-v] [-f /path/to/releaseNames.yaml]

שמות של גרסאות Helm שנוצרו

לכל Helm Chart שמוגדר לפריסה באשכול צריך להיות שם גרסה, שחייב להיות ייחודי במרחב שמות. אין מוסכמות או הגבלות למתן שמות לגרסאות של Helm ביחס לשם התרשים. כלי ההעברה יוצר שמות ייחודיים של גרסאות Helm לכל רכיב.

תרשים אשכול של ארגון יחיד אשכול מרובה ארגונים
apigee-operator operator operator
apigee-datastore datastore datastore
apigee-telemetry telemetry telemetry
apigee-redis redis redis
apigee-ingress-manager ingress-manager ingress-manager
apigee-org ORG_NAME ORG_NAME
apigee-env ENV_NAME[-env[-n]](1) ORG_NAME-ENV_NAME[-env[-n]](1)
apigee-virtualhost (envgroup) VH_NAME[-env-group[-n]](1) ORG_NAME-VH_NAME[-env-group[-n]](1)

(1) אם השם שנוצר מתנגש עם שם אחר שנוצר, השם יסתיים ב--env או ב--env-group. אם עדיין יש התנגשות, מוסיפים להם את הסיומת -1 או -2 ….

התאמה אישית של שמות גרסאות Helm

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

  1. מריצים את הכלי פעם אחת ויוצאים בהנחיה הראשונה כדי ליצור קובץ זמני שמכיל את שמות הגרסאות שנוצרו אוטומטית. אמורה להופיע שורה כמו:
    INFO: 21:32:56 using temp file for release names:  /tmp/apigee-helm-migration-1229129207-releaseNames
  2. להעביר או להעתיק את הקובץ ואז לערוך אותו. אפשר להעביר את הקובץ הערוך הזה באמצעות האפשרות -f כשמריצים את כלי המיגרציה. השמות של הגרסאות שנוצרו אוטומטית נראים כך:

    orgs:
      example-apigee-org:
        helmReleaseName: example-apigee-org
        envs:
          prod:
            helmReleaseName: prod
        envGroups:
          prod-envgroup:
            helmReleaseName: prod-envgroup

    כדי להתאים אישית את השמות של גרסאות Helm לארגון, לסביבה או לקבוצת סביבות, עורכים את השדה helmReleaseName של האובייקט הרלוונטי. לדוגמה, כדי לשנות את השם של הגרסה הארגונית ל-custom-org, את השם של גרסת הסביבה ל-custom-env ואת השם של גרסת קבוצת הסביבות ל-custom-group, הקובץ שיתקבל ייראה כך:

    orgs:
      example-apigee-org:
        helmReleaseName: custom-org
        envs:
          prod:
            helmReleaseName: custom-env
        envGroups:
          prod-envgroup:
            helmReleaseName: custom-group

שימוש במרחבי שמות בהתאמה אישית

‫Apigee Hybrid פועל בשני מרחבי שמות של Kubernetes:

  • apigee-system: רכיב apigee-operator תמיד פועל במרחב השמות apigee-system. כלי ההעברה של Helm יעודכן ברכיב apigee-operator במרחב השמות apigee-system, בלי קשר למה שמציינים באמצעות הדגל --apigee-namespace.
  • apigee: כל הרכיבים ההיברידיים, למעט apigee-operator, פועלים במרחב השמות הזה. ‫apigee הוא שם ברירת המחדל. אפשר להשתמש בכל מרחב שמות מותאם אישית לרכיבים האלה.

    אם אתם משתמשים במרחב שמות בהתאמה אישית, אתם צריכים לציין אותו באמצעות הדגל --apigee-namespace my_custom_namespace כשאתם מריצים את כלי ההעברה של Helm.

    בנוסף, צריך להוסיף את הנכס namespace: my_custom_namespace ברמה העליונה לקובץ ההחלפות.

מסלול

  1. מורידים את כלי ההעברה.

    Linux

    1. מאחסנים את מספר הגרסה האחרונה במשתנה באמצעות הפקודה הבאה:
      export VERSION=$(curl -s "https://storage.googleapis.com/apigee-release/hybrid/apigee-migration-tool/current-version.txt?ignoreCache=1")
    2. כדי לבדוק שהמשתנה אוכלס במספר גרסה, מריצים את הפקודה הבאה. אם רוצים להשתמש בגרסה אחרת, אפשר לשמור אותה במשתנה סביבה.
      echo $VERSION

      לדוגמה:

      echo $VERSION
      1.0.5
    3. מורידים את חבילת הגרסה למערכת ההפעלה שלכם באמצעות הפקודה הבאה:

      curl -LO https://storage.googleapis.com/apigee-release/hybrid/apigee-migration-tool/${VERSION}/apigee-helm-migration_linux_64.tar.gz
    4. מחלצים את הקבצים הדחוסים באמצעות הפקודה הבאה:

      tar -xzf apigee-helm-migration_linux_64.tar.gz

    Mac OS

    1. מאחסנים את מספר הגרסה האחרונה במשתנה באמצעות הפקודה הבאה:
      export VERSION=$(curl -s "https://storage.googleapis.com/apigee-release/hybrid/apigee-migration-tool/current-version.txt?ignoreCache=1")
    2. כדי לבדוק שהמשתנה אוכלס במספר גרסה, מריצים את הפקודה הבאה. אם רוצים להשתמש בגרסה אחרת, אפשר לשמור אותה במשתנה סביבה.
      echo $VERSION

      לדוגמה:

      echo $VERSION
      1.0.5
    3. מורידים את חבילת הגרסה למערכת ההפעלה שלכם באמצעות הפקודה הבאה:

      curl -LO https://storage.googleapis.com/apigee-release/hybrid/apigee-migration-tool/${VERSION}/apigee-helm-migration_mac_64.tar.gz
    4. מחלצים את הקבצים הדחוסים באמצעות הפקודה הבאה:

      tar -xzf apigee-helm-migration_mac_64.tar.gz

    Windows

    1. מאחסנים את מספר הגרסה האחרונה במשתנה באמצעות הפקודה הבאה:
      for /f "tokens=*" %a in ('curl -s https://storage.googleapis.com/apigee-release/hybrid/apigee-migration-tool/current-version.txt') do set VERSION=%a
    2. כדי לבדוק שהמשתנה אוכלס במספר גרסה, מריצים את הפקודה הבאה. אם רוצים להשתמש בגרסה אחרת, אפשר לשמור אותה במשתנה סביבה.
      echo %VERSION%

      לדוגמה:

      echo %VERSION%
      1.0.5
    3. מורידים את חבילת הגרסה למערכת ההפעלה שלכם באמצעות הפקודה הבאה:

      curl -LO https://storage.googleapis.com/apigee-release/hybrid/apigee-migration-tool/%VERSION%/apigee-helm-migration_windows_64.tar.gz
    4. מחלצים את הקבצים הדחוסים באמצעות הפקודה הבאה:

      tar xzvf apigee-helm-migration_windows_64.tar.gz
  2. מפעילים את כלי ההעברה. אם אפשרויות ברירת המחדל מקובלות, מספיק להריץ את הכלי בלי ארגומנטים ולאשר את ההנחיה אם השמות שנוצרו של גרסת ה-Helm משביעי רצון. הנה כמה תרחישים לדוגמה:
    • התקנה פשוטה, באמצעות ברירת המחדל kubeconfig (~/.kube/config), מרחב השמות apigee שמוגדר כברירת מחדל ושמות ברירת המחדל של Helm release.

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

      ./apigee-helm-migration
      
    • העברת כל הרכיבים באמצעות מרחב שמות מותאם אישית:
      ./apigee-helm-migration --apigee-namespace my_custom_namespace
      
    • העברה של הרכיבים operator ו-datastore בלבד:

      ./apigee-helm-migration --components operator,datastore
      
        INFO: 00:22:48 using kubeconfig file  /usr/local/google/home/example/.kube/config
        INFO: 00:22:48 namespace for apigee resources:
        INFO: 00:22:48 	 apigee
        INFO: 00:22:48 processing all organizations in cluster
        INFO: 00:22:48 Components to migrate:
        INFO: 00:22:48 	 operator,datastore
        INFO: 00:22:48 dry-run:
        INFO: 00:22:48 	 false
        Continue with patching apigee resources for Helm migration? [y/n]: y
        INFO: 00:22:52 Processing component:  operator
        INFO: 00:22:54 Processing component:  datastore
        INFO: 00:22:55 Migration successful!
    • הפניה לקובץ kubeconfig ספציפי וציון שם אחר למרחב השמות apigee.

      ./apigee-helm-migration --kubeconfig /abs/path/to/kubeconf --namespace org1_namespace
      
    • העברת כל הרכיבים, אבל רק ארגון אחד:

      ./apigee-helm-migration --org=some-test-org
      

    בדוגמה הבאה מוצג פלט של העברה שבוצעה בהצלחה:

    INFO: 21:32:55 using kubeconfig file  /usr/local/google/home/example/.kube/config
    INFO: 21:32:55 namespace for apigee resources:
    INFO: 21:32:55 	 apigee
    INFO: 21:32:55 processing all organizations in cluster
    INFO: 21:32:55 processing all components
    INFO: 21:32:55 dry-run:
    INFO: 21:32:55 	 false
    INFO: 21:32:55 cluster Apigee information:
    INFO: 21:32:55 Apigee Organizations found:
    INFO: 21:32:56 	 example-hybrid-dev
    INFO: 21:32:56 Apigee Environments found (org: env):
    INFO: 21:32:56 	 example-hybrid-dev : prod
    INFO: 21:32:56 Apigee EnvGroups(apigeerouteconfigs) found (org: envGroup):
    INFO: 21:32:56 	 example-hybrid-dev : prod-envgroup
    INFO: 21:32:56 using temp file for release names:  /tmp/apigee-helm-migration-1229129207-releaseNames
    INFO: 21:32:56 Helm release names for Apigee orgs/envs/envgroups:
    orgs:
    example-hybrid-dev:
    helmReleaseName: example-hybrid-dev
    envs:
      prod:
        helmReleaseName: prod
    envGroups:
      prod-envgroup:
        helmReleaseName: prod-envgroup
    Make changes to the release names for Apigee orgs/env/envgroups? [y/n]: n
    Continue with patching apigee resources for Helm migration? [y/n]: y
    INFO: 21:32:59 Processing component:  operator
    INFO: 21:33:01 Processing component:  datastore
    INFO: 21:33:01 Processing component:  redis
    INFO: 21:33:02 Processing component:  ingress-manager
    INFO: 21:33:02 Processing component:  telemetry
    INFO: 21:33:03 Processing component:  orgs
    INFO: 21:33:05 Processing component:  envs
    INFO: 21:33:06 Processing component:  env-groups
    INFO: 21:33:07 Migration successful!

    שגיאות אפשריות:

    • שגיאה בניתוח קובץ שמות הגרסאות: צריך לבדוק את קובץ שמות הגרסאות שהועבר.
    • לא נמצאו משאבים: צריך לוודא ש-Apigee hybrid מותקן באופן מלא ושיש לכם הרשאות גישה למשאבי apigee.

השלב הבא

ממשיכים בהתקנה של תרשימי Helm של Apigee Hybrid לפי ההוראות במאמר התקנה וניהול של Apigee Hybrid באמצעות תרשימי Helm.

פלט של ‎-help

./apigee-helm-migration --help
Usage of ./apigee-helm-migration:
  -apigee-namespace string
      namespace used for apigee resources (default "apigee")
  -components string
      CSV of components to migrate. If empty then all components are migrated. Valid values are: operator,datastore,redis,ingress-manager,telemetry,orgs,envs,env-groups
  -dry-run
      perform a dry-run
  -env string
      restrict migration to a singular supplied env. If empty then all envs detected in the cluster are migrated
  -env-group string
      restrict migration to a singular supplied envGroup. If empty then all envGroups detected in the cluster are migrated
  -kubeconfig string
      (optional) absolute path to the kubeconfig file (default "/usr/local/google/home/example/.kube/config")
  -org string
      restrict migration to a singular supplied org. If empty then all orgs detected in the cluster are migrated
  -v	Increased logging verbosity
  -y	don't prompt for confirmation or for configuration of Helm releases