הפעלת מונטיזציה ב-Apigee Hybrid

סקירה כללית

במאמר הזה מתוארים הנהלים להפעלת חיובים חוזרים, טעינת יתרה ודמי הקמה בתכונה 'מונטיזציה' של Apigee בארגונים היברידיים.

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

התהליך

כדי להפעיל חיובים קבועים, חיובים על סכום נוסף ודמי הגדרה במודל מונטיזציה משולב של Apigee Hybrid, צריך ליצור ולהגדיר את apigee-mint-task-scheduler חשבון השירות של Google ולהעניק לו גישה לפייפליין הנתונים של Pub/Sub.

  1. אם עדיין לא הורדתם את גרסה 1.16.10 של תרשימי Helm, אתם צריכים למשוך את תרשימי Helm באמצעות הפקודות הבאות:

    בספרייה $APIGEE_HELM_CHARTS_HOME, משתמשים בפקודה pull כדי להעתיק את כל תרשימי ה-Helm של Apigee hybrid לאחסון המקומי:

    export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
    export CHART_VERSION=1.16.10
    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
    
  2. יוצרים את חשבון השירות apigee-mint-task-scheduler.

    אם עדיין לא יצרתם את חשבון השירות apigee-mint-task-scheduler, עכשיו הזמן ליצור אותו באמצעות הכלי create-service-account. במאמר שלב 4: יצירת חשבונות שירות מוסבר איך ליצור חשבונות שירות כחלק מהתקנה היברידית חדשה.

    1. מאתרים את הכלי create-service-account בספרייה $APIGEE_HELM_CHARTS_HOME:
      $APIGEE_HELM_CHARTS_HOME/
          └── apigee-operator/
              └── etc/
                  └── tools/
                      └── create-service-account

      מוודאים שיש לכם הרשאה להפעיל את הפקודה create-service-account. אם הרגע הורדתם את התרשימים, יכול להיות שקובץ create-service-account לא במצב הפעלה. בספרייה APIGEE_HELM_CHARTS_HOME, מריצים את הפקודה הבאה:

      $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account --help

      אם הפלט הוא permission denied, צריך להפוך את הקובץ לניתן להפעלה, למשל באמצעות chmod ב-Linux, ב-MacOS או ב-UNIX, או בסייר הקבצים של Windows, או באמצעות הפקודה icacls ב-Windows. לדוגמה:

      chmod +x $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account
    2. יוצרים את חשבון השירות apigee-mint-task-scheduler ושומרים את קובץ האישור שהורד בתיקיית התרשים apigee-org באמצעות הפקודה הבאה:
      $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
        --profile apigee-mint-task-scheduler \
        --env prod \
        --dir $APIGEE_HELM_CHARTS_HOME/apigee-org
  3. מפעילים גישה למישור הבקרה עבור חשבונות השירות apigee-mart ו-apigee-mint-task-scheduler.

    אם עדיין לא הפעלתם גישה למישור הבקרה עבור חשבונות השירות apigee-mart ו-apigee-mint-task-scheduler, עכשיו הזמן לעשות זאת באמצעות השלבים הבאים. מידע על הפעלת גישה למישור הבקרה כחלק מהתקנה היברידית חדשה מופיע במאמר שלב 7: הפעלת גישה למישור הבקרה.

    1. אם אתם לא הבעלים של פרויקט בענן של Google שמשויך לארגון Apigee Hybrid שלכם, ודאו שלחשבון המשתמש שלכם ב-Google Cloud יש את התפקיד roles/apigee.admin (אדמין של ארגון Apigee). כדי לבדוק את התפקידים שהוקצו לכם, מריצים את הפקודה הבאה:
      gcloud projects get-iam-policy ${PROJECT_ID}  \
        --flatten="bindings[].members" \
        --format='table(bindings.role)' \
        --filter="bindings.members:your_account_email"
      

      אם הפלט לא כולל את roles/apigee.admin, אפשר לעיין בשלב 7: הפעלת גישה למישור הבקרה כדי להוסיף את התפקיד או לבקש ממשתמש שיש לו את התפקיד לבצע את השלב הזה.

    2. מבצעים קריאה ל-API‏ updateControlPlaneAccess כדי להפעיל את ההרשאות הנדרשות באמצעות הפקודה הבאה:

      אין מיקום אחסון הנתונים

      curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type:application/json" \
        "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess?update_mask=analytics_publisher_identities" \
        -d "{\"analytics_publisher_identities\": [\"serviceAccount:apigee-mart@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-mint-task-scheduler@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com\"]}"
      

      כאשר כתובות האימייל הבאות הן של חשבונות השירות:

      • apigee-mart@${ORG_NAME}.iam.gserviceaccount.com
      • apigee-mint-task-scheduler@${ORG_NAME}.iam.gserviceaccount.com
      • apigee-runtime@${ORG_NAME}.iam.gserviceaccount.com

      המיקום של נתונים

      curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type:application/json" \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess?update_mask=analytics_publisher_identities" \
        -d "{\"analytics_publisher_identities\": [\"serviceAccount:apigee-mart@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-mint-task-scheduler@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com\"]}"
      

      כאשר:

      • ‫CONTROL_PLANE_LOCATION הוא המיקום של נתוני מישור הבקרה אם ההתקנה ההיברידית שלכם משתמשת בשמירת נתונים. זהו המיקום שבו מאוחסן תוכן הליבה של הלקוחות, כמו חבילות פרוקסי. רשימה של האזורים האפשריים זמינה במאמר אזורי מישור הבקרה של Apigee API שזמינים לשימוש.
      • אלה כתובות האימייל של חשבונות השירות:

        • apigee-mart@${ORG_NAME}.iam.gserviceaccount.com
        • apigee-mint-task-scheduler@${ORG_NAME}.iam.gserviceaccount.com
        • apigee-runtime@${ORG_NAME}.iam.gserviceaccount.com
    3. מאמתים את הגישה למישור הבקרה עבור חשבונות השירות apigee-mart ו-apigee-mint-task-scheduler.

      אין מיקום אחסון הנתונים

      curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type:application/json" \
        "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess"

      המיקום של נתונים

      curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type:application/json" \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess"

      הפלט צריך לכלול את חשבונות השירות apigee-mart, apigee-mint-task-scheduler ו-apigee-runtime, בדומה לדוגמה הבאה:

      {
        "synchronizerIdentities": [
          "serviceAccount:apigee-synchronizer@$ORG_NAME.iam.gserviceaccount.com"
        ],
        "analyticsPublisherIdentities": [
          "serviceAccount:apigee-mart@$ORG_NAME.iam.gserviceaccount.com",
          "serviceAccount:apigee-mint-task-scheduler@$ORG_NAME.iam.gserviceaccount.com",
          "serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com"
        ]
      }
  4. מוסיפים לקובץ overrides.yaml את הפסקאות שקשורות למונטיזציה.

    מוסיפים את הפסקאות הבאות לקובץ overrides.yaml:

    runtime:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-runtime"
        tag: "1.16.10" #must be 1.15.1 or higher.
    
    mintTaskScheduler:
      # if using stored SA cert files:
      serviceAccountPath: MINT_TASK_SCHEDULER_SA_CERT_FILE.json
      # if using stored Kubernetes secrets:
      serviceAccountRef: MINT_TASK_SCHEDULER_SA_K8S_SECRET
      # if using Workload Identity on GKE:
      gsa: "apigee-mint-task-scheduler@PROJECT_ID.iam.gserviceaccount.com"
    
    # or if using Vault:
    serviceAccountSecretProviderClass: apigee-orgsakeys-spc
    

    אם אתם משתמשים בסודות של Kubernetes, כדאי לעיין במאמר בנושא אחסון נתונים בסוד של Kubernetes.

    אם אתם משתמשים ב-Vault, כדאי לעיין במאמר בנושא אחסון מפתחות של חשבונות שירות ב-Hashicorp Vault.

    אם אתם משתמשים ב-Vault, צריך לוודא שהוספתם את mint למחלקה של ספק הסודות הספציפי לארגון. איך יוצרים אובייקטים של SecretProviderClass

  5. מחילים את השינויים על התרשימים apigee-operator, apigee-org ו-apigee-env.

    אם הגדרתם את משתני הסביבה $ORG_NAME ו-APIGEE_NAMESPACE, אתם יכולים להשתמש בהם בפקודות הבאות:

    1. מתקינים את האופרטור.

      הרצת בדיקה:

      helm upgrade operator apigee-operator/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      

      מתקינים את התרשים:

      helm upgrade operator apigee-operator/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    2. מתקינים את הארגון ב-Apigee.

      הרצת בדיקה:

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      

      מתקינים את התרשים:

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. מתקינים את הסביבה. חוזרים על השלב הזה לכל סביבה.

      צריך להתקין סביבה אחת בכל פעם. מציינים את הסביבה באמצעות --set env=ENV_NAME. אם הגדרתם את משתנה הסביבה $ENV_NAME במעטפת, אתם יכולים להשתמש בו בפקודות הבאות:

      הרצת בדיקה:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml \
        --dry-run=server
      

        ‫ENV_RELEASE_NAME הוא שם שמשמש למעקב אחרי התקנות ושדרוגים של תרשים apigee-env. השם הזה צריך להיות ייחודי ולא יכול להיות זהה לשמות אחרים של Helm release בהתקנה. בדרך כלל זהה ל-ENV_NAME. עם זאת, אם לסביבה יש את אותו שם כמו לקבוצת הסביבות, צריך להשתמש בשמות שחרור שונים לסביבה ולקבוצת הסביבות, למשל dev-env-release ו-dev-envgroup-release. מידע נוסף על מהדורות ב-Helm זמין במאמר Three big concepts (שלושה מושגים חשובים) במאמרי העזרה של Helm.

      מתקינים את התרשים:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml
      
  6. ב-Workload Identity ב-GKE בלבד: מגדירים את Workload Identity עבור חשבון השירות apigee-mint-task-scheduler.

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

    כשמריצים את הפקודה helm upgrade עם הדגל --dry-run לתרשים apigee-org, הפלט יכלול את הפקודות שצריך להשתמש בהן כדי להגדיר את Workload Identity עם חשבון השירות הנכון של Google ושמות חשבונות השירות הנכונים של Kubernetes.

    1. מקבלים את הפקודות להגדרת Workload Identity עבור apigee-org ומריצים את הפקודה שמופיעה בקטע NOTES: בפלט.

      helm upgrade $ORG_NAME apigee-org/ \
        --namespace $NAMESPACE \
        -f overrides.yaml \
        --dry-run=server

      הפלט צריך לכלול הוראות דומות לאלה שמופיעות בקטע NOTES::

      NOTES:
      ...
      For organization GKE Workload Identity, please make sure to add the below membership to the IAM policy binding using the respective Kubernetes SA (KSA).
      gcloud iam service-accounts add-iam-policy-binding apigee-mint-task-scheduler@PROJECT_ID.iam.gserviceaccount.com \
            --role roles/iam.workloadIdentityUser \
            --member "serviceAccount:PROJECT_ID.svc.id.goog[APIGEE_NAMESPACE/apigee-mint-task-scheduler-PROJECT_ID-UNIQUE_ID]" \
            --project PROJECT_ID
      

      הפורמט של השם של חשבון השירות ב-Kubernetes הוא apigee-mint-task-scheduler-PROJECT_ID-UNIQUE_ID.

    2. מריצים את הפקודות כדי להגדיר את Workload Identity עבור apigee-mint-task-scheduler.

מידע נוסף

  • הפעלת מונטיזציה ב-Apigee למידע נוסף על מונטיזציה ב-Apigee.
  • ‫mintTaskScheduler.serviceAccountPath: מגדיר את הנתיב לקובץ המפתח של חשבון השירות עבור חשבון השירות apigee-mint-task-scheduler.
  • ‫mintTaskScheduler.serviceAccountRef: מגדיר את הסוד של Kubernetes שמכיל את המפתח של חשבון השירות apigee-mint-task-scheduler.
  • ‫mintTaskScheduler.gsa: הגדרת חשבון השירות של Google עבור חשבון השירות apigee-mint-task-scheduler. זו חייבת להיות כתובת האימייל בחשבון השירות.