שימוש בסודות

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

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

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

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

יצירת סוד

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

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

כדי ליצור Secret במרחב השמות default של האשכול:

  • כדי ליצור סוד באמצעות קובץ:

    echo -n 'devuser' > ./username.txt
    echo -n 'S!B\*d$zDsb' > ./password.txt
    kubectl create secret generic user-creds --from-file=./username.txt --from-file=./password.txt
    
  • יצירת סוד באמצעות פקודה kubectl בלבד:

    kubectl create secret generic user-creds --from-literal=username=devuser --from-literal=password='S!B\*d$zDsb'
    

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

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

המסוף

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

    מעבר אל Knative serving

  2. אם אתם מגדירים שירות חדש שאתם פורסים, לוחצים על יצירת שירות. אם אתם מגדירים שירות קיים, לוחצים על השירות ואז על Edit & Deploy New Revision (עריכה ופריסה של עדכון חדש).

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

  4. בקטע Reference a Secret, בוחרים את הסוד הרצוי מהתפריט הנפתח.

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

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

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

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

gcloud

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

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

    דוגמה:

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

    מחליפים את:

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

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

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

    מחליפים את:

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

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