במאמר הזה מוסבר איך להתקין את Apigee hybrid v1.10 באמצעות תרשימי Helm.
גרסה
תרשימי Helm של Apigee Hybrid מיועדים לשימוש עם Apigee Hybrid בגרסה 1.10.x. רשימת הגרסאות של Apigee Hybrid זמינה במאמר היסטוריית הגרסאות של Apigee Hybrid.
דרישות מוקדמות
- Apigee Hybrid 1.10.5
- Helm v3.10+
-
גישה למאגר תרשימי Helm של Apigee Hybrid בכתובת:
oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts - ה-CLI של gcloud
- פרויקט Google Cloud להתקנת Apigee Hybrid. איך יוצרים ומנהלים פרויקטים
- אשכול Kubernetes להתקנת Apigee Hybrid. מידע נוסף:
היקף
- הגרסה הזו תומכת רק ב-Apigee Hybrid גרסה 1.10.5.
-
הגרסה הזו תומכת ב:
- התקנות חדשות של Apigee Hybrid.
- התקנות קיימות של Apigee Hybrid שודרגו לגרסה 1.10.5 ועברו לניהול Helm באמצעות כלי ההעברה של Apigee Hybrid ל-Helm.
- הגרסה הזו תומכת ב:
apigeectl, אפשר לעיין במאמר בנושא
כלי ההעברה של Apigee Hybrid Helm.
פלטפורמות וגרסאות נתמכות של Kubernetes
| פלטפורמה | גרסאות |
|---|---|
| GKE | 1.24, 1.25, 1.26 |
| AKS | 1.24, 1.25, 1.26 |
| EKS | 1.24, 1.25, 1.26 |
| OpenShift | 4.11, 4.12 |
מגבלות
-
תרשימי Helm לא תומכים באופן מלא ב-CRD, ולכן נשתמש בפקודה
kubectl -kכדי להתקין ולשדרג אותם. אנחנו שואפים לפעול לפי שיטות מומלצות של הקהילה ושל Google בנוגע לניהול Kubernetes. הפריסות של CRD דרך Helm עדיין לא הגיעו למצב קהילתי שבו אנחנו רואים תמיכה רחבה או בקשות למודל כזה. לכן, צריך לנהל את ה-CRD של Apigee באמצעותkubectl, כמו שמוזכר במסמך הזה. -
ב-
apigeectl, השתמשנו בקבצים ב-overrides.yamlעבור חשבונות שירות ותעודות, אבל Helm לא תומך בהפניה לקבצים מחוץ לספריית התרשים. בוחרים אחת מהאפשרויות הבאות עבור קובצי חשבון שירות ואישורים:- שמירת עותקים של קבצים רלוונטיים בכל ספריית תרשים
-
יוצרים קישורים סמליים בכל ספריית תרשים לכל קובץ או תיקייה. Helm יעקוב אחרי קישורים סמליים מחוץ לספריית התרשים, אבל יוציא אזהרה כמו זו:
apigee-operator/gsa -> ../gsa -
שימוש בסודות של Kubernetes. לדוגמה, עבור חשבונות שירות:
kubectl create secret generic SECRET_NAME \ --from-file="client_secret.json=CLOUD_IAM_FILE_NAME.json" \ -n apigee
-
מחליפים את מה שכתוב בשדות הבאים:
- SECRET_NAME בשם של הסוד של Kubernetes שיצרתם.
- CLOUD_IAM_FILE_NAME.json עם השם של קובץ ה-JSON שהורדתם.
פלטפורמות וגרסאות נתמכות של Kubernetes
רשימת הפלטפורמות הנתמכות מופיעה בעמודה v1.10 ב טבלת הפלטפורמות הנתמכות של Apigee Hybrid.
ההרשאות הנדרשות
בטבלה הזו מפורטים המשאבים וההרשאות שנדרשים ל-Kubernetes ול-Apigee.
כדי לסנן את הטבלה הזו, מבצעים אחת או יותר מהפעולות הבאות: בוחרים קטגוריה, מקלידים מונח חיפוש או לוחצים על כותרת של עמודה כדי למיין.
| קטגוריה | משאב | סוג המשאב | הרשאות RBAC ב-Kubernetes |
|---|---|---|---|
| Datastore | apigeedatastores.apigee.cloud.google.com |
Apigee | create delete patch update |
| Datastore | certificates.cert-manager.io |
Kubernetes | create delete patch update |
| Datastore | cronjobs.batch |
Kubernetes | create delete patch update |
| Datastore | jobs.batch |
Kubernetes | create delete patch update |
| Datastore | secrets |
Kubernetes | create delete patch update |
| Env | apigeeenvironments.apigee.cloud.google.com |
Apigee | create delete patch update |
| Env | secrets |
Kubernetes | create delete patch update |
| Env | serviceaccounts |
Kubernetes | create delete patch update |
| מנהל תעבורת נתונים נכנסת (Ingress) | certificates.cert-manager.io |
Kubernetes | create delete patch update |
| מנהל תעבורת נתונים נכנסת (Ingress) | configmaps |
Kubernetes | create delete patch update |
| מנהל תעבורת נתונים נכנסת (Ingress) | deployments.apps |
Kubernetes | create get delete patch update |
| מנהל תעבורת נתונים נכנסת (Ingress) | horizontalpodautoscalers.autoscaling |
Kubernetes | create delete patch update |
| מנהל תעבורת נתונים נכנסת (Ingress) | issuers.cert-manager.io |
Kubernetes | create delete patch update |
| מנהל תעבורת נתונים נכנסת (Ingress) | serviceaccounts |
Kubernetes | create delete patch update |
| מנהל תעבורת נתונים נכנסת (Ingress) | services |
Kubernetes | create delete patch update |
| אופרטור | apigeedatastores.apigee.cloud.google.com |
Apigee | create delete get list patch update watch |
| אופרטור | apigeedatastores.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
| אופרטור | apigeedatastores.apigee.cloud.google.com/status |
Apigee | get patch update |
| אופרטור | apigeedeployments.apigee.cloud.google.com |
Apigee | create delete get list patch update watch |
| אופרטור | apigeedeployments.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
| אופרטור | apigeedeployments.apigee.cloud.google.com/status |
Apigee | get patch update |
| אופרטור | apigeeenvironments.apigee.cloud.google.com |
Apigee | create delete get list patch update watch |
| אופרטור | apigeeenvironments.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
| אופרטור | apigeeenvironments.apigee.cloud.google.com/status |
Apigee | get patch update |
| אופרטור | apigeeissues.apigee.cloud.google.com |
Apigee | create delete get list watch |
| אופרטור | apigeeorganizations.apigee.cloud.google.com |
Apigee | create delete get list patch update watch |
| אופרטור | apigeeorganizations.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
| אופרטור | apigeeorganizations.apigee.cloud.google.com/status |
Apigee | get patch update |
| אופרטור | apigeeredis.apigee.cloud.google.com |
Apigee | create delete get list patch update watch |
| אופרטור | apigeeredis.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
| אופרטור | apigeeredis.apigee.cloud.google.com/status |
Apigee | get patch update |
| אופרטור | apigeerouteconfigs.apigee.cloud.google.com |
Apigee | get list |
| אופרטור | apigeeroutes.apigee.cloud.google.com |
Apigee | create delete get list patch update watch |
| אופרטור | apigeeroutes.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
| אופרטור | apigeeroutes.apigee.cloud.google.com/status |
Apigee | get patch update |
| אופרטור | apigeetelemetries.apigee.cloud.google.com |
Apigee | create delete get list patch update watch |
| אופרטור | apigeetelemetries.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
| אופרטור | apigeetelemetries.apigee.cloud.google.com/status |
Apigee | get list patch update |
| אופרטור | cassandradatareplications.apigee.cloud.google.com |
Apigee | get list patch update watch |
| אופרטור | cassandradatareplications.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
| אופרטור | cassandradatareplications.apigee.cloud.google.com/status |
Apigee | get patch update |
| אופרטור | *.networking.x.k8s.io |
Kubernetes | get list watch |
| אופרטור | apiservices.apiregistration.k8s.io |
Kubernetes | create delete get list patch update watch |
| אופרטור | certificates.cert-manager.io |
Kubernetes | create delete get list patch update watch |
| אופרטור | certificates.cert-manager.io/finalizers |
Kubernetes | create delete get list patch update watch |
| אופרטור | certificatesigningrequests.certificates.k8s.io |
Kubernetes | create delete get update watch |
| אופרטור | certificatesigningrequests.certificates.k8s.io/approval |
Kubernetes | create delete get update watch |
| אופרטור | certificatesigningrequests.certificates.k8s.io/status |
Kubernetes | create delete get update watch |
| אופרטור | clusterissuers.cert-manager.io |
Kubernetes | create get watch |
| אופרטור | clusterrolebindings.rbac.authorization.k8s.io |
Kubernetes | create delete get list patch update watch |
| אופרטור | clusterroles.rbac.authorization.k8s.io |
Kubernetes | create delete get list patch update watch |
| אופרטור | configmaps |
Kubernetes | create delete get list patch update watch |
| אופרטור | configmaps/status |
Kubernetes | get patch update |
| אופרטור | cronjobs.batch |
Kubernetes | create delete get list patch update watch |
| אופרטור | customresourcedefinitions.apiextensions.k8s.io |
Kubernetes | get list watch |
| אופרטור | daemonsets.apps |
Kubernetes | create delete get list patch update watch |
| אופרטור | deployments.apps |
Kubernetes | get list watch |
| אופרטור | deployments.extensions |
Kubernetes | get list watch |
| אופרטור | destinationrules.networking.istio.io |
Kubernetes | create delete get list patch update watch |
| אופרטור | endpoints |
Kubernetes | get list watch |
| אופרטור | endpointslices.discovery.k8s.io |
Kubernetes | get list watch |
| אופרטור | events |
Kubernetes | create delete get list patch update watch |
| אופרטור | gateways.networking.istio.io |
Kubernetes | create delete get list patch update watch |
| אופרטור | horizontalpodautoscalers.autoscaling |
Kubernetes | create delete get list patch update watch |
| אופרטור | ingressclasses.networking.k8s.io |
Kubernetes | get list watch |
| אופרטור | ingresses.networking.k8s.io/status |
Kubernetes | all verbs |
| אופרטור | issuers.cert-manager.io |
Kubernetes | create delete get list patch update watch |
| אופרטור | jobs.batch |
Kubernetes | create delete get list patch update watch |
| אופרטור | leases.coordination.k8s.io |
Kubernetes | create get list update |
| אופרטור | namespaces |
Kubernetes | create get list watch |
| אופרטור | nodes |
Kubernetes | get list watch |
| אופרטור | peerauthentications.security.istio.io |
Kubernetes | create delete get list patch update watch |
| אופרטור | persistentvolumeclaims |
Kubernetes | create delete get list patch update watch |
| אופרטור | persistentvolumes |
Kubernetes | get list watch |
| אופרטור | poddisruptionbudgets.policy |
Kubernetes | create delete get list patch update watch |
| אופרטור | pods |
Kubernetes | create delete get list patch update watch |
| אופרטור | pods/exec |
Kubernetes | create |
| אופרטור | replicasets.apps |
Kubernetes | create delete get list patch update watch |
| אופרטור | replicasets.extensions |
Kubernetes | get list watch |
| אופרטור | resourcequotas |
Kubernetes | create delete get list patch update watch |
| אופרטור | rolebindings.rbac.authorization.k8s.io |
Kubernetes | create delete get list patch update watch |
| אופרטור | roles.rbac.authorization.k8s.io |
Kubernetes | create delete get list patch update watch |
| אופרטור | secrets |
Kubernetes | batch create delete get list patch update watch |
| אופרטור | securitycontextconstraints.security.openshift.io |
Kubernetes | create get list |
| אופרטור | serviceaccounts |
Kubernetes | create delete get list patch update watch |
| אופרטור | services |
Kubernetes | batch create delete get list patch update watch |
| אופרטור | signers.certificates.k8s.io |
Kubernetes | approve |
| אופרטור | statefulsets.apps |
Kubernetes | create delete get list patch update watch |
| אופרטור | subjectaccessreviews.authorization.k8s.io |
Kubernetes | create get list |
| אופרטור | tokenreviews.authentication.k8s.io |
Kubernetes | create |
| אופרטור | virtualservices.networking.istio.io |
Kubernetes | create delete get list patch update watch |
| ארגון | apigeeorganizations.apigee.cloud.google.com |
Apigee | create delete patch update |
| ארגון | secrets |
Kubernetes | create delete patch update |
| ארגון | serviceaccounts |
Kubernetes | create delete patch update |
| Redis | apigeeredis.apigee.cloud.google.com |
Apigee | create delete patch update |
| Redis | secrets |
Kubernetes | create delete patch update |
| Telemetry | apigeetelemetry.apigee.cloud.google.com |
Apigee | create delete patch update |
| Telemetry | secrets |
Kubernetes | create delete patch update |
| Telemetry | serviceaccounts |
Kubernetes | create delete patch update |
| מארח וירטואלי | apigeerouteconfigs.apigee.cloud.google.com |
Apigee | create delete patch update |
| מארח וירטואלי | secrets |
Kubernetes | create delete patch update |
מידע נוסף:
הכנה להתקנה
תרשימים של Apigee Hybrid מתארחים ב-Google Artifact Registry:
oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
שליפת תרשימי Helm של Apigee
כדי להעתיק את כל תרשימי ה-Helm של Apigee hybrid לאחסון המקומי, משתמשים בפקודה pull הבאה:
export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-chartsexport CHART_VERSION=1.10.5helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar
התקנה של Apigee Hybrid
סקירה כללית של רצף ההתקנה
התקנת הרכיבים מתבצעת משמאל לימין ברצף, כמו שמוצג באיור הבא. רכיבים שמוצגים אחד מעל השני באיור יכולים להיות מותקנים יחד ובכל סדר. אחרי שמתקינים רכיב, אפשר לעדכן אותו בנפרד בכל שלב. לדוגמה: רפליקה, זיכרון, CPU וכו'.
הכנה להתקנה של Apigee Hybrid באמצעות תרשימי Helm
-
יוצרים את מרחב השמות שישמש למשאבי
apigee. השם הזה צריך להיות זהה לשם שמופיע בשדה של מרחב השמות בקובץoverrides.yaml. אם הפרמטר הזה לא מופיע ב-overrides.yaml, ברירת המחדל היאapigee.בודקים אם מרחב השמות כבר קיים:
kubectl get namespace apigee
אם מרחב השמות קיים, הפלט כולל:
NAME STATUS AGE apigee Active 1d
-
אם מרחב השמות עדיין לא קיים, יוצרים אותו:
kubectl create namespace apigee
-
יוצרים את מרחב השמות
apigee-systemשמשמש את משאבי האופרטור של Apigee.בודקים אם מרחב השמות כבר קיים:
kubectl get namespace apigee-system
-
אם מרחב השמות עדיין לא קיים, יוצרים אותו:
kubectl create namespace apigee-system
-
יוצרים את חשבונות השירות ומקצים להם את התפקידים המתאימים ב-IAM. Apigee hybrid משתמש בחשבונות השירות הבאים:
חשבון שירות תפקידי IAM apigee-cassandraאדמין של אובייקט אחסון apigee-loggerבעל הרשאת כתיבה של יומנים apigee-martApigee Connect Agent apigee-metricsבעל הרשאת כתיבה של מדדי מעקב apigee-runtimeלא נדרש תפקיד apigee-synchronizerApigee Synchronizer Manager apigee-udcaApigee Analytics Agent apigee-watcherApigee Runtime Agent Apigee מספקת כלי,
create-service-account, בספרייהapigee-operator/etc/tools:APIGEE_HELM_CHARTS_HOME/ └── apigee-operator/ └── etc/ └── tools/ └── create-service-accountהכלי הזה יוצר את חשבונות השירות, מקצה את תפקידי ה-IAM לכל חשבון ומוריד את קובצי האישורים בפורמט JSON לכל חשבון.
- יוצרים את הספרייה שבה רוצים להוריד את קובצי האישורים של חשבון השירות. תציינו את זה בפקודה הבאה במקום SERVICE_ACCOUNTS_PATH.
-
אפשר ליצור את כל חשבונות השירות באמצעות פקודה אחת עם האפשרויות הבאות:
APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account --env prod --dir SERVICE_ACCOUNTS_PATH
- מפרטים את השמות של חשבונות השירות בקובץ ההגדרות לביטול:
ls service-accounts
my_project-apigee-cassandra.json my_project-apigee-runtime.json my_project-apigee-logger.json my_project-apigee-synchronizer.json my_project-apigee-mart.json my_project-apigee-udca.json my_project-apigee-metrics.json my_project-apigee-watcher.json
מידע נוסף זמין במאמרים הבאים:
- לפני ההתקנה, צריך לעיין בקובץ
overrides.yamlכדי לוודא שההגדרות נכונות:חשוב: גרסה 1.10.5 של Apigee Hybrid עודכנה עם תיקון באג קריטי. אם רוצים, אפשר להחיל את הגדרות התצורה הנדרשות לתיקון החם ישירות בקובץ שינויי התצורה שמתואר בשלב הזה. אם תוסיפו עכשיו את הגדרות השדרוג, לא תצטרכו לבצע שדרוגי תיקון באגים בהמשך. הגדרות התצורה של התיקון הדחוף (v1.10.5-hotfix.1) מפורטות במדריך השדרוג. אפשר גם לעיין בהערות לגרסה של התיקון הדחוף: instanceID: UNIQUE_ID_TO_IDENTIFY_THIS_CLUSTER namespace: apigee # required for Helm charts installation # By default, logger and metrics are enabled and requires below details # Google Cloud project and cluster gcp: projectID: PROJECT_ID region: REGION k8sCluster: name: CLUSTER_NAME region: REGION org: ORG_NAME envs: - name: "ENV_NAME" serviceAccountPaths: runtime: "PATH_TO_RUNTIME_SVC_ACCOUNT" synchronizer: "PATH_TO_SYNCHRONIZER_SVC_ACCOUNT" udca: "PATH_TO_UDCA_SVC_ACCOUNT" ingressGateways: - name: GATEWAY_NAME # maximum 17 characters, eg: "ingress-1". See Known issue 243167389. replicaCountMin: 1 replicaCountMax: 2 svcType: LoadBalancer virtualhosts: - name: ENV_GROUP_NAME selector: app: apigee-ingressgateway ingress_name: GATEWAY_NAME sslSecret: SECRET_NAME mart: serviceAccountPath: "PATH_TO_MART_SVC_ACCOUNT" logger: enabled: TRUE_FALSE # lowercase without quotes, eg: true serviceAccountPath: "PATH_TO_LOGGER_SVC_ACCOUNT" metrics: enabled: TRUE_FALSE # lowercase without quotes, eg: true serviceAccountPath: "PATH_TO_METRICS_SVC_ACCOUNT" udca: serviceAccountPath: "PATH_TO_UDCA_SVC_ACCOUNT" connectAgent: serviceAccountPath: "PATH_TO_MART_SVC_ACCOUNT" watcher: serviceAccountPath: "PATH_TO_WATCHER_SVC_ACCOUNT"
זוהי אותה הגדרת ביטול שתשמש אתכם להתקנת Helm הזו. הגדרות נוספות זמינות בחומר עזר בנושא מאפייני הגדרה.
דוגמאות נוספות לקובצי החלפה מופיעות במאמר שלב 6: הגדרת זמן הריצה ההיברידי.
- מפעילים גישה למסנכרן. זוהי דרישה מוקדמת להתקנת Apigee hybrid.
-
כדי לבדוק אם הגישה למסנכרן כבר מופעלת, מריצים את הפקודות הבאות:
export TOKEN=$(gcloud auth print-access-token)
curl -X POST -H "Authorization: Bearer $TOKEN" \ -H "Content-Type:application/json" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME:getSyncAuthorization" \ -d ''
הפלט אמור להיראות כך:
{ "identities":[ "serviceAccount:SYNCHRONIZER_SERVICE_ACCOUNT_ID" ], "etag":"BwWJgyS8I4w=" } -
אם הפלט לא כולל את מזהה חשבון השירות, צריך להפעיל גישה למסנכרן. כדי לבצע את המשימה הזו, לחשבון שלכם צריך להיות תפקיד Apigee Organization Admin (
roles/apigee.admin) ב-IAM.curl -X POST -H "Authorization: Bearer $TOKEN" \ -H "Content-Type:application/json" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME:setSyncAuthorization" \ -d '{"identities":["'"serviceAccount:SYNCHRONIZER_SERVICE_ACCOUNT_ID"'"]}'מידע נוסף זמין במאמר שלב 7: הפעלת הגישה של Synchronizer במסמך התיעוד בנושא התקנה של Apigee hybrid.
-
- מריצים את הפקודה הבאה כדי להתקין את Cert Manager:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.1/cert-manager.yaml
-
מתקינים את ה-CRD של Apigee:
הערה: מהשלב הזה ואילך, צריך להריץ את כל הפקודות בספריית הבסיס של מאגר התרשימים. הערה: זו השיטה הנתמכת היחידה להתקנת CRD של Apigee. אל תשתמשו ב- kubectl applyבלי-k, אל תשמיטו את--server-side.הערה: כדי לבצע את השלב הזה צריך הרשאות גבוהות יותר באשכול. -
מריצים את הפקודה הבאה כדי להשתמש בתכונת ההרצה היבשה של
kubectl:kubectl apply -k apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false --dry-run=server
-
אחרי האימות באמצעות הפקודה להרצה יבשה, מריצים את הפקודה הבאה:
kubectl apply -k apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false
- מאמתים את ההתקנה באמצעות הפקודה
kubectl get crds:kubectl get crds | grep apigee
הפלט אמור להיראות כך:
apigeedatastores.apigee.cloud.google.com 2023-10-09T14:48:30Z apigeedeployments.apigee.cloud.google.com 2023-10-09T14:48:30Z apigeeenvironments.apigee.cloud.google.com 2023-10-09T14:48:31Z apigeeissues.apigee.cloud.google.com 2023-10-09T14:48:31Z apigeeorganizations.apigee.cloud.google.com 2023-10-09T14:48:32Z apigeeredis.apigee.cloud.google.com 2023-10-09T14:48:33Z apigeerouteconfigs.apigee.cloud.google.com 2023-10-09T14:48:33Z apigeeroutes.apigee.cloud.google.com 2023-10-09T14:48:33Z apigeetelemetries.apigee.cloud.google.com 2023-10-09T14:48:34Z cassandradatareplications.apigee.cloud.google.com 2023-10-09T14:48:35Z
-
-
בודקים את התוויות הקיימות בצמתי האשכול. כברירת מחדל, Apigee מתזמן את הפודים של הנתונים בצמתים עם התווית
cloud.google.com/gke-nodepool=apigee-data, ואת הפודים של זמן הריצה בצמתים עם התוויתcloud.google.com/gke-nodepool=apigee-runtime. אפשר להתאים אישית את תוויות מאגר הצמתים בקובץoverrides.yaml.מידע נוסף זמין במאמר בנושא הגדרת מאגרי צמתים ייעודיים.
התקנה של תרשימי Helm של Apigee Hybrid
--dry-run בסוף הפקודה כדי להשתמש בתכונה של הרצת Helm ללא ביצוע שינויים. אפשר לראות את helm -h כדי להציג רשימה של פקודות, אפשרויות ושימושים נתמכים.
helm upgrade נכשלת, אל תשתמשו בדגל ‑‑atomic.
לדוגמה, בשלב הראשון הפקודה תהיה:
helm upgrade operator apigee-operator/ \ --install \ --namespace apigee-system \ -f overrides.yaml
מתקינים את Apigee Operator/Controller:
הערה: כדי לבצע את השלב הזה צריך הרשאות גבוהות יותר באשכול. מריצים את helm -hאו אתhelm install -hכדי לקבל פרטיםhelm upgrade operator apigee-operator/ \ --install \ --namespace apigee-system \ --atomic \ -f overrides.yaml
חשוב: אל תשתמשו בדגל ‑‑atomicעבור אשכולות שהועברו.אימות ההתקנה של Apigee Operator:
helm ls -n apigee-system
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION operator apigee-system 3 2023-06-26 00:42:44.492009 -0800 PST deployed apigee-operator-1.10.5 1.10.5
כדי לוודא שהיא פועלת, בודקים את הזמינות שלה:
kubectl -n apigee-system get deploy apigee-controller-manager
NAME READY UP-TO-DATE AVAILABLE AGE apigee-controller-manager 1/1 1 1 7d20h
-
מתקינים את מאגר הנתונים של Apigee:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
חשוב: אל תשתמשו בדגל ‑‑atomicעבור אשכולות שהועברו.כדי לוודא ש-
apigeedatastoreפועל, בודקים את המצב שלו:kubectl -n apigee get apigeedatastore default
NAME STATE AGE default running 2d
-
התקנת טלמטריה של Apigee:
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
חשוב: אל תשתמשו בדגל ‑‑atomicעבור אשכולות שהועברו.כדי לוודא שהיא פועלת, בודקים את המצב שלה:
kubectl -n apigee get apigeetelemetry apigee-telemetry
NAME STATE AGE apigee-telemetry running 2d
-
מתקינים את Apigee Redis:
helm upgrade redis apigee-redis/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
חשוב: אל תשתמשו בדגל ‑‑atomicעבור אשכולות שהועברו.כדי לוודא שהיא פועלת, בודקים את המצב שלה:
kubectl -n apigee get apigeeredis default
NAME STATE AGE default running 2d
-
מתקינים את Apigee ingress manager:
helm upgrade ingress-manager apigee-ingress-manager/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
חשוב: אל תשתמשו בדגל ‑‑atomicעבור אשכולות שהועברו.כדי לוודא שהיא פועלת, בודקים את הזמינות שלה:
kubectl -n apigee get deployment apigee-ingressgateway-manager
NAME READY UP-TO-DATE AVAILABLE AGE apigee-ingressgateway-manager 2/2 2 2 2d
-
התקנת ארגון Apigee:
helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
חשוב: אל תשתמשו בדגל ‑‑atomicעבור אשכולות שהועברו.כדי לוודא שהיא פועלת, בודקים את המצב של הארגון הרלוונטי:
kubectl -n apigee get apigeeorg
NAME STATE AGE apigee-org1-xxxxx running 2d
-
מתקינים את הסביבה.
צריך להתקין סביבה אחת בכל פעם. מציינים את הסביבה באמצעות
--set env=ENV_NAME:helm upgrade apigee-env-ENV_NAME apigee-env/ \ --install \ --namespace apigee \ --atomic \ --set env=ENV_NAME \ -f overrides.yaml
חשוב: אל תשתמשו בדגל ‑‑atomicעבור אשכולות שהועברו.כדי לוודא שהיא פועלת, בודקים את המצב של סביבת ה-env המתאימה:
kubectl -n apigee get apigeeenv
NAME STATE AGE GATEWAYTYPE apigee-org1-dev-xxx running 2d
- יוצרים את אישורי ה-TLS. אתם נדרשים לספק אישורי TLS לשער הכניסה של זמן הריצה בהגדרת Apigee Hybrid.
-
יוצרים את האישורים. בסביבת ייצור, תצטרכו להשתמש באישורים חתומים. אפשר להשתמש בזוג מפתחות ואישור או בסוד של Kubernetes.
לצורך הדגמה ובדיקה של ההתקנה, שער זמן הריצה יכול לקבל פרטי כניסה בחתימה עצמית. בדוגמה הבאה, נעשה שימוש ב-openssl כדי ליצור את פרטי הכניסה עם החתימה העצמית:
openssl req -nodes -new -x509 \ -keyout PATH_TO_CERTS_DIRECTORY/keystore_ENV_GROUP_NAME.key \ -out PATH_TO_CERTS_DIRECTORY/keystore_ENV_GROUP_NAME.pem \ -subj '/CN='YOUR_DOMAIN'' -days 3650
מידע נוסף זמין במאמר שלב 5: יצירת אישורי TLS.
-
יוצרים את הסוד של Kubernetes כדי להפנות אל האישורים:
kubectl create secret generic NAME \ --from-file="cert=PATH_TO_CRT_FILE" \ --from-file="key=PATH_TO_KEY_FILE" \ -n apigee
-
-
מתקינים מארח וירטואלי.
צריך להתקין קבוצת סביבות (virtualhost) אחת בכל פעם. מציינים את קבוצת הסביבה באמצעות
--set envgroup=ENV_GROUP_NAME:# repeat the following command for each env group mentioned in the overrides.yaml file helm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \ --install \ --namespace apigee \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f overrides.yaml
חשוב: אל תכללו את הדגל ‑‑atomicעבור אשכולות שעברו מיגרציה.הערה: הערך של ENV_GROUP_NAME צריך להיות ייחודי במרחב השמות apigee. לדוגמה, אם יש לכםprodenv ו-envgroup, צריך להגדיר את השם הזה ל-prod-envgroup. השם של קבוצת הסביבות השנייה צריך להיותprod.הפעולה הזו יוצרת ApigeeRouteConfig (ARC), שיוצר באופן פנימי ApigeeRoute (AR) אחרי שה-watcher של Apigee מאחזר פרטים שקשורים לקבוצת הסביבות ממישור הבקרה. לכן, צריך לוודא שהמצב של ה-AR התואם הוא running (פועל):
kubectl -n apigee get arc
NAME STATE AGE apigee-org1-dev-egroup 2d
kubectl -n apigee get ar
NAME STATE AGE apigee-org1-dev-egroup-xxxxxx running 2d
תרחישי שימוש נוספים בתרשימי Helm עם Apigee Hybrid
גיבוי ושחזור של נתוני Cassandra
- כדי להפעיל את הגיבוי:
-
מעדכנים את פרטי הגיבוי של Cassandra בקובץ
overrides.yaml:cassandra: backup: enabled: true serviceAccountPath: PATH_TO_GSA_FILE dbStorageBucket: BUCKET_LINK schedule: "45 23 * * 6"הערה: כשמשתמשים בקטגוריה של Cloud Storage, צריך Google Cloud ליצור חשבון שירות apigee-cassandra-backולהקצות לו תפקידים או הרשאות מתאימים כדי לכתוב לקטגוריה שצוינה בdbStorageBucket. -
מריצים את שדרוג Helm בתרשים
apigee-datastore:helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f overrides.yaml
חשוב: אל תשתמשו בדגל ‑‑atomicעבור אשכולות שהועברו.
-
- באופן דומה, כדי להפעיל שחזור:
-
מעדכנים את פרטי השחזור של Cassandra בקובץ
overrides.yaml:cassandra: restore: enabled: true snapshotTimestamp: TIMESTAMP serviceAccountPath: PATH_TO_GSA_FILE cloudProvider: "CSI" -
מריצים את שדרוג Helm בתרשים
apigee-datastore:helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f overrides.yaml
חשוב: אל תשתמשו בדגל ‑‑atomicעבור אשכולות שהועברו.
-
פרטים נוספים על גיבוי ושחזור של Cassandra זמינים במאמר סקירה כללית על גיבוי של Cassandra.
הרחבה למספר אזורים
ההגדרה של כמה אזורים באמצעות תרשימי Helm דורשת את אותם תנאים מוקדמים כמו הפרוצדורות הנוכחיות של apigeectl. פרטים נוספים מופיעים במאמר בנושא
דרישות מוקדמות לפריסות בכמה אזורים.
התהליך להגדרת פריסה היברידית למספר אזורים זהה לתהליך הקיים עד לשלב של הגדרת מארח ה-seed למספר אזורים והגדרת אשכול וקונטקסט של Kubernetes.
הגדרת האזור הראשון
כדי להגדיר את האזור הראשון ולהתכונן להגדרת האזור השני:
- פועלים לפי השלבים במאמר הגדרת Apigee hybrid למספר אזורים כדי להגדיר את מארח ה-seed של מספר האזורים בפלטפורמה.
-
עבור האזור הראשון שנוצר, מקבלים את ה-pods במרחב השמות apigee:
kubectl get pods -o wide -n apigee
- מזהים את כתובת המארח הראשונית של Cassandra במספר אזורים באזור הזה, לדוגמה
10.0.0.11. -
מכינים את קובץ
overrides.yamlלאזור השני ומוסיפים את כתובת ה-IP של מארח ה-seed באופן הבא:cassandra: multiRegionSeedHost: "SEED_HOST_IP_ADDRESS" datacenter: "DATACENTER_NAME" rack: "RACK_NAME" clusterName: CLUSTER_NAME hostNetwork: false
מחליפים את מה שכתוב בשדות הבאים:
- SEED_HOST_IP_ADDRESS מחליפים בכתובת ה-IP של מארח הזרעים, לדוגמה
10.0.0.11. - DATACENTER_NAME עם שם מרכז הנתונים, לדוגמה
dc-2. - RACK_NAME בשם המתלה, לדוגמה
ra-1. - CLUSTER_NAME עם שם אשכול Apigee. כברירת מחדל, הערך הוא
apigeecluster. אם משתמשים בשם אשכול אחר, צריך לציין ערך ל-cassandra.clusterName. הערך הזה צריך להיות זהה בכל האזורים.
- SEED_HOST_IP_ADDRESS מחליפים בכתובת ה-IP של מארח הזרעים, לדוגמה
הגדרת האזור השני
כדי להגדיר את האזור החדש:
-
התקנה של
cert-managerבאזור 2:kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.1/cert-manager.yaml
- מעתיקים את האישור מהאשכול הקיים לאשכול החדש.
ה-CA root החדש משמש את Cassandra ורכיבים היברידיים אחרים ל-mTLS.
לכן, חשוב שיהיו אישורים עקביים בכל האשכול.
-
מגדירים את ההקשר למרחב השמות המקורי:
kubectl config use-context ORIGINAL_CLUSTER_NAME
-
מייצאים את ההגדרות הנוכחיות של מרחב השמות לקובץ:
kubectl get namespace apigee -o yaml > apigee-namespace.yaml
-
מייצאים את הסוד
apigee-caלקובץ:kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
-
מגדירים את ההקשר לשם האשכול של האזור החדש:
kubectl config use-context NEW_CLUSTER_NAME
-
מייבאים את הגדרת מרחב השמות לאשכול החדש. אם אתם משתמשים במרחב שמות שונה באזור החדש, הקפידו לעדכן את מרחב השמות בקובץ:
kubectl apply -f apigee-namespace.yaml
-
מייבאים את הסוד לאשכול החדש:
kubectl -n cert-manager apply -f apigee-ca.yaml
-
-
עכשיו משתמשים בתרשימי Helm כדי להתקין את Apigee hybrid באזור החדש באמצעות הפקודות הבאות של תרשימי Helm (כמו שנעשה באזור 1):
הערה: כדי לשמור על עקביות, אפשר להשתמש באותם CRD. לשם כך, צריך להשתמש באותה תיקייה שבה התרשימים שהורדתם. אפשר גם לשמור על ייחודיות של קובץ ההחלפות בין אזור 1 לאזור 2 על ידי מתן שם ייחודי לקובץ ההחלפות, כמו overrides2.yamlוכו'.helm upgrade operator apigee-operator \ --install \ --namespace apigee-system \ --atomic -f overrides-DATACENTER_NAME.yaml
helm upgrade datastore apigee-datastore \ --install \ --namespace apigee \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade telemetry apigee-telemetry \ --install \ --namespace apigee \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade redis apigee-redis \ --install \ --namespace apigee \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade ingress-manager apigee-ingress-manager \ --install \ --namespace apigee \ --atomic \ -f overrides-DATACENTER_NAME.yamlhelm upgrade ORG_NAME apigee-org \ --install \ --namespace apigee \ --atomic \ -f overrides-DATACENTER_NAME.yaml# repeat the below command for each env mentioned on the overrideshelm upgrade apigee-env-ENV_NAME apigee-env/ \ --install \ --namespace apigee \ --atomic \ --set env=ENV_NAME \ -f overrides-DATACENTER_NAME.yaml# repeat the below command for each env group mentioned on the overrideshelm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \ --install \ --namespace apigee \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f overrides-DATACENTER_NAME.yamlחשוב: אל תשתמשו בדגל ‑‑atomicעבור אשכולות שהועברו. - אחרי שכל הרכיבים מותקנים, מגדירים את Cassandra בכל הפודים במרכזי הנתונים החדשים. הוראות מפורטות זמינות במאמר Configure Apigee hybrid for multi-region. בוחרים את הפלטפורמה, גוללים אל Set up the new region (הגדרת האזור החדש) ומאתרים את שלב 5.
- אחרי ששכפול הנתונים מסתיים ומאומת, מעדכנים את המארחים של ה-seed:
-
הסרת
multiRegionSeedHost: 10.0.0.11מהחשבוןoverrides-DATACENTER_NAME.yaml.אחרי שמשלימים את שכפול הנתונים, אין יותר צורך בערך
multiRegionSeedHost, והצפי הוא שכתובות ה-IP של ה-POD ישתנו עם הזמן. -
מחילים מחדש את השינוי כדי לעדכן את ה-CR של מאגר הנתונים של Apigee:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f overrides-DATACENTER_NAME.yaml
חשוב: אל תשתמשו בדגל ‑‑atomicעבור אשכולות שהועברו.
-
הסרת
אירוח תמונות באופן פרטי
במקום להסתמך על מאגר Google Cloud הציבורי, אפשר גם לארח את התמונות באופן פרטי. במקום להחליף כל רכיב, אפשר להוסיף פרטים של מרכז בקשות בהחלפות:
hub: PRIVATE_REPO
לדוגמה, אם מספקים את ה-hub הבא, נתיב התמונה ייפתר באופן אוטומטי:
hub: private-docker-host.com
כמו:
## an example of internal component vs 3rd party containers: - name: apigee-udca image: private-docker-host.com/apigee-udca:1.10.5 imagePullPolicy: IfNotPresent containers: - name: apigee-ingressgateway image: private-docker-host.com/apigee-asm-ingress:1.17.2-asm.8-distroless imagePullPolicy: IfNotPresent
כדי להציג בשורת הפקודה רשימה של תמונות Apigee שמתארחות במאגר Google Cloud:
./apigee-operator/etc/tools/apigee-pull-push.sh --list
Tolerations
כדי להשתמש בתכונה
Taints and Tolerations של Kubernetes, צריך להגדיר את
מאפיין ההחלפה tolerations לכל רכיב של Apigee Hybrid.
הרכיבים הבאים תומכים בהגדרת סבילות:
aoapigeeIngressGatewaycassandracassandraSchemaSetupcassandraSchemaValidationcassandraUserSetupconnectAgentistiodloggermartmetricsmintTaskSchedulerredisruntimesynchronizerudcaWatcher
מידע נוסף על הרכיבים האלה זמין במאמר חומר עזר בנושא מאפייני הגדרה.
לדוגמה, כדי להחיל את ההגדרות על פריסת האופרטור של Apigee:
ao:
tolerations:
- key: "key1"
operator: "Equal"
value: "value1"
effect: "NoExecute"
tolerationSeconds: 3600כדי להחיל את ההגדרות האלה על Cassandra StatefulSet:
cassandra:
tolerations:
- key: "key1"
operator: "Equal"
value: "value1"
effect: "NoExecute"
tolerationSeconds: 3600הסרת Apigee Hybrid באמצעות Helm
כדי להסיר עדכון או גרסה ספציפיים, אפשר להשתמש בפקודה helm [uninstall/delete] RELEASE-NAME -n NAMESPACE.
כדי להסיר את Apigee Hybrid מהאשכול באופן מלא:
- מוחקים את המארחים הווירטואליים. מריצים את הפקודה הזו לכל מארח וירטואלי:
helm -n apigee delete VIRTUALHOST_RELEASE-NAME
- מוחקים את הסביבות. מריצים את הפקודה הזו לכל סביבה:
helm -n apigee delete ENV_RELEASE-NAME
- מוחקים את הארגון ב-Apigee:
helm -n apigee delete ORG_RELEASE-NAME
- מחיקת נתוני טלמטריה:
helm -n apigee delete TELEMETRY_RELEASE-NAME
- מחיקת redis:
helm -n apigee delete REDIS_RELEASE-NAME
- מחיקת מנהל הכניסה:
helm -n apigee delete INGRESS_MANAGER_RELEASE-NAME
- מחיקת מאגר הנתונים:
helm -n apigee delete DATASTORE_RELEASE-NAME
טיפ: אם המצב של apigeeds/default נשאר deletingולא מסתיים אף פעם, כדאי לבדוק את ה-pods כדי לראות אם משימת ניקוי נכשלה. - מחיקת אופרטור.
- חשוב לוודא שכל התווים CR נמחקו לפני:
kubectl -n apigee get apigeeds, apigeetelemetry, apigeeorg, apigreeenv, arc, apigeeredis
- מחיקת Apigee Operator:
helm -n apigee-system delete OPERATOR_RELEASE-NAME
- חשוב לוודא שכל התווים CR נמחקו לפני:
- מוחקים את ה-CRD של Apigee Hybrid:
kubectl delete -k apigee-operator/etc/crds/default/