בדף הזה מפורט מידע על הוצאה משימוש והסרה של גרסאות בטא של Ingress API
בגרסה 1.22 של Kubernetes בקוד פתוח. GKE יצרה חריגה חד-פעמית לאשכולות שנוצרו בגרסה 1.21 או בגרסאות קודמות, כדי להמשיך להשתמש בממשקי ה-API עד גרסה 1.23 למשך זמן נוסף להעברה. צריך להעביר את האשכולות ל-API מגרסה 1 לפני שגרסה 1.22 תגיע לסוף מחזור החיים.Ingress
ממשקי ה-API של Ingress בגרסת בטא שהוצאו משימוש והוסרו ב-Kubernetes גרסה 1.22 הם ממשקי API שהיו בגרסת בטא (v1beta1) ועברו לגרסת GA (v1). ממשקי ה-API בגרסת GA מספקים ערבויות תאימות לטווח ארוך יותר, ומומלץ להשתמש בהם במקום בממשקי ה-API בגרסת בטא שהוצאו משימוש.
אפשר לבצע פעולות בכל האובייקטים הקיימים באמצעות ממשקי ה-API של GA.
Ingress (זמין עד גרסה 1.23 לאשכולות שנוצרו בגרסה 1.21 או בגרסאות קודמות)
גרסאות הבטא של ממשקי ה-API (extensions/v1beta1 ו-networking.k8s.io/v1beta1) של Ingress לא מופעלות יותר באשכולות GKE שמריצים גרסה 1.22 ואילך, אם האשכול נוצר בגרסה 1.22 ואילך.
עם זאת, באשכולות שנוצרו ב-GKE בגרסה 1.21 או בגרסאות קודמות ושודרגו לגרסה 1.22 בגרסת התיקון 1.22.7-gke.300 או בגרסאות חדשות יותר, עדיין אפשר להשתמש בגרסאות הבטא של ה-API עד שהאשכול ישודרג לגרסה 1.23. זהו חריג חד-פעמי עבור אשכולות ישנים, כדי לתת לכם יותר זמן להעביר את האשכולות שלכם משימוש בגרסאות ה-API האלה, שהוסרו מ-Kubernetes בקוד פתוח בגרסה 1.22.
אשכולות שמריצים את GKE בגרסה 1.23 ואילך לא ישרתו יותר את ממשקי ה-API של Ingress בטא שהוצאו משימוש. אי אפשר יותר להחיל מניפסטים שמשתמשים בגרסאות האלה של API. אובייקטים שנשמרו בעבר ממשיכים לפעול, ואפשר לראות ולעדכן אותם באמצעות גרסאות ה-API החדשות, לפני השדרוג לגרסה 1.23 ואחריו.
- מעבירים את המניפסטים ואת לקוחות ה-API לשימוש בגרסת API networking.k8s.io/v1.
בטבלה הבאה מתוארים השינויים הבולטים בגרסת GA API:
שדה שינוי spec.backendהשם שונה ל spec.defaultBackend.בק-אנד serviceNameהשם שונה ל service.name.servicePortהשמות של שדות מספריים בבקשות backend servicePortישתנו ל-service.port.number. השם של שדות מחרוזת ב-BackendservicePortהשתנה ל-service.port.name.pathTypeעכשיו נדרש לכל נתיב שצוין. הערך יכול להיות: Prefix,ExactאוImplementationSpecific. כדי להתאים להתנהגות הלא מוגדרת שלv1beta1, משתמשים ב-ImplementationSpecific.
המניפסטים הבאים מתארים את אותו Ingress ב-v1 וב-v1beta1:
מניפסט v1beta1
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: example
spec:
backend:
serviceName: default-backend
servicePort: 80
rules:
- http:
paths:
- path: /testpath
backend:
serviceName: test
servicePort: 80
מניפסט v1
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example
spec:
defaultBackend:
service:
name: default-backend
port:
number: 80
rules:
- http:
paths:
- path: /testpath
pathType: ImplementationSpecific
backend:
service:
name: test
port:
number: 80
אפשר להשתמש בשאילתה הבאה כדי לזהות לקוחות שניגשים לממשקי ה-API של Ingress v1beta1 באשכולות שבהם מופעל Google Cloud Observability:
resource.type="k8s_cluster"
resource.labels.cluster_name="$CLUSTER_NAME"
protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@")
protoPayload.request.apiVersion=("extensions/v1beta1" OR "networking.k8s.io/v1beta1")
protoPayload.request.kind="Ingress"
NOT ("kube-system")
חיפוש אשכולות באמצעות ממשקי API שהוצאו משימוש
תוכלו לראות באילו אשכולות נעשה שימוש בממשקי API שיצאו משימוש בתובנות לגבי הוצאה משימוש. תובנות לגבי הוצאה משימוש מספקות גם מידע כמו אילו לקוחות API קוראים לממשקי ה-API שהוצאו משימוש באשכול שלכם.
אפשר גם להשתמש ביומני ביקורת כדי לגלות אילו לקוחות מבצעים קריאות לממשקי API שהוצאו משימוש.
איתור לקוחות API שמבצעים קריאות כתיבה ל-API שיצאו משימוש
במקרה של אשכולות שמופעל בהם Google Cloud Observability, אפשר להשתמש בשאילתת יומן הביקורת של פעילות האדמין הבאה כדי להציג את השימוש בממשקי API שהוצאו משימוש על ידי סוכני משתמש שלא מנוהלים על ידי Google:
resource.type="k8s_cluster"
labels."k8s.io/removed-release"="DEPRECATED_API_MINOR_VERSION"
protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@")
protoPayload.authenticationInfo.principalEmail!~("system:serviceaccount:kube-system:")
מחליפים את הערך DEPRECATED_API_MINOR_VERSION בגרסה המשנית שבה הוסר ה-API שהוצא משימוש, לדוגמה 1.22.
יומני הביקורת Admin Activity מופעלים אוטומטית באשכולות GKE. בעזרת השאילתה הזו, ביומנים מוצגים סוכני משתמש שמבצעים קריאות כתיבה לממשקי ה-API שהוצאו משימוש.
איתור לקוחות API שמבצעים קריאות קריאה ל-API שהוצאו משימוש
כברירת מחדל, ביומני הביקורת מוצגות רק קריאות כתיבה לממשקי ה-API שהוצאו משימוש. כדי להציג גם קריאות קריאה לממשקי API שיצאו משימוש, צריך להגדיר יומני ביקורת של גישה לנתונים.
פועלים לפי ההוראות להגדרת יומני ביקורת של גישה לנתונים באמצעות מסוף Google Cloud . במסוף Google Cloud , בוחרים באפשרות Kubernetes Engine API. בכרטיסייה Log Types (סוגי יומנים) בחלונית המידע,
בוחרים באפשרות Admin Read ובאפשרות Data Read.
אחרי שמפעילים את היומנים האלה, אפשר להשתמש בשאילתה המקורית כדי לראות גם קריאות קריאה וגם קריאות כתיבה לממשקי ה-API שהוצאו משימוש.
שדרוג רכיבים של צד שלישי
תובנות לגבי הוצאה משימוש יכולות להציג תוצאות לגבי סוכנים של צד שלישי שמבצעים קריאות לממשקי API שהוצאו משימוש באשכול שלכם.
כדי לפתור את הבעיות שזוהו בתובנות האלה, אפשר לנסות את השלבים הבאים:
- כדאי לפנות לספק התוכנה של הצד השלישי כדי לקבל גרסה מעודכנת.
- משדרגים את התוכנה של הצד השלישי לגרסה העדכנית ביותר. אם אי אפשר לשדרג את התוכנה, צריך לבדוק אם שדרוג GKE לגרסה שבה הוסרו ממשקי ה-API שהוצאו משימוש ישבש את השירות.
מומלץ לבצע את השדרוג הזה ואת שדרוג הגרסה של GKE באשכול staging כדי לעקוב אחרי שיבושים לפני שמשדרגים את אשכולות הייצור.
הכנה לשדרוג לגרסה 1.23
אין צורך למחוק וליצור מחדש אובייקטים של ה-API. כבר עכשיו אפשר לקרוא ולעדכן את כל האובייקטים הקיימים של API שנשמרו באמצעות הגרסאות החדשות של ה-API. עם זאת, מומלץ להעביר את הלקוחות ואת קובצי המניפסט לפני השדרוג ל-Kubernetes 1.23. מידע נוסף זמין בקטע What to do (מה צריך לעשות) במדריך להעברת Kubernetes Deprecated API.
אתם יכולים לראות תובנות והמלצות לגבי הוצאה משימוש כדי לקבוע אם באשכול שלכם נעשה שימוש בתכונה או ב-API של Kubernetes שהוצאו משימוש. מחפשים תובנות והמלצות לגבי השימוש ב-API של Ingress בגרסת בטא עם סוג המשנה DEPRECATION_K8S_1_22_V1BETA1_API.
תובנות לגבי הוצאה משימוש מבוססות על קריאות API שנצפו ל-APIs שהוצאו משימוש על ידי סוכני משתמש, ולא על ההגדרה של אובייקטים ב-Kubernetes.
עדכון אשכולות שהושפעו מהוצאה משימוש
כדי לשדרג אשכולות שהושפעו מהוצאה משימוש, מבצעים את השלבים הבאים:
- בודקים אילו סוכני משתמשים משתמשים בממשקי ה-API שהוצאו משימוש בתובנות לגבי הוצאה משימוש או ביומנים.
- צריך לעדכן את סוכני המשתמש שמשתמשים בממשקי ה-API שהוצאו משימוש כך שישתמשו בגרסאות נתמכות של API.
- מעדכנים לגרסאות האחרונות את כל תוכנות הצד השלישי שקוראות לממשקי API שיצאו משימוש.
- כדי להקטין את הסיכון לשיבושים כשממשקי API שהוצאו משימוש כבר לא זמינים, כדאי לשדרג אשכול בדיקה ולבדוק את האפליקציה בסביבת בדיקה לפני שמשדרגים את אשכול הייצור.
- אחרי שמעדכנים את כל סוכני המשתמשים, מערכת GKE מחכה 30 ימים בלי לזהות שימוש בממשקי API שהוצאו משימוש, ואז מבטלת את החסימה של שדרוגים אוטומטיים. שדרוגים אוטומטיים מתבצעים בהתאם ללוח זמנים לפרסום.
- אם אי אפשר לעדכן את סוכן המשתמש המושפע, אפשר לשדרג אשכול בדיקה נפרד כדי לבדוק אם השדרוג גורם לשיבושים. אם השדרוג לא גורם לשיבושים, אפשר לשדרג את האשכול באופן ידני.
משאבים
מידע נוסף זמין בתיעוד של Kubernetes OSS:
- בלוג Kubernetes: הסרות של API ב-Kubernetes גרסה 1.22
- הערות לגבי הגרסה Kubernetes 1.22
- מדריך להעברה של API שיצא משימוש ב-Kubernetes