הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.
לעיון במסמכי התיעוד של
Apigee Edge
בדף הזה מתוארים השלבים שצריך להשלים לפני שמתקינים ומגדירים את Apigee Operator ל-Kubernetes. מידע נוסף על היתרונות של שימוש ב-Apigee Operator for Kubernetes זמין במאמר סקירה כללית של Apigee Operator for Kubernetes.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להגדרת המשאבים שנדרשים להתקנה ולשימוש ב-Apigee Operator for Kubernetes, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בארגון:
-
יצירה וניהול של אשכול Google Kubernetes Engine (GKE):
אדמין של קונטיינרים (
roles/container.admin) -
יצירה וניהול של חשבונות שירות:
אדמין של חשבון שירות (
roles/iam.serviceAccountAdmin) -
יצירה וניהול של Service Extensions:
אדמין של Service Extensions (
roles/networkservices.serviceExtensionsAdmin) -
יצירה וניהול של קבוצות נקודות קצה ברשת (NEGs):
אדמין של מכונת Compute (
roles/compute.instanceAdmin) -
יצירה וניהול של שירותים לקצה העורפי:
אדמין של איזון עומסים ב-Compute (
roles/compute.loadBalancerAdmin) -
יצירה וניהול של משאבי Apigee:
אדמין Apigee (
roles/apigee.admin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
משימות ההגדרה הנדרשות
לפני שמתקינים את Apigee Operator for Kubernetes, צריך לבצע את המשימות הבאות כדי להגדיר את המשאבים שנדרשים לשימוש בתכונה:
מקצים משאבים למופע של Apigee באמצעות גרסה
1-15-0-apigee-4ואילך.אפשר לראות את גרסאות המופעים בדף Instance details בממשק המשתמש של Apigee במסוף Google Cloud . נכנסים לדף Instances במסוף Google Cloud , בוחרים מופע ומציגים את הפרטים שלו:
אפשר להשתמש ב-Apigee Operator for Kubernetes עם ארגון Apigee בתוכנית מינוי או בתוכנית Pay-as-you-go. מידע נוסף על הקצאת מופעים בתשלום של Apigee זמין במאמר לפני שמתחילים.
מתקינים את Google Cloud CLI.
אחרי שמתקינים את Google Cloud CLI, מריצים את הפקודה
gcloud components updateכדי לקבל את הרכיבים האחרונים של gcloud.- מתקינים ומגדירים את כלי שורת הפקודה
kubectl. - מתקינים את Helm (גרסה v3.14.3 ואילך).
יוצרים אשכול GKE באמצעות GKE בגרסה 1.27 ואילך עם איחוד זהויות של עומסי עבודה ל-GKE ו-GKE Gateway מופעלים.
אם יש לכם אשכול קיים שעומד בדרישות האלה, אתם יכולים לדלג על השלב הזה.
איחוד זהויות של עומסי עבודה ל-GKE מופעל כברירת מחדל כשמשתמשים במצב אוטומטי כדי ליצור ולנהל את האשכולות. מידע נוסף זמין במאמר סקירה כללית על Autopilot.
במאמר פריסת שערים מוסבר איך ליצור אשכול חדש עם איחוד זהויות של עומסי עבודה ל-GKE ו-GKE Gateway מופעל באמצעות Autopilot.
- פורסים שער 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
- פריסת אפליקציית backend באשכול.
כדי לפרוס את אפליקציית ה-Backend שנחשפת על ידי
global-ext-lb1Gateway שיצרתם ופרסתם:- יוצרים קובץ חדש בשם
target.yaml. - מעתיקים את התוכן הבא לקובץ החדש:
# 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
- מחילים את ההגדרה על האשכול:
kubectl apply -f target.yaml
מידע נוסף על פריסת אפליקציות backend באשכולות GKE זמין במאמר פריסת אפליקציות ההדגמה.
- יוצרים קובץ חדש בשם
- פורסים את משאב ה-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
- בודקים את ההגדרה של GKE Gateway כדי לוודא שהיא פועלת.
- מקבלים את פרטי השער באמצעות הפקודה הבאה:
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. - מתארים את השער כדי לוודא שהמסלול מצורף:
kubectl describe gateway global-ext-lb1
הפלט אמור להיראות כך:
... Listeners: Attached Routes: 1 Conditions: Last Transition Time: 2024-10-03T03:10:17Z ...מוודאים שהערך של
Attached Routesהוא1, מה שמציין שהמסלול מצורף. - שליחת בקשה אל 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