טיפ קוברנטיס: שימוש בקונטקסט כדי לעבוד עם כמה קלאסטרים
פוסט זה כולל טיפ קצר על Docker. אם אתם רוצים ללמוד יותר לעומק על פיתוח עם Docker, Docker Compose או Kubernetes תשמחו לשמוע שבניתי קורס וידאו מקיף בנושא זה.
למידע נוסף והצטרפות לקורס בקרו בדף קורס Docker כאן באתר.
הטיפ הזה אמור היה להיות ממש פשוט אבל בגלל שאני הסתבכתי עם התיעוד שלהם כדי ללמוד אותו חשבתי שאולי גם לכם זה יעזור. המשחק הוא כזה-
הכלי kubectl משתמש בקובץ קונפיגורציה ברירת מחדל שנמצא בנתיב ~/.kube/config
. בתוך אותו קובץ יש הגדרות כמו לדוגמה:
apiVersion: v1
clusters:
- cluster:
server: https://cimaks-dns-bca70ca9.hcp.westeurope.azmk8s.io:443
name: cimaks
contexts:
- context:
cluster: cimaks
user: clusterUser_Playground_cimaks
name: cimaks
current-context: cimaks
kind: Config
preferences: {}
אבל אנחנו יכולים לקבל קבצי הגדרות אחרים ממקומות אחרים. לדוגמה כשאני פותח חשבון באוקטטו אני מקבל מהם קובץ קונפיגורציה שנראה ככה:
apiVersion: v1
clusters:
- cluster:
server: https://146.148.56.200:443
name: cloud_okteto_com
contexts:
- context:
cluster: cloud_okteto_com
extensions:
- extension: null
name: okteto
namespace: ynonp
user: 6b5b39bc-9c83-4d7b-a345-b03922c7e979
name: cloud_okteto_com
current-context: cloud_okteto_com
kind: Config
preferences: {}
שימו לב איך שכל קובץ קונפיגורציה פותח בבלוק clusters ואחריו בלוק contexts, ובתוך ה contexts יש הגדרה של קונטקסט והתיחסות לקלאסטר שהוגדר קודם.
ולמה זה יפה? כי עכשיו אם נשלב שני קבצי קונפיגורציה יחד אז נקבל קובץ קונפיגורציה אחד ארוך שכולל גם את הגדרת הקלאסטר והקונטקסט מהקובץ הראשון, וגם את ההגדרה מהקובץ השני. תכל'ס לא חייבים לשלב את שני הקבצים לקובץ אחד ואפשר להשתמש במשתנה סביבה KUBECONFIG
בשביל להגיד ל kubectl לאחד את הקונפיגורציה בזיכרון. אני כותב את הנתיבים לשני הקבצים בתור תוכן משתנה הסביבה:
$ export KUBECONFIG=~/.kube/config:~/Downloads/okteto-kube.config
ועכשיו הפקודה:
$ kubectl config get-contexts
מחזירה לי את שני הקונטקסטים משני קבצי הקונפיגורציה, כלומר מדפיסה:
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* cimaks cimaks
cloud_okteto_com cloud_okteto_com ynonp
מההדפסה אני רואה שפקודת ה kubectl הבאה שאכתוב תגיע לקלאסטר cimaks כי הוא מסומן בכוכבית. הפקודה use context בוחרת את הקונטקסט הפעיל ולכן אני יכול לשנות קלאסטר עם:
$ kubectl config use-context cloud_okteto_com
ועכשיו כל פקודת kubectl שאכתוב תפעל על הקלאסטר השני.