הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.
לעיון במסמכי התיעוד של
Apigee Edge
בדף הזה מוסבר איך להחיל מדיניות של Apigee על תנועה שעוברת דרך שער Kubernetes על ידי יצירת APIMExtensionPolicy משאב מותאם אישית. Apigee Operator for Kubernetes עוקב אחרי משאבי APIMExtensionPolicy ומגדיר את השער בהתאם.
Apigee
אם אתם משתמשים ב-Apigee, פועלים לפי השלבים הבאים.
לפני שמתחילים
לפני שמתחילים במשימה הזו, צריך לבצע את השלבים הבאים:
- מוודאים ש-Workload Identity מוגדר באשכול GKE. השלבים הנדרשים מפורטים במאמר הגדרת איחוד זהויות של עומסי עבודה ל-GKE.
- מוודאים ששער GKE מוגדר באשכול ופועל. פרטים נוספים מופיעים במאמר בנושא פריסת שערים.
- מתקינים את Apigee Operator ל-Kubernetes. הוראות ההתקנה מופיעות במאמר התקנת Apigee Operator ל-Kubernetes.
יצירת APIMExtensionPolicy
בשלב הזה, יוצרים את APIMExtensionPolicy ומחילים אותו על GKE Gateway שפועל באשכול. המדיניות הזו חלה על כל התנועה שעוברת דרך Gateway ועל HTTPRoutes שמשויך אליו, באופן דומה ל-flowhook ברמת הסביבה ב-Apigee כיום.
כדי ליצור את APIMExtensionPolicy:
- יוצרים קובץ בשם
global-ext-lb1-apim-policy.yamlעם התוכן הבא:# global-ext-lb1-apim-policy.yaml apiVersion: apim.googleapis.com/v1 kind: APIMExtensionPolicy metadata: name: global-ext-lb1-apim-policy namespace: apim spec: apigeeEnv: ENV_NAME # optional location: global failOpen: false timeout: 1000ms defaultSecurityEnabled: true targetRef: # identifies the Gateway where the extension should be applied name: global-ext-lb1 kind: Gateway namespace: default - מחליפים את
ENV_NAMEבשם של סביבת Apigee שנוצרה בשלב ההתקנה יצירת סביבת Apigee.הערה: אם מתקינים את Apigee Operator for Kubernetes באמצעות הדגל
generateEnv=TRUE, לא צריך למלא את השדהapigeeEnv.אתם יכולים לראות את כל הסביבות שזמינות בדף Environments במסוף Google Cloud .
- החלת המדיניות:
kubectl -n apim apply -f global-ext-lb1-apim-policy.yamlאחרי שמחילים את המדיניות, Apigee Operator for Kubernetes יוצר ברקע משאבי רשת.
- כדי לבדוק את הסטטוס של
APIMExtensionPolicy, מריצים את הפקודה הבאה:kubectl -n apim get APIMExtensionPolicyהפלט אמור להיראות כך, עם
STATEשלRUNNING:NAME STATE ERRORMESSAGE global-ext-lb1-apim-policy RUNNING
בדיקת המדיניות
משתמשים בפקודה הבאה כדי לשלוח בקשה ל-Gateway:
- קבלת כתובת ה-IP של השער:
export GATEWAY_IP=$(kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -n default -o=jsonpath='{.status.addresses[0].value}')echo $GATEWAY_IPמחליפים את
GATEWAY_NAMEבשם של שער, לדוגמהglobal-ext-lb1. - שליחת בקשה לנקודת קצה שהוגדרה ב-
HTTPRoute:curl http://$GATEWAY_IP/get -H "Host: HOST_NAME"מחליפים את
HOST_NAMEבשם המארח שהוגדר ב-HTTPRouteשל שער, לדוגמהexample.httpbin.com. - הבקשה אמורה להיכשל כי הערך
defaultSecurityEnabled: trueהוגדר במשאבAPIMExtensionPolicy, שמאפשר אימות של מפתח API ושל אסימון גישה. אמורה להתקבל תגובה שדומה לתגובה הבאה:{"fault":{"faultstring":"Raising fault. Fault name : RF-insufficient-request-raise-fault","detail":{"errorcode":"steps.raisefault.RaiseFault"}}}המשמעות היא שמדיניות התוסף Apigee פעילה, ושהאכיפה של מפתח ה-API ואימות אסימון הגישה פעילים.
המאמרים הבאים
Apigee Hybrid
אם אתם משתמשים ב-Apigee hybrid, אתם צריכים לפעול לפי השלבים הבאים.
לפני שמתחילים
ההליך הזה מניח שהתקנתם את Apigee Operator for Kubernetes על ידי ביצוע השלבים במאמר התקנת Apigee Operator for Kubernetes עבור Apigee hybrid.
יצירת סוד של אישור TLS
ב-APIMExtensionPolicy צריך להזין את האישור הציבורי בקידוד Base64 שמשויך לשם המארח של קבוצת הסביבות. יצרתם את האישור הזה במאמר התקנת סביבת Apigee Hybrid באמצעות Helm. צריך ליצור סוד של Kubernetes במרחב השמות apim כדי לספק את האישור הזה לאופרטור.
- מקבלים את מחרוזת האישור בקידוד Base64 מהקובץ שיצרתם במהלך ההתקנה:
cat $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/certs/keystore_ENV_GROUP.pem.base64 - יוצרים קובץ בשם
secret-cert.yamlעם התוכן הבא:# secret-cert.yaml apiVersion: v1 kind: Secret metadata: name: apigee-conf namespace: apim data: ca.crt: BASE64_ENCODED_CERT_STRING - מחליפים את
BASE64_ENCODED_CERT_STRINGבפלט מהפקודהcatבשלב 1. - מחילים את הסוד על האשכול:
kubectl apply -f secret-cert.yaml
הגדרה והחלה של APIMExtensionPolicy
מגדירים משאב APIMExtensionPolicy ומחילים אותו על Istio Gateway שפועל באשכול. התוסף הזה של המדיניות מיירט תנועה שמנוהלת על ידי שער (Gateway)
והתוסף המשויך HTTPRoutes, ומחיל מדיניות של Apigee לפני העברת
בקשות ליעד בקצה העורפי.
- יוצרים קובץ בשם
istio-gateway-apim-policy.yamlעם התוכן הבא:# istio-gateway-apim-policy.yaml apiVersion: apim.googleapis.com/v1 kind: APIMExtensionPolicy metadata: name: istio-gateway-apim-policy namespace: apim spec: apigeeEnv: ENV_NAME ingressCertSecret: apigee-conf apigeeAuthority: HOST_NAME apigeeIngressIP: INGRESS_IP_ADDRESS location: global failOpen: false timeout: 1000ms defaultSecurityEnabled: true targetRef: # identifies the Gateway where the extension should be applied group: gateway.networking.k8s.io kind: Gateway name: istio-gateway namespace: default - מחליפים את המשתנים הבאים:
-
ENV_NAME: השם של סביבת Apigee Hybrid שיצרתם עם הפעלת תוספי שירות, לדוגמהmy-hybrid-env. -
HOST_NAME: שם הדומיין שמשמש לקבוצת הסביבות, לדוגמהmy-proxies.example.com. -
INGRESS_IP_ADDRESS: כתובת ה-IP של תעבורת הנתונים הנכנסת (ingress) של זמן הריצה של Apigee Hybrid. פרטים על אחזור כתובת ה-IP הזו מופיעים במאמר בנושא חשיפת תעבורת נתונים נכנסת (ingress) ב-Apigee.
-
- מחילים את המדיניות על האשכול:
kubectl -n apim apply -f istio-gateway-apim-policy.yaml - אחרי שהמשאב מוחל, Apigee Operator for Kubernetes מתחיל להגדיר את משאבי הרשת של השער. בודקים את הסטטוס של
APIMExtensionPolicy:kubectl -n apim get APIMExtensionPolicy - מחכים עד ש
STATEמציגRUNNING. הפלט אמור להיראות כך:NAME STATE ERRORMESSAGE istio-gateway-apim-policy RUNNING
בדיקת המדיניות
ב-APIMExtensionPolicy שנוצר בשלב הקודם, הערך של defaultSecurityEnabled הוגדר ל-true. כך מופעלות באופן אוטומטי מדיניות אימות של מפתח API ושל טוקן OAuth2 לתנועה שתואמת לשער הזה. כדי לבדוק את זה, שולחים בקשה לא מאומתת לשירות לדוגמה httpbin שהגדרתם כשאימתתם את הגדרת Istio Gateway ב-Verify the Istio Gateway setup (אימות ההגדרה של Istio Gateway).
- קבלת כתובת ה-IP של השער:
export GATEWAY_IP=$(kubectl get gateways.gateway.networking.k8s.io istio-gateway -n default -o=jsonpath='{.status.addresses[0].value}')echo $GATEWAY_IP - שליחת בקשה לנקודת הקצה
/getשהוגדרה ב-HTTPRoute:curl http://$GATEWAY_IP/get -H "Host: example.httpbin.com" -v - מכיוון שנדרש אימות ל-
defaultSecurityEnabled: true(למשל, מפתח API תקין), מערכת Apigee צריכה לדחות את הבקשה עם שגיאת אימות. התשובה צריכה להיות דומה לתשובה הבאה:{"fault":{"faultstring":"Raising fault. Fault name : RF-insufficient-request-raise-fault","detail":{"errorcode":"steps.raisefault.RaiseFault"}}}הפלט הזה מאשר ש-
APIMExtensionPolicyפעיל ושמדיניות Apigee נאכפת על ידי Istio Gateway.
המאמרים הבאים
כאן מוסבר איך ליצור מוצרי API, מפתחים ואפליקציות כדי לקבל מפתחות API לבקשות מאומתות: