אם אתם משדרגים מ-Apigee Hybrid בגרסה 1.3 או בגרסה ישנה יותר, אתם צריכים לשדרג קודם לגרסה 1.4 לפני שתשדרגו לגרסה 1.5.10. אפשר לעיין בהוראות בנושא שדרוג Apigee Hybrid לגרסה 1.4.
סקירה כללית על שדרוג לגרסה 1.5.10.
ההליכים לשדרוג Apigee hybrid מאורגנים בקטעים הבאים:
- גיבוי של ההתקנה ההיברידית.
- בודקים את גרסת Kubernetes ומשדרגים אותה לפי הצורך.
- שדרוג ASM.
- התקנת גרסה 1.5 של סביבת זמן הריצה ההיברידית.
דרישות מוקדמות
- גרסה 1.4 של Apigee Hybrid. אם אתם מעדכנים מגרסה קודמת, תוכלו לעיין בהוראות לשדרוג Apigee Hybrid לגרסה 1.4.
שדרוג לגרסה 1.5
- בהוראות האלה נעשה שימוש במשתנה הסביבה APIGEECTL_HOME עבור הספרייה במערכת הקבצים שבה התקנתם את
apigeectl. אם צריך, עוברים אל הספרייהcdומגדירים את המשתנה באמצעות הפקודה הבאה:apigeectlLinux
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Mac OS
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Windows
set APIGEECTL_HOME=%CD%
echo %APIGEECTL_HOME%
- (מומלץ) יוצרים עותק גיבוי של ספריית
$APIGEECTL_HOME/בגרסה 1.4. לדוגמה:tar -czvf $APIGEECTL_HOME/../apigeectl-v1.4-backup.tar.gz $APIGEECTL_HOME - (מומלץ) מגבים את מסד הנתונים של Cassandra לפי ההוראות במאמר בנושא גיבוי ושחזור של Cassandra.
- משדרגים את פלטפורמת Kubernetes לגרסאות שנתמכות על ידי hybrid 1.5. אם אתם צריכים עזרה, תוכלו לעיין במסמכי התיעוד של הפלטפורמה.
- אם אתם מריצים גרסה של
cert-managerשקודמת לגרסה 1.2.0, אתם צריכים לשדרג אותה לגרסה 1.2.0.-
כדי לבדוק את הגרסה הנוכחית של
cert-manager, משתמשים בפקודה הבאה:kubectl -n cert-manager get deployment -o yaml | grep 'image:'
מוחזרת תשובה שדומה לדוגמה הבאה:
image: quay.io/jetstack/cert-manager-controller:v1.2.0 image: quay.io/jetstack/cert-manager-cainjector:v1.2.0 image: quay.io/jetstack/cert-manager-webhook:v1.2.0
-
מסירים את הפריסות באמצעות הפקודה הבאה:
kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
-
משדרגים את
cert-managerלגרסה v1.2.0 באמצעות הפקודה הבאה:kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.2.0/cert-manager.yaml
-
שדרוג ASM לגרסה 1.29
מבצעים את השדרוג באמצעות מסמכי התיעוד של ASM שמתאימים לפלטפורמה שלכם:
ההוראות להתקנה ולהגדרה של ASM משתנות בהתאם לפלטפורמה. הפלטפורמות מחולקות לקטגוריות הבאות:
- GKE: אשכולות Google Kubernetes Engine שפועלים ב-Google Cloud.
- מחוץ ל-Google Cloud: אשכולות Anthos שפועלים ב:
- אשכולות Anthos ב-VMware (GKE On-Prem)
- Anthos בשרת פיזי
- אשכולות Anthos ב-AWS
- Amazon EKS
- פלטפורמות אחרות של Kubernetes: אשכולות תואמים שנוצרו ופועלים ב:
- AKS
- EKS
- OpenShift
GKE
הסדר לשדרוג ל-ASM גרסה 1.8.x בהתקנה היברידית הוא כדלקמן:
- מתכוננים לשדרוג.
- מתקינים את הגרסה החדשה של ASM.
- מוחקים את הפריסות, השירותים וה-webhook של הגרסה הקודמת של ASM מההתקנה הנוכחית.
- שדרגו את השערים והגדירו את ה-webhook החדשים.
כדי לשדרג ל-ASM גרסה 1.8.x ל-Hybrid ב-GKE:
- בודקים את הדרישות במאמר שדרוג Anthos Service Mesh, אבל לא מבצעים את השדרוג עדיין.
- לפני שמתקינים את הגרסה החדשה, צריך לקבוע את הגרסה הנוכחית. תצטרכו את המידע הזה כדי למחוק מההתקנה הנוכחית את הפריסות, השירותים וה-webhook של הגרסה הקודמת של ASM. כדי לאחסן את הגרסה הנוכחית של istiod במשתנה סביבתי, משתמשים בפקודה הבאה:
export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[].metadata.labels.'istio\.io\/rev'}'{"\n"}') echo ${DELETE_REV} - יוצרים קובץ
overlay.yamlחדש או מוודאים שהקובץoverlay.yamlהקיים מכיל את התוכן הבא:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: revision: asm-1295-12 components: ingressGateways: - name: istio-ingressgateway enabled: true k8s: nodeSelector: # default node selector, if different or not using node selectors, change accordingly. cloud.google.com/gke-nodepool: apigee-runtime resources: requests: cpu: 1000m service: type: LoadBalancer loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out. ports: - name: http-status-port port: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443 meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
- פועלים לפי ההוראות בקטעים הבאים בתיעוד של ASM:
- הורדה של asmcli
- הענקת הרשאות אדמין של אשכול
- אימות הפרויקט והאשכול
- שדרוג עם תכונות אופציונליות עוצרים לפני שמתחילים את הקטע 'שדרוג שערים'
- מחיקת ה-webhook לשינוי וה-webhook לאימות:
-
cdלספרייה שבה התקנתם אתasmcli. - מאחסנים את הגרסה החדשה הנוכחית במשתנה סביבה כדי להשתמש בה בסקריפט
למחיקת ה-webhook:
UPGRADE_REV="asm-1295-12"
- יוצרים סקריפט מעטפת שמכיל את הפקודות הבאות:
#!/bin/bash set -ex PROJECT_ID="YOUR_PROJECT_ID" CLUSTER_NAME="YOUR_CLUSTER_NAME" CLUSTER_LOCATION="YOUR_CLUSTER_LOCATION" kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite kubectl rollout restart deployment -n istio-system kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAY/istio-ingressgateway-connectors if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl apply -f out/asm/istio/istiod-service.yaml kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi - מריצים את הסקריפט כדי למחוק את ה-webhook הנוכחיים.
-
- פועלים לפי השלבים במאמר בנושא שדרוג שערים כדי ליצור את ה-webhook החדשים ולהעביר את התנועה לשערים החדשים.
מחוץ ל-Google Cloud
ההוראות האלה מתייחסות לשדרוג של ASM ב:
- אשכולות Anthos ב-VMware (GKE On-Prem)
- Anthos בשרת פיזי
- אשכולות Anthos ב-AWS
- Amazon EKS
- בודקים את הדרישות במאמר שדרוג Anthos Service Mesh, אבל לא מבצעים את השדרוג עדיין.
- לפני שמתקינים את הגרסה החדשה, צריך לקבוע את הגרסה הנוכחית. תצטרכו את המידע הזה כדי למחוק את ה-webhook של האימות ואת ה-webhook של השינוי מההתקנה הנוכחית של ASM. משתמשים בפקודה הבאה כדי לאחסן את הגרסה הנוכחית של istiod במשתנה סביבתי:
export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[].metadata.labels.'istio\.io\/rev'}'{"\n"}') echo ${DELETE_REV} - יוצרים קובץ
overlay.yamlחדש או מוודאים שהקובץoverlay.yamlהקיים מכיל את התוכן הבא:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: revision: asm-1295-12 components: ingressGateways: - name: istio-ingressgateway enabled: true k8s: nodeSelector: # default node selector, if different or not using node selectors, change accordingly. cloud.google.com/gke-nodepool: apigee-runtime resources: requests: cpu: 1000m service: type: LoadBalancer loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out. ports: - name: http-status-port port: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443 values: gateways: istio-ingressgateway: runAsRoot: true meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
- פועלים לפי ההוראות בקטעים הבאים בתיעוד של ASM:
- הורדה של asmcli
- הענקת הרשאות אדמין של אשכול
- אימות הפרויקט והאשכול
- שדרוג עם תכונות אופציונליות עוצרים לפני שמתחילים את הקטע 'שדרוג שערים'
- מחיקת ה-webhook לשינוי וה-webhook לאימות:
-
cdלספרייה שבה התקנתם אתasmcli. - מאחסנים את הגרסה החדשה הנוכחית במשתנה סביבה כדי להשתמש בה בסקריפט
למחיקת ה-webhook:
UPGRADE_REV="asm-1295-12"
- יוצרים סקריפט מעטפת שמכיל את הפקודות הבאות:
#!/bin/bash set -ex PROJECT_ID="YOUR_PROJECT_ID" CLUSTER_NAME="YOUR_CLUSTER_NAME" CLUSTER_LOCATION="YOUR_CLUSTER_LOCATION" gcloud config configurations activate ${PROJECT_ID} gcloud container clusters get-credentials ${CLUSTER_NAME} --region ${CLUSTER_LOCATION} --project ${PROJECT_ID} kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite kubectl rollout restart deployment -n istio-system kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAY/istio-ingressgateway-connectors if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl apply -f out/asm/istio/istiod-service.yaml kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi - מריצים את הסקריפט כדי למחוק את ה-webhook הנוכחיים.
-
- פועלים לפי השלבים במאמר בנושא שדרוג שערים כדי ליצור את ה-webhook החדשים ולהעביר את התנועה לשערים החדשים.
AKS / EKS
בתהליך שמתואר בהוראות האלה לשדרוג Anthos Service Mesh (ASM) מגרסה istio-1.29.5-asm.12 באשכולות Anthos המצורפים, הפעולות זהות לאלה שנדרשות להתקנה חדשה.
הכנות להתקנת Anthos Service Mesh
- מורידים את קובץ ההתקנה של Anthos Service Mesh לספריית העבודה הנוכחית:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-linux-amd64.tar.gz
- מורידים את קובץ החתימה ומשתמשים ב-openssl כדי לאמת את החתימה:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-linux-amd64.tar.gz.1.sig
openssl dgst -verify /dev/stdin -signature istio-1.29.5-asm.12-linux-amd64.tar.gz.1.sig istio-1.29.5-asm.12.tar.gz <<'EOF'-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - מחלצים את התוכן של הקובץ למיקום כלשהו במערכת הקבצים שלכם. לדוגמה,
כדי לחלץ את התוכן לספריית העבודה הנוכחית:
tar xzf istio-1.29.5-asm.12-linux-amd64.tar.gz
הפקודה יוצרת ספריית התקנה בספריית העבודה הנוכחית בשם
istio-1.29.5-asm.12, שמכילה:- אפליקציות לדוגמה בספרייה
samples. - כלי שורת הפקודה שמשמש להתקנת Anthos Service Mesh נמצא בספרייה
bin.istioctl - פרופילי ההגדרות של Anthos Service Mesh נמצאים בספרייה
manifests/profiles.
- אפליקציות לדוגמה בספרייה
- מוודאים שאתם נמצאים בספריית השורש של ההתקנה של Anthos Service Mesh:
cd istio-1.29.5-asm.12
- כדי שיהיה לכם נוח, כדאי להוסיף את הכלים בספרייה /bin לנתיב:
export PATH=$PWD/bin:$PATH
- מורידים את קובץ ההתקנה של Anthos Service Mesh לספריית העבודה הנוכחית:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-osx.tar.gz
- מורידים את קובץ החתימה ומשתמשים ב-openssl כדי לאמת את החתימה:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-osx.tar.gz.1.sig
openssl dgst -sha256 -verify /dev/stdin -signature istio-1.29.5-asm.12-osx.tar.gz.1.sig istio-1.29.5-asm.12.tar.gz <<'EOF'-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - מחלצים את התוכן של הקובץ למיקום כלשהו במערכת הקבצים שלכם. לדוגמה,
כדי לחלץ את התוכן לספריית העבודה הנוכחית:
tar xzf istio-1.29.5-asm.12-osx.tar.gz
הפקודה יוצרת ספריית התקנה בספריית העבודה הנוכחית בשם
istio-1.29.5-asm.12, שמכילה:- אפליקציות לדוגמה בספרייה
samples. - כלי שורת הפקודה שמשמש להתקנת Anthos Service Mesh נמצא בספרייה
bin.istioctl - פרופילי ההגדרות של Anthos Service Mesh נמצאים בספרייה
manifests/profiles.
- אפליקציות לדוגמה בספרייה
- מוודאים שאתם נמצאים בספריית השורש של ההתקנה של Anthos Service Mesh:
cd istio-1.29.5-asm.12
- כדי שיהיה לכם נוח, כדאי להוסיף את הכלים בספרייה /bin לנתיב:
export PATH=$PWD/bin:$PATH
- מורידים את קובץ ההתקנה של Anthos Service Mesh לספריית העבודה הנוכחית:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-win.zip
- מורידים את קובץ החתימה ומשתמשים ב-openssl כדי לאמת את החתימה:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-win.zip.1.sig
openssl dgst -verify - -signature istio-1.29.5-asm.12-win.zip.1.sig istio-1.29.5-asm.12.win.zip <<'EOF'-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - מחלצים את התוכן של הקובץ למיקום כלשהו במערכת הקבצים שלכם. לדוגמה,
כדי לחלץ את התוכן לספריית העבודה הנוכחית:
tar xzf istio-1.29.5-asm.12-win.zip
הפקודה יוצרת ספריית התקנה בספריית העבודה הנוכחית בשם
istio-1.29.5-asm.12, שמכילה:- אפליקציות לדוגמה בספרייה
samples. - כלי שורת הפקודה שמשמש להתקנת Anthos Service Mesh נמצא בספרייה
bin.istioctl - פרופילי ההגדרות של Anthos Service Mesh נמצאים בספרייה
manifests\profiles.
- אפליקציות לדוגמה בספרייה
- מוודאים שאתם נמצאים בספריית השורש של ההתקנה של Anthos Service Mesh:
cd istio-1.29.5-asm.12
- כדי שיהיה לכם נוח, כדאי להוסיף את הכלים בספרייה \bin לנתיב:
set PATH=%CD%\bin:%PATH%
- אחרי שמתקינים את ASM Istio, בודקים את הגרסה של
istioctl:istioctl version
- יוצרים מרחב שמות בשם istio-system לרכיבי מישור הבקרה:
kubectl create namespace istio-system
Linux
Mac OS
Windows
הגדרת ה-webhook לאימות
כשמתקינים את Anthos Service Mesh, מגדירים תווית של גרסה ב-istiod. צריך להגדיר את אותה גרסה ב-webhook של האימות.
- יוצרים קובץ בשם
istiod-service.yamlעם התוכן הבא:apiVersion: v1 kind: Service metadata: name: istiod namespace: istio-system labels: istio.io/rev: asm-1295-12 app: istiod istio: pilot release: istio spec: ports: - port: 15010 name: grpc-xds # plaintext protocol: TCP - port: 15012 name: https-dns # mTLS with k8s-signed cert protocol: TCP - port: 443 name: https-webhook # validation and injection targetPort: 15017 protocol: TCP - port: 15014 name: http-monitoring # prometheus stats protocol: TCP selector: app: istiod istio.io/rev: asm-1295-12 meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
- משתמשים ב-
kubectlכדי להחיל את ההגדרות האישיות לתגובה לפעולה מאתר אחר (Webhook) לצורך אימות:kubectl apply -f istiod-service.yaml
- כדי לוודא שההגדרה הוחלה:
kubectl get svc -n istio-system
התגובה אמורה להיראות כך:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 22s
התקנה של Anthos Service Mesh
- מתקינים את Anthos Service Mesh עם
istioctlבאמצעות פרופילasm-multicloud:istioctl install \ --set profile=asm-multicloud \ --set revision="asm-1295-12"הפלט אמור להיראות כך:
kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE istio-ingressgateway-88b6fd976-flgp2 1/1 Running 0 3m13s istio-ingressgateway-88b6fd976-p5dl9 1/1 Running 0 2m57s istiod-asm-1295-12-798ffb964-2ls88 1/1 Running 0 3m21s istiod-asm-1295-12-798ffb964-fnj8c 1/1 Running 1 3m21s
הארגומנט
--set revisionמוסיף תווית של גרסה בפורמטistio.io/rev=asm-1295-12ל-istiod. תווית התיקון משמשת את ה-webhook האוטומטי להזרקת sidecar כדי לשייך sidecar מוזרקים לגרסה מסוימת של istiod. כדי להפעיל הזרקה אוטומטית של sidecar למרחב שמות, צריך להוסיף לו תווית עם revision שזהה לתווית ב-istiod. - מוודאים שההתקנה הושלמה:
kubectl get svc -n istio-system
הפלט אמור להיראות כך:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 172.200.48.52 34.74.177.168 15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP 3m35s istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 4m46s istiod-asm-1295-12 ClusterIP 172.200.63.220 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 3m43s
OpenShift
בתהליך שמתואר בהוראות האלה לשדרוג Anthos Service Mesh (ASM) מגרסה istio-1.29.5-asm.12 באשכולות Anthos המצורפים, הפעולות זהות לאלה שנדרשות להתקנה חדשה.
הכנות להתקנת Anthos Service Mesh
- נותנים את אילוץ ההקשר הביטחוני (SCC)
anyuidל-istio-system באמצעות הפקודה הבאה של OpenShift CLI (oc):oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- מורידים את קובץ ההתקנה של Anthos Service Mesh לספריית העבודה הנוכחית:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-linux-amd64.tar.gz
- מורידים את קובץ החתימה ומשתמשים ב-openssl כדי לאמת את החתימה:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-linux-amd64.tar.gz.1.sig
openssl dgst -verify /dev/stdin -signature istio-1.29.5-asm.12-linux-amd64.tar.gz.1.sig istio-1.29.5-asm.12.tar.gz <<'EOF'-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - מחלצים את התוכן של הקובץ למיקום כלשהו במערכת הקבצים שלכם. לדוגמה,
כדי לחלץ את התוכן לספריית העבודה הנוכחית:
tar xzf istio-1.29.5-asm.12-linux-amd64.tar.gz
הפקודה יוצרת ספריית התקנה בספריית העבודה הנוכחית בשם
istio-1.29.5-asm.12, שמכילה:- אפליקציות לדוגמה בספרייה
samples. - כלי שורת הפקודה שמשמש להתקנת Anthos Service Mesh נמצא בספרייה
bin.istioctl - פרופילי ההגדרות של Anthos Service Mesh נמצאים בספרייה
manifests/profiles.
- אפליקציות לדוגמה בספרייה
- מוודאים שאתם נמצאים בספריית השורש של ההתקנה של Anthos Service Mesh:
cd istio-1.29.5-asm.12
- כדי שיהיה לכם נוח, כדאי להוסיף את הכלים בספרייה /bin לנתיב:
export PATH=$PWD/bin:$PATH
- נותנים את אילוץ ההקשר הביטחוני (SCC)
anyuidל-istio-system באמצעות הפקודה הבאה של OpenShift CLI (oc):oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- מורידים את קובץ ההתקנה של Anthos Service Mesh לספריית העבודה הנוכחית:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-osx.tar.gz
- מורידים את קובץ החתימה ומשתמשים ב-openssl כדי לאמת את החתימה:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-osx.tar.gz.1.sig
openssl dgst -sha256 -verify /dev/stdin -signature istio-1.29.5-asm.12-osx.tar.gz.1.sig istio-1.29.5-asm.12.tar.gz <<'EOF'-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - מחלצים את התוכן של הקובץ למיקום כלשהו במערכת הקבצים שלכם. לדוגמה,
כדי לחלץ את התוכן לספריית העבודה הנוכחית:
tar xzf istio-1.29.5-asm.12-osx.tar.gz
הפקודה יוצרת ספריית התקנה בספריית העבודה הנוכחית בשם
istio-1.29.5-asm.12, שמכילה:- אפליקציות לדוגמה בספרייה
samples. - כלי שורת הפקודה שמשמש להתקנת Anthos Service Mesh נמצא בספרייה
bin.istioctl - פרופילי ההגדרות של Anthos Service Mesh נמצאים בספרייה
manifests/profiles.
- אפליקציות לדוגמה בספרייה
- מוודאים שאתם נמצאים בספריית השורש של ההתקנה של Anthos Service Mesh:
cd istio-1.29.5-asm.12
- כדי שיהיה לכם נוח, כדאי להוסיף את הכלים בספרייה /bin לנתיב:
export PATH=$PWD/bin:$PATH
- נותנים את אילוץ ההקשר הביטחוני (SCC)
anyuidל-istio-system באמצעות הפקודה הבאה של OpenShift CLI (oc):oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- מורידים את קובץ ההתקנה של Anthos Service Mesh לספריית העבודה הנוכחית:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-win.zip
- מורידים את קובץ החתימה ומשתמשים ב-openssl כדי לאמת את החתימה:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.29.5-asm.12-win.zip.1.sig
openssl dgst -verify - -signature istio-1.29.5-asm.12-win.zip.1.sig istio-1.29.5-asm.12.win.zip <<'EOF'-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - מחלצים את התוכן של הקובץ למיקום כלשהו במערכת הקבצים שלכם. לדוגמה,
כדי לחלץ את התוכן לספריית העבודה הנוכחית:
tar xzf istio-1.29.5-asm.12-win.zip
הפקודה יוצרת ספריית התקנה בספריית העבודה הנוכחית בשם
istio-1.29.5-asm.12, שמכילה:- אפליקציות לדוגמה בספרייה
samples. - כלי שורת הפקודה שמשמש להתקנת Anthos Service Mesh נמצא בספרייה
bin.istioctl - פרופילי ההגדרות של Anthos Service Mesh נמצאים בספרייה
manifests\profiles.
- אפליקציות לדוגמה בספרייה
- מוודאים שאתם נמצאים בספריית השורש של ההתקנה של Anthos Service Mesh:
cd istio-1.29.5-asm.12
- כדי שיהיה לכם נוח, כדאי להוסיף את הכלים בספרייה \bin לנתיב:
set PATH=%CD%\bin:%PATH%
- אחרי שמתקינים את ASM Istio, בודקים את הגרסה של
istioctl:istioctl version
- יוצרים מרחב שמות בשם istio-system לרכיבי מישור הבקרה:
kubectl create namespace istio-system
Linux
Mac OS
Windows
הגדרת ה-webhook לאימות
כשמתקינים את Anthos Service Mesh, מגדירים תווית של גרסה ב-istiod. צריך להגדיר את אותה גרסה ב-webhook של האימות.
- יוצרים קובץ בשם
istiod-service.yamlעם התוכן הבא:apiVersion: v1 kind: Service metadata: name: istiod namespace: istio-system labels: istio.io/rev: asm-1295-12 app: istiod istio: pilot release: istio spec: ports: - port: 15010 name: grpc-xds # plaintext protocol: TCP - port: 15012 name: https-dns # mTLS with k8s-signed cert protocol: TCP - port: 443 name: https-webhook # validation and injection targetPort: 15017 protocol: TCP - port: 15014 name: http-monitoring # prometheus stats protocol: TCP selector: app: istiod istio.io/rev: asm-1295-12 meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
- משתמשים ב-
kubectlכדי להחיל את ההגדרות האישיות לתגובה לפעולה מאתר אחר (Webhook) לצורך אימות:kubectl apply -f istiod-service.yaml
- כדי לוודא שההגדרה הוחלה:
kubectl get svc -n istio-system
התגובה אמורה להיראות כך:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 22s
התקנה של Anthos Service Mesh
- מתקינים את Anthos Service Mesh עם
istioctlבאמצעות פרופילasm-multicloud:istioctl install \ --set profile=asm-multicloud \ --set revision=istio-1.29.5-asm.12הפלט אמור להיראות כך:
kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE istio-ingressgateway-88b6fd976-flgp2 1/1 Running 0 3m13s istio-ingressgateway-88b6fd976-p5dl9 1/1 Running 0 2m57s istiod-asm-1295-12-798ffb964-2ls88 1/1 Running 0 3m21s istiod-asm-1295-12-798ffb964-fnj8c 1/1 Running 1 3m21s
הארגומנט
--set revisionמוסיף תווית של גרסה בפורמטistio.io/rev=1.8.6-asm.1ל-istiod. תווית התיקון משמשת את ה-webhook האוטומטי להזרקת sidecar כדי לשייך sidecar מוזרקים לגרסה מסוימת של istiod. כדי להפעיל הזרקה אוטומטית של sidecar למרחב שמות, צריך להוסיף לו תווית עם revision שזהה לתווית ב-istiod. - מוודאים שההתקנה הושלמה:
kubectl get svc -n istio-system
הפלט אמור להיראות כך:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 172.200.48.52 34.74.177.168 15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP 3m35s istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 4m46s istiod-asm-1295-12 ClusterIP 172.200.63.220 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 3m43s
התקנה של זמן הריצה של Hybrid 1.5.10
מורידים את חבילת ההפצה של מערכת ההפעלה:
Mac 64 bit:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_mac_64.tar.gzLinux 64 bit:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_linux_64.tar.gzMac 32 bit:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_mac_32.tar.gzLinux 32 ביט:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/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.5.0-d591b23_linux_64. משנים את שם הספרייה ל-apigeectl:mv apigeectl_1.5.0-d591b23_linux_64 apigeectl
- בספרייה new
apigeectl/, מריצים את הפקודותapigeectl init,apigeectl applyו-apigeectl check-ready:- מאתחלים את גרסה 1.5.10 של Apigee Hybrid:
apigeectl init -f OVERRIDES
.yamlכאשר OVERRIDES
.yamlהוא קובץoverrides.yamlשעבר עריכה. - בודקים שההפעלה בוצעה בצורה תקינה באמצעות הפקודות הבאות:
apigeectl check-ready -f OVERRIDES
.yamlkubectl describe apigeeds -n apigee
הפלט אמור להיראות כך:
Status: Cassandra Data Replication: Cassandra Pod Ips: 10.8.2.204 Cassandra Ready Replicas: 1 Components: Cassandra: Last Successfully Released Version: Revision: v1-f8aa9a82b9f69613 Version: v1 Replicas: Available: 1 Ready: 1 Total: 1 Updated: 1 State: running Scaling: In Progress: false Operation: Requested Replicas: 0 State: running - התחביר של הדגל
apigeectl--dry-runתלוי בגרסה שלkubectlשפועלת. כדי לבדוק את הגרסה שלkubectl:gcloud version
- כדי לבדוק אם יש שגיאות, מריצים הרצה יבשה באמצעות הפקודה שמתאימה לגרסה של
kubectl:
kubectlגרסה 1.17 וגרסאות ישנות יותר:apigeectl apply -f OVERRIDES
.yaml--dry-run=truekubectlגרסה 1.18 ואילך:apigeectl apply -f OVERRIDES
.yaml--dry-run=client - מחילים את השינויים. בוחרים את ההוראות לסביבות ייצור או לסביבות הדגמה/ניסוי, בהתאם להתקנה.
ייצור
בסביבות ייצור, צריך לשדרג כל רכיב היברידי בנפרד ולבדוק את הסטטוס של הרכיב המשודרג לפני שממשיכים לרכיב הבא.
- מחילים את ההחלפות כדי לשדרג את Cassandra:
apigeectl apply -f OVERRIDES
.yaml--datastore - השלמת הבדיקה:
apigeectl check-ready -f OVERRIDES
.yamlממשיכים לשלב הבא רק כשהפודים מוכנים.
- מחילים את ההחלפות כדי לשדרג את רכיבי הטלמטריה ובודקים שהשדרוג הושלם:
apigeectl apply -f OVERRIDES
.yaml--telemetryapigeectl check-ready -f OVERRIDES
.yaml - מפעילים את רכיבי Redis:
apigeectl apply -f OVERRIDES
.yaml--redis - מחילים את השינויים כדי לשדרג את הרכיבים ברמת הארגון (MART, Watcher ו-Apigee
Connect) ובודקים שהשדרוג הושלם:
apigeectl apply -f OVERRIDES
.yaml--orgapigeectl check-ready -f OVERRIDES
.yaml - מחילים את השינויים כדי לשדרג את הסביבות. יש שתי אפשרויות:
- סביבה אחרי סביבה: מחילים את השינויים על סביבה אחת בכל פעם ובודקים שהפעולה הושלמה. חוזרים על השלב הזה לכל סביבה:
apigeectl apply -f OVERRIDES
.yaml--env ENV_NAMEapigeectl check-ready -f OVERRIDES
.yamlכאשר ENV_NAME הוא שם הסביבה שמשדרגים.
- כל הסביבות בבת אחת: אפשר להחיל את השינויים על כל הסביבות בבת אחת ולבדוק שהפעולה הושלמה:
apigeectl apply -f OVERRIDES
.yaml--all-envsapigeectl check-ready -f OVERRIDES
.yaml
- סביבה אחרי סביבה: מחילים את השינויים על סביבה אחת בכל פעם ובודקים שהפעולה הושלמה. חוזרים על השלב הזה לכל סביבה:
הדגמה/ניסוי
ברוב סביבות ההדגמה או הניסוי, אפשר להחיל את שינויי ברירת המחדל על כל הרכיבים בבת אחת. אם סביבת ההדגמה או הניסוי שלכם גדולה ומורכבת או דומה מאוד לסביבת ייצור, כדאי להשתמש בהוראות לשדרוג סביבות ייצור.
apigeectl apply -f OVERRIDES
.yaml- בודקים את הסטטוס:
apigeectl check-ready -f OVERRIDES
.yaml
- מחילים את ההחלפות כדי לשדרג את Cassandra:
- מאתחלים את גרסה 1.5.10 של Apigee Hybrid:
החזרה למצב הקודם של שדרוג
כדי לחזור לשדרוג קודם:
- מנקים את המשימות שהושלמו במרחב השמות של זמן הריצה ההיברידי, כאשר NAMESPACE הוא מרחב השמות שצוין בקובץ ההחלפות, אם צוין מרחב שמות. אם לא, מרחב השמות שמוגדר כברירת מחדל הוא
apigee:kubectl delete job -n NAMESPACE \ $(kubectl get job -n NAMESPACE \ -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}') - ניקוי משימות שהושלמו במרחב השמות
apigee-system:kubectl delete job -n apigee-system \ $(kubectl get job -n apigee-system \ -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}') - משנים את המשתנה
APIGEECTL_HOMEכך שיצביע על הספרייה שמכילה את הגרסה הקודמת שלapigeectl. לדוגמה:export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
- בספריית הבסיס של ההתקנה שרוצים לחזור אליה, מריצים את הפקודה
apigeectl apply, בודקים את הסטטוס של ה-pods, מוחקים את רכיב Redis (חדש בגרסה היברידית v1.5.0) ואז מריצים את הפקודהapigeectl init. חשוב להשתמש בקובץ ההחלפות המקורי של הגרסה שרוצים לחזור אליה:- מריצים את
apigeectl apply:$APIGEECTL_HOME/apigeectl apply -f overrides/ORIGINAL_OVERRIDES.yaml - בודקים את הסטטוס של ה-Pods:
kubectl -n NAMESPACE get pods
כאשר NAMESPACE הוא מרחב השמות של Apigee Hybrid.
ממשיכים לשלב הבא רק אם ה-
apigeedspod פועל. -
מכיוון ש-Redis הוא רכיב חדש ב-hybrid v1.5, מריצים את הפקודה הבאה כדי למחוק אותו:
apigeectl_1.5.0 delete --redis -f ORIGINAL_OVERRIDES
.yaml - מריצים את
apigeectl init:$APIGEECTL_HOME/apigeectl init -f overrides/ORIGINAL_OVERRIDES.yaml
- מריצים את