עדכון עומסי עבודה (workloads) ללא שמירת מצב

במאמר הזה מוסבר איך לעדכן עומסי עבודה קיימים ללא שמירת מצב (stateless) שפועלים באשכול Kubernetes עם פער אוויר ב-Google Distributed Cloud ‏(GDC). ככל שהאפליקציה מתפתחת, בהתאם לשימוש במשאבים ולאופטימיזציות של ההגדרות, צריך לעדכן את מפרט ה-Pod הבסיסי באשכול Kubernetes כדי לשקף את השינויים בעומסי העבודה.

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

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

כדי להשלים את המשימות שבמסמך הזה, צריך לבקש את ההרשאות הנדרשות ולהכין את הסביבה.

בקשת תפקידים ב-IAM

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

תפקידים משותפים באשכול

כדי ליצור, למחוק, לערוך או להציג עומסי עבודה באשכול משותף, צריך לבקש מהאדמין של הפרויקט ב-IAM להקצות לכם את התפקיד אדמין של מרחב שמות (namespace-admin). התפקיד הזה קשור למרחב השמות של הפרויקט.

תפקידים רגילים באשכול

כדי ליצור, למחוק, לערוך או להציג עומסי עבודה באשכול רגיל, בקשו מהאדמין של הפרויקט ב-IAM להקצות לכם את התפקיד מפתח אשכולות (cluster-developer). התפקיד הזה קשור למרחב השמות של הפרויקט.

הכנת הסביבה

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

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

  • נכנסים לחשבון ויוצרים את קובץ kubeconfig לאשכול Kubernetes.

  • בהוראות הבאות, מחליפים את KUBERNETES_CLUSTER_KUBECONFIG בנתיב kubeconfig של אשכול Kubernetes.

עדכון הפריסה

כדי לעדכן אובייקט Deployment, מריצים את הפקודה:

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    apply -f DEPLOYMENT_FILE

מחליפים את מה שכתוב בשדות הבאים:

  • ‫KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול שבו פועל הפריסה.

  • ‫NAMESPACE: מרחב השמות. באשכולות משותפים, צריך להשתמש במרחב שמות של פרויקט. באשכולות רגילים, זה יכול להיות כל מרחב שמות.

  • ‫DEPLOYMENT_FILE: השם של קובץ המניפסט של Deployment שרוצים לעדכן.

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

יש עוד כמה דרכים לעדכן משאבים בפריסה.

עדכון קובץ אימג' של קונטיינר

כדי לשנות את קובץ האימג' של אובייקט Deployment, מריצים את הפקודה:

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    set image deployment DEPLOYMENT_NAME \
    IMAGE=IMAGE:TAG

מחליפים את מה שכתוב בשדות הבאים:

  • ‫KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול שבו פועל הפריסה.

  • ‫NAMESPACE: מרחב השמות. באשכולות משותפים, צריך להשתמש במרחב שמות של פרויקט. באשכולות רגילים, זה יכול להיות כל מרחב שמות.

  • ‫DEPLOYMENT_NAME: השם של אובייקט Deployment שמכיל את התמונה.

  • ‫IMAGE: השם של קובץ האימג' של הקונטיינר.

  • ‫TAG: התג שרוצים לעדכן בקובץ האימג' של הקונטיינר.

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

לדוגמה, כדי לעדכן אובייקט Deployment בשם nginx לשימוש בגרסה 1.9.1, מריצים את הפקודה:

kubectl --kubeconfig /tmp/kubeconfig.yaml -n my-namespace \
    set image deployment nginx nginx=nginx:1.9.1

חזרה לגרסה קודמת של עדכון

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

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

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
    -n NAMESPACE \
    rollout undo deployment DEPLOYMENT_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • ‫KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול שבו פועל הפריסה.

  • ‫NAMESPACE: מרחב השמות. באשכולות משותפים, צריך להשתמש במרחב שמות של פרויקט. באשכולות רגילים, זה יכול להיות כל מרחב שמות.

  • ‫DEPLOYMENT_NAME: השם של האובייקט Deployment שרוצים להחזיר לגרסה קודמת.

כדי לחזור לגרסה ספציפית, מריצים את הפקודה:

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
    -n NAMESPACE \
    rollout undo deployment DEPLOYMENT_NAME \
    --to-revision=REVISION_NUMBER

מחליפים את מה שכתוב בשדות הבאים:

  • ‫KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול שבו פועל הפריסה.

  • ‫NAMESPACE: מרחב השמות. באשכולות משותפים, צריך להשתמש במרחב שמות של פרויקט. באשכולות רגילים, זה יכול להיות כל מרחב שמות.

  • ‫DEPLOYMENT_NAME: השם של האובייקט Deployment שרוצים להחזיר לגרסה קודמת.

  • ‫REVISION_NUMBER: המספר השלם שמגדיר את הגרסה שאליה רוצים לחזור, למשל 3.

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