התקנה וניהול של Apigee Hybrid באמצעות תרשימי Helm

<0x0

במאמר הזה מוסבר איך להתקין את Apigee hybrid v1.10 באמצעות תרשימי Helm.

גרסה

תרשימי Helm של Apigee Hybrid מיועדים לשימוש עם Apigee Hybrid בגרסה v1.10.x. רשימת הגרסאות של Apigee Hybrid מופיעה במאמר היסטוריית הגרסאות של Apigee Hybrid.

דרישות מוקדמות

היקף

פלטפורמות וגרסאות נתמכות של 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
      

פלטפורמות וגרסאות נתמכות של 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-charts
export CHART_VERSION=1.10.5
helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar

התקנה של Apigee Hybrid

סקירה כללית של רצף ההתקנה

התקנת הרכיבים מתבצעת משמאל לימין ברצף, כמו שמוצג באיור הבא. רכיבים שמוערמים אנכית באיור אפשר להתקין יחד ובכל סדר. אחרי שמתקינים רכיב, אפשר לעדכן אותו בנפרד בכל שלב. לדוגמה: רפליקה, זיכרון, מעבד (CPU) וכו'.

רצף ההתקנה: cert manager ואז CRDs ואז Apigee operator ואז רכיבים מוערמים: redis ו-מאגר נתונים ו-telemetry ו-ingress manager ואז org ואז רכיבים מוערמים: env ו-virtual host

הכנה להתקנת Apigee Hybrid באמצעות תרשימי Helm

  1. יוצרים את מרחב השמות שישמש למשאבי apigee. הערך הזה צריך להיות זהה לערך בשדה של מרחב השמות בקובץ overrides.yaml. אם הפרמטר הזה לא מופיע ב-overrides.yaml, ברירת המחדל היא apigee.
    1. בודקים אם מרחב השמות כבר קיים:

      kubectl get namespace apigee

      אם מרחב השמות קיים, הפלט כולל:

        NAME     STATUS   AGE
        apigee   Active   1d
    2. אם מרחב השמות עדיין לא קיים, יוצרים אותו:

      kubectl create namespace apigee
  2. יוצרים את מרחב השמות apigee-system שמשמש את משאבי האופרטור של Apigee.
    1. בודקים אם מרחב השמות כבר קיים:

      kubectl get namespace apigee-system
    2. אם מרחב השמות עדיין לא קיים, יוצרים אותו:

      kubectl create namespace apigee-system
  3. יוצרים את חשבונות השירות ומקצים להם את התפקידים המתאימים ב-IAM. ב-Apigee hybrid נעשה שימוש בחשבונות השירות הבאים:

    חשבון שירות תפקידי IAM
    apigee-cassandra אדמין של אובייקט אחסון
    apigee-logger בעל הרשאת כתיבה של יומנים
    apigee-mart Apigee Connect Agent
    apigee-metrics בעל הרשאת כתיבה של מדדי מעקב
    apigee-runtime לא נדרש תפקיד
    apigee-synchronizer Apigee Synchronizer Manager
    apigee-udca Apigee Analytics Agent
    apigee-watcher Apigee Runtime Agent

    ‫Apigee מספק כלי, create-service-account, בספרייה apigee-operator/etc/tools:

    APIGEE_HELM_CHARTS_HOME/
    └── apigee-operator/
        └── etc/
            └── tools/
                └── create-service-account
    

    הכלי הזה יוצר את חשבונות השירות, מקצה את תפקידי ה-IAM לכל חשבון ומוריד את קובצי האישורים בפורמט JSON לכל חשבון.

    1. יוצרים את הספרייה שבה רוצים להוריד את קובצי האישורים של חשבון השירות. תציינו את זה בפקודה הבאה במקום SERVICE_ACCOUNTS_PATH.
    2. אפשר ליצור את כל חשבונות השירות באמצעות פקודה אחת עם האפשרויות הבאות:
      APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account --env prod --dir SERVICE_ACCOUNTS_PATH
      
    3. מציגים את השמות של חשבונות השירות בקובץ ההגדרות לביטול:
      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

      מידע נוסף זמין במאמרים הבאים:

  4. לפני ההתקנה, צריך לעיין בקובץ 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: הגדרת זמן הריצה ההיברידי.

  5. מאפשרים גישה למסנכרן. זוהי דרישה מוקדמת להתקנת Apigee Hybrid.
    1. כדי לבדוק אם הגישה למסנכרן כבר מופעלת, מריצים את הפקודות הבאות:

      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="
      }
    2. אם הפלט לא כולל את מזהה חשבון השירות, צריך להפעיל את הגישה של הכלי לסנכרון. כדי לבצע את המשימה הזו, בחשבון שלכם צריך להיות תפקיד ה-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.

  6. מריצים את הפקודה הבאה כדי להתקין את Cert Manager:
    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.1/cert-manager.yaml
    
  7. מתקינים את ה-CRD של Apigee:

    1. מריצים את הפקודה הבאה כדי להשתמש בתכונת ההרצה היבשה kubectl:

      kubectl apply -k  apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false --dry-run=server
      
    2. אחרי האימות באמצעות הפקודה להרצה יבשה, מריצים את הפקודה הבאה:

      kubectl apply -k  apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false
      
    3. מאמתים את ההתקנה באמצעות הפקודה 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
      
  8. בודקים את התוויות הקיימות בצמתי האשכול. כברירת מחדל, Apigee מתזמן את פודים של נתונים בצמתים עם התווית cloud.google.com/gke-nodepool=apigee-data, ואת פודים של זמן ריצה בצמתים עם התווית cloud.google.com/gke-nodepool=apigee-runtime. אתם יכולים להתאים אישית את תוויות מאגר הצמתים בקובץ overrides.yaml.

    מידע נוסף זמין במאמר בנושא הגדרת מאגרי צמתים ייעודיים.

התקנה של תרשימי Helm של Apigee Hybrid

  1. מתקינים את 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
  2. מתקינים את מאגר הנתונים של 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
  3. התקנת טלמטריה של 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
  4. מתקינים את 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
  5. מתקינים את 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
  6. התקנת ארגון 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
  7. מתקינים את הסביבה.

    צריך להתקין סביבה אחת בכל פעם. מציינים את הסביבה באמצעות --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
  8. יוצרים את אישורי ה-TLS. אתם נדרשים לספק אישורי TLS לשער הכניסה של זמן הריצה בהגדרת Apigee Hybrid.
    1. יוצרים את האישורים. בסביבת ייצור, תצטרכו להשתמש באישורים חתומים. אפשר להשתמש באישור ובזוג מפתחות או בסוד של 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.

    2. יוצרים את הסוד של Kubernetes כדי להפנות אל האישורים:

      kubectl create secret generic NAME \
        --from-file="cert=PATH_TO_CRT_FILE" \
        --from-file="key=PATH_TO_KEY_FILE" \
        -n apigee
      
  9. מתקינים מארח וירטואלי.

    צריך להתקין קבוצת סביבות אחת (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

  1. כדי להפעיל את הגיבוי:
    1. מעדכנים את פרטי הגיבוי של Cassandra בקובץ overrides.yaml:

      cassandra:
        backup:
          enabled: true
          serviceAccountPath: PATH_TO_GSA_FILE
          dbStorageBucket: BUCKET_LINK
          schedule: "45 23 * * 6"
    2. מריצים את שדרוג Helm בתרשים apigee-datastore:

      helm upgrade datastore apigee-datastore/ \
        --namespace apigee \
        --atomic \
        -f overrides.yaml
      
  2. באופן דומה, כדי להפעיל שחזור:
    1. מעדכנים את פרטי השחזור של Cassandra בקובץ overrides.yaml:

      cassandra:
        restore:
          enabled: true
          snapshotTimestamp: TIMESTAMP
          serviceAccountPath: PATH_TO_GSA_FILE
          cloudProvider: "CSI"
    2. מריצים את שדרוג Helm בתרשים apigee-datastore:

      helm upgrade datastore apigee-datastore/ \
        --namespace apigee \
        --atomic \
        -f overrides.yaml
      

פרטים נוספים על גיבוי ושחזור של Cassandra זמינים במאמר סקירה כללית על גיבוי של Cassandra.

הרחבה למספר אזורים

ההגדרה של מספר אזורים באמצעות תרשימי Helm דורשת את אותם תנאים מוקדמים כמו הפרוצדורות הנוכחיות של apigeectl. פרטים נוספים זמינים במאמר בנושא דרישות מוקדמות לפריסות מרובות אזורים.

התהליך להגדרת היברידיות במספר אזורים זהה לתהליך הקיים עד לשלב של הגדרת מארח ה-seed של מספר האזורים והגדרת אשכול Kubernetes וההקשר שלו.

הגדרת האזור הראשון

כדי להגדיר את האזור הראשון ולהתכונן להגדרת האזור השני:

  1. כדי להגדיר את מארח ה-seed של מספר אזורים בפלטפורמה, פועלים לפי השלבים במאמר הגדרת Apigee hybrid למספר אזורים.
  2. עבור האזור הראשון שנוצר, מאחזרים את ה-pods במרחב השמות apigee:

    kubectl get pods -o wide -n apigee
    
  3. מזהים את כתובת המארח הראשונית של Cassandra במספר אזורים באזור הזה, לדוגמה 10.0.0.11.
  4. מכינים את קובץ 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. הערך הזה חייב להיות זהה בכל האזורים.

הגדרת האזור השני

כדי להגדיר את האזור החדש:

  1. התקנה של cert-manager באזור 2:

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.1/cert-manager.yaml
    
  2. מעתיקים את האישור מהאשכול הקיים לאשכול החדש. ה-CA root החדש משמש את Cassandra ורכיבים היברידיים אחרים ל-mTLS. לכן, חשוב שיהיו אישורים עקביים בכל האשכול.
    1. מגדירים את ההקשר למרחב השמות המקורי:

      kubectl config use-context ORIGINAL_CLUSTER_NAME
      
    2. מייצאים את ההגדרה הנוכחית של מרחב השמות לקובץ:

      kubectl get namespace apigee -o yaml > apigee-namespace.yaml
      
    3. מייצאים את הסוד apigee-ca לקובץ:

      kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
      
    4. מגדירים את ההקשר לשם האשכול של האזור החדש:

      kubectl config use-context NEW_CLUSTER_NAME
      
    5. מייבאים את הגדרת מרחב השמות לאשכול החדש. אם אתם משתמשים במרחב שמות שונה באזור החדש, חשוב לעדכן את מרחב השמות בקובץ:

      kubectl apply -f apigee-namespace.yaml
      
    6. מייבאים את הסוד לאשכול החדש:

      kubectl -n cert-manager apply -f apigee-ca.yaml
      
  3. עכשיו משתמשים בתרשימי 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.yaml
    helm upgrade telemetry apigee-telemetry \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade redis apigee-redis \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade ingress-manager apigee-ingress-manager \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade ORG_NAME apigee-org \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    # repeat the below command for each env mentioned on the overrides
    helm 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 overrides
    helm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \
      --install \
      --namespace apigee \
      --atomic \
      --set envgroup=ENV_GROUP_NAME \
      -f overrides-DATACENTER_NAME.yaml
    
  4. אחרי שכל הרכיבים מותקנים, מגדירים את Cassandra בכל הפודים במרכזי הנתונים החדשים. הוראות מפורטות זמינות במאמר הגדרת Apigee Hybrid לשימוש בכמה אזורים. בוחרים את הפלטפורמה, גוללים אל Set up the new region (הגדרת האזור החדש) ומאתרים את שלב 5.
  5. אחרי ששכפול הנתונים מסתיים ומאומת, מעדכנים את המארחים הראשיים:
    1. הסרת multiRegionSeedHost: 10.0.0.11 מהחשבון overrides-DATACENTER_NAME.yaml.

      אחרי שמתבצעת שכפול נתונים, אין יותר צורך ברשומה multiRegionSeedHost, והצפי הוא שכתובות ה-IP של ה-pod ישתנו לאורך זמן.

    2. מחילים מחדש את השינוי כדי לעדכן את ה-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. הרכיבים הבאים תומכים בהגדרת סבילות:

  • ao
  • apigeeIngressGateway
  • cassandra
  • cassandraSchemaSetup
  • cassandraSchemaValidation
  • cassandraUserSetup
  • connectAgent
  • istiod
  • logger
  • mart
  • metrics
  • mintTaskScheduler
  • redis
  • runtime
  • synchronizer
  • udca
  • Watcher

מידע נוסף על הרכיבים האלה זמין במאמר חומר עזר בנושא מאפייני הגדרה.

לדוגמה, כדי להחיל את ההגדרות של 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 מהאשכול באופן מלא:

  1. מוחקים את המארחים הווירטואליים. מריצים את הפקודה הזו לכל מארח וירטואלי:
    helm -n apigee delete VIRTUALHOST_RELEASE-NAME
    
  2. מוחקים את הסביבות. מריצים את הפקודה הזו לכל סביבה:
    helm -n apigee delete ENV_RELEASE-NAME
    
  3. מוחקים את הארגון ב-Apigee:
    helm -n apigee delete ORG_RELEASE-NAME
    
  4. מחיקת נתוני טלמטריה:
    helm -n apigee delete TELEMETRY_RELEASE-NAME
    
  5. מחיקת redis:‏
    helm -n apigee delete REDIS_RELEASE-NAME
    
  6. מחיקת מנהל הכניסה:
    helm -n apigee delete INGRESS_MANAGER_RELEASE-NAME
    
  7. מחיקת מאגר הנתונים:
    helm -n apigee delete DATASTORE_RELEASE-NAME
    
  8. מחיקת אופרטור.
    1. חשוב לוודא שכל ה-CR נמחקו לפני:
      kubectl -n apigee get apigeeds, apigeetelemetry, apigeeorg, apigreeenv, arc, apigeeredis
      
    2. מחיקת Apigee Operator:
      helm -n apigee-system delete OPERATOR_RELEASE-NAME
      
  9. מוחקים את ה-CRD של Apigee Hybrid:
    kubectl delete -k  apigee-operator/etc/crds/default/