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

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

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

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

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

שליחת בקשה לתפקידי IAM

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

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

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

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

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

הכנת הסביבה

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

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

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

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

עדכון הפריסה

כדי לעדכן אובייקט 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.

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