בנושא הזה נסביר איך להגדיר מארח וירטואלי. מארחים וירטואליים מאפשרים ל-Apigee hybrid לטפל בבקשות API לכמה שמות דומיין ולנתב נתיבי בסיס של שרתי proxy לסביבות ספציפיות.
כדי לציין לאילו נתיבי בסיס ספציפיים של proxy ל-API בסביבה מסוימת צריך להפנות את הבקשות, משתמשים במאפיין התצורה virtualhosts.routingRules[]. פרטים על כל אחד מהנכסים זמינים במאמר virtualhosts בחומר העזר בנושא מאפייני הגדרות. לדוגמה:
...
virtualhosts:
- name: vhost-one
hostAliases: ["api.example.com"]
sslCertPath: ./certs/fullchain.pem
sslKeyPath: ./certs/privkey.pem
routingRules:
- paths:
- /orders
- /items
env: test1
- paths:
- /customers
env: test2
envs:
- name: test1
serviceAccountPaths:
synchronizer: ./sa/synchronizer.json
udca: ./sa/udca.json
- name: test2
serviceAccountPaths:
synchronizer: ./sa/synchronizer.json
udca: ./sa/udca.json
כשמתקבלת קריאה ל-API כמו: https://api.example.com/orders, הבקשה
נשלחת למעבד ההודעות של סביבת test1. באופן דומה, אם מתקבלת בקשה ל-https://api.example.com/customers, היא מנותבת לסביבת test2.
הוספת סביבה חדשה
כדי להוסיף סביבה חדשה, מוסיפים את ההגדרה שלה למאפיין envs[] ומוסיפים רשומה חדשה של virtualhosts.routingRules.path שמציינת את נתיבי הבסיס שרוצים למפות לסביבה החדשה. בדוגמה הבאה, נוספת סביבה חדשה בשם test3, והנתיבים routingRules עודכנו כדי להפנות שני נתיבים לסביבה החדשה:
virtualhosts:
- name: vhost-one
hostAliases: ["api.example.com"]
sslCertPath: ./certs/fullchain.pem
sslKeyPath: ./certs/privkey.pem
routingRules:
- paths:
- /orders
- /items
env: test1
- paths:
- /v0/hello
- /httpbin
env: test2
- paths:
- /v0/inventory
- /v0/customers
env: test3
envs:
- name: test1
serviceAccountPaths:
synchronizer: ./sa/synchronizer.json
udca: ./sa/udca.json
- name: test2
serviceAccountPaths:
synchronizer: ./sa/synchronizer.json
udca: ./sa/udca.json
- name: test3
serviceAccountPaths:
synchronizer: ./sa/synchronizer.json
udca: ./sa/udca.json
כדי להחיל את העדכון, צריך להחיל רק את הרכיב runtime, באופן הבא:
apigeectl apply -f overrides-file.yaml -c runtime
הוספה של כמה מארחים וירטואליים
המאפיין virtualhosts[] הוא מערך, ולכן אפשר ליצור יותר מאחד. כל מארח וירטואלי חייב להכיל קבוצה ייחודית של כינויי מארח: שני מארחים וירטואליים לא יכולים לחלוק את אותו כינוי מארח. לדוגמה, המארח הווירטואלי החדש dev מטפל בתנועה שנשלחת לדומיין api.internal.com.
virtualhosts:
- name: vhost-one
hostAliases: ["api.example.com"]
sslCertPath: ./certs/fullchain.pem
sslKeyPath: ./certs/privkey.pem
routingRules:
- paths:
- /orders
- /items
env: test1
- paths:
- /v0/hello
- /httpbin
env: test2
- paths:
- /v0/inventory
- /v0/customers
env: test3
- name: vhost-two
hostAliases: ["api.internal.com"]
sslCertPath: ./certs/fullchain.pem
sslKeyPath: ./certs/privkey.pem
routingRules:
- paths:
- /orders
- /items
env: test1
- paths:
- /v0/hello
- /httpbin
env: test2
- paths:
- /v0/inventory
- /v0/customers
env: test3
envs:
- name: test1
serviceAccountPaths:
synchronizer: ./sa/synchronizer.json
udca: ./sa/udca.json
- name: test2
serviceAccountPaths:
synchronizer: ./sa/synchronizer.json
udca: ./sa/udca.json
- name: test3
serviceAccountPaths:
synchronizer: ./sa/synchronizer.json
udca: ./sa/udca.json
כדי להחיל את העדכון, צריך להחיל רק את הרכיב runtime, באופן הבא:
apigeectl apply -f overrides-file.yaml -c runtime
מפתחות ואישורים של TLS
כשיוצרים מארח וירטואלי חדש, צריך לספק מפתח ואישור TLS. המפתח או האישור משמשים לאבטחת התקשורת עם שער הכניסה.
אתם קובעים איך ליצור זוגות של אישורי TLS ומפתחות מתאימים להגדרה ההיברידית. הנושאים הבאים מסופקים כדוגמאות בלבד, והם מיועדים בעיקר לניסיון או לבדיקה של התקנה היברידית חדשה אם אי אפשר להשיג פרטי כניסה של TLS בדרך אחרת:
- במאמר קבלת פרטי כניסה ל-TLS מפורטים שלבים לדוגמה ליצירת זוג מפתחות או אישור TLS מאושר.
- אפשר להשתמש באישור עם חתימה עצמית או בזוגות מפתחות למטרות בדיקה בלבד. איך יוצרים פרטי כניסה ל-TLS בחתימה עצמית