‫Apigee Operator for Kubernetes: לפני שמתחילים

הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.

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

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

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

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

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

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

משימות ההגדרה הנדרשות

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

  1. מקצים משאבים למופע של Apigee באמצעות גרסה 1-15-0-apigee-4 ואילך.

    אפשר לראות את גרסאות המופעים בדף Instance details בממשק המשתמש של Apigee במסוף Google Cloud . נכנסים לדף Instances במסוף Google Cloud , בוחרים מופע ומציגים את הפרטים שלו:

    כניסה לדף Instances

    אפשר להשתמש ב-Apigee Operator for Kubernetes עם ארגון Apigee בתוכנית מינוי או בתוכנית Pay-as-you-go. מידע נוסף על הקצאת מופעים בתשלום של Apigee זמין במאמר לפני שמתחילים.

  2. מתקינים את Google Cloud CLI.

    אחרי שמתקינים את Google Cloud CLI, מריצים את הפקודה gcloud components update כדי לקבל את הרכיבים האחרונים של gcloud.

  3. מתקינים ומגדירים את כלי שורת הפקודה kubectl.
  4. מתקינים את Helm (גרסה v3.14.3 ואילך).
  5. יוצרים אשכול GKE באמצעות GKE בגרסה 1.27 ואילך עם איחוד זהויות של עומסי עבודה ל-GKE ו-GKE Gateway מופעלים.

    אם יש לכם אשכול קיים שעומד בדרישות האלה, אתם יכולים לדלג על השלב הזה.

    איחוד זהויות של עומסי עבודה ל-GKE מופעל כברירת מחדל כשמשתמשים במצב אוטומטי כדי ליצור ולנהל את האשכולות. מידע נוסף זמין במאמר סקירה כללית על Autopilot.

    במאמר פריסת שערים מוסבר איך ליצור אשכול חדש עם איחוד זהויות של עומסי עבודה ל-GKE ו-GKE Gateway מופעל באמצעות Autopilot.

  6. פורסים שער GKE באשכול.

    אתם יכולים להגדיר ולפרוס שער פנימי או שער חיצוני לשימוש עם Apigee Operator for Kubernetes. אם בוחרים לפרוס שער פנימי, צריך רשת משנה של Proxy בלבד ו-VPC משותף. כדי לבדוק את השלבים במדריך הזה, מומלץ לפרוס שער חיצוני. מידע נוסף זמין במאמר בנושא דרישות של בקר GKE Gateway.

    כדי לפרוס את GKE Gateway, פועלים לפי השלבים שמפורטים במאמר בנושא פריסת שער חיצוני. כשיוצרים את שער ה-API, משתמשים בהגדרה הבאה של yaml:

    # gateway.yaml
    kind: Gateway
    apiVersion: gateway.networking.k8s.io/v1beta1
    metadata:
      name: global-ext-lb1
      namespace: default
    spec:
      gatewayClassName: gke-l7-global-external-managed
      listeners:
        - name: http
          protocol: HTTP
          allowedRoutes:
            kinds:
              - kind: HTTPRoute
            namespaces:
              from: All
          port: 80

    החלת הקובץ על האשכול:

    kubectl apply -f gateway.yaml

  7. פריסת אפליקציית backend באשכול.

    כדי לפרוס את אפליקציית ה-Backend שנחשפת על ידי global-ext-lb1 Gateway שיצרתם ופרסתם:

    1. יוצרים קובץ חדש בשם target.yaml.
    2. מעתיקים את התוכן הבא לקובץ החדש:
      # target.yaml
      apiVersion: v1
      kind: Namespace
      metadata:
        name: http
      ---
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: httpbin
        namespace: http
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: httpbin
        namespace: http
        labels:
          app: httpbin
          service: httpbin
      spec:
        type: LoadBalancer
        ports:
          - name: https
            port: 80
            targetPort: 80
        selector:
          app: httpbin
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: httpbin
        namespace: http
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: httpbin
            version: v1
        template:
          metadata:
            labels:
              app: httpbin
              version: v1
          spec:
            serviceAccountName: httpbin
            containers:
              - image: docker.io/kennethreitz/httpbin
                imagePullPolicy: IfNotPresent
                name: httpbin
                ports:
                  - containerPort: 80
                resources:
                  requests:
                    cpu: 1
                    memory: 1024Mi
                  limits:
                    cpu: 1
                    memory: 1024Mi
    3. מחילים את ההגדרה על האשכול:
      kubectl apply -f target.yaml

    מידע נוסף על פריסת אפליקציות backend באשכולות GKE זמין במאמר פריסת אפליקציות ההדגמה.

  8. פורסים את משאב ה-HTTPRoute באשכול כדי למפות את התנועה מהשער לשירות הקצה העורפי.

    מידע נוסף על משאב HTTPRoute זמין במאמר פריסת HTTPRoute (לשערי כניסה פנימיים) או במאמר יצירת HTTPRoute (לשערי כניסה חיצוניים).

    לצורך המדריך הזה, מומלץ לפרוס שער חיצוני ו-HTTPRoute, לפי השלבים במאמר בנושא יצירת HTTPRoute. כשיוצרים את HTTPRoute, משתמשים בהגדרה yaml הבאה ומחליפים את HOST_NAME בשם המארח שרוצים להשתמש בו:

    # httproute.yaml
    kind: HTTPRoute
    apiVersion: gateway.networking.k8s.io/v1beta1
    metadata:
      name: http-bin-route
      namespace: http
    spec:
      parentRefs:
        - kind: Gateway
          name: global-ext-lb1
          namespace: default
      hostnames:
        - HOST_NAME
      rules:
        - matches:
            - path:
                value: /
          backendRefs:
            - name: httpbin
              kind: Service
              port: 80
              namespace: http

    החלת הקובץ על האשכול:

    kubectl apply -f httproute.yaml

  9. בודקים את ההגדרה של GKE Gateway כדי לוודא שהיא פועלת.
    1. מקבלים את פרטי השער באמצעות הפקודה הבאה:
      kubectl get gateway global-ext-lb1

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

      NAME             CLASS                            ADDRESS        PROGRAMMED   AGE
      global-ext-lb1   gke-l7-global-external-managed   34.54.193.72   True         11d
      

      מוודאים שכתובת IP מוקצית ל-Gateway ושהערך של PROGRAMMED הוא True.

    2. מתארים את השער כדי לוודא שהמסלול מצורף:
      kubectl describe gateway global-ext-lb1

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

      ...
        Listeners:
          Attached Routes:  1
          Conditions:
            Last Transition Time:  2024-10-03T03:10:17Z
      ...

      מוודאים שהערך של Attached Routes הוא 1, מה שמציין שהמסלול מצורף.

    3. שליחת בקשה אל Gateway:
      curl http://GATEWAY_IP_ADDRESS/get \
          -H "Host: HOST_NAME"

      כאשר:

      • ‫GATEWAY_IP_ADDRESS היא כתובת ה-IP של השער. כדי לאחזר את כתובת ה-IP של השער, משתמשים בפקודה הבאה, שבה GATEWAY_NAME הוא שם השער:
        kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
      • ‫HOST_NAME הוא שם המארח שמוגדר ב-HTTPRoute של שער. אפשר לאחזר את HOST_NAME באמצעות הפקודה הבאה:
        kubectl get HTTPRoute HTTPROUTE_NAME -n NAMESPACE

      For example:

      curl http://34.54.193.72/get \
      -H "Host: apigee-apim-operator-test.apigee.net"

      התגובה אמורה להיראות כך:

        {
          "args": {},
          "headers": {
            "Accept": "*/*",
            "Host": "apigee-apim-operator-test.apigee.net",
            "User-Agent": "curl/8.7.1",
            "X-Cloud-Trace-Context": "2bb8a80e29e80662ff9cb89971c447d9/13083106619927322701"
          },
          "origin": "67.164.1.10,34.54.193.72",
          "url": "http://apigee-apim-operator-test.apigee.net/get"
        }

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

איך מתקינים את Apigee Operator ל-Kubernetes