מדריך למשתמש בתצוגה מקדימה:
תצוגה מקדימה של נהלי התקנה וניהול חדשים עבור Apigee hybrid גרסה 1.8.
במסמך זה:
- תצוגה מקדימה
- סקירה כללית
- דרישות קדם
- התקנה בסיסית של Apigee Hybrid
- התקנה מותאמת אישית של Apigee Hybrid
- הורדת קבצי התקנה
- יצירת מרחב שמות
- שימוש בתמונות docker ממאגרים פרטיים (אופציונלי)
- הגדרת imagePullSecrets (אופציונלי)
- הגדרת פרוקסי קדמי (אופציונלי)
- ציון אישורי TLS של Ingress
- עדכון פריסת ingress
- הגדרת חשבונות שירות מותאמים אישית של Google Cloud
- שימוש בזהויות עומס עבודה
- עריכת קבצי yaml של משאבים
- יצירת משאבי אתחול ובקר
- מתן הרשאות לחשבון השירות של הכלי לסנכרון כדי ליצור אינטראקציה עם מישור הבקרה
- יצירת רכיבי מישור נתונים של Apigee
- המתן עד שהמשאבים יתחילו לפעול
- התאמת התקנה עבור cert-manager במרחב שמות מותאם אישית
- Kustomize ורכיבים
- מושגים
- הבנת התסריט
- מבנה התיקיות של הגדרת Apigee Hybrid
- אחסון מפתחות חשבון שירות בכספות חיצוניות
- שדרוג של Apigee Hybrid
- החזרה לאחור של Apigee Hybrid
- ניקוי
- מחיקת סביבה
- התקנה מרובת מופעים
תצוגה מקדימה
מסמך זה מיועד לפרסונת האופרטור של Apigee (משתמשים המתקינים/מנהלים/מנהלים התקנות של Apigee Hybrid). כדי לפעול לפי ההוראות במסמך הזה, צריך ניסיון בהתקנת Apigee hybrid באחת מפלטפורמות Kubernetes הנתמכות. מומלץ ליצור ארגון Apigee להערכה כדי לנסות את השלבים הבאים.
משוב
אנא שלחו משוב על תהליך זה לכתובת Apigee-hybrid-install-preview@google.com.
סקירה כללית
חוויית ההתקנה ההיברידית החדשה של Apigee מתקינה רכיבי Apigee באמצעות kubectl ומשלבת התקנה וניהול של Apigee Hybrid עם כלי תזמור תצורה של Kubernetes כמו Kustomize. האימותים המשופרים והשקיפות של הרכיבים שמותקנים מאפשרים ניפוי באגים טוב יותר ומשפרים את תהליך ההתקנה הכולל.
סקריפט התקנה, apigee-hybrid-setup.sh, מספק כלי פשוט להתקנה בסיסית. אפשר להשתמש בו כדי ליצור התקנה היברידית ואז לשנות אותה בהתאם לצרכים שלכם באמצעות kubectl, או ליצור התקנה היברידית מאפס באמצעות kubectl.
כל מאפייני ההגדרה של Apigee Hybrid מאוחסנים בקובצי YAML, קובץ אחד לכל רכיב מרכזי. כך אפשר לשלוט בצורה הרבה יותר מדויקת בהתקנה ההיברידית בסביבת Kubernetes. ניתן למצוא את קבצי התצורה וסקריפטי ההתקנה במאגר ב-GitHub.
שינויים בתהליך ההתקנה החדש
Apigee משנה את תהליך התקנת Apigee Hybrid מהסיבות הבאות:
- ניתן לשלב את השיטה החדשה להתקנת Apigee hybrid עם כלי Kubernetes CI/CD קיימים כמו Argo, Flux או Anthos Config Management שאינם משתמשים ב...
overrides.yamlקובץ תצורה. - היברידית Apigee סיפקה
apigeectl, כלי תבניות מותאם אישית שיוצר מניפסטים של Kubernetes (בין היתר) כדי להתקין ולנהל Apigee hybrid באשכולות Kubernetes. תהליך ההתקנה והניהול החדש מספק חוויה דומה לזו של ספקי תוכנה אחרים. - התהליך החדש מאפשר התקנה בסיסית במהירות על ידי יצירה אוטומטית של חשבונות שירות עם ההרשאות הנדרשות, אישורי TLS, מילוי מראש של ברירות מחדל ואלמנטים יסודיים נחוצים אחרים.
דרישות מוקדמות
לפני השימוש בהתקנת תצוגה מקדימה זו, עליך לעמוד בדרישות המוקדמות הבאות:
גרסת טרום-השקה (Preview)
תצוגה מקדימה זו מיועדת לעבוד עם Apigee hybrid גרסה 1.8.x. גרסאות מאוחרות יותר של Apigee hybrid אינן נתמכות.
הגדרת Apigee היברידית
לפני שתמשיך בהתקנה בפועל של Apigee Hybrid, עליך להשלים את ההוראות הבאות המפורטות בסעיפים הבאים בתיעוד:
- הגדרת פרויקט וארגון
- סקירה כללית של הדרישות המוקדמות להתקנת Apigee hybrid.
- שלב 1: הפעלת ממשקי API
- שלב 2: יצירת ארגון
- שלב 3: יצירת סביבה וקבוצת סביבות
- הגדרת זמן ריצה היברידי
כלים
בנוסף, עליך להוריד ולהגדיר את הכלים הבאים בתחנת העבודה שלך:
curl- נדרש
dockerכדי להריץ את הסקריפטapigee-hybrid-setup.sh. פעל לפי ההוראות ב-הורד את Docker כדי להתקין את Docker. envsubstאמור להיות זמין ברוב המערכות מבוססות לינוקס/יוניקס. עבור MacOS ומערכות אחרות, פעל לפי ההוראות במאגר הזה.- יש להתקין את
jq. הורד את jq. kptהורד kpt.kubectlגרסה 1.23 ואילך. מידע נוסף זמין במאמר Install Tools: kubectl (התקנת כלים: kubectl) במסמכי Kubernetes.
משתנים נפוצים שמופיעים במדריך הזה
במדריך הזה נעשה שימוש במשתני הסביבה הבאים בכמה שלבים. אפשר להגדיר אותם בשורת הפקודה או באמצעות סקריפט, או להחליף את הטקסט בפקודות כשמזינים אותן.
APIGEE_NAMESPACE: מרחב השמות Apigee שלך. כברירת מחדל זהוapigee. עם זאת, אפשר להשתמש במרחב שמות אחר.CLUSTER_NAME: שם האשכול שבו אתה מתקין את Apigee hybrid. זהו האשכול שתיצור בשלב 1: יצירת אשכול-
CLUSTER_LOCATION: האזור של האשכול. ההליכים במדריך זה מניחים שאתם משתמשים באשכול אזורי. אם אתם משתמשים באשכול אזורי, תוכלו להיעזר בהוראות שבשלב 1: יצירת אשכול. -
ENV_GROUP: השם של קבוצת הסביבות בהתקנת Apigee Hybrid. זוהי קבוצת הסביבה שתיצור בשלב 3: יצירת קבוצת סביבה. אפשר ליצור כמה קבוצות סביבות. -
ENV_NAME: השם של קבוצת הסביבות בהתקנת Apigee Hybrid. זוהי קבוצת הסביבה שתיצור בשלב 3: יצירת קבוצת סביבה. אפשר ליצור כמה קבוצות סביבות. INSTALL_DIR: הספרייה שבה מתקינים את Apigee hybrid. כברירת מחדל, זוהי ספריית המשנהapigee-hybrid-install/של הספרייה שבה הורדתם את קובץ ההתקנה, למשל:/myhybrid/apigee-hybrid-install/. זוהי ספריית הבסיס של מבנה הקבצים שמתועד במאמר מבנה התיקיות של Apigee Hybrid.-
INSTANCE_DIR: הספרייה של מופע Apigee Hybrid ספציפי. כברירת מחדל, המופע הראשון נקראinstance-1. ספריית המופע היא ספריית משנה של${INSTALL_DIR}/overlays/instances/. אפשר לציין כל שם למכונות ההיברידיות. מידע על התקנה של כמה מופעים -
ORG_NAME: השם של הארגון שלכם ב-Apigee Hybrid. זה חייב להיות זהה למזהה הפרויקט שלך ב-Google Cloud. ראה: שלב 2: צור ארגון.
התקנה בסיסית של Apigee Hybrid
כדי להתקין במהירות את Apigee Hybrid ללא התאמה אישית כבדה, ניתן להשתמש בהליך הדו-שלבי הבא.
- סביבה אחת
- קבוצת סביבות אחת
- נוצר חשבון שירות יחיד ב-Google Cloud שמשמש לכל הרכיבים הנפרדים
- ערכי ברירת מחדל עבור כל מפתחות ההצפנה והסיסמאות.
הורדת קובצי ההגדרה
הורד והכן את קבצי ההתקנה על ידי שכפול מאגר GitHub בכתובת https://github.com/apigee/apigee-hybrid-install/releases/tag/preview-1:
משכפלים את המאגר:
git clone https://github.com/apigee/apigee-hybrid-install.gitנווטו לספרייה של המאגר המשובט:
cd apigee-hybrid-installיוצרים ענף מהתג preview-1:
git branch preview-1 preview-1 git checkout preview-1הפוך את סקריפט ההגדרות לניתן להפעלה:
chmod +x ./tools/apigee-hybrid-setup.shלמאגר המשוכפל יהיה מבנה שדומה לזה שמתואר במאמר מבנה התיקיות של Apigee Hybrid:
הפעל את ההתקנה
הפעל את סקריפט המעטפת apigee-hybrid-setup.sh שנמצא בתוך התיקייה tools/.
./tools/apigee-hybrid-setup.sh --cluster-name $CLUSTER_NAME --cluster-region $CLUSTER_LOCATION --org $ORG_NAME --setup-all
אם אתה נתקל בשגיאות, נסה להריץ את הסקריפט בפעם השנייה.
אפשרויות נוספות שכדאי להשתמש בהן:
--env $ENV_NAMEמציין את שם סביבת Apigee.--envgroup $ENV_GROUPמציין את קבוצת הסביבה.--ingress-domain $HOSTNAMEמציין את שם המארח שסיפקת עבור קבוצת הסביבה שלך.--gcp-project-id $PROJECT_IDמציין את המזהה של פרויקט בענן של Google.
לאפשרויות נוספות, עיינו ב-הבנת הסקריפט.
כל שגיאה במהלך הביצוע תודפס לפלט סטנדרטי.
לאחר השלמת הסקריפט בהצלחה, תושלם את ההתקנה ההיברידית הבסיסית. ניתן לבדוק את ההתקנה על ידי יצירת proxy ל-API לדוגמה כמפורט בסעיף יצירה ופריסה של proxy ל-API חדש.
התקנה מותאמת אישית של Apigee Hybrid
עבור משתמשים מתקדמים יותר המעוניינים בשליטה מדויקת יותר על ההתקנה, ניתן לבצע את רצף השלבים הבא (עבור רבים מהשלבים המופיעים להלן, ניתן לבחור לבצע את השלב באופן ידני, או להשתמש בסקריפט המעטפת כדי להפוך את השלב הזה לאוטומטי):
הורד קבצי התקנה
הורד והכן את קבצי ההתקנה:
שכפל את מאגר GitHub ב-
https://github.com/apigee/apigee-hybrid-install/למאגר המשוכפל יהיה מבנה הדומה לזה המתואר ב-מבנה תיקיות של Apigee Hybrid Setup:
cdלתוך ספרייתapigee-hybrid-install/הפוך את סקריפט ההגדרות לניתן להפעלה:
chmod +x ./tools/apigee-hybrid-setup.sh
צור מרחב שמות
צור מרחב שמות של Kubernetes באשכול שלך שיכיל את כל רכיבי אשכול Apigee.
kubectl create namespace apigee
אם תבחרו שם אחר למרחב השמות, תוכלו לבחור אחת משלוש האפשרויות הבאות:
- (מומלץ) השתמש ב-
--namespace={YOUR_NAMESPACE_NAME}בעת מילוי מראש של ערכים ב-Edit resource yamls. הפעל את שתי הפקודות הבאות:
השתמשו ב-
kptכדי לציין את מרחב השמות Apigee:kpt fn eval "${INSTALL_DIR}/overlays/" \ --image gcr.io/kpt-fn/apply-setters:v0.2.0 -- \ APIGEE_NAMESPACE="${APIGEE_NAMESPACE}" # This is for replacing the namespace in istio discoveryAddress which cannot be # achieved with kptהשתמש ב-
sedכדי להחליף את מרחב השמות ב-istio discoveryAddress:sed -i -E -e "s/(discoveryAddress: apigee-ingressgateway-manager\.).*(\.svc:15012)/\1${APIGEE_NAMESPACE}\2/" "${INSTALL_DIR}/overlays/controllers/istiod/apigee-istio-mesh-config.yaml"
לחלופין, ניתן לשנות באופן ידני את המשאבים בנפרד כך שייווצרו במרחב השמות שבחרת.
שימוש בתמונות docker ממאגרים פרטיים (אופציונלי)
באפשרותך לבחור לא להשתמש בתמונות המאוחסנות באופן ציבורי, ולהשתמש בתמונות ממאגרים פרטיים משלך:
- השלב הראשון הוא לדחוף את כל התמונות למאגר הפרטי שלך, וניתן לעשות זאת על ידי ביצוע השלבים ב-apigee-pull-push | Apigee X. כברירת מחדל, תמונות מתויגות בגרסת Apigee Hybrid לה הן מתאימות, ומומלץ לא לערוך תגיות אלו. כמו כן, אנו ממליצים לא לערוך את שמות התמונות כדי שניתן יהיה לבנות את נתיב התמונה הסופי כפי שמוסבר ב-Image Hub.
הגדר את הערך של השדה
imageHubהמופיע בתוך הקובץ apigee-hybrid-config.yaml לנתיב המארח של המאגר הפרטי. (לפרטים נוספים, עיינו ב-Image Hub).imageHub: "your.private.repo/apigee/hybrid"
זה יבטיח שכל רכיבי Apigee Hybrid ישתמשו בתמונות מהמאגר הפרטי שלך.
בנוסף לכך, ייתכן שתרצו להשתמש גם בתמונה פרטית עבור ה-controller ועבור שער ה-Apigee ingress. לשם כך תצטרכו לערוך את הקבצים apigee-controller-deployment.yaml ו-apigee-ingressgateway-manager-deployment.yaml ולהחליף את כל השדות של image בתמונה מהמאגר הפרטי שלהם.
הגדרת imagePullSecrets (אופציונלי)
- צור סוד של kubernetes המכיל את פרטי האימות לאימות מול המאגרים הפרטיים. עיין ב-משיכת תמונה מרישום פרטי כדי להבין כיצד יש ליצור את הסוד.
- לאחר יצירת הסוד, כל שנותר הוא להתייחס לסוד זה, שניתן לעשות זאת על ידי עריכת הקובץ apigee-hybrid-config.yaml והגדרת ערך השדה
imagePullSecretלשם הסוד שנוצר קודם לכן, והפעלת רכיב ה-imagePullSecretבקובץ ה-kustomization.yamlהמתאים.
אם תציינו את ה-imagePullSecrets בשני המקומות, הערך המצוי בקובץ apigee-controller-manager.yaml יקבל עדיפות.
הגדרת שרת proxy להעברה (אופציונלי)
אפשר להגדיר שרתי proxy קדימה על ידי הוספת השדה forwardProxy לקובץ apigee-hybrid-config.yaml. לדוגמה:
forwardProxy: |
scheme: HTTP
host: 10.12.0.47
port: 3128
ציון אישורי TLS של Ingress
שימוש בסקריפט
./tools/apigee-hybrid-setup.sh --create-ingress-tls-certs
עיין ב-הבנת הסקריפט לקבלת פרטים נוספים על דגל זה.
גלילה ידנית
עליך לספק אישורי TLS שישמשו עבור שער הכניסה של istio. אתם יכולים:
- או להשתמש באישורים חתומים על ידי רשות ידועה באמצעות השלבים המוזכרים ב-השגת אישורי TLS: דוגמה | Apigee X
- או ליצור אישורים חתומים עצמית.
כאן נשתמש בתעודות חתומות עצמית כדוגמה. ניתן ליצור אישורים חתומים עצמית באמצעות (בהנחה ש-DOMAIN הוגדר כראוי וצריך להתאים לשם המארח שהוגדר ב-envgroup שלך):
openssl req -nodes -new -x509 -keyout ./tls.key -out ./tls.crt -subj '/CN='$DOMAIN'' -days 3650
פעולה זו תיצור שני קבצים בשם tls.key ו-tls.crt.
לאחר מכן צריך ליצור סוד בפורמט הבא. אפשר להשתמש ב-kubectl create או ב-kubectl apply כמו שמוסבר במאמר בנושא שימוש בזוג מפתחות או באישור מותאם אישית עבור רשות חתימת אישורים (אופציונלי):
apiVersion: v1
kind: Secret
metadata:
name: "{ORG_NAME}-{ENV_GROUP_NAME}"
namespace: {$APIGEE_NAMESPACE}
type: Opaque
data:
cert: |
{BASE64_ENCODED_TLS_CRT}
key: |
{BASE64_ENCODED_TLS_KEY}
---
דוגמה ליצירת הסוד באמצעות kubectl create:
kubectl create secret tls {ORG_NAME}-{ENV_GROUP_NAME} \
--cert="tls.crt" \
--key="tls.key" \
-n {$APIGEE_NAMESPACE}
עדכון פריסת הכניסה
כדי ליצור/לשנות פריסות ingress - עליך לשנות את השדה spec.components.ingressGateways ב-ApigeeOrganization Custom Resource ב-bases/initialization/crds/customresourcedefinition-apigeeorganizations.apigee.cloud.google.com.yaml.
כברירת מחדל, אנחנו יוצרים פריסת Ingress אחת עם פרמטרים שמוגדרים כברירת מחדל(ערכי ברירת המחדל מוצגים במסמכי העיון של CR ):
ingressGateways:
- name: "prod-1"
דוגמאות:
א. עקיפת שדות שירות כניסה
ingressGateways:
- name: "prod-1"
serviceSpec:
annotations:
{KEY}: ${VALUE}
loadBalancerIP: ${IP}
ב. שינוי הערך המינימלי או המקסימלי של העותק
ingressGateways:
- name: "prod-1"
autoScaler:
minReplicas: 4
maxReplicas: 10
ג. הוספת פריסת Ingress חדשה
ingressGateways:
- name: "prod-1"
- name: "prod-2"
הגדרת חשבונות שירות מותאמים אישית של גוגל קלאוד
שימוש בסקריפט
./tools/apigee-hybrid-setup.sh --create-gcp-sa-and-secrets --namespace APIGEE_NAMESPACE
כאשר APIGEE_NAMESPACE הוא מרחב השמות המותאם אישית. מרחב השמות שמוגדר כברירת מחדל הוא apigee.
פרטים נוספים על הדגלים מופיעים במאמר הסבר על הסקריפט.
גלילה ידנית
יש לאחסן מפתחות של חשבונות שירות Google Cloud כסודות באשכול. ל-yaml הסודי צריך להיות המבנה הבא:
apiVersion: v1
kind: Secret
metadata:
name: "{NAME}"
namespace: {APIGEE_NAMESPACE}
type: Opaque
data:
client_secret.json: |
{BASE64_ENCODED_SA_KEY}
לפרטים נוספים על כל חשבונות השירות הנדרשים ושמות הסודות, עיינו בסעיף חשבונות שירות Google Cloud.
אתם חופשיים לבחור שם אחר לסודות, אך לאחר מכן תצטרכו לבצע שינוי מתאים ברכיב שבו נעשה שימוש בשם הסוד הזה. לדוגמה, אם מחליטים לשנות את השם של הסוד של חשבון השירות של זמן הריצה מ-apigee-runtime-svc-account-${ORG_NAME}-${ENV_NAME} ל-my-runtime-svc, צריך לבצע שינוי תואם ב-apigee-environment.yaml של הסביבה הזו.
שימוש בזהויות עומס עבודה
אחת מהאפשרויות הבאות: הגדרת חשבונות שירות מותאמים אישית של Google Cloud או שימוש בזהויות עומס עבודה היא חובה.
דרישות מוקדמות
לפני השימוש בזהויות עומס עבודה, ודא שהתמיכה מופעלת באשכול ה-GKE שלך. לפרטים נוספים, עיינו ב-עדכון Node Pools | Apigee X.
הפעלת זהות עומס עבודה
עיין בסעיף זהויות עומס עבודה תחת התאמה אישית ורכיבים לקבלת פרטים על אופן הפעלת זהויות עומס עבודה לפני ההתקנה.
עריכת קבצי yaml של משאבים
מקומות מסוימים ב-yamls של הרכיב דורשים נוכחות של שמות הארגון, הסביבה וקבוצות הסביבה הנכונים. ניתן להגדיר ערכים אלה באופן ידני, או להשתמש בסקריפט המעטפת כדי למלא אותם באופן אוטומטי.
שימוש בסקריפט
./tools/apigee-hybrid-setup.sh --fill-values
יצירה של משאבי אתחול ובקר
#Additional steps for openshift
kubectl apply -k ${INSTALL_DIR}/overlays/initialization/openshift
//apigee datastore
kubectl apply -f ${INSTANCE_DIR}/overlays/instances/${INSTANCE_DIR}/datastore/components/openshift-scc/scc.yaml
//telemetry
kubectl apply -f ${INSTANCE_DIR}/overlays/instances/${INSTANCE_DIR}/telemetry/components/openshift-scc/scc.yaml
#Create Apigee initialization kubernetes resources
kubectl apply -f ${INSTALL_DIR}/overlays/initialization/namespace.yaml
kubectl apply -k ${INSTALL_DIR}/overlays/initialization/certificates
kubectl apply --server-side --force-conflicts -k ${INSTALL_DIR}/overlays/initialization/crds
kubectl apply -k ${INSTALL_DIR}/overlays/initialization/webhooks
kubectl apply -k ${INSTALL_DIR}/overlays/initialization/rbac
kubectl apply -k ${INSTALL_DIR}/overlays/initialization/ingress
# Create controller config and controller
kubectl apply -k ${INSTALL_DIR}/overlays/controllers
# Wait for the controllers to be available
kubectl wait deployment/apigee-controller-manager deployment/apigee-ingressgateway-manager -n "${APIGEE_NAMESPACE}" --for=condition=available --timeout=2m
# Create the datastore and redis secrets first and then the rest of the secrets.
kubectl apply -f ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/datastore/secrets.yaml
kubectl apply -f ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/redis/secrets.yaml
kubectl apply -f ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/environments/${ENV_NAME}/secrets.yaml
kubectl apply -f ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/organization/secrets.yaml
מתן הרשאות לחשבון שירות הסנכרון כדי לקיים אינטראקציה עם מישור הבקרה
בצעו את השלבים בשלב 8: הפעלת גישת סנכרונייזר, תוך החלפת שם חשבון השירות, apigee-non-prod או apigee-synchronizer, ב-apigee-all-sa, שם חשבון השירות שנוצר על ידי תהליך ההתקנה החדש.
★ חשוב: יש לוודא ששנית את שם חשבון השירות בהוראות תחת הפעלת גישת מסנכרן. אחרת, הפעלת גישה עבור הסנכרונאי תיכשל.
צור רכיבי מישור נתונים של Apigee
אם שינית את שמות המשאבים בשלבים הקודמים, תצטרך לבצע שינוי מתאים בקבצי YAML אחרים שבהם הוזכרה המשאב. לאחר שתסיים, השתמש בפקודות שבדוגמה הבאה:
# Create the rest of the resources.
kubectl apply -k ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}
להתקין את כל הרכיבים.
המתן עד שהמשאבים יתחילו
kubectl wait "apigeedatastore/default" \
"apigeeredis/default" \
"apigeeenvironment/${ORG_NAME}-${ENV_NAME}" \
"apigeeorganization/${ORG_NAME}" \
"apigeetelemetry/apigee-telemetry" \
-n "${APIGEE_NAMESPACE}" --for="jsonpath=.status.state=running" --timeout=15m
התאמה אישית של ההתקנה עבור cert-manager במרחב שמות מותאם אישית
כדי להתאים אישית את מרחב השמות שבו פועל cert-manager, פועלים לפי השלבים הבאים.
אם cert-manager מותקן באשכול שלך במרחב שמות שאינו cert-manager, תצטרך לעדכן את מרחב השמות המשמש ליצירת אישור הבסיס של Apigee.
- ערוך את קובץ customization.yaml לצורך יצירת האישור:
$INSTALL_DIR/overlays/initialization/certificates/kustomize.yaml הוסף את הדברים הבאים לסוף הקובץ.
- patch: |- - op: replace path: /metadata/namespace value: "gk-cert-manager" target: group: cert-manager.io version: v1 kind: Certificate name: apigee-root-certificateשמור את הקובץ
התאמה אישית ורכיבים
סקירה כללית
ההתקנה ההיברידית החדשה יורשת את האידיאולוגיה של Kustomize של מבנה קבצי yaml בצורה של Bases ו-Overlays.
- בסיסים הם קבצים המסופקים על ידי Apigee, אשר עשויים להשתנות בין כל מהדורה חדשה של Hybrid. אינך מצופה לשנות קבצים אלה. קבצים אלה מכילים ערכי ברירת מחדל המסופקים על ידי Apigee. כל הקבצים תחת התיקייה העליונה
bases/מכילים את הבסיסים האלה שכבות-על מכילות את תצורת המשתמש ומשמשות כאמצעי שבאמצעותו ניתן לשנות ערכי ברירת מחדל שצוינו בבסיסים. כל הקבצים תחת התיקייה העליונה
overlays/מכילים את שכבות ה-overlays האלה
כיצד להשתמש ברכיבים
תיקיות המשנה בספרייה העליונה overlays/ בנויות באופן כזה שניתן להפעיל (או להשבית) תכונה נוספת מסוימת על ידי הוספת הערות (או ביטול הערות) לשורות מסוימות בקבצי kustomization.yaml.
לדוגמה, כך נראה מבנה התיקיות של overlays/instances/{INSTANCE_NAME}/telemetry:
telemetry
├── components
│ ├── http-proxy
│ ├── imagepullsecret
│ ├── logger
│ ├── metrics
│ ├── nodeselector
│ ├── openshift-scc
│ ├── workload-identity-logger
│ └── workload-identity-metrics
├── apigee-telemetry.yaml
└── kustomization.yaml
כך כנראה ייראו קבצי telemetry/kustomization.yaml כברירת מחדל:
resources:
- apigee-telemetry.yaml
components:
- ./components/metrics
# - ./components/workload-identity-metrics
# - ./components/logger
# - ./components/workload-identity-logger
# - ./components/http-proxy
# - ./components/nodeselector/
# - ./components/imagepullsecret
# - ./components/openshift-scc
אנו רואים שה-./components/logger הוסר מהערה, מה שאומר שלא הפעלנו את uGoogle Clod logger כברירת מחדל. כדי לאפשר זאת, ניתן פשוט לבטל את ההערה של השורה כך:
components:
- ./components/logger
באופן דומה, כדי להשבית מדדים, ניתן להסיר את השורה ./components/metrics מהתגובה:
...
components:
...
# - ./components/metrics
…
הסעיפים הבאים ידונו בכל הרכיבים השונים הללו, מתי ניתן להשתמש בהם וכיצד ניתן להגדיר אותם.
OpenShift
עבור משתמשים המעוניינים להתקין את Apigee Hybrid באשכול OpenShift, ייתכן שתצטרכו להפעיל מספר רכיבים/משאבים לפני ביצוע ההתקנה. (זה נדרש אם אינך משתמש בסקריפט כדי לבצע את ההתקנה). הקבצים שצריך לשנות הם:
overlays/initialization/openshift/kustomization.yaml. תחת הקטעresources:, בטל סימון כהערה:# - ../../../bases/initialization/openshift/overlays/instances/{INSTANCE_NAME}/datastore/kustomization.yamlביטול סימון כהערה:# - ./components/openshift-sccואם השדה [
components:] עדיין מופיע כהערה, צריך לבטל את ההערה.overlays/instances/{INSTANCE_NAME}/telemetry/kustomization.yamlביטול סימון כהערה:# - ./components/openshift-sccובטל את ההערות בשדה "
components:" אם הוא עדיין מושבת מהערות.
לאחר מכן תוכל להמשיך בשלבי ההתקנה.
imagepullsecret
ניתן להפעיל רכיב זה כאשר יש לך תמונות המאוחסנות במאגר הפרטי שלך. כדי לשלוף תמונות ממאגר פרטי, ניתן ליצור סוד של קוברנטס שיכיל את פרטי האימות שלך ולאחר מכן יוכל להפנות לסוד זה בפנים. ראה הגדרת imagePullSecrets (אופציונלי) לקבלת הוראות. למידע נוסף, עיין ב-משיכת תמונה מרשימת רישום פרטית | Kubernetes בתיעוד של Kubernetes.
התוכנית זמינה במדינות הבאות:
overlays/controllers/apigee-controlleroverlays/controllers/istiodoverlays/instances/{INSTANCE_NAME}/datastoreoverlays/instances/{INSTANCE_NAME}/environments/{ENV_NAME}overlays/instances/{INSTANCE_NAME}/organizationoverlays/instances/{INSTANCE_NAME}/redisoverlays/instances/{INSTANCE_NAME}/telemetry
הפעלה:
בטל את ההערות לשורה "./components/imagepullsecret/" בקבצי kustomization.yaml המתאימים, במידת הצורך.
שינויים שיש לבצע:
- components/imagepullsecret/patch.yaml
- נדרש הוסף שמות סודיים רלוונטיים לרשימה ב-
spec.template.spec.imagePullSecrets
- נדרש הוסף שמות סודיים רלוונטיים לרשימה ב-
נוֹהָג:
- אם עדיין לא התקנת את Apigee Hybrid, תוכל להמשיך בשלבי ההתקנה והשינויים הללו ייושמו בתהליך.
אם כבר מותקנת אצלך Apigee Hybrid, תצטרך להחיל את השינויים החדשים הבאים באמצעות:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
nodeselector
רכיב זה מאפשר לך לתזמן פודים עבור משאב Apigee על צמתים ספציפיים. למידע נוסף, עיינו ב-הקצאת פודים לצמתים | Kubernetes.
זמין ב:
overlays/controllers/apigee-controlleroverlays/controllers/istiodoverlays/instances/{INSTANCE_NAME}/datastoreoverlays/instances/{INSTANCE_NAME}/environments/{ENV_NAME}overlays/instances/{INSTANCE_NAME}/organizationoverlays/instances/{INSTANCE_NAME}/redisoverlays/instances/{INSTANCE_NAME}/telemetry
מאפשר:
בטל את ההערות לשורה "./components/nodeselector" בקבצי kustomization.yaml המתאימים, במידת הצורך.
שינויים שיש לבצע:
- components/nodeselector/patch.yaml
- אופציונלי שנה את הערך של תווית בורר הצמתים מ-
apigee-runtimeאוapigee-dataלערך הרצוי.
- אופציונלי שנה את הערך של תווית בורר הצמתים מ-
נוֹהָג:
- אם עדיין לא התקנת את Apigee Hybrid, תוכל להמשיך בשלבי ההתקנה והשינויים הללו ייושמו בתהליך.
אם כבר התקנתם את Apigee Hybrid, תצטרכו להחיל את השינויים החדשים האלה באמצעות:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
זהות עומס עבודה
מגוון קונטיינרים במערכת האקולוגית Apigee Hybrid דורשים הרשאות כדי לבצע קריאות API מסוימות למישור הבקרה / מישור הניהול של Apigee. זהות עומס עבודה היא אחת מהפעולות של מתן הרשאות אלו לפודים (ולקונטיינרים שבתוכם). משאבים שימושיים לקריאה נוספת בנושא כוללים: - הצגת זהות עומס עבודה: אימות טוב יותר עבור יישומי GKE שלך | בלוג Google Cloud - שימוש בזהות עומס עבודה | תיעוד מנוע Kubernetes | Google Cloud
זמין ב:
overlays/instances/{INSTANCE_NAME}/datastoreoverlays/instances/{INSTANCE_NAME}/environments/{ENV_NAME}overlays/instances/{INSTANCE_NAME}/organizationoverlays/instances/{INSTANCE_NAME}/redisoverlays/instances/{INSTANCE_NAME}/telemetry
תְנַאִי מוּקדָם:
לפני שתוכלו להשתמש בזהות עומס עבודה, תצטרכו להעניק את ההרשאות הרלוונטיות בתוך פרויקט Google Cloud שלכם באמצעות:
gcloud iam service-accounts add-iam-policy-binding \
--role roles/iam.workloadIdentityUser \
--member "serviceAccount:${ORG_NAME}.svc.id.goog[${APIGEE_NAMESPACE}/${KSA_NAME}]" \
${GSA_NAME}@${ORG_NAME}.iam.gserviceaccount.com
כאשר: - ${ORG_NAME} - שם ארגון Apigee שלך.
- ${APIGEE_NAMESPACE} - מרחב השמות של קוברנטס שבו הותקנו רכיבי Apigee. בדרך כלל זה יהיה apigee אלא אם כן שונה במפורש על ידי המשתמש במהלך ההתקנה - ${KSA_NAME} - שם מרחב השמות של קוברנטס. תצטרך להפעיל פקודה זו עבור כל חשבון שירות Kubernetes המוזכר ב-חשבונות שירות Kubernetes - ${GSA_NAME} - שם חשבון השירות של Google Cloud. אם לא ביצעת שינויים במהלך ההתקנה, הערך יהיה apigee-all-sa. אם תגדיר מספר חשבונות שירות של Google Cloud עבור רכיבים בודדים, תצטרך להתאים את KSA_NAME ל-GSA_NAME המתאים. ניתן להשוות את הטבלאות בחשבונות שירות של Google Cloud עם חשבונות שירות של Kubernetes כדי למצוא את המקבילים.
הפעלה:
מבטלים את ההערה בשורה ./components/workload-identity בקובצי kustomization.yaml המתאימים, בכל מקום שנדרש. שימו לב שבמסגרת טלמטריה, יש לנו תוספים נפרדים של זהות עומסי עבודה עבור רכיבי metrics ו-logger, אותם ניתן להפעיל בנפרד.
נוֹהָג:
- אם עדיין לא התקנתם את Hybrid, אתם יכולים פשוט להפעיל את זהות עומס העבודה כמו שמתואר בקטע הקודם ולהמשיך בהתקנה, שתשתמש אוטומטית בזהות עומס העבודה.
אם כבר התקנתם את Apigee Hybrid, תצטרכו להחיל את השינויים החדשים האלה באמצעות:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
http-proxy
אפשר להגדיר שרת proxy בכל אחד מהרכיבים הבאים, כך שהתנועה של הרכיב הזה תעבור דרך שרת ה-proxy של HTTP שהוגדר עבור הרכיב. ניתן להגדיר את ה-proxy עבור כל רכיב Apigee בנפרד.
התוכנית זמינה במדינות הבאות:
overlays/instances/{INSTANCE_NAME}/datastoreoverlays/instances/{INSTANCE_NAME}/environments/{ENV_NAME}overlays/instances/{INSTANCE_NAME}/organizationoverlays/instances/{INSTANCE_NAME}/telemetry
מאפשר:
מבטלים את ההערה בשורה ./components/http-proxy/ בקובצי kustomization.yaml הרלוונטיים בכל מקום שנדרש.
שינויים שיש לבצע:
- components/http-proxy/patch.yaml ניתן להגדיר את הפרמטרים הבאים תחת
spec.httpForwardProxyscheme: נדרש אחד מ-HTTPאוHTTPShost: נדרש כתובת המארח של הפרוקסי שלךport: נדרש מספר הפורט-
username: אופציונלי שם המשתמש שמשויך לשרת הפרוקסי -
password: אופציונלי הסיסמה לגישה לשרת ה-proxy
נוֹהָג:
- אם עדיין לא התקנת את Apigee Hybrid, תוכל להמשיך בשלבי ההתקנה והשינויים הללו ייושמו בתהליך.
אם כבר מותקנת אצלך Apigee Hybrid, תצטרך להחיל את השינויים החדשים הבאים באמצעות:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
כלי לרישום ביומן ומדדים
ניתן להפעיל או להשבית באופן פרטני את הרישום או המדדים בתוך שכבות-על/מצבים/{INSTANCE_NAME}/טלמטריה. כברירת מחדל, הרישום מושבת והמדדים מופעלים. כדי להפעיל או להשבית אותן, פשוט מבטלים את ההערה בשורות שלהן ב-telemetry/kustomization.yaml או מוסיפים הערה.
gcs-גיבוי ו-gcs-שחזור
אפשר להשתמש ברכיב הזה של kustomize כדי לבצע גיבוי ושחזור של מסד הנתונים של Cassandra ב-Google Cloud Storage.
זמין ב:
overlays/instances/{INSTANCE_NAME}/datastore
תְנַאִי מוּקדָם:
הורד את מפתחות חשבונות שירות Google Cloud עבור חשבון בעל תפקיד מנהל אובייקט אחסון.
- אם השתמשתם בסקריפט כדי לבצע את ההתקנה ולא השתמשתם ב-Workload Identity, תוכלו להשתמש מחדש במפתחות שהורדתם. המפתחות האלה זמינים בתיקייה service-accounts שנוצרת על ידי הסקריפט.
ניתן גם להשתמש בסקריפט create-service-account.sh כדי ליצור חשבון שירות חדש ולהוריד את המפתחות שלו:
./tools/create-service-accounts=.sh --env prod --profile apigee‑cassandra
לאחר הורדת המפתחות, עליך ליצור סוד של kubernetes בשם apigee-cassandra-backup-and-restore-gcp-sa-key, שניתן לעשות זאת באמצעות הפקודה:
kubectl create secret generic "apigee-cassandra-backup-and-restore-gcp-sa-key" \ --from-file="dbbackup_key.json=${PATH_TO_SA_KEY}" \ -n "${APIGEE_NAMESPACE}"כאשר:
- ${PATH_TO_SA_KEY} - נתיב לקובץ המכיל את מפתחות חשבון השירות.
- ${APIGEE_NAMESPACE} – מרחב השמות של Kubernetes שבו רכיבי Apigee הותקנו. זה בדרך כלל יהיה apigee אלא אם כן ישתנה במפורש במהלך ההתקנה.
לחלופין, ניתן להשתמש בקובץ התבנית templates/secret-apigee-cassandra-backup-and-restore-gcp-sa-key.yaml כדי ליצור סוד זה.
מאפשר:
- אם ברצונך להפעיל גיבוי, בטל את ההערה בשורה "./components/gcs-backup" בקובץ datastore kustomization.yaml.
- אם ברצונך לשחזר גיבוי, בטל את ההערה בשורה "./components/gcs-restore" בקובץ datastore kustomization.yaml.
שינויים לגיבוי בלבד
- components/gcs-backup/apigee-datastore-patch.yaml
- חובה לשנות את הערך של משתנה הסביבה DATABASE_STORAGE_BUCKET, שיהיה מהצורה gs://BUCKET_NAME ויצביע על קטגוריית Google Cloud Storage שבה צריך לגבות את הנתונים. התיאור תואם ל-dbStorageBucket המתואר כאן.
- components/gcs-backup/cron-patch.yaml
- נדרש שנה את spec.schedule כדי לציין את תדירות הגיבוי. השדה מקבל את פורמט לוח הזמנים הסטנדרטי של Crontab. התיאור תואם ללוח הזמנים המתואר כאן.
- נדרש שנה את הערך של משתנה הסביבה DATABASE_STORAGE_BUCKET שיהיה בצורה gs://BUCKET_NAME ויצביע על הדלי של Google Cloud Storage שבו יש לגבות את הנתונים. התיאור תואם ל-dbStorageBucket המתואר כאן.
- אופציונלי שנה את הערך של HTTP_PROXY_URL כך שיפנה לכל פרוקסי שהוגדר. הפורמט יכול להיות כדלקמן:
http://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}https://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}http://${HOST_IP_ADDRESS}:${HOST_PORT}http://${HOST_IP_ADDRESS>:${HOST_PORT}
ביצוע גיבוי
ניתן לבצע את הגיבוי באמצעות הפקודה הבאה:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
כדי להחיל את השינויים ולהפעיל את הגיבוי:
שינויים לשחזור בלבד
- components/gcs-restore/apigee-datastore-patch.yaml
- נדרש שנה את הערך של משתנה הסביבה DATABASE_STORAGE_BUCKET שיהיה בצורה gs://BUCKET_NAME ויצביע על הדלי של Google Cloud Storage שבו יש לגבות את הנתונים. התיאור תואם ל-dbStorageBucket המתואר כאן.
- components/gcs-restore/job-patch.yaml
- חובה: משנים את הערך של משתנה הסביבה DATABASE_STORAGE_BUCKET, שיהיה מהצורה gs://BUCKET_NAME ויצביע על קטגוריית Google Cloud Storage שבה צריך לגבות את הנתונים.
- חובה לשנות את הערך של משתנה הסביבה BACKUP_SNAPSHOT_TIMESTAMP. התיאור תואם ל- restore:snapshotTimestamp מתואר כאן.
- אופציונלי משנים את הערך של HTTP_PROXY_URL כך שיצביע על שרת proxy שהוגדר.
הפורמט יכול להיות כדלקמן:
http://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}https://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}http://${HOST_IP_ADDRESS}:${HOST_PORT}http://${HOST_IP_ADDRESS}:${HOST_PORT}
ביצוע השחזור:
למידע נוסף על שחזור גיבויים, ראו שחזור גיבויים | Apigee X | Google Cloud
- צור אשכול Kubernetes חדש עם מרחב שמות חדש לשחזור פריסת זמן הריצה ההיברידית. אינך יכול להשתמש באותו אשכול ומרחב שמות שבהם השתמשת עבור ההתקנה ההיברידית המקורית.
התקן את Hybrid באשכול החדש עם ההגדרות שהוגדרו לעיל, בנוסף לכל הגדרות אחרות שתרצה:
- ניתן להשתמש בהתקנה בסיסית ובהתקנה היברידית במרחב השמות החדש:
./tools/apigee-hybrid-setup.sh \ --cluster-name $CLUSTER_NAME \ --cluster-region $CLUSTER_LOCATION \ --namespace ${NEW_APIGEE_NAMESPACE}- או בצעו את התקנה מותאמת אישית של Apigee Hybrid כדי להגדיר את הדברים לפי בחירתכם.
לאחר השלמת השחזור, ניתן יהיה למחוק את כל המשאבים במרחב השמות הישן ולהעביר אותם למרחב השמות החדש.
מידע נוסף זמין במאמר בנושא שחזור גיבויים.
גיבוי שאינו מבוסס GCS ושחזור שאינו מבוסס GCS
ניתן להשתמש ברכיב customize זה כדי לבצע גיבוי ושחזור של מסד הנתונים של קסנדרה ל-Google Cloud Storage.
זמין ב:
overlays/instances/{INSTANCE_NAME}/datastore
תְנַאִי מוּקדָם:
- ניתן להשתמש בשלבים מהתיעוד הקיים עבור הגדרת השרת ו-SSH.
מהשלבים שלעיל, תצטרכו להשתמש במפתח הפרטי של SSH הזמין בקובץ "ssh_key" שנוצר על ידי ביצוע השלבים הקודמים. לאחר מכן ניצור סוד של קוברנטס בשם apigee-cassandra-backup-and-restore-gcp-sa-key אשר מכיל את המפתח הפרטי של SSH.
ניתן ליצור את סוד הקוברנטס באמצעות הפקודה הבאה:
kubectl create secret generic "apigee-cassandra-backup-and-restore-key-file" \ --from-file="key=${PATH_TO_SSH_PRIVATE_KEY}" \ -n "${APIGEE_NAMESPACE}"כאשר:
- ${PATH_TO_SSH_PRIVATE_KEY} – הנתיב לקובץ שמכיל את המפתח הפרטי של SSH
- ${APIGEE_NAMESPACE} - מרחב השמות של קוברנטס שבו הותקנו רכיבי Apigee. זה בדרך כלל יהיה apigee אלא אם כן ישתנה במפורש במהלך ההתקנה.
לחלופין, ניתן להשתמש בקובץ התבנית templates/secret-apigee-cassandra-backup-and-restore-key-file.yaml כדי ליצור סוד זה.
מאפשר:
- אם ברצונך להפעיל גיבוי, בטל את ההערה בשורה "
./components/non-gcs-backup" בקובץ customization.yaml של datastore. - אם ברצונך לשחזר גיבוי, בטל את ההערה בשורה "
./components/non-gcs-restore" בקובץ datastore customization.yaml.
שינויים לגיבוי בלבד
- components/non-gcs-backup/apigee-datastore-patch.yaml
- חובה לשנות את הערך של BACKUP_SERVER_IP. התיאור תואם ל-BACKUP_SERVER_IP שמתואר כאן.
- חובה לשנות את הערך של BACKUP_STORAGE_DIR. התיאור תואם ל-BACKUP_STORAGE_DIR שמתואר כאן.
- components/non-gcs-backup/cron-patch.yaml
- נדרש שנה את spec.schedule כדי לציין את תדירות הגיבוי. השדה מקבל את פורמט התזמון הרגיל של Crontab. התיאור תואם ללוח הזמנים המתואר כאן.
- נדרש שנה את הערך של BACKUP_SERVER_IP. התיאור תואם ל-BACKUP_SERVER_IP כפי שמתואר כאן.
- נדרש שנה את הערך של BACKUP_STORAGE_DIR. התיאור תואם ל-BACKUP_STORAGE_DIR שמתואר כאן.
- אופציונלי שנה את הערך של HTTP_PROXY_URL כך שיפנה לכל פרוקסי שהוגדר. הפורמט יכול להיות כדלקמן:
http://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}https://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}http://${HOST_IP_ADDRESS}:${HOST_PORT}http://${HOST_IP_ADDRESS}:${HOST_PORT}
ביצוע גיבוי
ניתן לבצע את הגיבוי באמצעות הפקודה הבאה:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
כדי להחיל את השינויים שלך ולהפעיל את הגיבוי:
שינויים לגיבוי בלבד
- components/non-gcs-restore/apigee-datastore-patch.yaml
- components/non-gcs-restore/job-patch.yaml
- חובה לשנות את הערך של משתנה הסביבה
BACKUP_SNAPSHOT_TIMESTAMP. התיאור תואם ל-restore:snapshotTimestampמתואר כאן. - חובה לשנות את הערך של
BACKUP_SERVER_IP. התיאור תואם לBACKUP_SERVER_IPמה שמתואר כאן. - נדרש שנה את הערך של
BACKUP_STORAGE_DIR. התיאור תואם ל-BACKUP_STORAGE_DIRמתואר כאן. - אופציונלי משנים את הערך של
HTTP_PROXY_URLכך שיצביע על שרת proxy שהוגדר. הפורמט יכול להיות כדלקמן:http://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}https://${USERNAME}:${PASSOWORD}@${HOST_IP_ADDRESS}:${HOST_PORT}http://${HOST_IP_ADDRESS}:${HOST_PORT}http://${HOST_IP_ADDRESS}:${HOST_PORT}
- חובה לשנות את הערך של משתנה הסביבה
ביצוע השחזור:
סקירה כללית על שחזור גיבויים זמינה במאמר סקירה כללית על שחזור של Cassandra.
- צור אשכול Kubernetes חדש עם מרחב שמות חדש לשחזור פריסת זמן הריצה ההיברידית. אינך יכול להשתמש באותו אשכול ומרחב שמות שבהם השתמשת עבור ההתקנה ההיברידית המקורית.
מתקינים את Hybrid באשכול החדש עם ההגדרות שצוינו למעלה, בנוסף לכל הגדרה אחרת שרוצים: אפשר להשתמש בהתקנה הבסיסית ולהתקין את Hybrid במרחב השמות החדש:
./tools/apigee-hybrid-setup.sh \ --cluster-name $CLUSTER_NAME \ --cluster-region $CLUSTER_LOCATION \ --namespace ${NEW_APIGEE_NAMESPACE}או בצעו את התקנה מותאמת אישית של Apigee Hybrid כדי להגדיר את הדברים לפי בחירתכם.
לאחר השלמת השחזור, ניתן יהיה למחוק את כל המשאבים במרחב השמות הישן ולהעביר אותם למרחב השמות החדש.
מידע נוסף זמין במאמר תזמון גיבויים בשרת מרוחק.
לקוח http
הוראות מפורטות מופיעות במאמר הפעלת לקוחות HTTP | Apigee.
זמין ב:
- overlays/instances/${INSTANCE_NAME}/route-config/${ENV_GROUP}
מאפשר:
בטל את ההערה לשורה "./components/http-client" בקובץ route-config/${ENV_GROUP}/kustomization.yaml המתאים
שינויים שיש לבצע:
- לא נדרשים שינויים.
נוֹהָג:
- אם עדיין לא התקנת את Apigee Hybrid, תוכל להמשיך בשלבי ההתקנה והשינויים הללו ייושמו בתהליך.
אם כבר מותקנת אצלך Apigee Hybrid, תצטרך להחיל את השינויים החדשים הבאים באמצעות:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
לקוח שאינו sni
שווה ערך ל-כיצד להגדיר לקוח שאינו SNI | Apigee שכבר קיים.
התוכנית זמינה במדינות הבאות:
- overlays/instances/${INSTANCE_NAME}/route-config/${ENV_GROUP}
הפעלה:
בטל את ההערה לשורה "./components/non-sni-client" בקובץ route-config/${ENV_GROUP}/kustomization.yaml המתאים
שינויים שיש לבצע:
- components/non-sni-client/apigee-route.yaml
- דָרוּשׁ
credentialNameהתאמות תיאורcredential_nameמתואר כאן.
- דָרוּשׁ
נוֹהָג:
- אם עדיין לא התקנת את Apigee Hybrid, תוכל להמשיך בשלבי ההתקנה והשינויים הללו ייושמו בתהליך.
אם כבר מותקנת אצלך Apigee Hybrid, תצטרך להחיל את השינויים החדשים הבאים באמצעות:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
http-and-non-sni-client
להוראות, ראו הפעלת תמיכה עבור לקוחות שאינם SNI ו-HTTP | Apigee.
מאפשר:
בטל את ההערה לשורה "./components/http-and-non-sni-client" בקובץ route-config/${ENV_GROUP}/kustomization.yaml המתאים
שינויים שיש לבצע:
- components/http-and-non-sni-client/apigee-route.yaml
- חובה
credentialNameהתיאור תואם לcredential_nameמה שמתואר כאן.
- חובה
נוֹהָג:
- אם עדיין לא התקנת את Apigee Hybrid, תוכל להמשיך בשלבי ההתקנה והשינויים הללו ייושמו בתהליך.
אם כבר מותקנת אצלך Apigee Hybrid, תצטרך להחיל את השינויים החדשים הבאים באמצעות:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
במספר אזורים
ניתן להשתמש ברכיב זה בעת הגדרת פריסת קסנדרה מרובת אזורים. למידע נוסף, ראו פריסה מרובת אזורים ב-GKE וב-GKE מקומית
מאפשר:
בטל את ההערה לשורה "./components/multi-region" בקובץ datastore/kustomization.yaml
שינויים שיש לבצע:
components/multi-region/cassandra-data-replication.yaml
- דָרוּשׁ
source.regionשם מרכז הנתונים של קסנדרה המקור שישמש לשכפול נתונים ממנו. ניתן לזהות זאת באמצעות הפקודה הבאה באשכול המקור:
kubectl get apigeedatastore -n ${APIGEE_NAMESPACE} -o=jsonpath='{.items[*].spec.components.cassandra.properties.datacenter}'- דָרוּשׁ
components/multi-region/patch.yaml
- חובה
spec.components.properties.multiRegionSeedHostכתובת ה-IP של ה-Pod של אחד מ-Pods של Cassandra במקור. אנחנו יכולים להשתמש ב:
kubectl get pods -n ${APIGEE_NAMESPACE} -o wide- כדי לרשום את כל הפודים ולקבל את כתובת ה-IP של כל פוד קסנדרה, השתמש בפקודה הבאה:
kubectl get pods -o wide -n apigeeהפלט אמור להיראות כך:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE apigee-cassandra-default-0 1/1 Running 0 5d 10.0.0.11 gke-k8s-dc-2-default-pool-a2206492-p55d apigee-cassandra-default-1 1/1 Running 0 5d 10.0.2.4 gke-k8s-dc-2-default-pool-e9daaab3-tjmz apigee-cassandra-default-2 1/1 Running 0 5d 10.0.3.5 gke-k8s-dc-2-default-pool-e589awq3-kjch- חובה
למידע נוסף, ראו דרישות מוקדמות עבור GKE ב "פריסה מרובת אזורים ב-GKE, GKE מקומי ו-AKS":
נוֹהָג:
השימוש ברכיב זה הגיוני בעיקר כאשר אתם מגדירים את Apigee Hybrid באשכול חדש וכבר יש לכם הגדרה פעילה אחרת של Apigee Hybrid.
- גם האשכול החדש וגם האשכול הקיים צריכים להשתמש באותם אישורי TLS כדי להבטיח תקשורת תקינה בין תרמילי קסנדרה. לכן נצטרך להעתיק את הסוד של
apigee-root-certificateמהאשכול הקיים ולהשתמש בו גם באשכול החדש יותר: הרצה:
kubectl config get-contexts- כדי לקבל רשימה של כל ההקשרים של Kubernetes ואז להריץ
kubectl config use-context SOURCE_CLUSTER_CONTEXTכאשר SOURCE_CLUSTER_CONTEXT הוא השם של ההקשר של אשכול Kubernetes של המקור.
אחסן את סוד אישור הבסיס בקובץ:
kubectl get secret/apigee-root-certificate -n cert-manager -o yaml > apigee-root-certificate.yamlהחלף את הקשר האשכול לאשכול החדש שבו אתה מתקין את Apigee Hybrid.
kubectl config use-context ${NEW_CLUSTER_CONTEXT}יוצרים את סוד הבסיס באשכול החדש:
kubectl -n cert-manager apply -f apigee-root-certificate.yamlמשביתים את היצירה של אישור בסיס חדש. כך נוודא שלא ניצור
apigee-root-certificateחדש ונדרוס את זה שיצרנו בשלב הקודם.בטל את ההערות לשורות הבאות בקובץ
overlays/initialization/certificates/kustomization.yaml:# components: # - ./components/disable-apigee-root-certificate-generationהמשך עם שאר התקנת Apigee Hybrid באמצעות התקנה בסיסית של Apigee Hybrid או התקנה מותאמת אישית של Apigee Hybrid. לדוגמה, לאחר התקנה בסיסית של Apigee Hybrid, ניתן לבצע:
./tools/apigee-hybrid-setup.sh --cluster-name $CLUSTER_NAME --cluster-region $CLUSTER_LOCATIONכדי לבדוק את סטטוס הבנייה מחדש, משתמשים בפקודה הבאה.
kubectl -n ${APIGEE_NAMESPACE} get apigeeds -o json | jq ".items[].status.cassandraDataReplication"בודקים את תהליכי הבנייה מחדש ביומנים. בנוסף, בודקים את גודל הנתונים באמצעות הפקודה nodetool status:
kubectl logs apigee-cassandra-default-0 -f -n ${APIGEE_NAMESPACE} kubectl exec apigee-cassandra-default-0 -n ${APIGEE_NAMESPACE} -- nodetool -u ${JMX_USER} -pw ${JMX_PASSWORD} statusכדי לבדוק את סטטוס הבנייה מחדש, משתמשים בפקודה הבאה.
kubectl -n apigee get apigeeds -o json | jq ".items[].status.cassandraDataReplication"התוצאות אמורות להיראות כך:
{ "rebuildDetails": { "apigee-cassandra-default-0": { "state": "complete", "updated": 1623105760 }, "apigee-cassandra-default-1": { "state": "complete", "updated": 1623105765 }, "apigee-cassandra-default-2": { "state": "complete", "updated": 1623105770 } }, "state": "complete", "updated": 1623105770 }ראה גם: פריסה מרובת אזורים.
מסיר את השורות הבאות מ-
components/multi-region/patch.yaml:properties: multiRegionSeedHost: {IP_ADDRESS} # To be modified. REQUIREDמחילים את השינויים:
kubectl apply -k overlays/instances/{INSTANCE_NAME}
מושגים
מרכז תמונות
תמונות של קונטיינר Docker מוגדרות בדרך כלל בפורמט:
${REGISTRY_HOST_PATH}/${IMAGE_NAME}:${IMAGE_TAG}
או כאלה שמשתמשים בתקציר שנראים כך:
${REGISTRY_HOST_PATH}/${IMAGE_NAME}@${DIGEST}
ב-Apigee משתמשים במושג Image Hub (מרכז תמונות), שמתייחס ל-${REGISTRY_HOST_PATH} בפורמטים שלמעלה. ערך ברירת המחדל של Image Hub הוא gcr.io/apigee-release/hybrid/.
(תמונות המשתמשות ב-DIGEST יצטרכו להיות מוגדרות בנפרד בכל תת-רכיב)
Apigee בונה את נתיב התמונה הסופי על ידי שילוב הערכים הבאים:
- "Image Hub" שניתן לעקוף אותו ב-apigee-hybrid-config.yaml (עיין בסעיף שימוש בתמונות docker ממאגרים פרטיים לקבלת שלבים מפורטים כיצד לעקוף את Image Hub).
- הערך של
IMAGE_TAGמתקבל מהשדהversion, שמופיע בתוך קובץ ה-YAML של כל אחד מהרכיבים (לדוגמה, apigee-organization.yaml). Apigee מתייג את התמונות עם גרסת Apigee Hybrid - כלומרIMAGE_TAGהוא גרסה 1.8 עבור Apigee Hybrid גרסה 1.8 IMAGE_NAMEנקבע באופן מרומז משם המכולה שבה התמונה תשמש. לדוגמה, עבור המכולהapigee-runtime, ה-IMAGE_NAMEיהיה apigee-runtime.
לכן, דוגמה מלאה לנתיב תמונה תהיה gcr.io/apigee-release/hybrid/apigee-runtime:1.8.0
בדרך זו, נבנה נתיב התמונה הסופי, אשר לאחר מכן ישמש בתוך כל אחד מהמיכלים בתרמילים המתאימים להם.
חשבונות שירות ב-Google Cloud
חשבונות שירותי Google Cloud הם חשבונות המשמשים אפליקציות לביצוע קריאות מורשות לממשקי ה-API של גוגל. ניתן להוריד מפתחות חשבון של שירות Google Cloud, ולאחר מכן להשתמש בהם למטרות אימות. Apigee מצפה מהמשתמש לספק מפתחות לחשבון שירות על ידי יצירת סודות. להלן שמות הרכיבים ושם ברירת המחדל של הסוד שבו הוא מחפש מפתחות חשבון שירות:
| רכיב | רכיב משנה | שם סודי ברירת מחדל של קוברנטס המכיל מפתח חשבון שירות |
|---|---|---|
| ארגון | ||
| connectAgent | apigee-connect-agent-gcp-sa-key-${ORG_NAME} |
|
| צוֹפֶה | apigee-watcher-gcp-sa-key-${ORG_NAME} |
|
| מרט | apigee-mart-gcp-sa-key-${ORG_NAME} |
|
| udca | apigee-udca-gcp-sa-key-${ORG_NAME} |
|
| ingressGateways | לא רלוונטי | |
| סביבה | ||
| סביבת זמן ריצה | apigee-runtime-gcp-sa-key-${ORG_NAME}-${ENV_NAME} |
|
| אודקה | apigee-udca-gcp-sa-key-${ORG_NAME}-${ENV_NAME} |
|
| מסנכרן | apigee-synchronizer-gcp-sa-key-${ORG_NAME}-${ENV_NAME} |
|
| טלמטריה | ||
| מדדים | apigee-metrics-gcp-sa-key |
|
| containerLogs | apigee-logger-gcp-sa-key |
חשבונות שירות ב-Kubernetes
חשבונות שירות של Kubernetes מספקים זהויות לפודים באשכול שלך. כברירת מחדל, בקר Apigee יוצר אלה עבורך. אבל, אם תרצו לעקוף את היצירה (לדוגמה, כשאתם משתמשים בזהויות עומס עבודה), תוכלו לעשות זאת על ידי ציון השדה podServiceAccountName בתת-הרכיבים השונים.
רשימת רכיבים ורכיבי המשנה שלהם שבהם ניתן לציין את חשבון השירות של kubernetes יחד עם שם ברירת המחדל של חשבון השירות k8s בעת הפעלת תיקון זהות עומס העבודה עבורם.
| רכיב | רכיב משנה | שם ברירת מחדל (זמין לאחר הפעלת תיקון זהות עומס עבודה) |
|---|---|---|
| ארגון | ||
| connectAgent | apigee-connect-agent-svc-account-${ORG_NAME} |
|
| צוֹפֶה | apigee-watcher-svc-account-${ORG_NAME} |
|
| מרט | apigee-mart-svc-account-${ORG_NAME} |
|
| אודקה | apigee-udca-svc-account-${ORG_NAME} |
|
| סביבה | ||
| מסנכרן | apigee-synchronizer-svc-account-${ORG_NAME}-${ENV_NAME} |
|
| אודקה | apigee-udca-svc-account-${ORG_NAME}-${ENV_NAME} |
|
| סביבת זמן ריצה | apigee-runtime-svc-account-${ORG_NAME}-${ENV_NAME} |
|
| מאגר נתונים | ||
| קסנדרה | apigee-datastore-svc-account |
|
| טלמטריה | ||
| metricsApp | apigee-metricsApp-svc-account |
|
| metricsProxy | apigee-metricsProxy-svc-account |
|
| metricsAdapter | apigee-metricsAdapter-svc-account |
|
| containerLogs | apigee-container-logs-svc-account |
זהויות של עומסי עבודה
זהויות עומס עבודה מאפשרות לפודים (המשתמשים בחשבונות שירות של Kubernetes) הפועלים ב-GKE לבצע אימות ישיר עם Cloud APIs של Google מבלי להזדקק למפתחות חשבון שירות של Google Cloud.
הוספת סביבה חדשה
.
├── ...
├── instances/instance1/components
│ ├── ...
│ ├── environments
│ │ ├── dev
│ │ │ └── apigee-environment.yaml
│ │ │ └── secrets.yaml
│ │ └── new-env-name (new)
│ │ └── apigee-environment.yaml (new)
│ │ └── secrets.yaml (new)
└── ...
הוספת סביבה חדשה היא פשוטה כמו:
- יצירת תיקייה חדשה בתוך ספריית הסביבות (או איך שלא בנהתם את התיקיות)
- העתקת קובץ
apigee-environment.yamlמכל סביבה קיימת לתיקייה החדשה. - אם ברצונך ליצור חשבון שירות חדש ומפתחות הצפנה עבור הסביבה החדשה, העתק את ה-
secrets.yamlלתיקייה החדשה ושנה את שם הסודות בהתאם כדי להבדיל אותם מסביבות קיימות אחרות (בדרך כלל הדבר נעשה על ידי הוספת שם הסביבה כסיומת). - ביצוע שינויים מתאימים ב-
apigee-environment.yaml, כגון:- שינוי שם הסביבה
- אם עומדים ליצור חשבונות שירות ומפתחות הצפנה חדשים, יש צורך להפנות אליהם בצורה נכונה בקובץ yaml.
- החלת ה-
yaml:
kubectl apply -f components/environments/new-env-name/secrets.yaml
kubectl apply -f components/environments/new-env-name/apigee-environment.yaml
שימוש במחיקה כפויה ב-Apigee Datastore
אם מחיקת מאגר הנתונים אינה מתקדמת מכל סיבה שהיא, ניתן כעת לכפות מחיקה של מאגר הנתונים של apigee באמצעות הפקודות הבאות ללא קשר למצב הנוכחי של האשכול.
מחק את
apigeedsבמרחב השמותapigee:Kubectl delete -n apigee apigeeds defaultאם שלב זה נתקע, ניתן לצאת ממנו באמצעות CTRL + C.
עריכת
apigeedsחדש:Kubectl edit -n apigee apigeeds defaultהוספה/עדכון של שדה forceDelete במפרט מאגר הנתונים של apigee
spec: forceDelete: trueשומרים את הקובץ ויוצאים.
כעת חכו למחיקת מאגר הנתונים. מחיקת כל משאבי הקסנדרה עשויה להימשך מספר דקות.
הבנת התסריט
הסקריפט של apigee-hybrid-setup.sh מבצע כמה אימותים בסיסיים ועוזר להפוך את השלבים לאוטומטיים שהיית צריך לעשות אם אתה רוצה התאמה אישית מפורטת יותר כפי שמתואר ב-התקנה מותאמת אישית של Apigee Hybrid. אפילו עם ההתקנה המותאמת אישית, עדיין ניתן להשתמש באופן חלקי בסקריפט כדי לסייע במשימות מסוימות.
אפשר להריץ את הפקודה ./tools/apigee-hybrid-setup.sh --help כדי לראות רשימה של דגלים נתמכים ולקבל עזרה נוספת לגבי הסקריפט. הדגלים הבאים נתמכים כרגע:
--namespaceכברירת מחדל, הסקריפט מתקין את כל הרכיבים במרחב השמותapigee. ניתן לשנות התנהגות זו על ידי ציון שם מרחב השמות באמצעות דגל זה.--orgמשמש למתן שם ארגון Apigee. אם לא צוין, ברירת המחדל היא פרויקט Google Cloud שנבחר כעת ב-gcloud--envgroupמשמש למתן שם קבוצת הסביבה בתוך הארגון שלך. אם לא צוין, נעשה ניסיון לבצע שאילתה על ממשקי ה-API של מישור הבקרה כדי לקבוע את שם קבוצת הסביבה. אם נמצאות מספר קבוצות סביבה, מוחזרת שגיאה והסקריפט נסגר.--envמשמש למתן שם הסביבה בתוך הארגון שלך. אם לא מציינים את שם הסביבה, המערכת מנסה לשלוח שאילתה אל ממשקי ה-API של מישור הבקרה כדי לקבוע את שם הסביבה. אם נמצאות מספר סביבות או שהסביבה אינה חלק מקבוצת הסביבות, מוחזרת שגיאה והסקריפט נסגר.--cluster-nameשם אשכול קוברנטס.--cluster-regionהאזור שבו נמצא אשכול Kubernetes--gcp-project-idמזהה הפרויקט בענן של Google שבו קיים אשכול הקוברנטס--ingress-domainמציין את שם המארח/שם הדומיין שישמש ליצירת אישורי TLS חתומים עצמית עבור istio ingress-gateway. אם לא צוין כלום, נעשה ניסיון לקבוע את הערך על ידי שאילתת API של מישור הבקרה כדי לקבל את הערך מ-envgroup. אם היו בעיות בקביעת envgroup או אם הוגדרו כמה שמות מארחים עבור envgroup, השגיאה מוחזרת והסקריפט יוצא.--generate-internal-tls-certsפעולה זו תיצור סוד קוברנטס בשם apigee-ca המכיל אישור וזוג מפתחות שנוצרו על ידינו.--create-ingress-tls-certsפעולה זו תיצור סוד בשם{ORG_NAME}-{ENV_GROUP_NAME}(נגזר משם הארגון וקבוצת ה-env) בתוך מרחב השמות istio-system, שיכיל אישור וזוג מפתחות שישמשו לתקשורת TLS. שם הדומיין המשמש ליצירת אישורים אלה נגזר מהערך שנמצא בתצורת envgroup. במקרה של התנגשויות (למשל, אם נמצא כמה דומיינים), יוצגו הודעות שגיאה מתאימות.--create-gcp-sa-and-secretsיוצר חשבון שירות Google Cloud יחיד בפרויקט Google Cloud, מוריד את המפתחות ולאחר מכן יוצר את סודות ה-kubernetes המכילים את המפתח. ניתן למצוא את שמות הסודות בחשבונות שירות Google Cloud.--fill-valuesמחליף את הערכים של ה-org, ה-env, ה-envgroup ושמות אחרים בכל מקום בו הם נדרשים בקבצי yaml השונים.--apply-configurationפעולה זו תיצור את מנפיקי האישורים, הגדרות משאבים מותאמות אישית, Webhooks, תפקידים ומשאב הבקר. המשאבים ייווצרו בסדר הנכון והפקודה תיחסם עד שכולם יהיו תקינים.-- rename-directoriesשנה את שם הסביבה וקבוצת הסביבה לשמות הסביבה וקבוצת הסביבה הנכונים.--verboseמציג פלט מפורט עבור ניפוי שגיאות.--helpהצגת מידע על שימוש.--setup-allפעולה זו תבצע את כל המשימות שניתן לבצע באמצעות סקריפט זה
מבנה תיקיות ההתקנה של Apigee Hybrid
כברירת מחדל, התיקייה apigee-hybrid-setup כוללת את המבנה ההיררכי הבא:
.
├── bases
│ ├── controllers
│ │ ├── apigee-controller
│ │ │ ├── apigee-controller-deployment.yaml
│ │ │ └── kustomization.yaml
│ │ └── apigee-ingressgateway-manager
│ │ ├── apigee-ingressgateway-manager-deployment.yaml
│ │ └── kustomization.yaml
│ ├── datastore
│ │ └── backup-and-restore
│ │ ├── backup
│ │ │ ├── cronjob.yaml
│ │ │ └── kustomization.yaml
│ │ ├── common
│ │ │ ├── kustomization.yaml
│ │ │ ├── rbac.yaml
│ │ │ └── tls-certificate.yaml
│ │ └── restore
│ │ ├── job.yaml
│ │ └── kustomization.yaml
│ └── initialization
│ ├── certificates
│ │ ├── certificates-and-issuers.yaml
│ │ └── kustomization.yaml
│ ├── crds
│ │ ├── customresourcedefinition-apigeedatastores.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeedeployments.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeenvironments.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeorganizations.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeredis.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeerouteconfigs.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeroutes.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeetelemetries.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-cassandradatareplications.apigee.cloud.google.com.yaml
│ │ └── kustomization.yaml
│ ├── openshift
│ │ ├── kustomization.yaml
│ │ └── scc.yaml
│ ├── rbac
│ │ ├── apigee-controller
│ │ │ ├── kustomization.yaml
│ │ │ └── rbac.yaml
│ │ └── apigee-embedded-ingress-controller
│ │ ├── cluster-role-bindings.yaml
│ │ ├── cluster-roles.yaml
│ │ ├── kustomization.yaml
│ │ └── service-account.yaml
│ └── webhooks
│ ├── kustomization.yaml
│ ├── mutatingwebhookconfiguration.yaml
│ └── validatingwebhookconfiguration.yaml
├── CONTRIBUTING.md
├── docs
│ └── api_references
│ ├── v1alpha1.md
│ └── v1alpha2.md
├── kokoro
│ ├── build.sh
│ ├── common.cfg
│ ├── continuous.cfg
│ ├── presubmit.cfg
│ └── release.cfg
├── LICENSE
├── overlays
│ ├── controllers
│ │ ├── apigee-controller
│ │ │ ├── apigee-hybrid-config.yaml
│ │ │ ├── components
│ │ │ │ ├── imagepullsecret
│ │ │ │ │ ├── kustomization.yaml
│ │ │ │ │ └── patch.yaml
│ │ │ │ └── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── kustomization.yaml
│ │ ├── apigee-ingressgateway-manager
│ │ │ ├── apigee-ingressgateway-manager-deployment-patch.yaml
│ │ │ ├── apigee-istio-mesh-config.yaml
│ │ │ ├── components
│ │ │ │ ├── imagepullsecret
│ │ │ │ │ ├── kustomization.yaml
│ │ │ │ │ └── patch.yaml
│ │ │ │ └── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── kustomization.yaml
│ │ └── kustomization.yaml
│ ├── initialization
│ │ ├── certificates
│ │ │ ├── apigee-ingressgateway-manager-certificate-patch.yaml
│ │ │ ├── apigee-serving-cert-patch.yaml
│ │ │ ├── components
│ │ │ │ └── disable-apigee-root-certificate-generation
│ │ │ │ └── kustomization.yaml
│ │ │ └── kustomization.yaml
│ │ ├── crds
│ │ │ └── kustomization.yaml
│ │ ├── ingress
│ │ │ ├── envoyfilter-1.11.yaml
│ │ │ └── kustomization.yaml
│ │ ├── namespace.yaml
│ │ ├── openshift
│ │ │ ├── kustomization.yaml
│ │ │ └── scc.yaml
│ │ ├── rbac
│ │ │ ├── apigee-controller
│ │ │ │ └── kustomization.yaml
│ │ │ ├── apigee-ingressgateway-manager
│ │ │ │ └── kustomization.yaml
│ │ │ └── kustomization.yaml
│ │ └── webhooks
│ │ ├── kustomization.yaml
│ │ ├── mutatingwebhookconfiguration.yaml
│ │ └── validatingwebhookconfiguration.yaml
│ └── instances
│ └── instance1
│ ├── datastore
│ │ ├── apigee-datastore.yaml
│ │ ├── components
│ │ │ ├── gcs-backup
│ │ │ │ ├── apigee-datastore-patch.yaml
│ │ │ │ ├── cron-patch.yaml
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── tls-certificate-patch.yaml
│ │ │ ├── gcs-restore
│ │ │ │ ├── apigee-datastore-patch.yaml
│ │ │ │ ├── job-patch.yaml
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── tls-certificate-patch.yaml
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── multi-region
│ │ │ │ ├── cassandra-data-replication.yaml
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── non-gcs-backup
│ │ │ │ ├── apigee-datastore-patch.yaml
│ │ │ │ ├── cron-patch.yaml
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── tls-certificate-patch.yaml
│ │ │ ├── non-gcs-restore
│ │ │ │ ├── apigee-datastore-patch.yaml
│ │ │ │ ├── job-patch.yaml
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── tls-certificate-patch.yaml
│ │ │ ├── openshift-scc
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── scc.yaml
│ │ │ └── workload-identity
│ │ │ ├── kustomization.yaml
│ │ │ ├── patch.yaml
│ │ │ └── service-accounts.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── environments
│ │ ├── kustomization.yaml
│ │ └── test
│ │ ├── apigee-environment.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── kustomization.yaml
│ │ │ ├── patch.yaml
│ │ │ └── service-accounts.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── kustomization.yaml
│ ├── organization
│ │ ├── apigee-organization.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── kustomization.yaml
│ │ │ ├── patch.yaml
│ │ │ └── service-accounts.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── redis
│ │ ├── apigee-redis.yaml
│ │ ├── components
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── kustomization.yaml
│ │ │ ├── patch.yaml
│ │ │ └── service-accounts.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── route-config
│ │ ├── kustomization.yaml
│ │ └── test-envgroup
│ │ ├── apigee-route-config.yaml
│ │ ├── components
│ │ │ ├── http-and-non-sni-client
│ │ │ │ ├── apigee-route.yaml
│ │ │ │ └── kustomization.yaml
│ │ │ ├── http-client
│ │ │ │ ├── apigee-route.yaml
│ │ │ │ └── kustomization.yaml
│ │ │ └── non-sni-client
│ │ │ ├── apigee-route.yaml
│ │ │ └── kustomization.yaml
│ │ └── kustomization.yaml
│ └── telemetry
│ ├── apigee-telemetry.yaml
│ ├── components
│ │ ├── http-proxy
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── imagepullsecret
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── logger
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── metrics
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── nodeselector
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── openshift-scc
│ │ │ ├── kustomization.yaml
│ │ │ └── scc.yaml
│ │ ├── workload-identity-logger
│ │ │ ├── kustomization.yaml
│ │ │ ├── patch.yaml
│ │ │ └── service-accounts.yaml
│ │ └── workload-identity-metrics
│ │ ├── kustomization.yaml
│ │ ├── patch.yaml
│ │ └── service-accounts.yaml
│ └── kustomization.yaml
├── README.md
├── templates
│ ├── certificate-org-envgroup.yaml
│ ├── secret-apigee-cassandra-backup-and-restore-gcp-sa-key.yaml
│ ├── secret-apigee-cassandra-backup-and-restore-key-file.yaml
│ ├── secret-gcp-sa-key.yaml
│ └── secret-ingress-tls-cert-key.yaml
└── tools
├── apigee-hybrid-setup.sh
├── apigee-pull-push.sh
├── common.sh
├── create-service-account.sh
└── dump_kubernetes.sh
ניתן למצוא גרסה של הקבצים הנ"ל בתג preview-1 של מאגר github בכתובת: https://github.com/apigee/apigee-hybrid-install/releases/tag/preview-1.
התיקייה שלמעלה מכילה מניפסטים של Kubernetes עבור זמן ריצה של Apigee hybrid ומשתמשת ב-Kustomize לניהול תצורה. המניפסטים מאורגנים על סמך הקונספט של התאמה אישית של בסיסים ושכבות-על. תיקיית הבסיסים מכילה את התצורה המינימלית הנדרשת עבור כל רכיב apigee. תיקיית שכבות השכבה מכילה מספר תכונות(תצורות) נוספות המוגדרות כרכיבים. ניתן לבצע רכיב על ידי ביטול הערות על ההפניה לרכיב בקובץ customization.yaml.
דוגמה : כדי להפעיל את מאגר הנתונים gcs-backup עבור apigee, רכיב gcs-backup בוטל מההערות בקובץ customization.yaml שלהלן.
נתיב : ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/datastore/kustomization.yaml
namespace: "apigee" # kpt-set: ${APIGEE_NAMESPACE}
resources:
- apigee-datastore.yaml
components:
# - ./components/http-proxy
# - ./components/nodeselector/
# - ./components/imagepullsecret
# - ./components/workload-identity
# - ./components/openshift-scc
- ./components/gcs-backup (uncommented)
# - ./components/gcs-restore
# - ./components/non-gcs-backup
# - ./components/non-gcs-restore
כל ערך הדורש התאמות אישיות יצטרך להיות מוגדר בקובץ patch.yaml המתאים עבור gcs-backup.
בקובץ שלמטה, המשתמש צריך להגדיר את הערך של CLOUD_STORAGE_BUCKET_PATH
נתיב: $INSTALL_DIR/overlays/instances/$INSTANCE_DIR/datastore/components/gcs-backup/cron-patch.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: apigee-cassandra-backup
namespace: apigee
spec:
schedule: "${YOUR_BACKUP_SCHEDULE_CODE}" # To be modified
jobTemplate:
spec:
template:
spec:
containers:
- name: apigee-cassandra-backup
env:
- name: APIGEE_CLOUDPROVIDER
value: "GCP"
- name: DATABASE_STORAGE_BUCKET
value: "${CLOUD_STORAGE_BUCKET_PATH}" # To be modified. REQUIRED
volumeMounts:
- name: apigee-cassandra-backup
mountPath: /var/secrets/google
volumes:
- name: apigee-cassandra-backup
secret:
secretName: "apigee-cassandra-backup-and-restore-svc-account"
באופן דומה, אפשר להפעיל כל תכונה או הגדרה שדורשות התאמות אישיות על ידי ביטול ההערה של הרכיב בקובץ kustomization.yaml של רכיב apigee. כמו כן, לפי הצורך, יש להגדיר את הערכים המתאימים לשדות בקובץ patch.yaml של הרכיב בהתאם.
הסבר קצר על התיקיות והקבצים:
בסיסים
תיקייה זו מכילה את התבניות עם תצורה מינימלית הנדרשת על ידי כל אחד מרכיבי ה-apigee. לא יהיה צורך בשינויים במניפסטים בתיקייה זו.
שכבות-על
תיקייה זו מכילה את תבניות הרכיבים של customize עבור תצורות נוספות.
אִתחוּל
namespaces.yaml
מרחב השמות שבו יותקנו רכיבי מישור הנתונים של Apigee. שם ברירת המחדל של מרחב השמות הוא apigee
תעודות
מכיל את המשאבים Issuer ו-Certificate המשמשים להנפקת אישורים ל-webhooks. מכיל גם את ה-Issuer המשמש להנפקת אישורים לפודים שונים עבור תקשורת TLS.
rbac
מכיל את Role, ClusterRole, RoleBinding ו-ClusterRoleBinding שישמשו רכיבים שונים.
כרטיסי אשראי
Contains the definition of all the CRDs which are used by Apigee.
תגובות לפעולה מאתר אחר (webhook)
מכיל את ValidatingWebhookConfiguration וMutatingWebhookConfiguration שישמשו לביצוע אימותים במשאבים בהתאמה אישית.
תעבורת נתונים נכנסת (ingress)
מכיל הגדרה שרלוונטית לכל ה-POD-ים של Ingress. למשל, שינוי כותרת נפוצ, בדיקת תקינות וכו'.
פתח
מכיל את ההגדרה של openshift SecurityContextConstraints.
שלטים רחוקים
בקר אפיגי
apigee-hybrid-config.yaml
מכיל ConfigMap שמסופק כקלט בקובץ apigee-controller-manager.yaml. מפת ההגדרות הזו מכילה תצורות כמו imageHub, imagePullSecrets, forwardProxy בין היתר.
apigee-controller-deployment.yaml
מכיל שני שירותים לבקר ול-webhook, ופריסה לבקר. אם תרצו להשתמש בתמונה פרטית עבור הבקר, כאן תצטרכו לבצע את השינוי.
איסטיוד
Apigee-istio-mesh-config.yaml מכיל תצורת רשת עבור Istio בשימוש על ידי Apigee. זה לא רלוונטי עבור התקנות אחרות של ASM/Istio באשכול.
apigee-ingressgateway-manager-deployment-patch.yaml
מכיל שירות ופריסה של Istiod. זהו istiod פרטי המשמש אך ורק עבור מקרי שימוש של Apigee.
instances/{instanceName}
מאגר נתונים
apigee-datastore.yaml
מכיל את המשאב המותאם אישית ApigeeDatastore שמנהל את קסנדרה.
secrets.yaml
מכיל אישורי ברירת מחדל עבור מאגר הנתונים.
redis
apigee-redis.yaml
מכיל את המשאב המותאם אישית ApigeeRedis שמנהל את ה-redis.
secrets.yaml
מכיל אישורי ברירת מחדל עבור מאגר הנתונים.
ארגון
apigee-organization.yaml
מכיל את המשאב המותאם אישית ApigeeOrganization שמנהל תת-רכיבים אחרים כמו connectAgent, watcherAndSynchronizer, MART,UDCA ו-Ingress.
secrets.yaml
מכיל את Secret שאליהם יש הפניה בקובץ apigee-organization.yaml. חלק מהסודות מורחקים מהערות כשהם נוצרים על ידי הסקריפט. אם תשבית את יצירתם, תצטרך ליצור אותם ידנית
סביבות
מכיל את כל הסביבה בארגון שלך. כדאי ליצור תיקייה נפרדת לכל סביבה על ידי העתקת התיקייה שכבר סופקה לכם והגדרתה בהתאם לדרישות.
dev
apigee-environment.yaml
מכיל את המשאב המותאם אישית ApigeeEnvironment שמנהל רכיבי משנה אחרים כמו זמן ריצה.
secrets.yaml
מכיל את ה-Secret שאליהם מתייחסים ב-apigee-environment.yaml. חלק מהסודות מורחקים מהערות כשהם נוצרים על ידי הסקריפט. אם משביתים את היצירה שלהם, צריך ליצור אותם באופן ידני.
טלמטריה
apigee-telemetry.yaml
מכיל את המשאב המותאם אישית ApigeeTelemetry.
secrets.yaml
מכיל את ה-Secret שאליהם מתייחסים ב-apigee-telemetry.yaml. חלק מהסודות מורחקים מהערות כשהם נוצרים על ידי הסקריפט. אם תשבית את יצירתם, תצטרך ליצור אותם ידנית
תצורת מסלול
קבוצת dev-env
apigee-route-config.yaml
מכיל את המשאב המותאם אישית ApigeeRouteConfig.
secrets.yaml
מכיל Secret שאליו מתייחסים ב-apigee-route-config.yaml. הוא מוסר מהערות מכיוון שהוא נוצר אוטומטית על ידי הסקריפט apigee-hybrid-setup.sh ונשמר שם כדי לספק דוגמה לאופן שבו הסוד אמור להיראות אם הייתם יוצרים אותו ידנית.
אבחון
אבחון-אספן.yaml
משאבים שישמשו להפעלת פריסת האבחון
כְּלֵי עֲבוֹדָה
apigee-hybrid-setup.sh
apigee-create-service-account.sh
dump-kubernetes.sh
apigee-pull-push.sh
אחסון מפתחות חשבון שירות בכספות חיצוניות
Vault (מאת Hashicorp) היא מערכת ניהול סודות פופולרית הכוללת מספר אינטגרציות עם מאגרי סודות המסופקים על ידי גוגל, Azure, AWS ואחרים. Hashicorp Vault מאפשר לכם לאחזר סודות ממקור חיצוני ואז להשתמש בהם במשאבי Kubernetes. ישנן מספר דרכים בהן ניתן להשתמש ב-Vault כדי לאתר סודות. השלבים הבאים ישמשו כדוגמה בסיסית כיצד להשתמש ב-Vault CSI Provider כדי לטעון מפתחות חשבון שירות Google Cloud המאוחסנים במנוע סודי כלשהו המסופק על ידי Vault.
- נשתמש ב-Helm כדי להתקין משאבים הקשורים ל-Vault באשכול שלך. פועלים לפי השלבים שבקטע התקנת Helm כדי להגדיר את Helm במערכת.
בצעו את השלבים בהתקנת תרשים Vault Helm, כלומר:
הוספת מאגר Hashicorp ל-Helm
helm repo add hashicorp https://helm.releases.hashicorp.comעדכון מאגרי helm
helm repo updateהתקנת הכספת
helm install vault hashicorp/vault \ --set "server.dev.enabled=true" \ --set "injector.enabled=false" \ --set "csi.enabled=true"
עכשיו נאחסן את הסוד בתוך הכספת.
קבל מעטפת בתוך פוד הפיתוח של הכספת
kubectl exec -it vault-0 -- /bin/sh ```נשתמש במנוע הסודי של מפתח/ערך לאחסון נתונים בדוגמה זו.
vault kv put secret/runtime-gcp-sa-key key="${BASE_64_ENCODED_KEY}"כדי לוודא שהמפתח נשמר בהצלחה, השתמשו ב:
vault kv get secret/runtime-gcp-sa-key
הגדר אימות כדי לאפשר לפוד זמן הריצה למשוך את המפתח. כפי שנדון בחשבונות שירות של Kubernetes, חשבונות שירות של Kubernetes מספקים זהות לפודים ומאפשרים להם לבצע אימות מול מערכות אחרות.
קבל מעטפת בתוך פוד הפיתוח של הכספת
kubectl exec -it vault-0 -- /bin/shהפעלת שיטת אימות קוברנטס
vault auth enable kubernetesכתוב את תצורת האימות
vault write auth/kubernetes/config \ issuer="https://kubernetes.default.svc.cluster.local" \ token_reviewer_jwt="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" \ kubernetes_host="https://$KUBERNETES_PORT_443_TCP_ADDR:443" \ kubernetes_ca_cert=@/var/run/secrets/kubernetes.io/serviceaccount/ca.crt \ disable_iss_validation=trueצור את מדיניות האימות
vault policy write apigee-runtime-app - <<EOF path "secret/data/runtime-gcp-sa-key" { capabilities = ["read"] } EOFקשר את הפוליסה עם חשבון השירות
vault write auth/kubernetes/role/apigee-runtime-role \ bound_service_account_names=apigee-runtime-sa \ bound_service_account_namespaces=${APIGEE_NAMESPACE} \ policies=apigee-runtime-app \ ttl=20m
כאן, אנו מניחים שחשבון השירות נמצא בתוך מרחב השמות apigee. אם יש לך מרחב שמות אחר להתקנת apigee, תשתמש בשם הזה.
צא מהמעטפת בתוך כספת-0
exit
התקנת מנהל התקן CSI של מאגר הסודות
# Add repo to helm helm repo add secrets-store-csi-driver https://raw.githubusercontent.com/kubernetes-sigs/secrets-store-csi-driver/master/charts # Install driver in cluster helm install csi secrets-store-csi-driver/secrets-store-csi-driverצור משאב קוברנטס של
SecretProviderClassשמפנה לסוד שיצרת בתוך הכספתcat > spc-vault.yaml <<EOF apiVersion: secrets-store.csi.x-k8s.io/v1alpha1 kind: SecretProviderClass metadata: name: vault-apigee-runtime-gcp-sa-key spec: provider: vault parameters: vaultAddress: "http://vault.default:8200" roleName: "apigee-runtime-role" objects: | - objectName: "client_secret.json" secretPath: "secret/data/runtime-gcp-sa-key" secretKey: "key" EOFהחלת
yamlkubectl apply -f spc-vault.yamlצור את חשבון שירות ה-kubernetes שאליו הקצנו את ההרשאות בשלב (4.e)
kubectl create serviceaccount -n ${APIGEE_NAMESPACE} apigee-runtime-saשנה את הקובץ apigee-environment.yaml עבור הסביבה והוסף את השורות הבאות:
apiVersion: apigee.cloud.google.com/v1alpha2 kind: ApigeeEnvironment # existing content spec: name: {ENV_NAME} organizationRef: {ORG_NAME} components: runtime: # existing content pod containers: - name: apigee-runtime podServiceAccountName: apigee-runtime-sa # existing content volumeMounts: - name: secrets-store-inline mountPath: "/opt/apigee/sa" readOnly: true volumes: - name: secrets-store-inline csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: "vault-apigee-runtime-gcp-sa-key"מחילים את השינויים:
kubectl apply -k ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/environments/$ENV_NAME
שדרוג Apigee היברידי
צריך לוודא שהשלמתם את כל הדרישות שמפורטות בקטע דרישות מוקדמות. כמו כן, מומלץ לבצע אתחול מחדש מתגלגל של כל הרכיבים כדי לבדוק אם האשכול תקין. סדר ההפעלות מחדש יהיה Cassandra, Redis, ApigeeOrganization ו-ApigeeEnvironment.
צור גיבוי
יוצרים עותק גיבוי של ההגדרה המשולבת הנוכחית. יידרש גיבוי למקרה שתצטרך לבצע החזרה למצב קודם של השדרוג לגרסה הנוכחית.
tar -czvf apigee-hybrid-install.v-X.Y.Z.tar.gz $HYBRID_INSTALL_BASE_DIRצור גיבוי של מסד הנתונים של קסנדרה. גיבויים של Cassandra הם אמצעי חשוב להגנה מפני תרחישי אסון.
שדרוג פלטפורמת Kubernetes לפי הצורך
שלב זה אינו נדרש בכל פעם, אך תצטרכו לשדרג את פלטפורמת Kubernetes שלכם, כמו Kubernetes, OpenShift ורכיבים כמו cert-manager, cassandra וכו', אם היא אינה נתמכת עוד על ידי גרסה חדשה יותר של apigee hybrid. התיעוד יכיל גרסאות נתמכות של פלטפורמות ורכיבים.
הורדת קובצי ההגדרה
הורד את המאגר והחלף את התיקיות bases ו-tools בהגדרת ה-apigee ההיברידית הקיימת במאגר חדש יותר:
משכפלים את התג preview-1 של מאגר GitHub בכתובת
https://github.com/apigee/apigee-hybrid-install/releases/tag/preview-1למאגר המשוכפל יהיה מבנה שדומה לזה שמתואר במאמר מבנה התיקיות של Apigee Hybrid:
להחליף את התיקייה של האתחול, הכלים והבקר בהגדרת apigee hybrid הקיימת.
export HYBRID_INSTALL_HOME=PATH_TO_PREVIOUS_HYBRID_INSTALL_DIRECTORY mv -f bases $HYBRID_INSTALL_HOME/bases mv -f tools $HYBRID_INSTALL_HOME/tools
עדכון הרשאות חשבון שירות במידת הצורך
שלב זה אינו נדרש בכל פעם, אך תצטרכו ליצור חשבון שירות חדש או לעדכן הרשאות של חשבונות שירות קיימים במידת הצורך. מדריך השדרוג יספק את הפרטים לגבי אילו חשבונות שירות יש לשנות או ליצור ואילו תפקידים יש להוסיף.
אם אתם צריכים לשנות את ההרשאות של חשבונות שירות קיימים, אתם יכולים להשתמש בפקודה המתאימה של
gcloud. מדריך השדרוג יכיל פקודות ותפקידים מפורטים שיש להוסיף.gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-component@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/$NEW_ROLE"אם יכול להיות שבגרסה החדשה יותר של Apigee Hybrid יידרש חשבון שירות נוסף לרכיבים חדשים או קיימים, תצטרכו ליצור אותם. אתם יכולים להשתמש בסקריפט
apigee-create-service-account.shשנשלח בתיקיית הכלי כדי ליצור חשבונות שירות חדשים. הסקריפט כבר יעודכן כחלק משלב 4, כך שהוא יכלול פרטים ופרופיל חדש שנדרשים לחשבון שירות חדש שצריך ליצור.יש להפנות את שם חשבון השירות החדש שנוצר ב-CR של הרכיב המתאים.
./tools/create-service-account --env prod --profile apigee-component
שדרוג בקר
שנה את שדות הגרסה עבור הרכיבים המפורטים ב-${INSTALL_DIR}/overlays/instances/$INSTANCE_DIR/kustomization.yaml לגרסה ההיברידית הרלוונטית.
הנה קובץ לדוגמה של $INSTALL_DIR/overlays/instances/$INSTANCE_DIR/kustomization.yaml. יש לעדכן את ערך שדה הגרסה לגרסה הרלוונטית.
resources:
- datastore/
- environments/
- organization/
- redis/
- route-config/
- telemetry/
patches:
- target:
group: apigee.cloud.google.com
version: v1alpha1
kind: ApigeeDatastore
patch: |-
- op: add
path: /spec/version
value: 1-6-1 (Modify the version)
- target:
group: apigee.cloud.google.com
version: v1alpha2
kind: ApigeeEnvironment
patch: |-
- op: add
path: /spec/version
value: 1-6-1 (Modify the version)
בצעו את אותה קבוצת שלבים המופיעה ביצירת משאבי אתחול ובקר בתהליך עבודה של התקנה היברידית של apigee. ניתן להשתמש בסקריפט או לבצע את השלבים הידניים המופיעים כדי לשדרג את משאבי האתחול והבקר.
עדכון רכיבי Apigee Kubernetes
תצטרכו לבצע את השינויים הבאים: - במקרה של שינויים ארכיטקטוניים או הכנסת שדות חדשים או הוצאת שדות ישנים משימוש, תצטרכו לשנות את רשימות ה-CR עם השינויים המתאימים בהתאם להוראות המופיעות במדריך השדרוג. - לכל הפחות עליך לעדכן את שדות הגרסה בתוך CRs (אשר יציינו את גרסת ה-apigee hybrid המותקנת) לגרסת ה-apigee hybrid החדשה יותר.
החל את השינויים עבור CRs של אפיגי. עבור סביבה שאינה של ייצור, ניתן להחיל את כל השינויים על רכיבי apigee בו זמנית.
kubectl apply -f ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}
החזרה לגרסה קודמת ב-Apigee Hybrid
שחזור הגדרת apigee-hybrid
עבור לספרייה שמכילה את הגרסה הקודמת של הגדרת apigee hybrid. אם אינו זמין, שחזר אותו מקובץ ה-zip שנוצר בשלב 1[קישור] במהלך שדרוג apigee hybrid.
החזרת רכיבי Kubernetes למצב אחר
החל את השינויים עבור CRs של אפיגי
kubectl apply -k ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}בקר החזרה למצב קודם
בצעו את אותה קבוצת שלבים המופיעה במדריך יצירת משאבי אתחול ובקר בתהליך העבודה של ההתקנה ההיברידית של apigee. ניתן להשתמש בסקריפט או לבצע את השלבים הידניים המופיעים כדי לבטל את משאבי האתחול והבקר.
הסרת המשאבים
תצטרך לנקות את כל המשאבים הנוספים שנוצרו במהלך השדרוג, כמו רכיבים חדשים או חשבונות שירות שהוכנסו בגרסה החדשה יותר של היברידי. מדריך השדרוג יכלול את כל המשאבים שצריך למחוק ואת השלבים למחיקה שלהם.
מחיקת סביבה
להלן השלבים למחיקת כל המשאבים הקשורים לסביבה מאשכול הקוברנטס שלך:
קבל את שם הסביבה CR. ניתן לעשות זאת על ידי קבלת כל הסביבות:
kubectl get env -n ${APIGEE_NAMESPACE}אחסן את שם המשאב במשתנה הסביבה
APIGEE_ENV.מחק את מפתחות ההצפנה של הסביבה. לדוגמה, אם לא שיניתם את השם של מפתחות ההצפנה, אתם יכולים למחוק אותם באמצעות הפקודה:
kubectl delete secret -n ${APIGEE_NAMESPACE} $APIGEE_ENV-encryption-keysמחיקה של סודות של חשבון שירות ב-Google Cloud:
kubectl delete secret -n ${APIGEE_NAMESPACE} $(kubectl get env $APIGEE_ENV -n ${APIGEE_NAMESPACE} -o=jsonpath='{.spec.components.*.appServiceAccountSecretName}')מחיקה של חשבונות שירות ב-Kubernetes:
kubectl delete secret -n ${APIGEE_NAMESPACE} $(kubectl get env $APIGEE_ENV -n ${APIGEE_NAMESPACE} -o=jsonpath='{.spec.components.*.podServiceAccountName}')מוחקים את המשאב המותאם אישית של סביבת Apigee:
kubectl -n ${APIGEE_NAMESPACE} delete env $APIGEE_ENV
מחיקת הגדרה משולבת
להלן השלבים למחיקת כל המשאבים הקשורים ל-apigee hybrid מאשכול ה-kubernetes שלך:
תצטרך למחוק את משימות הגדרת המשתמש והגדרת הסכימה של apigee.
# To list all jobs in ${APIGEE_NAMESPACE} kubectl -n ${APIGEE_NAMESPACE} get jobs # To delete all jobs in ${APIGEE_NAMESPACE} kubectl -n ${APIGEE_NAMESPACE} delete jobs $(kubectl -n ${APIGEE_NAMESPACE} get jobs -o custom-columns=':.metadata.name')תצטרך למחוק את רכיבי משטח הנתונים ההיברידי של ה-apigee שנפרסו. השתמש בפקודה הבאה כדי למחוק את כל הרכיבים:
kubectl delete -k ${INSTALL_DIR}/overlays/instances/$INSTANCE_NAMEהשלב הזה נדרש רק אם לא הסתמכתם על שם ברירת המחדל של סודות חשבון השירות של Kubernetes, סודות חשבון השירות של Google Cloud וכו'. אם הסתמכתם על שמות ברירת המחדל, הם יימחקו בשלב הבא. אחרת, תצטרכו למחוק אותם באופן ידני באמצעות הפקודות הבאות:
kubectl delete secret -n ${APIGEE_NAMESPACE} $(kubectl get ${APIGEE_COMPONENT} ${APIGEE_COMPONENT_NAME} -n ${APIGEE_NAMESPACE} -o=jsonpath='{.spec.components.*.appServiceAccountSecretName}') kubectl delete secret -n ${APIGEE_NAMESPACE} $(kubectl get ${APIGEE_COMPONENT} ${APIGEE_COMPONENT_NAME} -n ${APIGEE_NAMESPACE} -o=jsonpath='{.spec.components.*.podServiceAccountName}')במקרה של OpenShift, תצטרכו למחוק scc (אילוצי הקשר אבטחה) שנוצרו במהלך התקנת apigee hybrid.
kubectl delete scc ${SECURITY_CONTEXT_CONSTRAINTS_NAME}הפעל את הפקודה שלהלן כדי למחוק תפקידים, תפקידי חיבור, CRD, פריסות בקרים וכו'.
kubectl delete -k ${INSTALL_DIR}/overlays/initialization/ingress kubectl delete -k ${INSTALL_DIR}/overlays/initialization/rbac kubectl delete -k ${INSTALL_DIR}/overlays/initialization/webhooks kubectl delete -k ${INSTALL_DIR}/overlays/initialization/crds kubectl delete -k ${INSTALL_DIR}/overlays/initialization/certificatesהפעל את הפקודה הבאה כדי למחוק את מרחב השמות של apigee
kubectl delete -f ${INSTALL_DIR}/overlays/initialization/namespace.yamlלחלופין, השתמשו בפקודה:
kubectl delete $APIGEE_NAMESPACE
התקנה מרובת מופעים
הגדרה מרובת מופעים מתייחסת להגדרה היברידית שיכולה להתפרס על פני מספר אזורים או גם בתוך אותם אזורים. Apigee ממליצה לארגן את התצורות של המופע השני במבנה ספריות נפרד מכיוון שתצורות הסביבה (רפליקות וכו') שונות באופן בלתי נמנע בין מופעים. התצורות של כל מופע מנותקות ומאורגנות באופן עצמאי במבני התיקיות המתאימים להן.
לדוגמה - עבור הגדרה אקטיבית-פסיבית בתרחיש מרובה אזורים, ייתכן שתרצו להגדיר אזור שני במצב המתנה חם עם גדלים ותצורות שונים.
במבנה התיקיות למטה, ניתן ליצור עותק של ספריית instance1 בשם instance2 ולשנות את תצורות מאגר הנתונים ו-ingress לפי הצורך.
מבנה תיקיות apigee-hybrid-setup עבור הגדרה מרובת מופעים.]
.
├── bases
│ ├── controllers
│ │ ├── apigee-controller
│ │ │ ├── apigee-controller-deployment.yaml
│ │ │ └── kustomization.yaml
│ │ └── istiod
│ │ ├── apigee-ingressgateway-manager-deployment.yaml
│ │ └── kustomization.yaml
│ └── initialization
│ ├── certificates
│ │ ├── certificates-and-issuers.yaml
│ │ └── kustomization.yaml
│ ├── crds
│ │ ├── customresourcedefinition-apigeedatastores.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeedeployments.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeenvironments.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeorganizations.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeredis.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeerouteconfigs.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeeroutes.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-apigeetelemetries.apigee.cloud.google.com.yaml
│ │ ├── customresourcedefinition-cassandradatareplications.apigee.cloud.google.com.yaml
│ │ └── kustomization.yaml
│ ├── ingress
│ │ ├── envoyfilter-1.11.yaml
│ │ └── kustomization.yaml
│ ├── openshift
│ │ ├── kustomization.yaml
│ │ └── scc.yaml
│ ├── rbac
│ │ ├── apigee-controller
│ │ │ ├── kustomization.yaml
│ │ │ └── rbac.yaml
│ │ └── apigee-embedded-ingress-controller
│ │ ├── cluster-role-bindings.yaml
│ │ ├── cluster-roles.yaml
│ │ ├── kustomization.yaml
│ │ └── service-account.yaml
│ └── webhooks
│ ├── kustomization.yaml
│ ├── mutatingwebhookconfiguration.yaml
│ └── validatingwebhookconfiguration.yaml
├── instances
│ └── instance1 (Add the 2nd instance under instances directory similar to instance1)
│ ├── datastore
│ │ ├── apigee-datastore.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── environments
│ │ ├── kustomization.yaml
│ │ └── test
│ │ ├── apigee-environment.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── kustomization.yaml
│ ├── organization
│ │ ├── apigee-organization.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── redis
│ │ ├── apigee-redis.yaml
│ │ ├── components
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── route-config
│ │ ├── kustomization.yaml
│ │ └── test-env-group
│ │ ├── apigee-route-config.yaml
│ │ ├── components
│ │ │ ├── http-and-non-sni-client
│ │ │ │ ├── apigee-route.yaml
│ │ │ │ └── kustomization.yaml
│ │ │ ├── http-client
│ │ │ │ ├── apigee-route.yaml
│ │ │ │ └── kustomization.yaml
│ │ │ └── non-sni-client
│ │ │ ├── apigee-route.yaml
│ │ │ └── kustomization.yaml
│ │ └── kustomization.yaml
│ └── telemetry
│ ├── apigee-telemetry.yaml
│ ├── components
│ │ ├── http-proxy
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── imagepullsecret
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── logger
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── metrics
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── nodeselector
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── workload-identity-logger
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ └── workload-identity-metrics
│ │ ├── apigee-workload-identities.yaml
│ │ ├── kustomization.yaml
│ │ └── patch.yaml
│ └── kustomization.yaml
├── overlays
│ ├── controllers
│ │ ├── apigee-controller
│ │ │ ├── apigee-hybrid-config.yaml
│ │ │ ├── components
│ │ │ │ ├── imagepullsecret
│ │ │ │ │ ├── kustomization.yaml
│ │ │ │ │ └── patch.yaml
│ │ │ │ └── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── kustomization.yaml
│ │ ├── istiod
│ │ │ ├── apigee-ingressgateway-manager-deployment-patch.yaml
│ │ │ ├── apigee-istio-mesh-config.yaml
│ │ │ ├── components
│ │ │ │ ├── imagepullsecret
│ │ │ │ │ ├── kustomization.yaml
│ │ │ │ │ └── patch.yaml
│ │ │ │ └── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── kustomization.yaml
│ │ └── kustomization.yaml
│ ├── initialization
│ │ ├── certificates
│ │ │ ├── apigee-ingressgateway-manager-certificate.yaml
│ │ │ └── kustomization.yaml
│ │ ├── crds
│ │ │ └── kustomization.yaml
│ │ ├── ingress
│ │ │ └── kustomization.yaml
│ │ ├── namespace.yaml
│ │ ├── openshift
│ │ │ ├── kustomization.yaml
│ │ │ └── scc.yaml
│ │ ├── rbac
│ │ │ ├── apigee-controller
│ │ │ │ └── kustomization.yaml
│ │ │ ├── apigee-embedded-ingress-controller
│ │ │ │ └── kustomization.yaml
│ │ │ └── kustomization.yaml
│ │ └── webhooks
│ │ ├── kustomization.yaml
│ │ ├── mutatingwebhookconfiguration.yaml
│ │ └── validatingwebhookconfiguration.yaml
│ └── instances
│ └── instance1
│ ├── datastore
│ │ ├── apigee-datastore.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── openshift-scc
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── scc.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── environments
│ │ ├── kustomization.yaml
│ │ └── test
│ │ ├── apigee-environment.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── kustomization.yaml
│ ├── organization
│ │ ├── apigee-organization.yaml
│ │ ├── components
│ │ │ ├── http-proxy
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── redis
│ │ ├── apigee-redis.yaml
│ │ ├── components
│ │ │ ├── imagepullsecret
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ ├── nodeselector
│ │ │ │ ├── kustomization.yaml
│ │ │ │ └── patch.yaml
│ │ │ └── workload-identity
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── kustomization.yaml
│ │ └── secrets.yaml
│ ├── route-config
│ │ ├── kustomization.yaml
│ │ └── test-envgroup
│ │ ├── apigee-route-config.yaml
│ │ ├── components
│ │ │ ├── http-and-non-sni-client
│ │ │ │ ├── apigee-route.yaml
│ │ │ │ └── kustomization.yaml
│ │ │ ├── http-client
│ │ │ │ ├── apigee-route.yaml
│ │ │ │ └── kustomization.yaml
│ │ │ └── non-sni-client
│ │ │ ├── apigee-route.yaml
│ │ │ └── kustomization.yaml
│ │ └── kustomization.yaml
│ └── telemetry
│ ├── apigee-telemetry.yaml
│ ├── components
│ │ ├── http-proxy
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── imagepullsecret
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── logger
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── metrics
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── nodeselector
│ │ │ ├── kustomization.yaml
│ │ │ └── patch.yaml
│ │ ├── openshift-scc
│ │ │ ├── kustomization.yaml
│ │ │ └── scc.yaml
│ │ ├── workload-identity-logger
│ │ │ ├── apigee-workload-identities.yaml
│ │ │ └── kustomization.yaml
│ │ └── workload-identity-metrics
│ │ ├── apigee-workload-identities.yaml
│ │ ├── kustomization.yaml
│ │ └── patch.yaml
│ └── kustomization.yaml
├── README.md
├── templates
│ ├── ingress-certificate.yaml
│ ├── ingress-cert-secret.yaml
│ └── service-account-key-secret.yaml
└── tools
├── apigee-hybrid-setup.sh
├── common.sh
├── create-service-account.sh
└── dump_kubernetes.sh
הגדרה מרובת מופעים ב-GKE
דרישות מוקדמות
לפני שמגדירים כמה מופעים של היברידי, צריך לוודא שבוצעו הפעולות הבאות:
- הגדרת אשכולות Kubernetes במספר אזורים(זהים או שונים) עם בלוקי CIDR שונים
- הגדרת תקשורת בין אזורים
- פתח את פורטי קסנדרה 7000 ו-7001 בין אשכולות Kubernetes בכל האזורים (ניתן להשתמש בפורטי 7000 כאפשרות גיבוי במהלך פתרון בעיות). אפשר לעיין גם במאמר הגדרת יציאות.
ניתן להשתמש בכלי כמו ntpdate כדי לוודא שזמני השרת מסונכרנים.
הגדרת מארח ה-seed במספר אזורים
- צור עותק של התיקייה $INSTANCE_NAME מהמופע הקיים שלך והוסף אותו תחת תיקיית instances.
- שנה את הערך של שדה מרחב השמות אם הוא שונה ממרחב השמות של instance1.
- בצע את השלבים המפורטים בציון אישורי TLS של ingress כדי לשנות את תצורת ingress עבור המופע השני.
מידע על הגדרת כתובת ה-IP של מאזן העומסים עבור המופע השני זמין במאמר בנושא ניהול שער כניסה של Apigee.
הגדר את ההקשר של kubectl לאשכול המקורי לפני אחזור שם ה-seed
kubectl config use-context original-cluster-nameהפעילו את הפקודה kubectl הבאה כדי לזהות כתובת מארח seed עבור קסנדרה באזור הנוכחי.
kubectl get pods -o wide -n apigee -l app=apigee-cassandraכל אחת מכתובות ה-IP של הפוד שהוחזרו מהפקודה הקודמת יכולה להיחשב כמארח seed רב-אזורי.
במקרה השני, יש להגדיר את הערך של multiRegionSeedHost בקובץ CR של מאגר הנתונים של apigee תחת ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/datastore/apigee-datastore.yaml
הגדר את המופע החדש
הגדר את ההקשר לאשכול הקיים
kubectl config use-context existing-cluster-nameייצוא סוד apigee-ca לקובץ
kubectl -n cert-manager get secret apigee-root-certificate -o yaml > apigee-root-certificate.yamlמגדירים את ההקשר לשם האשכול של האזור החדש:
kubectl config use-context NEW_CLUSTER_NAMEייבא את הסוד לאשכול החדש
kubectl -n cert-manager apply -f apigee-root-certificate.yamlהתקן היברידי במופע החדש (אזור) על ידי ביצוע השלבים המפורטים ביצירת משאבי אתחול ובקר.
מגדירים את Cassandra בכל הפודים במרכזי הנתונים החדשים. קבל את apigeeorg מהאשכול באמצעות הפקודה הבאה:
kubectl get apigeeorg -n apigee -o json | jq ".items[].metadata.name"צור קובץ משאב מותאם אישית של שכפול נתונים של קסנדרה (YAML). לקובץ יכול להיות כל שם שהוא. בדוגמאות הבאות, שם הקובץ יהיה datareplication.yaml. הקובץ חייב להכיל את הפרטים הבאים
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: REGION_EXPANSION namespace: NAMESPACE spec: organizationRef: APIGEEORG_VALUE force: false source: region: SOURCE_REGIONכאשר:
- REGION_EXPANSION הוא השם שאתה נותן למטא-דאטה הזה. ניתן לבחור שם כמו "cassandra-data-replication"
- NAMESPACE הוא אותו מרחב שמות שנבחר עבור המופע השני. זה בדרך כלל "אפיג'י".
- APIGEEORG_VALUE הוא הערך שמתקבל מהפקודה kubectl get apigeeorg -n apigee -o json | jq ".items[].metadata.name" בשלב הקודם.
- SOURCE_REGION הוא הערך של מרכז הנתונים של קסנדרה ממצב ה-nodetool מאשכול המקור.
החל את CassandraDataReplication באמצעות הפקודה הבאה:
kubectl apply -f datareplication.yamlכדי לבדוק את סטטוס הבנייה מחדש, משתמשים בפקודה הבאה.
kubectl -n apigee get apigeeds -o json | jq ".items[].status.cassandraDataReplication"התוצאה צריכה להיראות בערך כך
{ "rebuildDetails": { "apigee-cassandra-default-0": { "state": "complete", "updated": 1623105760 }, "apigee-cassandra-default-1": { "state": "complete", "updated": 1623105765 }, "apigee-cassandra-default-2": { "state": "complete", "updated": 1623105770 } }, "state": "complete", "updated": 1623105770 }בודקים את תהליכי הבנייה מחדש ביומנים. בנוסף, בודקים את גודל הנתונים באמצעות הפקודה nodetool status:
kubectl logs apigee-cassandra-default-0 -f -n apigeeעיין בקובץ datastore/secrets.yaml עבור ה-JMX_user וה-JMX_password.
kubectl exec apigee-cassandra-default-0 -n apigee -- nodetool -u JMX_user -pw JMX_password statusהסר את
multiRegionSeedHostמ- CR של מאגר הנתונים של apigee והפעל את הפקודה הבאה כדי להחיל את השינויkubectl apply k apply -k ${INSTALL_DIR}/overlays/instances/${INSTANCE_DIR}/datastoreבדיקת הסטטוס של אשכול Cassandra
הפקודה הבאה שימושית כדי לראות אם הגדרת האשכול הצליחה בשני מרכזי נתונים. הפקודה בודקת את הסטטוס של nodetool בשני האזורים.
kubectl exec apigee-cassandra-default-0 -n apigee -- nodetool -u JMX_user -pw JMX_password statusDatacenter: us-central1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.12.1.45 112.09 KiB 256 100.0% 3c98c816-3f4d-48f0-9717-03d0c998637f ra-1 UN 10.12.4.36 95.27 KiB 256 100.0% 0a36383d-1d9e-41e2-924c-7b62be12d6cc ra-1 UN 10.12.5.22 88.7 KiB 256 100.0% 3561f4fa-af3d-4ea4-93b2-79ac7e938201 ra-1 Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.0.4.33 78.69 KiB 256 100.0% a200217d-260b-45cd-b83c-182b27ff4c99 ra-1 UN 10.0.0.21 78.68 KiB 256 100.0% 9f3364b9-a7a1-409c-9356-b7d1d312e52b ra-1 UN 10.0.1.26 15.46 KiB 256 100.0% 1666df0f-702e-4c5b-8b6e-086d0f2e47fa ra-1
פתרון בעיות
מדריך תמיכה, אבחון ופתרון בעיות
ניקוי ידני לאחר שימוש ב-forceDelete בהגדרה של Apigee Hybrid מרובת אזורים
- בדוגמה הבאה יש 2 אזורים –
us-east1ו-us-west1. - באזור
us-west1, מאגר הנתונים של apigee נמחק באמצעות מחיקה כפויה. - באזור
us-east1, קסנדרה עדיין פעילה. אימות ש-
apigeedsנמחק באמצעות הפקודהkubectl get apigeeds -n apigee No resources found in apigee namespace.שנה את ההקשר של kubectl לאזור השני שבו אשכול הקסנדרה עדיין פועל (כאן
us-east1).ודא שמאגר הנתונים במצב הפעלה
kubectl get apigeeds -n apigee NAME STATE AGE default running 23hבצע באחד מתרמילי הקסנדרה באזור למעלה (כאן
us-east1)kubectl exec -it -n apigee apigee-cassandra-default-0 -- bash apigee@apigee-cassandra-default-0:~$בדוק את סטטוס nodetool, הוא יציג את כל הצמתים באזור שנמחק (כאן
us-west1)apigee@apigee-cassandra-default-0:~$ nodetool -u ${APIGEE_JMX_USER} -pw ${APIGEE_JMX_PASSWORD} statusDatacenter: us-east1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.52.0.212 685.01 KiB 256 ? e1aa61e3-4eae-4549-9b58-506d495d87ab ra-1 UN 10.52.0.72 606.75 KiB 256 ? 477dfc03-f93e-40ea-810a-d15769822ad5 ra-1 UN 10.52.0.104 648.3 KiB 256 ? a8854cff-c2e3-4f0c-a342-e692787efcab ra-1 Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack DN 10.60.0.143 567.06 KiB 256 ? 355d6ace-ab77-42cb-8138-9993bfd62d0e ra-1 DN 10.60.0.40 535.99 KiB 256 ? 4ed2c903-ff56-40fa-a15e-80a3de3cb22d ra-1 DN 10.60.0.17 573.08 KiB 256 ? f9a50d19-c04a-4d0d-a088-612384bed9f5 ra-1הסר את כל הצמתים באזור שנמחק (כאן
us-west1)apigee@apigee-cassandra-default-0:~$ nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD removenode 355d6ace-ab77-42cb-8138-9993bfd62d0e apigee@apigee-cassandra-default-0:~$ nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD removenode 4ed2c903-ff56-40fa-a15e-80a3de3cb22d apigee@apigee-cassandra-default-0:~$ nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD removenode f9a50d19-c04a-4d0d-a088-612384bed9f5ודא שלא נותרו צמתים מהאזור שנמחק (כאן
us-west1)apigee@apigee-cassandra-default-0:~$ nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD statusDatacenter: us-east1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.52.0.212 699.71 KiB 256 ? e1aa61e3-4eae-4549-9b58-506d495d87ab ra-1 UN 10.52.0.72 586.77 KiB 256 ? 477dfc03-f93e-40ea-810a-d15769822ad5 ra-1 UN 10.52.0.104 623.6 KiB 256 ? a8854cff-c2e3-4f0c-a342-e692787efcab ra-1אחרי שהתהליך יסתיים, צריך למחוק את משימת הגדרת המשתמש באזור up (כאן
us-east1). המשימה תיווצר מחדש באופן אוטומטי תוך כמה שניות.kubectl get jobs -n apigeeNAME COMPLETIONS DURATION AGE apigee-cassandra-schema-setup-apigee--0d2504c 0/1 5m54s 5m54s apigee-cassandra-user-setup--apigee--0d2504c 0/1 7s 7skubectl delete job apigee-cassandra-user-setup--apigee--0d2504cהמתן להשלמת משימת הגדרת המשתמש
kubectl get jobs -n apigeeNAME COMPLETIONS DURATION AGE apigee-cassandra-schema-setup-apigee--0d2504c 1/1 5m54s 5m54s apigee-cassandra-user-setup--apigee--0d2504c 1/1 7m 7mמוודאים שהאזור שנמחק לא מופיע במרחבי המפתחות.
צור פוד ניפוי שגיאות של קסנדרה.
התחבר ל-cqlsh בפוד ניפוי שגיאות באמצעות הפקודה
apigee@cassandra-debug-client:~$ cqlsh apigee-cassandra-default-0.apigee-cassandra-default.apigee.svc.cluster.local -u ddl_user --ssl Password:ודא שאזור
us-west1הוסר מכל מרחבי המפתחותddl_user@cqlsh> SELECT * FROM system_schema.keyspaces;keyspace_name | durable_writes | replication ---------------------------+----------------+----------------------------------------------------------------------------------- cache_prince_hybrid_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} rtc_prince_hybrid_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} system_auth | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} system_schema | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'} quota_prince_hybrid_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} kms_prince_hybrid_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} system_distributed | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} system | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'} perses | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} kvm_prince_hybrid_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} system_traces | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'us-east1': '3'} (11 rows)