가상 호스트 구성

이 주제에서는 가상 호스트 구성에 대해 설명합니다. 가상 호스트를 통해 Apigee Hybrid는 여러 도메인 이름에 대한 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 환경의 메시지 프로세서로 전송됩니다. 마찬가지로 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[] 속성은 배열이므로 둘 이상의 속성을 만들 수 있습니다. 각 가상 호스트에는 고유한 호스트 별칭 집합이 포함되어야 합니다. 두 호스트로 동일한 호스트 별칭을 공유할 수 없습니다. 예를 들어 새로운 가상 호스트 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 키와 인증서를 제공해야 합니다. 키/인증서는 인그레스 게이트웨이와의 보안 통신을 제공하는 데 사용됩니다.

하이브리드 구성에 적합한 TLS 인증서/키 쌍을 생성하는 방법은 사용자가 결정합니다. 다음 주제는 다른 방법으로 TLS 사용자 인증 정보를 얻을 수 없는 경우 새 하이브리드 설치를 사용해 보거나 테스트하기 위한 샘플로만 제공됩니다.