הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.
לעיון במסמכי התיעוד של
Apigee Edge
בדף הזה מוסבר איך להתקין ולהגדיר את Apigee Operator for Kubernetes עבור Apigee hybrid. מידע נוסף על היתרונות של שימוש ב-Apigee Operator for Kubernetes זמין במאמר סקירה כללית של Apigee Operator for Kubernetes.
אם אתם לא משתמשים ב-Apigee Hybrid, תוכלו לעיין במאמר בנושא התקנת Apigee Operator ל-Kubernetes כדי להתקין את Apigee Operator ל-Kubernetes עבור Apigee.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שהתנאים הבאים מתקיימים:
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להגדרת המשאבים שנדרשים להתקנה ולשימוש ב-Apigee Operator for Kubernetes, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בארגון:
- יצירה וניהול של חשבונות שירות: אדמין של חשבון שירות (
roles/iam.serviceAccountAdmin) - יצירה וניהול של משאבי Apigee: אדמין Apigee (
roles/apigee.admin)
מידע נוסף על הקצאת תפקידים מופיע במאמר ניהול הגישה לפרויקטים, לתיקיות ולארגונים.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים אחרים שהוגדרו מראש.
משימות ההגדרה הנדרשות
לפני שמתקינים את Apigee Operator for Kubernetes, צריך לבצע את המשימות הבאות כדי להגדיר את המשאבים שנדרשים לשימוש בתכונה:
- מתקינים את Apigee Hybrid באמצעות גרסה 1.15.0 ואילך. הוראות להתקנת Apigee Hybrid מופיעות במאמר סקירה כללית.
- יוצרים אשכול Kubernetes אצל ספק שירותי ענן שתומך ב-Istio Gateway, כמו Google Cloud, Azure או אמזון. שמכיל את מופע Apigee hybrid. Google Cloud
- מתקינים את Istio Gateway באשכול K8s:
- באשכולות ב-GKE:
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.1.0/standard-install.yaml
curl -L https://istio.io/downloadIstio | sh -cd 1.6.11-asm.1export PATH=$PWD/bin:$PATHistioctl install --set profile=minimal --set values.global.platform=gke -y - לגבי אשכולות אצל ספקים אחרים:
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.1.0/standard-install.yaml
curl -L https://istio.io/downloadIstio | sh -cd 1.6.11-asm.1export PATH=$PWD/bin:$PATHistioctl install --set profile=minimal -y
- באשכולות ב-GKE:
- פורסים את Istio Gateway באשכול Kubernetes.
- יוצרים קובץ בשם gateway.yaml עם התוכן הבא כדי לפרוס את Istio Gateway עם התוכן הבא:
#gateway.yaml apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: istio-gateway namespace: default annotations: service.beta.kubernetes.io/port_80_health-probe_protocol: tcp spec: gatewayClassName: istio listeners: - name: default hostname: "*.httpbin.com" port: 80 protocol: HTTP allowedRoutes: namespaces: from: All - מחילים את הקובץ על האשכול באמצעות הפקודה הבאה:
kubectl apply -f gateway.yaml
- יוצרים קובץ בשם gateway.yaml עם התוכן הבא כדי לפרוס את Istio Gateway עם התוכן הבא:
אימות ההגדרה של Istio Gateway (אופציונלי)
לצורך המדריך הזה, מומלץ לפרוס אפליקציית httpbin לדוגמה במרחב השמות שמוגדר כברירת מחדל כדי לבדוק את השער שפרסתם.
- כדי לבדוק את השער, פורסים אפליקציית backend באשכול Kubernetes.
- יוצרים קובץ חדש בשם
target.yamlעם התוכן הבאkubectl apply -f - <<EOF apiVersion: v1 kind: ServiceAccount metadata: name: httpbin --- apiVersion: v1 kind: Service metadata: name: httpbin labels: app: httpbin service: httpbin spec: ports: - name: http port: 8000 targetPort: 8080 selector: app: httpbin --- apiVersion: apps/v1 kind: Deployment metadata: name: httpbin spec: replicas: 1 selector: matchLabels: app: httpbin version: v1 template: metadata: labels: app: httpbin version: v1 spec: serviceAccountName: httpbin containers: - image: docker.io/mccutchen/go-httpbin:v2.15.0 imagePullPolicy: IfNotPresent name: httpbin ports: - containerPort: 8080 EOF - פורסים את משאב ה-HTTPRoute באשכול כדי למפות את התנועה מהשער לשירות הקצה העורפי.
לצורך המדריך הזה, מומלץ לפרוס שער חיצוני ו-HTTPRoute, לפי השלבים במאמר יצירת HTTPRoute.
מידע נוסף על משאב HTTPRoute זמין במאמרים פריסת HTTPRoute (לשערי כניסה פנימיים) או יצירת HTTPRoute (לשערי כניסה חיצוניים).
- יוצרים HTTPRoute לפי ההוראות שבקטע יצירת HTTPRoute באמצעות הגדרת ה-YAML הבאה:
apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: http-bin-route namespace: default spec: parentRefs: - name: istio-gateway namespace: default hostnames: ["example.httpbin.com"] rules: - matches: - path: type: PathPrefix value: /get backendRefs: - name: httpbin port: 8000 - החלת הקובץ על האשכול:
kubectl apply -f httproute.yaml
- יוצרים HTTPRoute לפי ההוראות שבקטע יצירת HTTPRoute באמצעות הגדרת ה-YAML הבאה:
- בודקים את ההגדרה של GKE Gateway כדי לוודא שהיא פועלת כמו שצריך.
- מקבלים את פרטי השער באמצעות הפקודה הבאה
kubectl get gateway global-ext-lb1
הפלט אמור להיראות כך:
NAME CLASS ADDRESS PROGRAMMED AGE istio-gateway istio 34.54.193.72 True 11d
מוודאים שכתובת IP מוקצית ל-Gateway ושהערך של
PROGRAMMEDהואTrue. - מתארים את השער כדי לוודא שהמסלול מצורף:
kubectl describe gateway istio-gateway
הפלט אמור להיראות כך:
... 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: example.httpbin.com"
כאשר: GATEWAY_IP_ADDRESS היא כתובת ה-IP של השער. אפשר לאחזר את כתובת ה-IP של השער באמצעות הפקודה הבאה, כאשר GATEWAY_NAME הוא שם השער:
kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses.value}"לדוגמה:
curl http://34.54.193.72/get -H "Host: example.httpbin.com"התגובה אמורה להיראות כך:
{ "args": {}, "headers": { "Accept": "*/*", "Host": "http://example.httpbin.com", "User-Agent": "curl/8.7.1", "X-Cloud-Trace-Context": "2bb8a80e29e80662ff9cb89971c447d9/13083106619927322701" }, "origin": "67.164.1.10,34.54.193.72", "url": "http://example.httpbin.com/get" }
- מקבלים את פרטי השער באמצעות הפקודה הבאה
התקנה של Apigee Operator ל-Kubernetes
במאמר הזה מוסבר איך להתקין ולהגדיר את Apigee Operator ל-Kubernetes.
התקנה והגדרה של Apigee Operator ל-Kubernetes
בקטעים הבאים מוסבר איך להתקין ולהגדיר את Apigee Operator ל-Kubernetes:
- הגדרה של משתני סביבה
- יצירה והגדרה של חשבון השירות של APIM.
- מתקינים את Apigee Operator for Kubernetes.
- יוצרים סביבת Apigee Hybrid.
- מתקינים את סביבת Apigee Hybrid באמצעות helm.
הגדרה של משתני סביבה
בפרויקט Google Cloud שמכיל את מופע Apigee, משתמשים בפקודה הבאה כדי להגדיר משתני סביבה:
export PROJECT_ID=PROJECT_ID
export APIGEE_ORG=APIGEE_ORGכאשר:
- PROJECT_ID הוא מזהה הפרויקט עם מופע Apigee Hybrid.
- APIGEE_ORG הוא שם הארגון שלכם ב-Apigee Hybrid.
כדי לוודא שמשתני הסביבה מוגדרים בצורה נכונה, מריצים את הפקודה הבאה:
echo $PROJECT_ID $APIGEE_ORG
יצירה והגדרה של חשבון השירות של APIM
יוצרים חשבון שירות כדי להתחבר למישור ההגדרה של Apigee Hybrid.
- יצירת
apigee-apim-gsaחשבון שירות להתחברות Google Cloud לשירותים - מקצים לחשבון השירות שיצרתם את התפקיד Apigee Admin באמצעות הפקודה הבאה. התפקיד הזה נדרש כדי ליצור ולנהל משאבי Apigee
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/apigee.admin"
- מורידים את קובץ מפתח ה-JSON המתאים לחשבון השירות.
- יוצרים ומורידים את קובץ המפתח
$PROJECT_ID-apigee-apim-gsa.jsonבאמצעות הפקודה הבאה:gcloud iam service-accounts keys create $PROJECT_ID-apigee-apim-gsa.json \ --iam-account=apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com --project=$PROJECT_ID - מוודאים שהקובץ הורד בצורה תקינה:
ls $PROJECT_ID-apigee-apim-gsa.json
- יוצרים ומורידים את קובץ המפתח
gcloud iam service-accounts create apigee-apim-gsa
התקנה של Apigee Operator ל-Kubernetes
מתקינים את Kubernetes custom resources definitions (CRDs) ואת Apigee Operator for Kubernetes:
- יצירת מרחב שמות ל-Apigee Operator for Kubernetes
kubectl create namespace apim
- מתקינים את Apigee Operator עבור Kubernetes Custom Resource Definitions (CRD):
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.0 \ --atomic
- התקנה של 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.0 \ --set serviceAccount=apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com \ --set apigeeOrg=$APIGEE_ORG \ --set apigeeEnv=ENV_NAME \ --set-file serviceAccountKeyFileContent=$PROJECT_ID-apigee-apim-gsa-key.json \ --atomic
כאשר ENV_NAME הוא השם של סביבת Apigee Hybrid שבה רוצים להתקין את Apigee Operator for Kubernetes.
- מוודאים שההתקנה הושלמה בהצלחה:
helm list -n apim
הפלט אמור להיראות כך:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION apigee-apim-crds apim 1 2025-09-01 00:17:03.399810627 +0000 UTC deployed apigee-apim-operator-crds-1.1.0 1.1.0 apigee-apim-operator apim 1 2025-09-01 00:15:00.362829981 +0000 UTC deployed apigee-apim-operator-helm-1.1.0 1.1.0
- מוודאים שחשבון השירות של Kubernetes (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
- מוודאים ש-Apigee Operator for Kubernetes פועל בתאי הפוד של האשכול:
kubectl get pods -n apim
הפלט אמור להיראות כך:
NAME READY STATUS RESTARTS AGE apigee-apim-operator-8559d4994b-h55fl 1/1 Running 0 8m34s
אם הסטטוס הוא לא Running, או אם הערך 1/1 לא מוצג ב-READY, אפשר לעיין במאמר בנושא פתרון בעיות ב-Apigee Operator ל-Kubernetes כדי לפתור את בעיות ההתקנה.
יצירת סביבת Apigee Hybrid
כדי להשתמש ב-Apigee Operator for Kubernetes ב-Apigee Hybrid, צריך ליצור סביבה עם דגל מיוחד לתוסף שירות.
- קבלת טוקן לאימות ב-Apigee API.
בשורת הפקודה, מקבלים את פרטי הכניסה לאימות
gcloud, כמו בדוגמה הבאה:TOKEN=$(gcloud auth print-access-token)
כדי לוודא שהטוקן אוכלס, משתמשים ב-
echo, כמו בדוגמה הבאה:echo $TOKEN
האסימון יוצג כמחרוזת מקודדת.
למידע נוסף, ראו סקירה כללית של כלי שורת הפקודה של Google Cloud.
- יוצרים את הסביבה באמצעות אחת מהפקודות הבאות:
- ארגונים עם מינוי משנת 2021:
curl -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_DISPLAY_NAME", "state": "ACTIVE", "deploymentType": "PROXY", "apiProxyType": "PROGRAMMABLE", "properties": { "property": [ { "name": "apigee-service-extension-enabled", "value": "true" } ] } }'כאשר ENV_NAME הוא שם הסביבה שרוצים ליצור.
- בארגונים עם מינוי לשנת 2024 וארגונים עם תשלום לפי שימוש:
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" : "ENV_TYPE", "properties": { "property": [ { "name": "apigee-service-extension-enabled", "value": "true" } ] } }'כאשר:
- ENV_NAME הוא שם הסביבה שרוצים ליצור.
- ENV_TYPE הוא סוג הסביבה שרוצים ליצור. לדוגמה,
INTERMEDIATEאוCOMPREHENSIVE.
בודקים שהסביבה נוצרה בהצלחה:
curl -i -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/environments"
מידע נוסף זמין במאמר יצירת סביבה בהוראות ההתקנה של Apigee Hybrid.
- ארגונים עם מינוי משנת 2021:
- יוצרים קבוצת סביבות באמצעות הפקודה הבאה:
curl -i -X POST -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/envgroups" -H "Content-Type:application/json" -d '{ "name": "'"$ENV_GROUP"'", "hostnames":["'"$DOMAIN"'"] }'כאשר:
- ENV_GROUP (חובה) שם הסביבה יכול להכיל אותיות קטנות, מקפים וספרות, והוא חייב להתחיל באות קטנה. השם הזה ישמש כמזהה ואי אפשר לשנות אותו אחרי שיוצרים את המרחב.
- DOMAIN (חובה) זהו שם המארח שכל השרתים הפרוקסי שנפרסו בסביבות בקבוצה הזו ישתמשו בו. זה צריך להיות דומיין שאתם מנהלים. הכתובת יכולה להיות הדומיין עצמו, כמו example.com, או לכלול תת-דומיין כמו my-proxies.example.com. אם אין לכם דומיין מנוהל, אתם יכולים להזין בשלב הזה placeholder. אפשר לשנות את כתובת הדומיין בהמשך.
מידע נוסף מופיע במאמר בנושא יצירת קבוצת סביבות בהוראות ההתקנה של Apigee hybrid.
- מצרפים את הסביבה לקבוצת הסביבות שיצרתם באמצעות הפקודה הבאה:
curl -i -X POST -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/envgroups/$ENV_GROUP/attachments" -H "Content-Type:application/json" -d '{ "environment": "'"$ENV_NAME"'", }'
התקנה של סביבת Apigee Hybrid באמצעות Helm
התהליך להתקנת הסביבה החדשה באשכול Apigee Hybrid דומה לתהליך שבו התקנתם סביבות אחרות באשכול. הפרטים האלה נדרשים כדי להוסיף פרטים חדשים על סביבה ועל קבוצת סביבות לאשכול Kubernetes שבו הותקן Apigee Hybrid.
- מריצים את הפקודה הבאה כדי ליצור את אישור ה-TLS לדומיין של קבוצת הסביבות:
openssl req -nodes -new -x509 -keyout $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/certs/keystore_$ENV_GROUP.key -out $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/certs/keystore_$ENV_GROUP.pem -subj "/CN=$DOMAIN" -addext "subjectAltName = DNS:$DOMAIN" -days 3650
כאשר:
- APIGEE_HELM_CHARTS_HOME (חובה) ספרייה שבה הורדתם את תרשימי Apigee Helm במהלך ההתקנה של Apigee Hybrid.
- מבצעים קידוד Base64 של אישור ה-TLS הציבורי באמצעות הפקודה הבאה:
cat $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/certs/keystore_$ENV_GROUP.pem | base64 -w0 > $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/certs/keystore_$ENV_GROUP.pem.base64
- מעדכנים את הקובץ
overrides.yamlעם הרשומה הבאה בקטע envs- name: ENV_NAME serviceAccountPaths: # Provide the path relative to the apigee-env chart directory. synchronizer: SYNCHRONIZER_SERVICE_ACCOUNT_FILEPATH # For example: "PROJECT_ID-apigee-synchronizer.json" runtime: RUNTIME_SERVICE_ACCOUNT_FILEPATH # For example: "PROJECT_ID-apigee-runtime.json" udca: UDCA_SERVICE_ACCOUNT_FILEPATH # For example: "PROJECT_ID-apigee-udca.json"כאשר *_SERVICE_ACCOUNT_FILEPATH (חובה) הוא קובץ מפתח ה-JSON של חשבון השירות שבו השתמשתם במהלך ההתקנה של Apigee Hybrid. למידע נוסף, אפשר לעיין במאמר יצירת קובצי overrides בהוראות ההתקנה של Apigee Hybrid.
- מוסיפים את הרשומה הבאה לקובץ overrides.yaml בקטע virtualhosts
- name:
selector: app: apigee-ingressgateway ingress_name: INGRESS_NAME sslCertPath: certs/keystore_$ENV_GROUP.pem sslKeyPath: certs/keystore_$ENV_GROUP.key כאשר INGRESS_NAME (חובה) הוא השם של שער הכניסה של Apigee לפריסה. מידע נוסף זמין כאן.
- מתקינים את הסביבה ואת קבוצת הסביבות
-
מתקינים את הסביבה.
צריך להתקין סביבה אחת בכל פעם. מציינים את הסביבה באמצעות
--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
כדי לוודא שהיא פועלת, בודקים את המצב של סביבת ה-env המתאימה:
kubectl -n APIGEE_NAMESPACE get apigeeenv
NAME STATE AGE GATEWAYTYPE apigee-org1-dev-1 running 2d
-
מתקינים את קבוצות הסביבות (
virtualhosts).- צריך להתקין קבוצת סביבות אחת (virtualhost) בכל פעם. מציינים את קבוצת הסביבות באמצעות
--set envgroup=ENV_GROUP. אם הגדרתם את משתנה הסביבה $ENV_GROUP בשורת הפקודה, תוכלו להשתמש בו בפקודות הבאות. חוזרים על הפקודות הבאות לכל קבוצת סביבות שמוזכרת בקובץoverrides.yaml:הרצת בדיקה:
helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=$ENV_GROUP \ -f overrides.yaml \ --dry-run=server
ENV_GROUP_RELEASE_NAME הוא שם שמשמש למעקב אחרי התקנות ושדרוגים של תרשים
apigee-virtualhosts. השם הזה צריך להיות ייחודי ולא יכול להיות זהה לשמות אחרים של מהדורות Helm בהתקנה. בדרך כלל זהה ל-ENV_GROUP. עם זאת, אם לקבוצת הסביבות יש שם זהה לשם של סביבה בהתקנה, צריך להשתמש בשמות שחרור שונים לקבוצת הסביבות ולסביבה. לדוגמה,dev-envgroup-releaseו-dev-env-release. מידע נוסף על מהדורות ב-Helm זמין בקטע שלושה מושגים חשובים במאמרי העזרה של Helm.מתקינים את התרשים:
helm upgrade $ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=$ENV_GROUP \ -f overrides.yaml
- צריך להתקין קבוצת סביבות אחת (virtualhost) בכל פעם. מציינים את קבוצת הסביבות באמצעות
הארגון שלכם ב-Apigee Hybrid מוכן עכשיו עם הסביבה החדשה לבדיקת תוסף השירות.
ממשיכים בהליך שבמאמר יצירת
APIMExtensionPolicyכדי ליצור מדיניות למקרים חריגים. -
- יוצרים קובץ חדש בשם