
my_secrets.yaml מחזיק key ו-value ב-base64, וזה מתאים למשתני סביבה. עבור קובץ שלם יוצרים secret נפרד שאינו חלק מה-deployment.kubectl get secrets ו-kubectl describe secret מראים את השדות (password ו-username) ואת גודלם בבתים, בלי חשיפת הערך.from file שמצביע על הנתיב. במקרה הזה נוצר my_app_license עם מפתח my_app_license.txt.license volume שמקורו ב-secret my_app_license. שם ה-secret חייב להתאים לזה שב-get secrets.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 כקובץ בתוך קונטיינר» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם. היום אנחנו נדבר על סיקרטים בתוך קוברנטיס, אבל לא כטקסט אלא כקבצים. זאת אומרת שיש לי בתיקייה שלי איזשהו license, איזושהי תעודה דיגיטלית שכוללת מידע רגיש.
נניח הרישיון שקניתי, ואני לא רוצה שהסיקרט הזה יהיה חלק מה deployment הסטנדרטי שאני מחלק לכולם. אני רוצה שה-license שלי או תעודה דיגיטלית של SSL יהיו כקובץ בתוך הסיקרט, ואז הקונטיינר ישתמש בו כקובץ רגיל, אבל סיקרט יהיה מופרד מה deployment ומהסרביס שאני נותן לכולם, וגם הקוברנטיס מאבטח אותו בצורה מיוחדת.
כל המטרה זה להפריד את המידע הרגיש מהגדרות הכלליות של האפליקציה, שהמידע הסודי ישב בקבצים נפרדים. אנחנו נדאג לא להעלות אותם לשום repository ולא להעתיק אותם לאף אחד.
אז יש קובץ my_secrets.yaml שבפנים כתוב key ו-value, וכדי שאף אחד לא יציץ לי ה-value הזה כתוב ב-base64. כל זה מצוין למידע פשוט שאפשר להציג אותו כמשתנה סביבה בתוך הקונטיינר.
אבל לפעמים האפליקציה צריכה את המידע כקובץ. היא מצפה לקבל קובץ. אז עכשיו אנחנו נראה איך להציג secret כקובץ בתוך הקונטיינר. אנחנו רוצים לצרף את ה-license הזה לתוך הסיקרט, ואז כקובץ לשלוף אותו בצד השני בתוך הקונטיינר.
בואו נעשה kubectl get secrets, ואנחנו רואים פה שיש לנו כרגע secret אחד. בואו נראה מה יש לנו בתוך הסיקרט הזה. נעשה kubectl describe secret. תתאר לי את מה שיש בפנים.
describe. והוא כותב לי כאן את השם שלו, והכי חשוב data. יש פה שני ערכים password, עשרים ואחד בתים, username, חמישה בתים, וכמובן שהוא לא חושף אותם.
הם נחשפים אך ורק בתוך הקונטיינר בפנים. עכשיו אני רוצה ליצור secret חדש, kubectl create secret, ושימו לב אני לא יוצר אותו מקובץ YAML אלא משורת פקודה. הצורה הזאת נקראת imperative.
זה אומר בציווי, בכוח. אני לא נותן לו איזשהו סוג, לא מגביל אותו לחוקים מסוימים, נותן לו שם, זה השם של הסיקרט, ואומר לו שהתוכן שלו יהיה from file ונותן לו נתיב לקובץ.
ועכשיו אני יוצר secret חדש בתוך הקלסטר, רק לא מקובץ YAML אלא משורת פקודה. ואנחנו רואים פה my_app_license. secret חדש. בואו נעשה גם עליו describe, נראה מה יש לו בפנים.
בפנים אנחנו רואים שיש לו מפתח בשם my_app_license.txt עם שלושה בתים. האמת, היה אותו אפקט אם הייתי עושה פה כזה דבר, נקודתיים, רווח, גרסה אחד, שתיים, שלוש, נניח.
זה גם היה נותן את אותו אפקט, אבל אני בחרתי להפריד ביניהם. פה יהיה הסיקרט עם משתני סביבה. זה הסיקרט הזה ב-get secrets, והסיקרט השני יהיה קשור ל-license.
אז כרגע בתוך הקלסטר יש לנו שני סיקרטים, אבל הקונטיינרים בפנים לא מקושרים לסיקרט החדש, וכדי להציג את הסיקרט כקובץ בתוך הקונטיינר אני צריך לעשות שני דברים. קודם כל, אני ברמת ספציפיקציה של ה-pod, של