שימוש ב-ConfigMaps

איך ליצור ConfigMap ואז להגדיר את השירותים והעדכונים של Knative Serving כך שישתמשו ב-ConfigMap הזה.

תרחיש שימוש נפוץ בשירות הוא שימוש ב-ConfigMaps כדי להפריד בין קוד האפליקציה לבין ההגדרה. ‫ConfigMap דומה ל-Secret, אבל משתמשים ב-Secret למידע רגיש וב-ConfigMap לאחסון נתונים לא רגישים כמו מחרוזות חיבור, פרטי כניסה ציבוריים, שמות מארחים וכתובות URL. אפשר לקרוא מידע נוסף על שימוש ב-ConfigMap במסמכי Google Kubernetes Engine.

כשמאפשרים למאגרי נתונים לגשת ל-ConfigMaps, אפשר לבחור באחת מהאפשרויות הבאות:

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

יצירת ConfigMap

יש כמה דרכים ליצור ConfigMap, כמו שמתואר בדף ConfigMaps בחומרי העזר של GKE. לנוחיותכם, השלבים הבאים מראים דרך פשוטה ליצור ConfigMap.

כשיוצרים ConfigMap, חשוב לוודא שיוצרים אותו באותו מרחב שמות כמו האשכול שבו פועל שירות Knative serving. בהוראות האלה נעשה שימוש במרחב השמות default.

אפשר ליצור ConfigMap משורת הפקודה:

kubectl create configmap NAME DATA

מחליפים את:

  • NAME הוא השם של אובייקט ConfigMap.
  • הערך DATA יכול להיות:

    • הדגל --from-file והנתיב של כל ספרייה שמכילה קובץ תצורה אחד או יותר.
    • הדגל --from-literal וצמד מפתח/ערך לכל אחד מהם שרוצים להוסיף ל-ConfigMap.

לדוגמה:

kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm

ה-ConfigMap נוצר ומועלה למרחב השמות default, שבו הוא זמין לאשכולות.

הפיכת ConfigMap לזמין לשירות

אחרי שיוצרים ConfigMap, אפשר להפוך אותו לזמין לשירות Knative Serving בתור נפח או בתור משתני סביבה באמצעות Google Cloud המסוף או Google Cloud CLI כשפורסים שירות חדש או מעדכנים שירות קיים ופורסים עדכון:

המסוף

  1. נכנסים אל Knative serving במסוף Google Cloud :

    מעבר אל Knative serving

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

  3. בקטע הגדרות מתקדמות, לוחצים על משתנים וסודות.

  4. בקטע Reference a ConfigMap (הפניה ל-ConfigMap), בוחרים את ה-ConfigMap הרצוי מהתפריט הנפתח.

    • בתפריט הנפתח Reference method (שיטת ההפניה), בוחרים את האופן שבו רוצים להשתמש ב-ConfigMap, שמוגדר כנפח או כמשתני סביבה.
    • אם משתמשים בנתיב כנפח, מציינים את הנתיב ואז לוחצים על סיום.
    • אם חושפים את המשתנים כמשתני סביבה:
      1. מזינים את השם של המשתנה ובוחרים את הערך המתאים של ConfigMap מהתפריט הנפתח מפתח.
      2. לוחצים על הוספה כדי להוסיף עוד ערך ConfigMap.
      3. מזינים את השם של המשתנה ובוחרים את הערך המתאים של ConfigMap מהתפריט הנפתח מפתח.
      4. לוחצים על סיום.

  5. לוחצים על הבא כדי להמשיך לקטע הבא.

  6. בקטע Configure how this service is triggered (הגדרה של אופן הפעלת השירות), בוחרים את סוג הקישוריות שרוצים להשתמש בו כדי להפעיל את השירות.

  7. לוחצים על יצירה כדי לפרוס את התמונה ב-Knative serving ומחכים עד שהפריסה תסתיים.

שורת הפקודה

אפשר להשתמש ב-Google Cloud CLI כדי להגדיר ConfigMap לשירותים חדשים או לעדכן שירותים קיימים:

  • בשירותים קיימים, מריצים את הפקודה gcloud run services update עם אחד מהפרמטרים הבאים כדי לעדכן את ConfigMap:

    דוגמה:

    gcloud run services update SERVICE --update-config-maps KEY1=VALUE1,KEY2=VALUE2

    מחליפים את:

    • SERVICE בשם של השירות.
    • KEY1=VALUE1,KEY2=VALUE2 עם רשימה מופרדת בפסיקים של צמדים של שם וערך לכל ConfigMap. לכל KEY אפשר לציין נתיב לטעינה או לספק משתנה סביבה. מציינים נתיב להרכבה על ידי התחלה בלוכסן /. כל שאר המפתחות תואמים למשתני סביבה. לכל VALUE, מציינים את שם ה-ConfigMap. איך מציינים כמה פרמטרים
    • אפשרויות של פרמטרים של פקודות

      כדי לציין כמה קבוצות של צמדי מפתח/ערך, אפשר לציין כמה פרמטרים כדי שהקוד יהיה קריא. דוגמה:
      [...]
      --update-config-maps "KEY=VALUE1" \
      --update-config-maps "KEY=VALUE2" \
      --update-config-maps "KEY=VALUE3"
  • בשירותים חדשים, מגדירים את ConfigMap על ידי הפעלת הפקודה gcloud run deploy עם הפרמטר --set-config-maps:

    gcloud run deploy SERVICE --image=IMAGE_URL --set-config-maps KEY1=VALUE1,KEY2=VALUE2

    מחליפים את:

    • IMAGE_URL עם הפניה לקובץ אימג' של קונטיינר, לדוגמה, gcr.io/cloudrun/hello.
    • SERVICE בשם של השירות.
    • KEY1=VALUE1,KEY2=VALUE2 עם רשימה מופרדת בפסיקים של צמדים של שם וערך לכל ConfigMap. לכל KEY אפשר לציין נתיב לטעינה או לספק משתנה סביבה. מציינים נתיב להרכבה על ידי התחלה בלוכסן /. כל שאר המפתחות תואמים למשתני סביבה. לכל VALUE, מציינים את שם ה-ConfigMap. איך מציינים כמה פרמטרים
    • אפשרויות של פרמטרים של פקודות

      כדי לציין כמה קבוצות של צמדי מפתח/ערך, אפשר לציין כמה פרמטרים כדי שהקוד יהיה קריא. דוגמה:
      [...]
      --update-config-maps "KEY=VALUE1" \
      --update-config-maps "KEY=VALUE2" \
      --update-config-maps "KEY=VALUE3"