ההליך הזה מתייחס לשדרוג מ-Apigee Hybrid גרסה 1.15.x ל-Apigee Hybrid גרסה 1.16.9, ומגרסאות קודמות של Hybrid 1.16.x לגרסה 1.16.9.
אפשר להשתמש באותן פעולות לשדרוג גרסאות משניות (לדוגמה, מגרסה 1.15 לגרסה 1.16) ולשדרוג גרסאות של תיקוני אבטחה (לדוגמה, מגרסה 1.16.0 לגרסה 1.16.9).
אם אתם משדרגים מ-Apigee Hybrid גרסה 1.14 או גרסה ישנה יותר, אתם צריכים לשדרג קודם לגרסה 1.15 לפני שתשדרגו לגרסה 1.16.9. אפשר לעיין בהוראות בנושא שדרוג Apigee Hybrid לגרסה 1.15.
שינויים מ-Apigee Hybrid גרסה 1.15
חשוב לשים לב לשינויים הבאים:
-
פרופילי Seccomp:
החל מגרסה 1.16,
Apigee Hybrid מציע עכשיו את האפשרות להחיל פרופילי Seccomp על רכיבי זמן הריצה,
ובכך לשפר באופן משמעותי את מצב האבטחה של הפריסה. התכונה הזו מאפשרת לאדמינים ולצוותי אבטחה ב-Apigee להגביל את קריאות המערכת שתהליך מבוסס-קונטיינר יכול לבצע לליבת המארח. אם מגבילים את המכולה רק לקריאות המערכת (syscalls) הנדרשות, אפשר:
- שיפור האבטחה: צמצום הסיכון לפריצות למאגרי מידע ולהסלמת הרשאות.
- הקפדה על הרשאות מינימליות: מוודאים שלרכיבים יש גישה רק לקריאות המערכת המדויקות שנדרשות לפעולה שלהם.
- תאימות ל-Meet: מספק אמצעי בקרה קריטי לעמידה בדרישות מחמירות של תאימות לאבטחה.
- UDCA בהסרה של Apigee hybrid: ב-Apigee hybrid גרסה 1.16, הוסר הרכיב Unified Data Collection Agent (UDCA). האחריות לשליחת נתוני ניתוח, מעקב ומצב פריסה למישור הבקרה של Apigee מטופלת עכשיו באמצעות צינור נתונים שמבוסס על Google Cloud Pub/Sub. צינור הנתונים שמבוסס על Pub/Sub הוא מנגנון איסוף הנתונים שמוגדר כברירת מחדל מאז Apigee hybrid גרסה 1.14.0.
-
apigee-guardrailsחשבון שירות: בגרסה 1.16.0, Apigee Hybrid מציגapigee-guardrailsחשבון שירות של Google IAM. הערך הזה משמש בתרשים שלapigee-operatorבמהלך ההתקנה כדי לוודא שכל ממשקי ה-API הנדרשים מופעלים בפרויקט.כך עושים זאת:
-
תמיכה בגרסאות 1.18 ו-1.19 של cert-manager:
Apigee Hybrid גרסה 1.16 תומכת ב-cert-manager גרסה 1.18 וגרסה 1.19. בגרסה 1.18 של cert-manager, יש שינוי בערך ברירת המחדל של
Certificate.Spec.PrivateKey.rotationPolicyשיכול להשפיע על התנועה. אם אתם משדרגים מגרסה קודמת של Apigee hybrid, ואתם משדרגים לגרסה 1.18 של cert-manager או לגרסה מתקדמת יותר, אתם צריכים לפעול לפי ההוראות לשדרוג cert-manager במדריך הזה.
מידע נוסף על התכונות בגרסה 1.16 של Hybrid זמין בנתוני הגרסה של Apigee Hybrid v1.16.9.
דרישות מוקדמות
לפני שמשדרגים לגרסה 1.16 של Hybrid, צריך לוודא שההתקנה עומדת בדרישות הבאות:
- אם בהתקנה ההיברידית שלכם פועלת גרסה ישנה יותר מגרסה v1.15, אתם צריכים לשדרג לגרסה 1.15 לפני השדרוג לגרסה v1.16. מידע נוסף על שדרוג Apigee Hybrid לגרסה 1.15
- Helm גרסה v3.14.2 ומעלה.
-
kubectl: גרסה נתמכת שלkubectlשמתאימה לגרסת הפלטפורמה של Kubernetes. פלטפורמות וגרסאות נתמכות:kubectl - cert-manager: גרסה נתמכת של cert-manager. פלטפורמות וגרסאות נתמכות: cert-manager אם צריך, אפשר לשדרג את cert-manager בקטע הכנה לשדרוג לגרסה 1.16 שבהמשך.
לפני שמשדרגים לגרסה 1.16.9 – מגבלות והערות חשובות
ב-Apigee hybrid 1.16.9 נוספה מגבלת proxy חדשה ומשופרת לכל סביבה, שמאפשרת לפרוס יותר proxy ורכיבי Shared Flow בסביבה אחת. במאמר מגבלות: שרתי proxy ל-API מוסברות המגבלות על מספר השרתים וזרימות הנתונים המשותפות שאפשר לפרוס לכל סביבה. התכונה הזו זמינה רק בארגונים היברידיים חדשים, ולא ניתן להחיל אותה על ארגונים ששודרגו. כדי להשתמש בתכונה הזו, צריך לבצע התקנה חדשה של hybrid 1.16.9 וליצור ארגון חדש.
התכונה הזו זמינה באופן בלעדי כחלק מתוכנית המינוי לשנת 2024, והיא כפופה להרשאות שניתנות במסגרת המינוי הזה. מידע נוסף על התכונה הזו זמין במאמר מכסות משופרות של פרוקסי לכל סביבה.
יכול להיות ששדרוג לגרסה 1.16 של Apigee Hybrid ידרוש השבתה.
כשמשדרגים את בקר Apigee לגרסה 1.16.9, כל הפריסות של Apigee עוברות הפעלה מחדש מתגלגלת. כדי למזער את זמן ההשבתה בסביבות ייצור היברידיות במהלך הפעלה מחדש מתגלגלת, חשוב לוודא שמופעלים לפחות שני אשכולות (באותו אזור או במרכז נתונים, או באזורים או במרכזי נתונים שונים). להפנות את כל תנועת הייצור לאשכול יחיד, להעביר את האשכול שרוצים לשדרג למצב אופליין ואז להמשיך בתהליך השדרוג. חוזרים על התהליך לכל אשכול.
ב-Apigee מומלץ לשדרג את כל האשכולות בהקדם האפשרי אחרי שמתחילים את השדרוג, כדי לצמצם את הסיכויים להשפעה על הסביבה הפרודקטיבית. אין מגבלת זמן לגבי השדרוג של כל שאר האשכולות אחרי שדרוג האשכול הראשון. עם זאת, עד שכל האשכולות שנותרו ישודרגו, הגיבוי והשחזור של Cassandra לא יכולים לפעול עם גרסאות מעורבות. לדוגמה, אי אפשר להשתמש בגיבוי מ-Hybrid 1.15 כדי לשחזר מופע של Hybrid 1.16.
אין צורך להשעות באופן מלא את שינויי מישור הניהול במהלך שדרוג. ההשעיות הזמניות הנדרשות לשינויים במישור הניהול מצוינות בהוראות השדרוג שבהמשך.
סקירה כללית על שדרוג לגרסה 1.16.9
ההליכים לשדרוג Apigee hybrid מאורגנים בקטעים הבאים:
הכנה לשדרוג לגרסה 1.16
גיבוי ההתקנה ההיברידית
- בהוראות האלה נעשה שימוש במשתנה הסביבה APIGEE_HELM_CHARTS_HOME עבור הספרייה במערכת הקבצים שבה התקנתם את תרשימי Helm. אם צריך, משנים את הספרייה לספרייה הזו ומגדירים את המשתנה באמצעות הפקודה הבאה:
Linux
export APIGEE_HELM_CHARTS_HOME=$PWD
echo $APIGEE_HELM_CHARTS_HOMEMac OS
export APIGEE_HELM_CHARTS_HOME=$PWD
echo $APIGEE_HELM_CHARTS_HOMEWindows
set APIGEE_HELM_CHARTS_HOME=%CD%
echo %APIGEE_HELM_CHARTS_HOME% - יוצרים עותק גיבוי של ספריית 1.15
$APIGEE_HELM_CHARTS_HOME/. אפשר להשתמש בכל תהליך גיבוי. לדוגמה, אפשר ליצור קובץtarשל כל הספרייה באמצעות:tar -czvf $APIGEE_HELM_CHARTS_HOME/../apigee-helm-charts-v1.15-backup.tar.gz $APIGEE_HELM_CHARTS_HOME - מגבים את מסד הנתונים של Cassandra לפי ההוראות במאמר בנושא גיבוי ושחזור של Cassandra.
-
מוודאים שקובצי המפתח ואישור ה-TLS (
.crt,.keyו/או.pem) נמצאים בספרייה$APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/.
שדרוג גרסת Kubernetes
בודקים את הגרסה של פלטפורמת Kubernetes, ואם צריך, משדרגים את פלטפורמת Kubernetes לגרסה שנתמכת גם ב-hybrid 1.15 וגם ב-hybrid 1.16. אם אתם צריכים עזרה, תוכלו לעיין במסמכי התיעוד של הפלטפורמה.
שולפים את תרשימי Apigee Helm.
התרשימים של Apigee Hybrid מתארחים ב-Google Artifact Registry:
oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
כדי להעתיק את כל תרשימי ה-Helm של Apigee hybrid לאחסון המקומי, משתמשים בפקודה pull הבאה:
export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-chartsexport CHART_VERSION=1.16.9helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar
עריכת kustomization.yaml במרחב שמות מותאם אישית של Apigee
אם מרחב השמות של Apigee הוא לא apigee, צריך לערוך את הקובץ apigee-operator/etc/crds/default/kustomization.yaml ולהחליף את הערך namespace במרחב השמות של Apigee.
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: APIGEE_NAMESPACE
אם אתם משתמשים ב-apigee כמרחב השמות, אתם לא צריכים לערוך את הקובץ.
-
כדי להשתמש בתכונה של הרצה יבשה של
kubectl, מריצים את הפקודה הבאה:kubectl apply -k apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false --dry-run=server
-
אחרי האימות באמצעות הפקודה להרצה יבשה, מריצים את הפקודה הבאה:
kubectl apply -k apigee-operator/etc/crds/default/ \ --server-side \ --force-conflicts \ --validate=false
- מאמתים את ההתקנה באמצעות הפקודה
kubectl get crds:kubectl get crds | grep apigee
הפלט אמור להיראות כך:
apigeedatastores.apigee.cloud.google.com 2024-08-21T14:48:30Z apigeedeployments.apigee.cloud.google.com 2024-08-21T14:48:30Z apigeeenvironments.apigee.cloud.google.com 2024-08-21T14:48:31Z apigeeissues.apigee.cloud.google.com 2024-08-21T14:48:31Z apigeeorganizations.apigee.cloud.google.com 2024-08-21T14:48:32Z apigeeredis.apigee.cloud.google.com 2024-08-21T14:48:33Z apigeerouteconfigs.apigee.cloud.google.com 2024-08-21T14:48:33Z apigeeroutes.apigee.cloud.google.com 2024-08-21T14:48:33Z apigeetelemetries.apigee.cloud.google.com 2024-08-21T14:48:34Z cassandradatareplications.apigee.cloud.google.com 2024-08-21T14:48:35Z
בודקים את התוויות בצמתי האשכול.
כברירת מחדל, Apigee מתזמן את הפעלת ה-data pods בצמתים עם התווית cloud.google.com/gke-nodepool=apigee-data, ואת הפעלת ה-runtime pods בצמתים עם התווית cloud.google.com/gke-nodepool=apigee-runtime. אתם יכולים להתאים אישית את תוויות מאגר הצמתים בקובץ overrides.yaml.
מידע נוסף זמין במאמר בנושא הגדרת מאגרי צמתים ייעודיים.
הגדרה של חשבון השירות apigee-guardrails
החל מגרסה 1.16 של Hybrid, נדרש חשבון השירות apigee-guardrails כדי לשדרג את התרשים apigee-operator.
בתהליך הבא, בוחרים את סוג האימות של חשבון השירות שבו אתם משתמשים.
-
מוודאים שיש לכם הרשאה להפעיל את הפקודה
create-service-account. אם הרגע הורדתם את התרשימים, יכול להיות שהקובץcreate-service-accountלא במצב הפעלה. בספרייה APIGEE_HELM_CHARTS_HOME, מריצים את הפקודה הבאה:./apigee-operator/etc/tools/create-service-account --help
אם הפלט מציין
permission denied, צריך להפוך את הקובץ לניתן להפעלה, למשל באמצעותchmodב-Linux, ב-MacOS או ב-UNIX, או בסייר הקבצים של Windows, או באמצעות הפקודהicaclsב-Windows. לדוגמה:chmod +x ./apigee-operator/etc/tools/create-service-account
-
יוצרים את חשבון השירות
apigee-guardrails:סודות ב-Kubernetes
./apigee-operator/etc/tools/create-service-account \ --env prod \ --profile apigee-guardrails \ --dir service-accounts
הפקודה הזו יוצרת את חשבון השירות
apigee-guardrailsומורידה את המפתח לספרייהservice-accounts/.קובצי JSON
./apigee-operator/etc/tools/create-service-account \ --env prod \ --profile apigee-guardrails \ --dir ./apigee-operator/
הפקודה הזו יוצרת את חשבון השירות
apigee-guardrailsומורידה את המפתח לספריית התרשיםapigee-operator/.Vault
./apigee-operator/etc/tools/create-service-account \ --env prod \ --profile apigee-guardrails \ --dir service-accounts
הפקודה הזו יוצרת את חשבון השירות
apigee-guardrailsומורידה את המפתח לספרייהservice-accounts/.WIF for GKE
./apigee-operator/etc/tools/create-service-account \ --env prod \ --profile apigee-guardrails \ --dir service-accounts
הפקודה הזו יוצרת את חשבון השירות
apigee-guardrailsומורידה את המפתח לספרייהapigee-operator/etc/tools/service-accounts/. אין צורך בקובץ המפתח שהורדתם ואפשר למחוק אותו.WIF בפלטפורמות אחרות
./apigee-operator/etc/tools/create-service-account \ --env prod \ --profile apigee-guardrails \ --dir service-accounts
הפקודה הזו יוצרת את חשבון השירות
apigee-guardrailsומורידה את המפתח לספרייהservice-accounts/. -
מגדירים אימות לחשבון השירות
apigee-guardrails:סודות ב-Kubernetes
יוצרים את הסוד של Kubernetes באמצעות קובץ המפתח של חשבון השירות
apigee-guardrailsבספרייהservice-accounts/:kubectl create secret generic apigee-guardrails-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-guardrails.json" \ -n $APIGEE_NAMESPACEמוסיפים לקובץ
overrides.yamlאת הנתונים הבאים:guardrails: serviceAccountRef: apigee-guardrails-svc-account
קובצי JSON
מוסיפים לקובץ
overrides.yamlאת הנתונים הבאים, תוך שימוש בנתיב לקובץ המפתח של חשבון השירותapigee-guardrailsבספרייהapigee-operator/:guardrails: serviceAccountPath: $PROJECT_ID-apigee-guardrails.json
Vault
- מעדכנים את הסוד של Vault
secret/data/apigee/orgsakeysכדי להוסיף רשומה שלguardrailsעם התוכן של קובץ המפתח של חשבון השירותapigee-guardrails.vault kv patch secret/apigee/orgsakeys guardrails="$(cat ./service-accounts/hybrid115-apigee-guardrails.json)"
-
חשבון השירות ב-Kubernetes (KSA) של אמצעי הבקרה נקרא
apigee-operator-guardrails-sa. מוסיפים את ה-KSA של אמצעי הבקרה לפעולות אסורות לחשבונות שירות ספציפיים לארגון שמקושרים לתפקידapigee-orgsakeysב-Vault.- כדי לקבל את הרשימה הנוכחית של הקישורים של KSAs:
vault read auth/kubernetes/role/apigee-orgsakeys
הפלט צריך להיות בפורמט הבא:
Key Value --- ----- alias_name_source serviceaccount_uid bound_service_account_names BOUND_SERVICE_ACCOUNT_NAMES bound_service_account_namespace_selector n/a bound_service_account_namespaces APIGEE_NAMESPACE
בפלט,
BOUND_SERVICE_ACCOUNT_NAMESהיא רשימה של שמות חשבונות שירות שמופרדים בפסיקים. מוסיפים אתapigee-operator-guardrails-saלרשימת השמות. לדוגמה (ללא מעברי השורה שנוספו לצורך קריאות):apigee-manager,apigee-cassandra-default,apigee-cassandra-backup-sa, apigee-cassandra-restore-sa,apigee-cassandra-schema-setup-myhybrido rg-5b044c1,apigee-cassandra-schema-val-myhybridorg-5b044c1,apigee-c assandra-user-setup-myhybridorg-5b044c1,apigee-mart-myhybridorg-5b0 44c1,apigee-mint-task-scheduler-myhybridorg-5b044c1,apigee-connect- agent-myhybridorg-5b044c1,apigee-watcher-myhybridorg-5b044c1,apigee -metrics-apigee-telemetry,apigee-open-telemetry,apigee-synchronizer -myhybridorg-dev-ee52aca,apigee-runtime-telemetry-collector-apigee- telemetry,apigee-logger-apigee-e-myhybrridorg-dev-ee52aca,apigee-sy nchronizer-myhybridog-prod-2d0221c,apigee-runtime-myhybridorg-prod- 2d0221c,apigee-operator-guardrails-sa
- מעדכנים את הקישורים לתפקיד
apigee-orgsakeysעם הרשימה המעודכנת של שמות חשבונות השירות:vault write auth/kubernetes/role/apigee-orgsakeys \ bound_service_account_names=UPDATED_BOUND_SERVICE_ACCOUNT_NAMES \ bound_service_account_namespaces=APIGEE_NAMESPACE \ policies=apigee-orgsakeys-auth \ ttl=1m
- כדי לקבל את הרשימה הנוכחית של הקישורים של KSAs:
-
הוספת אמצעי הגנה ל-
SecretProviderClass- עורכים את קובץ
spc-org.yaml. - בקטע
spec.parameters.objects, מוסיפים הגבלה:- objectName: "guardrails" secretPath: "" secretKey: "" - עדכון של
SecretProviderClass:kubectl -n APIGEE_NAMESPACE apply -f spc-org.yaml
- עורכים את קובץ
WIF for GKE
חשבון השירות ב-Kubernetes (KSA) של אמצעי הבקרה נקרא
apigee-operator-guardrails-sa. יוצרים את הקישור לחשבון השירות של Google (GSA)apigee-guardrailsבאמצעות הפקודה הבאה:gcloud iam service-accounts add-iam-policy-binding apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$APIGEE_NAMESPACE/apigee-operator-guardrails-sa]" \ --project $PROJECT_IDמוסיפים לקובץ
overrides.yamlאת הנתונים הבאים:guardrails: gsa: apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com
WIF בפלטפורמות אחרות
חשבון השירות ב-Kubernetes (KSA) של אמצעי הבקרה נקרא
apigee-operator-guardrails-sa. צריך להעניק ל-KSA של אמצעי הבקרה גישה להתחזות לapigee-guardrailsחשבון שירות של Google (GSA), ולהגדיר את ההחלפות כך שישתמשו בקובץ הגדרות של פרטי כניסה.- נותנים ל-KSA גישה להתחזות ל-GSA באמצעות הפקודה הבאה:
תבנית
gcloud iam service-accounts add-iam-policy-binding \ apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/system:serviceaccount:APIGEE_NAMESPACE:apigee-operator-guardrails-sa" \ --role=roles/iam.workloadIdentityUser
דוגמה
gcloud iam service-accounts add-iam-policy-binding \ apigee-guardrails@my-project.iam.gserviceaccount.com \ --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-operator-guardrails-sa" \ --role=roles/iam.workloadIdentityUser
כאשר:
-
PROJECT_ID: מזהה הפרויקט ב-Google Cloud. -
PROJECT_NUMBER: מספר הפרויקט שבו יצרתם את מאגר הזהויות של עומסי העבודה. -
POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה. -
APIGEE_NAMESPACE: מרחב השמות שבו מותקן Apigee Hybrid.
-
- יוצרים קובץ תצורה של פרטי הכניסה לחשבון השירות
apigee-guardrails:gcloud iam workload-identity-pools create-cred-config \ projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID \ --service-account=apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com \ --credential-source-file=/var/run/service-account/token \ --credential-source-type=text \ --output-file=apigee-guardrails-credential-configuration.jsonכאשר
WORKLOAD_PROVIDER_IDהוא המזהה של ספק מאגר הזהויות של עומסי העבודה. - מגדירים את
apigee-guardrailsלשימוש באיחוד שירותי אימות הזהות של עומסי עבודה באחת מהשיטות הבאות:WIF: secrets
-
יוצרים סוד חדש של Kubernetes באמצעות קובץ מקור פרטי הכניסה לכל קובץ תצורה של פרטי כניסה.
kubectl create secret -n APIGEE_NAMESPACE generic guardrails-workload-identity-secret --from-file="client_secret.json=./apigee-guardrails-credential-configuration.json"
-
מחליפים את הערך של
serviceAccountRefבסוד החדש:guardrails: serviceAccountRef: guardrails-workload-identity-secret
WIF: files
מעבירים את קובץ
apigee-guardrails-credential-configuration.jsonשנוצר לספריית התרשימיםapigee-operator/.מוסיפים לקובץ
overrides.yamlאת הנתונים הבאים:guardrails: serviceAccountPath: apigee-guardrails-credential-configuration.json
WIF: Vault
מעדכנים את המפתח של חשבון השירות
guardrailsב-Vault באמצעות קובץ מקור פרטי הכניסה המתאים:SAKEY=$(cat .apigee-guardrails-credential-configuration.json); kubectl -n APIGEE_NAMESPACE exec vault-0 -- vault kv patch secret/apigee/orgsakeys guardrails="$SAKEY"
מידע נוסף זמין בכתובת
Storing service account keys in Hashicorp Vault. -
יוצרים סוד חדש של Kubernetes באמצעות קובץ מקור פרטי הכניסה לכל קובץ תצורה של פרטי כניסה.
- מעדכנים את הסוד של Vault
שדרוג cert-manager
Apigee hybrid v1.16 תומך בגרסאות cert-manager 1.16 עד 1.19. יש שינוי ב-cert-manager 1.18 שיכול לגרום לבעיה בתנועת הגולשים. בגרסה 1.18 של cert-manager, ערך ברירת המחדל של Certificate.Spec.PrivateKey.rotationPolicy השתנה מ-Never ל-Always. במקרים של שדרוג התקנות של Apigee hybrid, זה עלול לגרום לבעיה בתעבורה. כשמשדרגים ל-hybrid v1.16 מגרסה קודמת, צריך לערוך את אישור apigee-ca כדי לפצות על השינוי הזה, או להשאיר את הגרסה של cert-manager בגרסה 1.17.x או בגרסה נמוכה יותר.
לפני שמשדרגים את cert-manager לגרסה 1.18 או 1.19, צריך לבצע את השלבים הבאים כדי לערוך את האישור apigee-ca
ולהגדיר את הערך של Certificate.Spec.PrivateKey.rotationPolicy ל-Never.
-
בודקים את התוכן של אישור
apigee-caכדי לראות אםrotationPolicyמוגדר:kubectl get certificate apigee-ca -n cert-manager -o yaml
מחפשים את הערכים בקטע
spec.privateKeyבפלט:... spec: commonName: apigee-hybrid duration: 87600h isCA: true issuerRef: group: cert-manager.io kind: ClusterIssuer name: apigee-root-certificate-issuer privateKey: algorithm: ECDSA # Note: rotationPolicy would appear here if it is set. size: 256 secretName: apigee-ca ... -
אם
rotationPolicyלא מוגדר או אם הוא מוגדר לערךAlways, צריך לערוך את אישורapigee-caכדי להגדיר את הערך שלrotationPolicyל-Never:- קודם מבצעים הרצה יבשה:
kubectl patch Certificate \ --dry-run=server \ -n cert-manager \ --type=json \ -p='[{"op": "replace", "path": "/spec/privateKey/rotationPolicy", "value": "Never"}]' \ -o=yaml \ apigee-ca - מחילים תיקון על האישור:
kubectl patch Certificate \ -n cert-manager \ --type=json \ -p='[{"op": "replace", "path": "/spec/privateKey/rotationPolicy", "value": "Never"}]' \ -o=yaml \ apigee-ca
- קודם מבצעים הרצה יבשה:
-
מוודאים שהערך של
rotationPolicyמוגדר עכשיו כ-Never:kubectl get certificate apigee-ca -n cert-manager -o yaml
הפלט אמור להיראות כך:
... spec: commonName: apigee-hybrid duration: 87600h isCA: true issuerRef: group: cert-manager.io kind: ClusterIssuer name: apigee-root-certificate-issuer privateKey: algorithm: ECDSA rotationPolicy: Never size: 256 secretName: apigee-ca ... -
משדרגים את cert-manager. הפקודה הבאה תוריד ותתקין את cert-manager v1.19.2:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.19.2/cert-manager.yaml
רשימת הגרסאות הנתמכות מופיעה במאמר פלטפורמות וגרסאות נתמכות: cert-manager.
כך עושים זאת:
- בעיה ידועה מספר 465834046
- cert-manager גרסה 1.18: ערך ברירת המחדל של
Certificate.Spec.PrivateKey.rotationPolicyהוא עכשיוAlways
התקנה של זמן הריצה של גרסה 1.16.9 של Apigee Hybrid
- אם לא, עוברים אל ספריית
APIGEE_HELM_CHARTS_HOME. מריצים את הפקודות הבאות מהספרייה הזו. - משדרגים את Apigee Operator/Controller:
הרצת בדיקה:
helm upgrade operator apigee-operator/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run=server
שדרוג התרשים:
helm upgrade operator apigee-operator/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
אימות ההתקנה של Apigee Operator:
helm ls -n APIGEE_NAMESPACE
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION operator apigee 3 2024-08-21 00:42:44.492009 -0800 PST deployed apigee-operator-1.16.9 1.16.9
כדי לוודא שהיא פועלת, בודקים את הזמינות שלה:
kubectl -n APIGEE_NAMESPACE get deploy apigee-controller-manager
NAME READY UP-TO-DATE AVAILABLE AGE apigee-controller-manager 1/1 1 1 7d20h
- שדרוג מאגר הנתונים של Apigee:
הרצת בדיקה:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run=server
שדרוג התרשים:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
כדי לוודא ש-
apigeedatastoreפועל, בודקים את המצב שלו:kubectl -n APIGEE_NAMESPACE get apigeedatastore default
NAME STATE AGE default running 2d
- שדרוג הטלמטרייה של Apigee:
הרצת בדיקה:
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run=server
שדרוג התרשים:
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
כדי לוודא שהיא פועלת, בודקים את המצב שלה:
kubectl -n APIGEE_NAMESPACE get apigeetelemetry apigee-telemetry
NAME STATE AGE apigee-telemetry running 2d
- שדרוג של Apigee Redis:
הרצת בדיקה:
helm upgrade redis apigee-redis/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run=server
שדרוג התרשים:
helm upgrade redis apigee-redis/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
כדי לוודא שהיא פועלת, בודקים את המצב שלה:
kubectl -n APIGEE_NAMESPACE get apigeeredis default
NAME STATE AGE default running 2d
- משדרגים את Apigee ingress manager:
הרצת בדיקה:
helm upgrade ingress-manager apigee-ingress-manager/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run=server
שדרוג התרשים:
helm upgrade ingress-manager apigee-ingress-manager/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
כדי לוודא שהיא פועלת, בודקים את הזמינות שלה:
kubectl -n APIGEE_NAMESPACE get deployment apigee-ingressgateway-manager
NAME READY UP-TO-DATE AVAILABLE AGE apigee-ingressgateway-manager 2/2 2 2 2d
- משדרגים את הארגון ב-Apigee:
הרצת בדיקה:
helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run=server
שדרוג התרשים:
helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
כדי לוודא שהיא פועלת, בודקים את המצב של הארגון הרלוונטי:
kubectl -n APIGEE_NAMESPACE get apigeeorg
NAME STATE AGE apigee-my-org-my-env running 2d
- משדרגים את הסביבה.
צריך להתקין סביבה אחת בכל פעם. מציינים את הסביבה באמצעות
--set env=ENV_NAME.הרצת בדיקה:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE \ --dry-run=server
- ENV_RELEASE_NAME הוא שם שמשמש למעקב אחרי התקנות ושדרוגים של תרשים
apigee-env. השם הזה צריך להיות ייחודי ולא יכול להיות זהה לשמות אחרים של Helm release בהתקנה. בדרך כלל זהה ל-ENV_NAME. עם זאת, אם לסביבה יש את אותו שם כמו לקבוצת הסביבות, צריך להשתמש בשמות שחרור שונים לסביבה ולקבוצת הסביבות, למשלdev-env-releaseו-dev-envgroup-release. מידע נוסף על גרסאות ב-Helm זמין במאמר Three big concepts (שלושה מושגים חשובים) במאמרי העזרה של Helm. - ENV_NAME הוא שם הסביבה שמשדרגים.
- OVERRIDES_FILE הוא קובץ ההחלפות החדש שלך לגרסה 1.16.9
שדרוג התרשים:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE
כדי לוודא שהיא פועלת, בודקים את המצב של סביבת ה-env המתאימה:
kubectl -n APIGEE_NAMESPACE get apigeeenv
NAME STATE AGE GATEWAYTYPE apigee-my-org-my-env running 2d
- ENV_RELEASE_NAME הוא שם שמשמש למעקב אחרי התקנות ושדרוגים של תרשים
-
משדרגים את קבוצות הסביבות (
virtualhosts).- צריך לשדרג כל קבוצת סביבות (virtualhost) בנפרד. מציינים את קבוצת הסביבות באמצעות
--set envgroup=ENV_GROUP_NAME. חוזרים על הפקודות הבאות לכל קבוצת סביבות שמוזכרת בקובץ overrides.yaml:הרצת בדיקה:
helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --set envgroup=ENV_GROUP_NAME \ -f OVERRIDES_FILE \ --dry-run=server
ENV_GROUP_RELEASE_NAME הוא השם שבו התקנתם בעבר את תרשים
apigee-virtualhost. בדרך כלל זה הנתיב ENV_GROUP_NAME.שדרוג התרשים:
helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --set envgroup=ENV_GROUP_NAME \ -f OVERRIDES_FILE
- בודקים את המצב של ApigeeRoute (AR).
התקנת
virtualhostsיוצרת ApigeeRouteConfig (ARC), שיוצר באופן פנימי ApigeeRoute (AR) אחרי שה-watcher של Apigee מאחזר פרטים שקשורים לקבוצת סביבות ממישור הבקרה. לכן, צריך לבדוק שהסטטוס של ה-AR המתאים הוא running:kubectl -n APIGEE_NAMESPACE get arc
NAME STATE AGE apigee-org1-dev-egroup 2d
kubectl -n APIGEE_NAMESPACE get ar
NAME STATE AGE apigee-org1-dev-egroup-123abc running 2d
- צריך לשדרג כל קבוצת סביבות (virtualhost) בנפרד. מציינים את קבוצת הסביבות באמצעות
- אחרי שמוודאים שכל ההתקנות שודרגו בהצלחה, מוחקים את הגרסה הישנה יותר של
apigee-operatorממרחב השמותapigee-system.- מסירים את הגרסה הישנה של
operator:helm delete operator -n apigee-system
- מוחקים את מרחב השמות
apigee-system:kubectl delete namespace apigee-system
- מסירים את הגרסה הישנה של
- משדרגים את
operatorשוב במרחב השמות של Apigee כדי להתקין מחדש את המשאבים שנמחקו בהיקף האשכול:helm upgrade operator apigee-operator/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides.yaml
חזרה לגרסה קודמת
כדי לחזור לגרסה הקודמת, משתמשים בגרסה הקודמת של התרשים כדי לבטל את תהליך השדרוג בסדר הפוך. מתחילים עם apigee-virtualhost, עוברים אחורה עד apigee-operator, ואז משחזרים את ה-CRD.
- מחזירים את התרשימים למצב הקודם. הפקודות הבאות מניחות שאתם משתמשים בתרשימים מהגרסה הקודמת (v1.15.x).
-
מריצים את הפקודה הבאה לכל קבוצת סביבות:
helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f 1.15_OVERRIDES_FILE
-
מריצים את הפקודה הבאה לכל סביבה:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set env=ENV_NAME \ -f 1.15_OVERRIDES_FILE
-
apigee-org:helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f 1.15_OVERRIDES_FILE
-
apigee-ingress-manager:helm upgrade ingress-manager apigee-ingress-manager/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f 1.15_OVERRIDES_FILE
-
apigee-redis:helm upgrade redis apigee-redis/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f 1.15_OVERRIDES_FILE
-
apigee-telemetry:helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f 1.15_OVERRIDES_FILE
-
apigee-datastore:helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f 1.15_OVERRIDES_FILE
-
apigee-operator:helm upgrade operator apigee-operator/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f 1.15_OVERRIDES_FILE
-
- כדי לבטל את השינויים ב-CRD, מתקינים מחדש את ה-CRD הישנים.
kubectl apply -k apigee-operator/etc/crds/default/ \ --server-side \ --force-conflicts \ --validate=false