仮想ホストを構成する

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

ルーティングする環境固有の 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

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

新しい環境の追加

新しい環境を追加するには、その構成を envs[] プロパティに追加します。次に、新しい virtualhosts.routingRules.path エントリを追加して、新しい環境にマッピングするベースパスを指定します。次の例では、test3 という名前の新しい環境が追加され、2 つのパスを新しい環境にルーティングするように 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[] プロパティは配列であるため、複数の仮想ホストを作成できます。各仮想ホストには一意のホスト エイリアスのセットが必要です。2 つの仮想ホストが同じホスト エイリアスを共有することはできません。たとえば、次の例では、新しい仮想ホスト devapi.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 鍵と証明書を提供する必要があります。この鍵と証明書は、Ingress ゲートウェイと安全な通信を確立するために使用されます。

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