הגדרת מארחים וירטואליים

בנושא הזה נסביר איך להגדיר מארח וירטואלי. מארחים וירטואליים מאפשרים ל-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 בדרך אחרת: