בנושא הזה נדון בניווט בנתיב בסיסי. ניתוב נתיב בסיסי מאפשר לכם להגדיר ולנהל את האופן שבו 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 עם נתיב בסיס /foo2 אל 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, המערכת ההיברידית יודעת להפנות אותה לסביבהdev2.