התקנה של Apigee Operator ל-Kubernetes

הדף הזה מתייחס ל-Apigee, אבל לא ל-Apigee Hybrid.

לעיון במסמכי התיעוד של Apigee Edge

בדף הזה מוסבר איך להתקין ולהגדיר את Apigee Operator ל-Kubernetes. מידע נוסף על היתרונות של שימוש ב-Apigee Operator for Kubernetes זמין במאמר סקירה כללית של Apigee Operator for Kubernetes.

לפני שמתחילים

לפני שמתקינים את Apigee Operator for Kubernetes, צריך לוודא שיש לכם את התפקידים וההרשאות הנדרשים כדי להשלים את השלבים, ושהשלמתם את המשימות המקדימות שמתוארות במאמר Apigee Operator for Kubernetes: לפני שמתחילים.

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות להתקנת Apigee Operator for Kubernetes, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בארגון:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

התקנה והגדרה של Apigee Operator ל-Kubernetes

בקטעים הבאים מפורטים השלבים להתקנה ולהגדרה של Apigee Operator for Kubernetes:

  1. הגדרה של משתני סביבה
  2. מפעילים את ממשקי ה-API הנדרשים.
  3. אחזור והגדרה של פרטי כניסה
  4. יוצרים זהות של עומס עבודה.
  5. איך מתקינים את Apigee Operator for Kubernetes
  6. יצירת סביבת Apigee
  7. אימות ההגדרה של GKE Gateway

הגדרה של משתני סביבה

בפרויקט Google Cloud שמכיל את מופע Apigee, משתמשים בפקודה הבאה כדי להגדיר משתני סביבה:

export PROJECT_ID=PROJECT_ID
export CLUSTER_NAME=CLUSTER_NAME
export REGION=REGION
export APIGEE_ORG=APIGEE_ORG

כאשר:

  • PROJECT_ID הוא מזהה הפרויקט עם מופע Apigee.
  • CLUSTER_NAME הוא השם של אשכול GKE.
  • REGION הוא האזור של אשכול GKE.
  • הערך של APIGEE_ORG זהה לערך של PROJECT_ID.

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

echo $PROJECT_ID $CLUSTER_NAME $REGION $APIGEE_ORG

הפעלת ממשקי ה-API הנדרשים

ל-Apigee Operator for Kubernetes נדרשת גישה לממשקי ה-API הבאים:

שם כותרת
apigee.googleapis.com Apigee API
compute.googleapis.com Compute Engine API
networkservices.googleapis.com Network Services API
container.googleapis.com Kubernetes Engine API

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

gcloud services list --project=$PROJECT_ID

אם ממשקי ה-API הנדרשים לא מופיעים בפלט פקודה, מפעילים אותם:

gcloud services enable apigee.googleapis.com --project=$PROJECT_ID
gcloud services enable compute.googleapis.com --project=$PROJECT_ID
gcloud services enable networkservices.googleapis.com --project=$PROJECT_ID
gcloud services enable container.googleapis.com --project=$PROJECT_ID

אחזור והגדרה של פרטי כניסה

מאחזרים את פרטי הכניסה של האשכול ויוצרים חשבון שירות כדי להתחבר לשירותים: Google Cloud

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

    gcloud container clusters get-credentials $CLUSTER_NAME --location=$REGION --project=$PROJECT_ID

    פרטי הכניסה האלה משמשים לתקשורת עם אשכול GKE שנוצר בשלבים שלפני.

  2. הגדרת פרטי כניסה של חשבון שירות כדי להתחבר לשירותים: Google Cloud
    gcloud iam service-accounts create apigee-apim-gsa
  3. מקצים לחשבון השירות שיצרתם את התפקידים וההרשאות הנדרשים באמצעות הפקודות הבאות:
    • תפקיד אדמין ב-Apigee: נדרש כדי ליצור ולנהל משאבים ב-Apigee.
      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/apigee.admin"
    • תפקיד אדמין של תוסף שירות: נדרש כדי ליצור ולנהל תוספי שירות.
      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/networkservices.serviceExtensionsAdmin"
    • תפקיד אדמין ברשת: נדרש לניהול הגישה ל-Apigee באמצעות תוספי שירות.
      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/compute.networkAdmin"
    • תפקיד אדמין במאזן העומסים: נדרש לניהול הגישה בין קבוצות של נקודות קצה ברשת (NEGs) לבין שירותים לקצה העורפי.
      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/compute.loadBalancerAdmin"
      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/iam.workloadIdentityUser"

יצירת זהות של עומס עבודה

התקנת Apigee Operator for Kubernetes בשלב הבא יוצרת חשבון שירות (KSA) נדרש של Kubernetes בשם apim-ksa במרחב השמות apim. כשחשבון השירות נוצר, הוא מכיל את ההערה שנדרשת כדי לשייך אותו ל-Workload Identity שמשמש את Apigee Operator for Kubernetes כדי לגשת למשאבים הנדרשים של Apigee ושל Service Networking.helm

כדי ליצור את הזהות של עומס העבודה, משתמשים בפקודה הבאה:

gcloud iam service-accounts add-iam-policy-binding apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com --role roles/iam.workloadIdentityUser --member "serviceAccount:$PROJECT_ID.svc.id.goog[apim/apim-ksa]"

הפקודה הזו מקשרת את ה-KSA לחשבון השירות Google שיצרתם במאמר בנושא אחזור והגדרה של פרטי כניסה ומקצה את התפקיד workloadIdentityUser.

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

התקנת Custom Resource Definitions‏ (CRD) ו-Apigee Operator ל-Kubernetes

מתקינים את הגדרות המשאבים המותאמים אישית (CRD) של Kubernetes ואת Apigee Operator for Kubernetes:‏

  1. יוצרים מרחב שמות עבור Apigee Operator for Kubernetes:
    kubectl create ns apim
  2. מתקינים את Apigee Operator עבור CRD של Kubernetes:
    helm install apigee-apim-crds -n apim \
      oci://us-docker.pkg.dev/apigee-release/apigee-k8s-tooling-helm-charts/apigee-apim-operator-crds \
      --version 1.1.1 \
      --atomic
  3. מתקינים את Apigee Operator ל-Kubernetes:
    helm install apigee-apim-operator -n apim \
      oci://us-docker.pkg.dev/apigee-release/apigee-k8s-tooling-helm-charts/apigee-apim-operator-helm \
      --version 1.1.1 \
      --set projectId=$PROJECT_ID \
      --set serviceAccount=apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com \
      --set apigeeOrg=$PROJECT_ID \
      --set generateEnv=ENV_GENERATION_MODE \
      --atomic

    מחליפים את ENV_GENERATION_MODE ב-TRUE אם רוצים שהאופרטור ייצור סביבת Apigee חדשה כשמתקינים את Apigee Operator for Kubernetes. מגדירים את ENV_GENERATION_MODE ל-FALSE אם רוצים ליצור את הסביבה באופן ידני אחרי התקנת האופרטור. מידע נוסף זמין במאמר בנושא יצירת סביבת Apigee.

  4. מוודאים שההתקנה הושלמה בהצלחה:
    helm list -n apim

    הפלט אמור להיראות כך:

    NAME                  NAMESPACE REVISION  UPDATED                                 STATUS    CHART                           APP VERSION
    apigee-apim-crds      apim      1         2025-02-01 00:17:03.399810627 +0000 UTC deployed  apigee-apim-operator-crds-1.1.1 1.1.1
    apigee-apim-operator  apim      1         2025-02-01 00:15:00.362829981 +0000 UTC deployed  apigee-apim-operator-helm-1.1.1 1.1.1   
  5. מוודאים שנוצר KSA עם ההערה הנדרשת:
    kubectl describe serviceaccounts apim-ksa -n apim

    הפלט אמור להיראות כך:

    Name:                apim-ksa
    Namespace:           apim
    ...
    Annotations:         iam.gke.io/gcp-service-account: apigee-apim-gsa@my-project-id.iam.gserviceaccount.com
  6. מוודאים שמפעיל ה-APIM פועל בתרמילי ה-pods של האשכול:
    kubectl get pods -n apim

    הפלט אמור להיראות כך:

    NAME                                    READY   STATUS    RESTARTS     AGE
    apigee-apim-operator-8559d4994b-h55fl   1/1     Running   0            8m34s
    

    אם הערך של STATUS הוא לא Running, או אם READY לא מציג את הערך 1/1, אפשר להיעזר במאמר פתרון בעיות ב-Apigee Operator ל-Kubernetes כדי לפתור את בעיות ההתקנה.

  7. כדי לוודא שזהות עומס העבודה מוגדרת בצורה נכונה, משתמשים בפקודות הבאות:
    gcloud config set project $PROJECT_ID
    kubectl run --rm -it --image google/cloud-sdk:slim \
      --namespace apim workload-identity-test \
      --overrides='{ "spec": { "serviceAccountName": "apim-ksa" } }'  \
      -- gcloud auth list

    הפלט אמור להיראות כך:

    Credentialed Accounts
      ACTIVE  ACCOUNT
      *       GSA@$PROJECT_ID.iam.gserviceaccount.com

יצירת סביבת Apigee

אם התקנתם את Apigee Operator for Kubernetes באמצעות generateEnv=TRUE בשלב הקודם, האופרטור יוצר סביבת Apigee חדשה כשמדיניות התוסף APIM נוצרת ומוחלת. השם של הסביבה החדשה כולל את הקידומת: apim-enabled-dep-env.

אם התקנתם את Apigee Operator ל-Kubernetes באמצעות generateEnv=FALSE, אתם צריכים ליצור סביבת Apigee חדשה:

  1. מגדירים את TOKEN שנדרש לפקודה curl:
    export TOKEN=$(gcloud auth print-access-token)
  2. יוצרים את הסביבה באמצעות אחת מהפקודות הבאות:
    • לארגונים עם מינוי ל-2021 ול-2024:
      curl -i -X POST "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/environments" -H \
        "Authorization: Bearer $TOKEN" -H "Content-Type:application/json" \
          -d '{
            "name": "ENV_NAME",
            "displayName": "ENV_NAME",
            "state": "ACTIVE",
            "deploymentType": "PROXY",
            "apiProxyType": "PROGRAMMABLE",
            "properties": {
              "property": [
                {
                  "name": "apigee-service-extension-enabled",
                  "value": "true"
                }
              ]
            }
        }'

      כאשר ENV_NAME הוא שם הסביבה שרוצים ליצור.

    • בארגונים עם תשלום לפי שימוש:
      curl -i -X POST -H "Authorization: Bearer $TOKEN"  "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/environments" -H "Content-Type:application/json" -d '{
        "name": "ENV_NAME",
        "displayName": "ENV_NAME",
        "state": "ACTIVE",
        "deploymentType": "PROXY",
        "apiProxyType": "PROGRAMMABLE",
        "type" : "COMPREHENSIVE",
        "properties": {
          "property": [
            {
              "name": "apigee-service-extension-enabled",
              "value": "true"
            }
          ]
        }
      }'

      כאשר:

      • ENV_NAME הוא שם הסביבה שרוצים ליצור.

    כדי לוודא שהסביבה נוצרה בהצלחה:

    curl -i -H "Authorization: Bearer $TOKEN" \
      "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/environments"

  3. מצרפים את הסביבה למופע Apigee:
    curl -i -X POST -H "Authorization: Bearer $TOKEN" \
      "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/instances/INSTANCE_NAME/attachments" \
      -H "Content-Type:application/json" -d '{"environment": "ENV_NAME"}'

    כאשר:

    • INSTANCE_NAME הוא השם של מופע Apigee.
    • ENV_NAME הוא שם הסביבה שיצרתם בשלב הקודם.

    כדי לבדוק את הסטטוס של פעולת צירוף הסביבה:

    curl -X GET -H "Authorization: Bearer $TOKEN" \
      "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/operations/OPERATION_ID"

    OPERATION_ID הוא המזהה של פעולת צירוף הסביבה.

פתרון בעיות

אם נתקלתם בבעיות בהתקנה של Apigee Operator for Kubernetes, תוכלו לעיין במאמר פתרון בעיות ב-Apigee Operator for Kubernetes כדי למצוא פתרונות לשגיאות נפוצות.

המאמרים הבאים

יוצרים תוסף שירות תעבורה באמצעות APIMExtensionPolicy או ApigeeBackendService: