אתם יכולים להחליף את אישורי ה-CA באשכול אדמין ב-Google Distributed Cloud כדי לחדש אותם לפני שהם יפוגו. אישורי ה-CA האלה נוצרים באמצעות אשכול האדמין, והם מנפיקים את האישורים שרכיבי המערכת של Kubernetes משתמשים בהם כדי לאמת את התקשורת שלהם. מפעילים את הרוטציה באמצעות gkectl, ואז מעדכנים את קובצי kubeconfig, שהרוטציה מבטלת את התוקף שלהם. המסמך הזה רלוונטי רק לאשכולות אדמין. לאשכולות של משתמשים, ראו החלפת אישורי CA של אשכולות משתמשים.
מידע על אישורי CA של אשכולות אדמין
יש שלושה אישורי CA שמשמשים את מערכת Kubernetes באשכול אדמין:
אישור ה-CA של etcd מאבטח את התקשורת משרת ה-API של Kubernetes לרפליקות של etcd, וגם את התקשורת בין הרפליקות של etcd. האישור הזה בחתימה עצמית.
אישור ה-CA של האשכול מאבטח את התקשורת בין שרת ה-API של Kubernetes לבין כל לקוחות ה-API הפנימיים של Kubernetes, למשל kubelet, מנהל הבקר והמתזמן. האישור הזה בחתימה עצמית.
אישור ה-CA של שרת ה-proxy הקדמי מאבטח את התקשורת עם ממשקי API נצברים. האישור הזה בחתימה עצמית.
אפשר להשתמש ב-gkectl כדי להפעיל רוטציה של אישורים. במהלך הרוטציה, gkectl מחליף את אישורי ה-CA של מערכת הליבה באשכול האדמין באישורים חדשים שנוצרו. לאחר מכן הוא מפיץ את אישורי ה-CA החדשים, אישורי הקצה והמפתחות הפרטיים לרכיבי המערכת של אשכול האדמין. הרוטציה מתבצעת בהדרגה, כדי שרכיבי המערכת יוכלו להמשיך לתקשר במהלך הרוטציה. עם זאת, שימו לב שעומסי העבודה והצמתים מופעלים מחדש במהלך הרוטציה.
בלי רוטציה, התוקף של אישורי CA ושל אישורי מישור הבקרה יפוג אחרי פרק זמן מסוים מהתאריך שבו נוצר האשכול.
תקופת התפוגה תלויה בסוג האשכול ובגרסה שבה הוא נוצר:
- אשכולות מתקדמים:
- תוקף של 10 שנים
- אשכולות לא מתקדמים:
- נוצרו לפני גרסה 1.5: תוקף של 10 שנים
- נוצרו בין גרסאות 1.5 עד 1.16: תוקף של 5 שנים
- נוצרו אחרי גרסה 1.16: תוקף של 30 שנה
האישורים של מישור הבקרה עוברים רוטציה באופן אוטומטי במהלך שדרוג האשכול, אבל רשויות האישורים לא עוברות רוטציה באופן אוטומטי. כלומר, צריך לבצע רוטציה של רשות האישורים לפני תאריך התפוגה שלה, בנוסף לשדרוגי הגרסאות הרגילים.
מגבלות
שימו לב למגבלה הבאה באשכולות מתקדמים:
- גרסה 1.31: אין תמיכה ברוטציית CA באשכולות מתקדמים.
- גרסה 1.32 ואילך: רוטציית CA נתמכת באשכולות מתקדמים, אבל יש כמה הבדלים קלים שצוינו במקומות הרלוונטיים במסמך הזה.
רוטציית אישורי CA מוגבלת לאישורי etcd, אשכול ופרוקסי קדמי שצוינו קודם.
רוטציית אישורי CA מוגבלת לאישורים שמונפקים באופן אוטומטי על ידי Google Distributed Cloud. הוא לא מעדכן אישורים שהונפקו באופן ידני על ידי אדמין, גם אם האישורים האלה נחתמו על ידי רשויות האישורים של המערכת.
רוטציית אישורי ה-CA מפעילה מחדש את שרת ה-API של Kubernetes, תהליכים אחרים במישור הבקרה וכל צומת באשכול האדמין כמה פעמים. כל שלב ברוטציה מתקדם באופן דומה לשדרוג אשכול. אשכול האדמין ואשכולות המשתמשים שמנוהלים על ידי אשכול האדמין ממשיכים לפעול במהלך סבב החלפת האישורים, אבל עומסי העבודה באשכול האדמין יופעלו מחדש ויתוזמנו מחדש. בנוסף, צפויות תקופות קצרות של השבתה במישור הבקרה של אשכול האדמין ובמישור הבקרה של אשכול המשתמש.
צריך לעדכן את קובץ ה-kubeconfig של אשכול האדמין באמצע תהליך הרוטציה של האישורים, ושוב אחרי שהתהליך מסתיים. הסיבה לכך היא שהאישור הישן של האשכול בוטל, ופרטי הכניסה בקובץ kubeconfig לא יפעלו יותר.
אחרי שמתחילים את הרוטציה של אישור ה-CA, אי אפשר לבטל אותה.
השלמת הרוטציה של אישור ה-CA עשויה להימשך זמן רב, בהתאם לגודל האשכול.
אם תהליך החלפת האישורים נקטע, אפשר להריץ שוב את אותה הפקודה כדי להמשיך אותו. עם זאת, חשוב לוודא שרק פקודת רוטציה אחת פועלת בכל פעם.
התחלת הסבב
כדי להתחיל את רוטציית האישורים, מריצים את הפקודה הבאה:
gkectl update credentials certificate-authorities rotate \
--admin-cluster \
--config ADMIN_CLUSTER_CONFIG \
--kubeconfig ADMIN_CLUSTER_KUBECONFIG
מחליפים את מה שכתוב בשדות הבאים:
ADMIN_CLUSTER_CONFIG: הנתיב של קובץ ההגדרות של אשכול האדמין
ADMIN_CLUSTER_KUBECONFIG: הנתיב לקובץ kubeconfig של אשכול האדמין
ההתנהגות של הפקודה משתנה בהתאם להגדרה של אשכול מתקדם:
מושבתת
הפקודה gkectl update credentials certificate-authorities rotate מתחילה ומבצעת את החצי הראשון של הרוטציה. הפקודה מושהית כדי לאפשר לכם להריץ את הפקודה הבאה לעדכון הקובץ kubeconfig.
עדכון הקובץ kubeconfig
כשהפקודה gkectl update credentials certificate-authorities rotate מושהית, מעדכנים את הקובץ kubeconfig של אשכול האדמין. הפעולה הזו מוסיפה אישור לקוח חדש ואישור CA חדש לקובץ kubeconfig. אישור הלקוח הישן מוסר מקובץ ה-kubeconfig, ואישור ה-CA הישן נשאר בקובץ ה-kubeconfig.
gkectl update credentials certificate-authorities update-kubeconfig \ --admin-cluster \ --config ADMIN_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
המשך הסבב
מריצים את הפקודה הבאה כדי לבצע את החצי השני של התהליך. הפקודה לא ממשיכה עד ש-gkectl מוודא שקובץ ה-kubeconfig המעודכן נמצא בספרייה הנוכחית.
gkectl update credentials certificate-authorities rotate \ --admin-cluster \ --complete \ --config ADMIN_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
כשהרוטציה מסתיימת, הוא מדווח על הגרסה הנוכחית של רשות האישורים.
מעדכנים שוב את הקובץ kubeconfig
אחרי שהחצי השני של הרוטציה מסתיים, מעדכנים שוב את הקובץ kubeconfig. הפעולה הזו מסירה את אישור ה-CA הישן מקובץ kubeconfig.
gkectl update credentials certificate-authorities update-kubeconfig \ --admin-cluster \ --config ADMIN_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
מופעל
אם האשכול המתקדם מופעל, הפקודה gkectl update credentials
certificate-authorities rotate היא סינכרונית. הפקודה מפיקה הודעות סטטוס לתחנת העבודה של האדמין בזמן שרוטציית ה-CA מתבצעת.
אחרי שהרוטציה של ה-CA מסתיימת, הפקודה מסתיימת ונוצר באופן אוטומטי קובץ kubeconfig חדש. קובץ ה-kubeconfig שציינתם בפקודה מוחלף בקובץ חדש. פלט הפקודה אמור להיראות כך:
Beginning CA rotation with generated CA ... Successfully rotated CA for admin cluster. The kubeconfig file "/home/ubuntu/kubeconfig" has been updated. Done rotating certificate-authorities
הפצת קובץ kubeconfig החדש
מפיצים את קובץ ה-kubeconfig החדש של אשכול האדמין לכל משתמשי האשכול.