仮想ホストの構成

このトピックでは、仮想ホストの構成について説明します。仮想ホストを使用すると、Apigee Hybrid で複数のドメイン名への API リクエストを処理し、プロキシのベースパスを特定の環境にルーティングすることができます。

ルーティングする環境固有の API プロキシのベースパスを指定するには、virtualhosts.routingRules[] 構成プロパティを使用します。個々のプロパティの詳細については、構成プロパティ リファレンスの virtualhosts をご覧ください。例:

...

virtualhosts:
  - name: vhost1
    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

https://api.example.com/orders などの API 呼び出しが到着すると、リクエストは test1 環境の Message Processor に送信されます。同様に、https://api.example.com/customers へのリクエストが到達すると、test2 環境にルーティングされます。

新しい環境の追加

新しい環境を追加するには、その構成を envs[] プロパティに追加します。次に、新しい virtualhosts.routingRules.path エントリを追加して、新しい環境にマッピングするベースパスを指定します。次の例では、test3 という名前の新しい環境が追加され、2 つのパスを新しい環境にルーティングするように routingRules が更新されています。

virtualhosts:
  - name: vhost1
    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[] プロパティは配列なので、複数作成できます。各仮想ホストには一意のホスト エイリアスのセットが必要です。2 つの仮想ホストが同じホスト エイリアスを共有することはできません。たとえば、次の例では、新しい仮想ホスト devapi.internal.com ドメインに送信されたトラフィックを処理します。

virtualhosts:
  - name: vhost1
    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: vhost2
    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 鍵と証明書を提供する必要があります。この鍵 / 証明書は、Ingress ゲートウェイとの安全な通信を確立するために使用されます。

Hybrid 構成に適切な TLS 証明書と鍵のペアを生成する方法はユーザーが選択します。以下のトピックは、主に、TLS 認証情報を他の方法では取得できない場合に、新しい Hybrid インストールを試用またはテストするためのサンプルとして提供されています。