במאמר הזה מוסבר איך להתקין את Apigee hybrid v1.10 באמצעות תרשימי Helm.
גרסה
תרשימי Helm של Apigee Hybrid מיועדים לשימוש עם Apigee Hybrid בגרסה v1.10.x. רשימת הגרסאות של Apigee Hybrid מופיעה במאמר היסטוריית הגרסאות של Apigee Hybrid.
דרישות מוקדמות
- Apigee Hybrid 1.10.5
- Helm גרסה 3.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.
- הגרסה הזו תומכת ב:
פלטפורמות וגרסאות נתמכות של 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כדי לוודא שההגדרות נכונות: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=" } -
אם הפלט לא כולל את מזהה חשבון השירות, צריך להפעיל את הגישה של הכלי לסנכרון. כדי לבצע את המשימה הזו, בחשבון שלכם צריך להיות תפקיד ה-IAM Apigee Organization Admin (
roles/apigee.admin).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:
-
מריצים את הפקודה הבאה כדי להשתמש בתכונת ההרצה היבשה
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
מתקינים את Apigee Operator/Controller:
helm upgrade operator apigee-operator/ \ --install \ --namespace apigee-system \ --atomic \ -f overrides.yaml
אימות ההתקנה של 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
כדי לוודא ש-
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
כדי לוודא שהיא פועלת, בודקים את המצב שלה:
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
כדי לוודא שהיא פועלת, בודקים את המצב שלה:
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
כדי לוודא שהיא פועלת, בודקים את הזמינות שלה:
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
כדי לוודא שהיא פועלת, בודקים את המצב של הארגון הרלוונטי:
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
כדי לוודא שהיא פועלת, בודקים את המצב של סביבת העבודה הרלוונטית:
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
הפעולה הזו יוצרת 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"
-
מריצים את שדרוג Helm בתרשים
apigee-datastore:helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f overrides.yaml
-
- באופן דומה, כדי להפעיל שחזור:
-
מעדכנים את פרטי השחזור של 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
-
פרטים נוספים על גיבוי ושחזור של Cassandra זמינים במאמר סקירה כללית על גיבוי של Cassandra.
הרחבה למספר אזורים
ההגדרה של מספר אזורים באמצעות תרשימי Helm דורשת את אותם תנאים מוקדמים כמו הפרוצדורות הנוכחיות של apigeectl. פרטים נוספים זמינים במאמר בנושא
דרישות מוקדמות לפריסות מרובות אזורים.
התהליך להגדרת היברידיות במספר אזורים זהה לתהליך הקיים עד לשלב של הגדרת מארח ה-seed של מספר האזורים והגדרת אשכול Kubernetes וההקשר שלו.
הגדרת האזור הראשון
כדי להגדיר את האזור הראשון ולהתכונן להגדרת האזור השני:
- כדי להגדיר את מארח ה-seed של מספר אזורים בפלטפורמה, פועלים לפי השלבים במאמר הגדרת Apigee hybrid למספר אזורים.
-
עבור האזור הראשון שנוצר, מאחזרים את ה-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):
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 - אחרי שכל הרכיבים מותקנים, מגדירים את Cassandra בכל הפודים במרכזי הנתונים החדשים. הוראות מפורטות זמינות במאמר הגדרת Apigee Hybrid לשימוש בכמה אזורים. בוחרים את הפלטפורמה, גוללים אל Set up the new region (הגדרת האזור החדש) ומאתרים את שלב 5.
- אחרי ששכפול הנתונים מסתיים ומאומת, מעדכנים את המארחים הראשיים:
-
הסרת
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
-
הסרת
אירוח תמונות באופן פרטי
במקום להסתמך על מאגר 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
מידע נוסף על הרכיבים האלה זמין במאמר חומר עזר בנושא מאפייני הגדרה.
לדוגמה, כדי להחיל את ההגדרות של tolerations על הפריסה של Apigee Operator:
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
- מחיקת אופרטור.
- חשוב לוודא שכל ה-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/