סקירה כללית על שדרוג לגרסה 1.3.6.
ההליכים לשדרוג Apigee hybrid מאורגנים בקטעים הבאים:
- הכנה
- ליצור ולעדכן חשבונות שירות.
- תכנון קבוצות סביבה.
- מעתיקים ומעדכנים את קובץ ההגדרות שבוטלו.
- משדרגים את Istio ואת cert-manager.
- התקנת גרסה 1.3 של סביבת זמן ריצה היברידית.
- לפנות.
דרישות מוקדמות
- גרסה 1.2 של Apigee Hybrid. אם אתם מעדכנים מגרסה קודמת, תוכלו לעיין בהוראות שדרוג Apigee Hybrid לגרסה 1.2.
הכנה
- (מומלץ) יוצרים עותק גיבוי של ספריית
$APIGEECTL_HOME/בגרסה 1.2. לדוגמה:tar -czvf $APIGEECTL_HOME/../apigeectl-v1.2-backup.tar.gz $APIGEECTL_HOME - (מומלץ) מגבים את מסד הנתונים של Cassandra לפי ההוראות במאמר בנושא גיבוי ושחזור של Cassandra.
- כדי לשדרג את פלטפורמת Kubernetes, פועלים לפי השלבים הבאים. אם אתם צריכים עזרה, תוכלו להיעזר במאמרי העזרה של הפלטפורמה:
פלטפורמה שדרוג לגרסה GKE 1.15.x Anthos 1.5 AKS 1.16.x באמצעות Anthos Attached Clusters - אם אתם לא משתמשים ב-Apigee Connect בהתקנה ההיברידית שלכם, אתם צריכים להפעיל את Apigee Connect.
- בודקים אם Apigee Connect API מופעל:
gcloud services list | grep apigeeconnect apigeeconnect.googleapis.com Apigee Connect API
- אם הוא לא מופעל, מפעילים את ה-API:
gcloud services enable apigeeconnect.googleapis.com --project $PROJECT_ID
$PROJECT_ID הוא מזהה הפרויקט בענן שלכם ב-Google Cloud.
-
בשורת הפקודה, מקבלים את פרטי הכניסה לאימות
gcloud, כמו בדוגמה הבאה:TOKEN=$(gcloud auth print-access-token)
כדי לוודא שהטוקן אוכלס, משתמשים ב-
echo, כמו בדוגמה הבאה:echo $TOKEN
האסימון יוצג כמחרוזת מקודדת.
למידע נוסף, ראו סקירה כללית של כלי שורת הפקודה של Google Cloud.
- כדי לבדוק אם Apigee Connect מופעל בארגון:
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$ORG_NAME"
כאשר $ORG_NAME הוא המזהה של הארגון.
אם הפלט מכיל:
"name" : "features.mart.connect.enabled", "value" : "true"Apigee Connect מופעל.
- אם Apigee Connect לא מופעל, צריך להקצות את התפקיד Apigee Connect Agent לחשבון השירות של MART:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:apigee-mart@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/apigeeconnect.Agent - מפעילים את Apigee Connect באמצעות הפקודה הבאה:
curl -H "Authorization: Bearer $TOKEN" -X PUT \ -H "Content-Type: application/json" \ -d '{ "name" : "'"$ORG_NAME"'", "properties" : { "property" : [ { "name" : "features.hybrid.enabled", "value" : "true" }, { "name" : "features.mart.connect.enabled", "value" : "true" } ] } }' \ "https://apigee.googleapis.com/v1/organizations/$ORG_NAME"אם הפלט מכיל את שני הנכסים הבאים, סימן שהפעלתם את Apigee Connect בהצלחה:
{ "name": "features.mart.connect.enabled", "value": "true" }, { "name": "features.hybrid.enabled", "value": "true" }
- בודקים אם Apigee Connect API מופעל:
- יוצרים את חשבון השירות
apigee-watcher. Apigee Watcher הוא חשבון שירות חדש שהוצג בגרסה 1.3. הוא עוקב אחרי הסנכרון כדי לראות אם יש שינויים ברמת הארגון, ומחיל את השינויים האלה כדי להגדיר את Istio ingress.מהספרייה ההיברידית הראשית:
./tools/create-service-account apigee-watcher ./service-accounts
- מקצים את התפקיד Apigee Runtime Agent לחשבון השירות של Watcher:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:apigee-watcher@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/apigee.runtimeAgent
כאשר
PROJECT_IDהוא מזהה הפרויקט שלכם ב-Google Cloud. אם כתובות האימייל של חשבון השירות שונות מהתבנית הזו, צריך להחליף אותן בהתאם.הפלט צריך לכלול רשימה של כל חשבונות השירות והתפקידים שלהם, כולל:
... - members: - serviceAccount:apigee-watcher@hybrid13rc5.iam.gserviceaccount.com role: roles/apigee.runtimeAgent ...
- תכנון קבוצות סביבה לניתוב.
ב-Apigee hybrid 1.3, ניהול הניתוב של נתיב הבסיס מתבצע באמצעות קבוצות סביבה במקום באמצעות
routingRules. אם אתם משתמשים ב-routingRulesבהגדרה ההיברידית שלכם, כדאי לתכנן קבוצות של סביבות שישכפלו את הניתוב שלכם.צריך ליצור לפחות קבוצת סביבות אחת.
- מעדכנים את קובץ הגדרות העקיפה:
- יוצרים עותק של קובץ ההגדרות לשינוי.
- מעדכנים את פסקאות ה-gcp ו-k8sCluster.
מאפייני ההגדרה הבאים הוחלפו בגרסה 1.3 של Hybrid:
- הערך
gcpRegionהוחלף בערךgcp:region - הערך
gcpProjectIDהוחלף בערךgcp:projectID - הערך
gcpProjectIDRuntimeהוחלף בערךgcp:gcpProjectIDRuntime - הערך
k8sClusterNameהוחלף בערךk8s:clusterName - הערך
k8sClusterRegionהוחלף בערךk8s:clusterRegion
לדוגמה, מחליפים את המבנה הבא:
gcpRegion: gcp region gcpProjectID: gcp project ID gcpProjectIDRuntime: gcp project ID k8sClusterName: name k8sClusterRegion: region
עם:
gcp: projectID: gcp project ID region: gcp region gcpProjectIDRuntime: gcp project ID # optional. This is only required if you # want logger/metrics data to be sent in # different gcp project. k8sCluster: name: gcp project ID region: gcp region - הערך
- אם אין לכם מזהה מופע ייחודי בקובץ ההגדרות שלכם, תוכלו להוסיף אותו:
# unique identifier for this installation. 63 chars length limit instanceID: ID
כאשר ID הוא מזהה ייחודי להתקנה ההיברידית הזו, כמו
my-hybrid-131-installationאוacmecorp-hybrid-131. - מוסיפים את חשבון השירות של Watcher (
apigee-watcher) לקובץ ההגדרות שמוגדרות מחדש:# Note: the SA should have the "Apigee Runtime Agent" role watcher: serviceAccountPath: "service account file"
- מוסיפים את חשבון השירות של Metrics (
apigee-metrics) לקובץ ההגדרות שמוגדרות מחדש:metrics: serviceAccountPath: "service account file"
- מעדכנים את פסקה
virtualhosts:כדי להחליף אתroutingRulesבקבוצת הסביבות שלכם.-name:מחליפים את השם בשם של קבוצת הסביבות. יכולים להיות לכם כמה רשומות של שמות, אחת לכל קבוצת סביבות.hostAliases:[]מחיקת השורה.- משאירים (או מוסיפים) את הערכים
sslCertPath:ו-sslKeyPath:. - מוחקים את כל הרשומות של
routingRules.
לדוגמה:
virtualhosts: - name: default hostAliases: - "*.acme.com" sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key routingRules: - paths: - /foo - /bar - env: my-environmentהופך ל:
virtualhosts: - name: example-env-group sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key - מעדכנים את פסקאות
martו-connectAgent:.- בקטע
mart:מסירים את הערכיםhostAlias:,sslCertPath:ו-sslKeyPath:. - מוסיפים בית
connectAgent:. - בקטע
connectAgent:מוסיפים רשומה שלserviceAccountPath:ומזינים את הנתיב לקובץ של חשבון השירות שהוקצה לו התפקיד Apigee Connect Agent (בדרך כלל חשבון השירות של MART).
לדוגמה:
mart: hostAlias: "mart.apigee-hybrid-docs.net" serviceAccountPath: ./service-accounts/hybrid-project-apigee-mart.json sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.key
הופך ל:
mart: serviceAccountPath: ./service-accounts/hybrid-project-apigee-mart.json connectAgent: serviceAccountPath: ./service-accounts/hybrid-project-apigee-mart.json
- בקטע
שדרוג של Istio ו-cert-manager
ב-Apigee hybrid גרסה 1.3 נדרש cert-manager גרסה v0.14.2 כדי לנהל ולאמת אישורים, ונדרשת הפצת Istio שסופקה עם Anthos Service Mesh (ASM) גרסה 1.5.7 (או גרסה חדשה יותר) כדי ליצור ולנהל את שער הכניסה של זמן הריצה.
שדרוג מ-Istio 1.4.6 ל-ASM 1.5.7 (או לגרסה חדשה יותר)
- כדי לצמצם את זמן ההשבתה, לפריסות של Istio ול-HPA צריכות להיות לפחות שתי רפליקות לכל אחת.
מריצים את הפקודות הבאות כדי לקבוע את מספר העותקים:
kubectl -n istio-system get deployments # list of deploymentskubectl -n istio-system get hpa # list of hpa - עורכים כל פריסה שיש לה רק עותק אחד ומגדילים את הערך של
replicas:ל-2או יותר:kubectl -n istio-system edit deployment nameלדוגמה:
spec: progressDeadlineSeconds: 600 replicas: 2
- עורכים כל HPA שיש לו רק עותק אחד ומגדילים את
minReplicas:ל-2או יותר:kubectl -n istio-system edit hpa nameלדוגמה:
spec: maxReplicas: 5 minReplicas: 2
- מורידים ומתקינים את ASM לפי הוראות ההתקנה במאמר הורדה והתקנה של ASM.
- אחרי ההתקנה, מריצים את פקודת הגרסה כדי לוודא שהגרסה 1.5.x מותקנת בצורה תקינה:
./bin/istioctl version client version: 1.5.8-asm.0 apigee-mart-ingressgateway version: citadel version: 1.4.6 galley version: 1.4.6 ingressgateway version: 1.5.8-asm.0 pilot version: 1.4.6 policy version: 1.4.6 sidecar-injector version: 1.4.6 telemetry version: 1.4.6 pilot version: 1.5.8-asm.0 data plane version: 1.4.6 (1 proxies), 1.5.8-asm.0 (2 proxies)
שדרוג cert-manager
- מחיקת פריסת cert-manager הנוכחית:
kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
- בודקים את הגרסה של Kubernetes:
kubectl version
- מריצים את הפקודה הבאה כדי להתקין את cert-manager מ-Jetstack:
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.14.2/cert-manager.yaml
התקנה של סביבת זמן ריצה היברידית
- שמירת מספר הגרסה האחרונה במשתנה:
export VERSION=$(curl -s \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/current-version.txt?ignoreCache=1) - בודקים שהמשתנה אוכלס במספר גרסה. אם רוצים להשתמש בגרסה אחרת, אפשר לשמור אותה במשתנה סביבה. לדוגמה:
echo $VERSION 1.3.6
מורידים את חבילת הגרסה למערכת ההפעלה שלכם:
Mac 64 bit:
curl -LO \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_mac_64.tar.gzLinux 64 bit:
curl -LO \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_linux_64.tar.gzMac 32 bit:
curl -LO \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_mac_32.tar.gzLinux 32 ביט:
curl -LO \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_linux_32.tar.gz- משנים את השם של ספריית
apigeectl/הנוכחית לשם של ספריית גיבוי. לדוגמה:mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.2/ -
מחלצים את התוכן של קובץ ה-gzip שהורדתם לספריית הבסיס ההיברידית. לדוגמה:
tar xvzf filename.tar.gz -C hybrid-base-directory
-
cdלספריית הבסיס. -
כברירת מחדל, התוכן של קובץ ה-tar מורחב לספרייה עם הגרסה והפלטפורמה בשם שלה. לדוגמה:
./apigeectl_1.0.0-f7b96a8_linux_64. משנים את השם של הספרייה ל-apigeectl:mv apigeectl_1.0.0-f7b96a8_linux_64 apigeectl - מוחקים את המשרה
apigee-resources-installמ-apigee-system:kubectl -n apigee-system delete job apigee-resources-install
- מוחקים את ה-CRD הישן:
kubectl delete crd apigeetelemetries.apigee.cloud.google.com
- מעדכנים את פסקה
cassandra:בקובץ ההחלפות עם מאפייןexternalSeedHost. הנכס הזה יעזור לוודא שההתקנה החדשה של גרסה 1.3.6 ההיברידית תשתמש באותו אשכול Kubernetes כמו ההתקנה של גרסה 1.2. זהו שלב חד-פעמי שנדרש רק לשדרוג מגרסה היברידית 1.2 לגרסה 1.3.6 (או לגרסה חדשה יותר).- מחפשים את אחת מכתובות ה-IP של Cassandra הקיימת באותו אשכול Kubernetes שבו משדרגים את ההתקנה של גרסה 1.2.0.
kubectl -n namespace get pods -o wide
כאשר namespace הוא מרחב השמות של Apigee Hybrid.
חשוב לרשום את כתובת ה-IP של צומת Cassandra. לדוגמה:
kubectl -n apigee get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE apigee-cassandra-0 1/1 Running 0 33d 10.68.8.24 gke-example-cluster-rc5-apigee-data-c8bf1234-09kc apigee-cassandra-1 1/1 Running 0 16d 10.68.8.33 gke-example-cluster-rc5-apigee-data-c9221ee7-10kc apigee-cassandra-2 1/1 Running 0 23h 10.68.9.11 gke-example-cluster-rc5-apigee-data-d123e456-11kc
- מוסיפים את הערך של המאפיין
externalSeedHost:cassandra: externalSeedHost: Cassandra_node_IP
כאשר Cassandra_node_IP הוא כתובת ה-IP של צומת Cassandra (
10.68.8.24בדוגמה הקודמת).
- מחפשים את אחת מכתובות ה-IP של Cassandra הקיימת באותו אשכול Kubernetes שבו משדרגים את ההתקנה של גרסה 1.2.0.
- בספרייה new
apigeectl/, מריצים את הפקודותapigeectl init,apigeectl applyו-apigeectl check-ready:- מפעילים את הגרסה ההיברידית 1.3.6:
apigeectl init -f overrides_1.3.yaml
כאשר overrides_1.3.yaml הוא קובץ ה-overrides.yaml הערוך.
- בגרסה היברידית 1.3, התחביר של הדגל
--dry-runתלוי בגרסה שלkubectlשמופעלת. בודקים את הגרסה שלkubectl:gcloud version
- בודקים אם יש שגיאות באמצעות הרצה יבשה:
kubectlגרסה 1.17 וגרסאות ישנות יותר:apigeectl apply -f overrides_1.3.yaml --dry-run=true
kubectlגרסה 1.18 ואילך:apigeectl apply -f overrides_1.3.yaml --dry-run=client
- מחילים את השינויים. בוחרים את ההוראות לסביבות ייצור או לסביבות הדגמה/ניסוי, בהתאם להתקנה.
ייצור
בסביבות ייצור, צריך לשדרג כל רכיב היברידי בנפרד ולבדוק את הסטטוס של הרכיב המשודרג לפני שממשיכים לרכיב הבא.
- מחילים את השינויים כדי לשדרג את Cassandra:
apigeectl apply -f overrides_1.3.yaml --datastore
- השלמת הבדיקה:
kubectl -n namespace get pods
כאשר namespace הוא מרחב השמות של Apigee Hybrid.
ממשיכים לשלב הבא רק כשהפודים מוכנים.
- מחילים את ההחלפות כדי לשדרג את רכיבי הטלמטריה ובודקים שהשדרוג הושלם:
apigeectl apply -f overrides_1.3.yaml --telemetry
kubectl -n namespace get pods
- מחילים את השינויים כדי לשדרג את הרכיבים ברמת הארגון (MART, Watcher ו-Apigee
Connect) ובודקים שהשדרוג הושלם:
apigeectl apply -f overrides_1.3.yaml --org
kubectl -n namespace get pods
- כדי לשדרג את הסביבות, צריך להחיל את הגדרות הביטול. יש שתי אפשרויות:
- מחילים את ההגדרות החלופיות על סביבה אחת בכל פעם ובודקים שהן הושלמו. חוזרים על השלב הזה לכל סביבה:
apigeectl apply -f overrides_1.3.yaml --env env_name
kubectl -n namespace get pods
כאשר env_name הוא שם הסביבה שמשדרגים.
- מחילים את ההגדרות החלופיות על כל הסביבות בבת אחת ובודקים שהן הושלמו:
apigeectl apply -f overrides_1.3.yaml --all-envs
kubectl -n namespace get pods
- מחילים את ההגדרות החלופיות על סביבה אחת בכל פעם ובודקים שהן הושלמו. חוזרים על השלב הזה לכל סביבה:
הדגמה/ניסוי
ברוב סביבות ההדגמה או הניסוי, אפשר להחיל את שינויי ברירת המחדל על כל הרכיבים בבת אחת. אם סביבת ההדגמה או הניסויים שלכם גדולה ומורכבת או דומה מאוד לסביבת ייצור, כדאי להשתמש בהוראות לשדרוג סביבות ייצור.
apigeectl apply -f overrides_1.3.yaml
- בודקים את הסטטוס:
apigeectl check-ready -f overrides_1.3.yaml
הוראות נוספות זמינות במאמר הגדרת GKE Hybrid – שלב 5: התקנת GKE Hybrid ב-GKE.
- מחילים את השינויים כדי לשדרג את Cassandra:
- אחרי שמגדירים את הגרסה ההיברידית 1.3 ומפעילים אותה, מוודאים שכל צמתי Cassandra (הישנים והחדשים) הם חלק מאותו אשכול Cassandra. מריצים את הפקודה הבאה באחד מצמתי Cassandra:
kubectl -n namespace get podskubectl -n namespace exec old Cassandra pod -- nodetool statusבדוגמת הפלט הבאה, 10.68.8.24 הוא מגרסה 1.2.0 והוא כתובת ה-IP של הצומת שבה השתמשתם כ-
externalSeedHost. 10.68.7.11 היא מגרסה 1.3.6:Datacenter: dc-1 ================ Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.68.8.24 379.41 KiB 256 50.8% 11bbd43b-af64-464b-a96d-0d6dd0521de1 ra-1 UN 10.68.7.11 1.35 MiB 256 49.2% 0b4d9e08-f353-413a-b4a9-7d18a8d07e58 ra-1
אם הם לא באותו אשכול, בודקים את הערך של
externalSeedHost. - אחרי שכל הפודים יפעלו, מסירים את
externalSeedHostמקובץ ההחלפות ומריצים שוב אתapigeectl applyעם האפשרות--datastore:apigeectl apply --datastore -f overrides_1.3.6.yaml
הסרת המשאבים
אחרי שמוודאים שכל ה-pods פועלים בצורה תקינה ושהנקודות של ASM תקפות להתקנה החדשה, אפשר לנקות:
- משאבים של Hybrid 1.2.
- המופע הישן יותר של Cassandra
- משאבים של Istio 1.4.6.
מחיקת משאבים ב-Hybrid 1.2.0
- מסירים את פרטי הניתוב של המארח הווירטואלי בגרסה 1.2.0:
$APIGEECTL_HOME-v1.2/apigeectl delete -s virtualhost -f 1.2.0_overrides.yaml
כאשר $APIGEECTL_HOME-v1.2 היא הספרייה שבה גיביתם את הספרייה של
apigeectlגרסה 1.2. - אם נקודת הקצה עדיין פועלת כמצופה ואימתתם שכל הרכיבים בגרסה 1.3.0 פועלים, מריצים את הפקודה הבאה כדי למחוק את המשאבים של גרסה 1.2.0 ההיברידית:
$APIGEECTL_HOME-v1.2/apigeectl delete -c "mart,connect-agent,synchronizer,runtime,udca,metrics,logger" \ -f 1.2.0_overrides.yaml
הוצאה משימוש של מופע Cassandra ישן יותר
-
cdלספרייהapigeectlשהותקנה לאחרונה. - מריצים את הסקריפט
tools/cas_cleanup.sh.הסקריפט הזה מוציא משימוש את ה-pod הישן של Cassandra מתוך טבעת Cassandra, מוחק את ה-STS הישן ומוחק את ה-PVC.
bash cas_cleanup.sh Apigee namespace
מחיקת משאבים של Istio בגרסה 1.4.6
- מריצים את הפקודה הבאה כדי למחוק את המשאבים האחרונים של Istio v.1.4.6:
kubectl delete all -n istio-system --selector \ 'app in (apigee-mart-istio-ingressgateway, galley, security, istio-nodeagent, istio-mixer, sidecarInjectorWebhook, istio-mixer)'
- מריצים את הפקודות הבאות כדי למחוק משימות ישנות מההתקנה של Istio 1.4.6:
kubectl -n istio-system delete job istio-init-crd-10-1.4.6kubectl -n istio-system delete job istio-init-crd-11-1.4.6kubectl -n istio-system delete job istio-init-crd-14-1.4.6
מזל טוב! השדרוג ל-Apigee Hybrid גרסה 1.3.6 בוצע בהצלחה.
- מפעילים את הגרסה ההיברידית 1.3.6: