PracticU

הצגת secret
כקובץ בתוך קונטיינר

בלי כתוביותעם כתוביות
PracticU › קורס קוברנטיקס - Kubernetes › הצגת secret כקובץ בתוך קונטיינר
מילון מושגים:
קונטיינר - חבילה קלה ומבודדת שאורזת אפליקציה עם כל תלויותיה, ורצה באופן אחיד בכל סביבה, למשל ב-Docker.
רישיון - ההיתר החוקי להשתמש בתוכנה, הקובע את תנאי השימוש, מספר ההתקנות וזמן התוקף.
SSL - פרוטוקול להצפנת תקשורת ברשת ולאימות זהות השרת. קודמו של TLS, והשם עדיין נפוץ בשימוש.
Base64 - שיטת קידוד שממירה נתונים בינאריים לטקסט מתווים מודפסים, כדי להעבירם בבטחה בערוצים טקסטואליים.
משתנה סביבה - ערך בעל שם שמוגדר במערכת ההפעלה ומשמש תוכנות להגדרות, כמו נתיבים או מפתחות תצורה.
פריסה - העברת תוכנה מסביבת פיתוח לסביבה שבה היא תרוץ בפועל, כדי להעמידה לשימוש.
ווליום - יחידת אחסון לוגית על דיסק או מספר דיסקים. ב-Docker, מנגנון לשמירת נתונים מחוץ לקונטיינר.
Bash - מעטפת שורת פקודה נפוצה במערכות Linux, המשמשת להרצת פקודות ולכתיבת סקריפטים.

הצגת secret כקובץ בתוך קונטיינר
לפעמים אפליקציה מצפה לקבל מידע רגיש כקובץ, כמו רישיון או תעודת SSL. ההרצאה מראה איך ליצור secret מקובץ ולהציג אותו בתוך הקונטיינר כקובץ רגיל.
השלבים העיקריים
1. הרקע: קובץ my_secrets.yaml מחזיק key ו-value ב-base64, וזה מתאים למשתני סביבה. עבור קובץ שלם יוצרים secret נפרד שאינו חלק מה-deployment.
2. בדיקת הקיים: kubectl get secrets ו-kubectl describe secret מראים את השדות (password ו-username) ואת גודלם בבתים, בלי חשיפת הערך.
3. יצירה מהפקודה: יוצרים secret חדש בשיטה imperative, בלי YAML, עם שם ו-from file שמצביע על הנתיב. במקרה הזה נוצר my_app_license עם מפתח my_app_license.txt.
4. volume ברמת הפוד: בספציפיקציה של הפוד, באותה רמה של רשימת הקונטיינרים, מגדירים volume בשם license volume שמקורו ב-secret my_app_license. שם ה-secret חייב להתאים לזה שב-get secrets.
5. mount ברמת הקונטיינר: בתוך הקונטיינר מגדירים mount לאותו volume בתיקייה מסוימת, ב-read only. בעמודות ה-YAML חייבים לשמור על הרווחים בדיוק, אחרת המאפיין ישויך לאובייקט הלא נכון.
6. בדיקה: אחרי apply ו-kubectl exec אל bin/bash, בתיקייה שעליה בוצע mount יש קובץ my_app_license.txt, ואפשר להציג את תוכנו עם cat. מבחינת השרת זה קובץ רגיל.
ניקוי וטעות נפוצה
kubectl delete -f . מוחק את מה שמתואר בקבצי YAML. הפקודה get all לא מציגה secrets, וה-secret שנוצר מהפקודה נשאר. כדי למחוק אותו מריצים kubectl delete secret <name>, ולבדוק עם kubectl get secrets.
אחרי ההרצאה אפשר לצרף קובץ רגיש ל-secret ולחשוף אותו לקונטיינר כקובץ לקריאה בלבד.

פרקי ההרצאה: הצגת secret כקובץ בתוך קונטיינר

  1. 00:00

    secret כקובץ ולא כטקסט

  2. 00:42

    הפרדת מידע רגיש לקבצים נפרדים

  3. 01:21

    בדיקת secret עם describe

  4. 02:01

    יצירת secret בשיטה imperative

  5. 02:37

    חיבור הסיקרט כקובץ לקונטיינר

תמלול ההרצאה: הצגת secret כקובץ בתוך קונטיינר

הטקסט המלא של הדקות הראשונות בהרצאה «הצגת secret כקובץ בתוך קונטיינר» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

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

  2. 00:16

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

  3. 00:42

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

  4. 00:55

    אז יש קובץ my_secrets.yaml שבפנים כתוב key ו-value, וכדי שאף אחד לא יציץ לי ה-value הזה כתוב ב-base64. כל זה מצוין למידע פשוט שאפשר להציג אותו כמשתנה סביבה בתוך הקונטיינר.

  5. 01:10

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

  6. 01:30

    בואו נעשה kubectl get secrets, ואנחנו רואים פה שיש לנו כרגע secret אחד. בואו נראה מה יש לנו בתוך הסיקרט הזה. נעשה kubectl describe secret. תתאר לי את מה שיש בפנים.

  7. 01:43

    describe. והוא כותב לי כאן את השם שלו, והכי חשוב data. יש פה שני ערכים password, עשרים ואחד בתים, username, חמישה בתים, וכמובן שהוא לא חושף אותם.

  8. 01:53

    הם נחשפים אך ורק בתוך הקונטיינר בפנים. עכשיו אני רוצה ליצור secret חדש, kubectl create secret, ושימו לב אני לא יוצר אותו מקובץ YAML אלא משורת פקודה. הצורה הזאת נקראת imperative.

  9. 02:09

    זה אומר בציווי, בכוח. אני לא נותן לו איזשהו סוג, לא מגביל אותו לחוקים מסוימים, נותן לו שם, זה השם של הסיקרט, ואומר לו שהתוכן שלו יהיה from file ונותן לו נתיב לקובץ.

  10. 02:23

    ועכשיו אני יוצר secret חדש בתוך הקלסטר, רק לא מקובץ YAML אלא משורת פקודה. ואנחנו רואים פה my_app_license. secret חדש. בואו נעשה גם עליו describe, נראה מה יש לו בפנים.

  11. 02:37

    בפנים אנחנו רואים שיש לו מפתח בשם my_app_license.txt עם שלושה בתים. האמת, היה אותו אפקט אם הייתי עושה פה כזה דבר, נקודתיים, רווח, גרסה אחד, שתיים, שלוש, נניח.

  12. 02:51

    זה גם היה נותן את אותו אפקט, אבל אני בחרתי להפריד ביניהם. פה יהיה הסיקרט עם משתני סביבה. זה הסיקרט הזה ב-get secrets, והסיקרט השני יהיה קשור ל-license.

  13. 03:03

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

לקורס המלא: קורס קוברנטיס – Kubernetes

ההרצאה הקודמת: הסבר על secret - Kubernetes

ההרצאה הבאה: הסבר על - מיקרו סרוויס - Microservice

הרצאות קשורות מקורסים אחרים

  • Swarm - Secret
  • הצגת Global State בתוך MobX
  • קונטיינר בענן - Cloud Run - משתנה סביבה בתוך הקונטיינר
  • יצירת ConnectionString - ב-App Secret

קורסים נוספים במסלול

  • קורס AWS - ניהול מכונה וירטואלית בענן
  • קורס Terraform - DevOps - Azure & AWS
  • קורס Docker - עם Swarm Cluster
  • קורס DevOps - Ansible
  • קורס PowerShell
  • קורס Git ו-GitHub עם Visual Studio