בנושא הזה נדון בניווט בנתיב בסיס. ניתוב נתיב בסיסי מאפשר לכם להגדיר ולנהל את האופן שבו Apigee Hybrid מנתב קריאות לשרתי proxy של API לסביבה הנכונה.
שימוש בניתוב נתיב בסיסי לניהול פריסות של שרתי proxy
מכיוון שאפשר למפות מארח וירטואלי יחיד לכמה סביבות בהיברידי, צריך לציין איזה נתיב בסיס של שרת proxy ממופה לאיזו סביבה.
לדוגמה, נניח שרוצים למפות שתי סביבות לאותו שם מארח חלופי:
apitest.mydomain.net. בקובץ ההגדרות שמוגדרות מחדש, אפשר ליצור את ההגדרה הבאה שבה הסביבות dev1 ו-dev2 ממופות למארח הזה. לדוגמה:
envs:
- name: dev1
hostAlias: "apitest.mydomain.net"
...
- name: dev2
hostAlias: "apitest.mydomain.net"
...
נניח שאתם פורסים שרתי proxy בסביבות האלה. אתם פורסים:
- הפניית proxy foo1 עם נתיב בסיס /foo1 אל dev1
- Proxy foo2 with base path /foo2 to dev2
נניח שלקוח קורא ל-API הזה: https://apitest.mydomain.net/foo1. שימו לב שאין בנתיב הזה (או בכותרת המארח שנוצרת לבקשה) שום דבר שמציין ל-Hybrid לאיזו סביבה להפנות את השיחה. האם שרת ה-proxy foo1 נפרס ב-dev1 או ב-dev2?
אי אפשר לדעת רק על סמך כתובת ה-URL של הבקשה. צריך למפות באופן מפורש כל אחד מנתיבי הבסיס האלה לסביבה אחת או יותר.
כדי לציין לאיזו סביבה צריך לנתב קריאה ל-Proxy, מוסיפים את המאפיין paths.uri.prefixes למאפיין envs בקובץ ההגדרות, כמו בדוגמה הבאה:
gcpProjectID: example
k8sClusterName: apigee-hybrid
# Apigee org name.
org: my-org
envs:
# Apigee environment name.
- name: dev1
hostAlias: "apitest.mydomain.net"
sslCertPath: ./certs/keystore.pem
sslKeyPath: ./certs/keystore.key
serviceAccountPaths:
synchronizer: ./service-accounts/example-apigee-synchronizer.json
udca: ./service-accounts/example-apigee-udca.json
paths:
uri:
prefixes:
- /foo1
- name: dev2
hostAlias: "apitest.mydomain.net"
sslCertPath: ./certs/keystore.pem
sslKeyPath: ./certs/keystore.key
serviceAccountPaths:
synchronizer: ./service-accounts/example-apigee-synchronizer.json
udca: ./service-accounts/example-apigee-udca.json
paths:
uri:
prefixes:
- /foo2
...
עכשיו, כשמתקבלת קריאה ל-API כמו: https://apitest.mydomain.net/foo1, נתב הכניסה יודע לאן לשלוח אותה. הוא יודע ששרת ה-proxy /foo1 נפרס בסביבה dev1, והשיחה מנותבת למעבד ההודעות של dev1.
אם תשלח את השיחה הזו, https://apitest.mydomain.net/foo2, היא תנותב באופן דומה אל MP של סביבת dev2 וכן הלאה.
לסיכום, הגדרת paths.uri.prefixes מאפשרת לכם לנהל פריסות של שרת proxy בסביבות שונות שמשתפות את אותו שם מארח.
שיטה מומלצת: כדאי להשתמש בניתוב מבוסס נתיב כשרוצים שכמה סביבות ישתפו את אותו כינוי מארח. ניתוב נתיב בסיסי מאפשר להגביל את מספר השרתים הפרוקסי שנפרסים בכל סביבה יחידה. מידע נוסף זמין במאמר בנושא הגבלת מספר הפריסות של שרתי proxy.
הוספת סביבה חדשה לאותו דומיין
בקטע הזה מוסבר איך להוסיף סביבה חדשה לדומיין.
בתרחיש הזה, נניח שיש לכם סביבה dev1 שכבר פרוסה באשכול. בדוגמה הזו, מותרים רק שרתי proxy עם קידומת של נתיב בסיס /foo1:
gcpProjectID: example
k8sClusterName: apigee-hybrid
# Apigee org name.
org: my-org
envs:
# Apigee environment name.
- name: dev1
hostAlias: "apitest.mydomain.net"
sslCertPath: ./certs/keystore.pem
sslKeyPath: ./certs/keystore.key
serviceAccountPaths:
synchronizer: ./service-accounts/example-apigee-synchronizer.json
udca: ./service-accounts/example-apigee-udca.json
paths:
uri:
prefixes:
- /foo1
mart:
hostAlias: "mart.apigee-hybrid-docs.net"
serviceAccountPath: ./service-accounts/example-apigee-mart.json
sslCertPath: ./certs/fullchain.pem
sslKeyPath: ./certs/privkey.key
metrics:
serviceAccountPath: ./service-accounts/willwitman-istio-25240157d44a.json
כדי להוסיף עוד סביבה שמשתפת את אותו דומיין, פועלים לפי השלבים הבאים:
- יוצרים קובץ חדש של שינויים בהגדרות עם הגדרת הסביבה החדשה. לדוגמה, ההגדרה הזו יוצרת סביבה בשם
dev2. בסביבה הזו, מותרים רק פרוקסי עם סיומת הנתיב/foo2:gcpProjectID: example k8sClusterName: apigee-hybrid # Apigee org name. org: my-org envs: # Apigee environment name. - name: dev2 hostAlias: "apitest.mydomain.net" sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key serviceAccountPaths: synchronizer: ./service-accounts/example-apigee-synchronizer.json udca: ./service-accounts/example-apigee-udca.json paths: uri: prefixes: - /foo2 mart: hostAlias: "mart.apigee-hybrid-docs.net" serviceAccountPath: ./service-accounts/example-apigee-mart.json sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.key metrics: serviceAccountPath: ./service-accounts/willwitman-istio-25240157d44a.json - מריצים את הפקודות הבאות בכל סדר:
apigeectl apply -f overrides/overrides-dev2.yaml -c udca
apigeectl apply -f overrides/overrides-dev2.yaml -c synchronizer
apigeectl apply -f overrides/overrides-dev2.yaml -c runtime
- פורסים את ה-proxy foo2 בסביבה dev2.
- מתקשרים לשרת ה-proxy כדי לבדוק את ההגדרה.
curl https://apitest.mydomain.net/foo2
הוספת נתיב בסיס חדש לשרת proxy לסביבה קיימת
כדי להוסיף נתיב בסיס חדש לסביבה קיימת, פשוט מוסיפים רשומה של prefixes
לכל נתיב בסיס חדש. לדוגמה, אם יוצרים שרת proxy חדש עם נתיב בסיס /foo4 ורוצים לפרוס אותו בסביבה שנקראת dev2, צריך לבצע את השלבים הבאים:
- פותחים את קובץ השינויים שכולל את ההגדרה של סביבת dev2.
- מוסיפים את נתיב הבסיס
/foo4לרכיבpaths.uri.prefixes:gcpProjectID: example k8sClusterName: apigee-hybrid # Apigee org name. org: my-org envs: # Apigee environment name. - name: dev2 hostAlias: "apitest.mydomain.net" sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key serviceAccountPaths: synchronizer: ./service-accounts/example-apigee-synchronizer.json udca: ./service-accounts/example-apigee-udca.json paths: uri: prefixes: - /foo2 - /foo4 mart: hostAlias: "mart.apigee-hybrid-docs.net" serviceAccountPath: ./service-accounts/example-apigee-mart.json sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.key metrics: serviceAccountPath: ./service-accounts/willwitman-istio-25240157d44a.json - מחילים את הרכיב
runtimeעל האשכול:apigeectl apply -f overrides/overrides-dev2.yaml -c runtime
- מתקשרים לשרת ה-proxy כדי לבדוק את ההגדרה.
curl https://apitest.mydomain.net/foo4
אם מתקבלת קריאה ל-API של
https://apitest.mydomain.net/foo4, מערכת ה-Hybrid יודעת להפנות אותה לסביבהdev2.