רוטציה ידנית של אישורים

בוחרים גרסה של מאמר העזרה:

כברירת מחדל, האופרטור של AlloyDB Omni Kubernetes משתמש ב-cert-manager כדי להקצות קבוצה של אישורי TLS לכל אשכול מסד נתונים. בנוסף לאישור של שרת מסד הנתונים, המפעיל יוצר אישורים לרכיבי מישור הבקרה כדי לאבטח חיבורים פנימיים.

הכלי cert-manager מבצע אוטומטית חידוש של אישורים על סמך השדות duration ו-renewBefore של אובייקט Certificate, אבל יכול להיות שתצטרכו להפעיל ידנית החלפה של אישור בתרחישים הבאים:

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

לפני שמתחילים

  • מוודאים ש-kubectl מוגדר כך שתהיה לו גישה לאשכול Kubernetes.
  • מוודאים ש-cert-manager פועל באשכול Kubernetes.

רוטציה ידנית של אישורים

כדי להפעיל ידנית את החלפת האישורים, מוחקים את ה-Secret שמשויך לאובייקט cert-manager Certificate. הבקר cert-manager מבצע התאמה של האובייקט ומנפיק מחדש את האישור, וכך נוצר סוד חדש. עומסי עבודה שמשויכים לאופרטור AlloyDB Omni יטענו מחדש באופן אוטומטי את הגדרות ה-TLS שלהם כדי להשתמש בתעודה החדשה.

  1. מזהים את cert-manager Certificate שרוצים לסובב. האובייקטים האלה נמצאים במרחב השמות DBCluster ובמרחב השמות שבו מותקן אופרטור AlloyDB Omni. השמות של אישורי CA מתחילים בקידומת dbs-al-ca, ואילו השמות של אישורי עלים מתחילים בקידומת dbs-al-cert. בשלבים הבאים, משתמשים בשם של הסוד המשויך מהפלט.

    kubectl get certificate CERTIFICATE_NAME -n NAMESPACE -o wide
    
  2. לפני שמפעילים את הרוטציה, מגבים את הסוד של האישור:

    kubectl get secret SECRET_NAME -n NAMESPACE -o yaml > SECRET_NAME-NAMESPACE.yaml.bak
    
  3. מחיקת הסוד של האישור:

    kubectl delete secret SECRET_NAME -n NAMESPACE
    
  4. מחכים ש-cert-manager ייצור מחדש את סוד האישור:

    kubectl get secret SECRET_NAME -n NAMESPACE -w
    

אימות של רוטציית אישורים

אחרי שמבצעים רוטציה ידנית של האישורים, צריך לוודא שהאישורים החדשים נמצאים בשימוש:

  1. בודקים את הסוד של האישור. הערך של creationTimestamp צריך לשקף את הזמן אחרי שסובבתם את האישור באופן ידני:

    kubectl get secret SECRET_NAME -n NAMESPACE -o yaml
    
  2. בודקים את הסטטוס Certificate. מוודאים שהתאריכים של notBefore ו-notAfter בקטע הסטטוס נכונים:

    kubectl describe certificate CERTIFICATE_NAME -n NAMESPACE
    

המאמרים הבאים