환경 정보

환경은 API 프록시를 실행하기 위한 격리된 컨텍스트 또는 '샌드박스'를 제공합니다. 단일 조직에서 여러 개의 환경을 만들 수 있습니다.

다음 코드는 여러 환경이 정의된 재정의 구성의 예시를 보여줍니다.

namespace: my-namespace
org: my-organization
...
envs:
  - name: test
    serviceAccountPaths:
      synchronizer: "your_keypath/synchronizer-manager-service-account.json
      udca: "your_keypath/analytic-agent-service-account.json

  - name: prod
    serviceAccountPaths:
      synchronizer: "your_keypath/synchronizer-manager-service-account.json
      udca: "your_keypath/analytic-agent-service-account.json
...

기본 경로가 /foo1인 프록시가 환경 test에 배포되었다고 가정해 보겠습니다. 다음과 같이 프록시를 호출할 수 있습니다.

curl -k https://api.example.com/foo1

이 호출이 인그레스에 도달하면 인그레스는 요청을 처리하는 test 환경과 연결된 메시지 프로세서로 이를 전송합니다.

마찬가지로 foo1prod 환경에 배포된 경우 호스트 별칭 apiprod.mydomain.net에 다음과 같은 프록시 요청을 보낼 수 있습니다.

curl -k https://apiprod.example.com/foo1

그러면 인그레스가 이 호스트와 연결된 MP로 라우팅됩니다.

Antipattern: 모든 프록시를 하나의 하이브리드 환경에 배포합니다.

권장사항: 여러 환경을 만들고 각 환경에 제한된 수의 프록시를 배포하세요.

프록시 배포 수 제한

하이브리드의 경우 많은 환경에서 환경 그룹에 정의된 것과 동일한 가상 호스트를 공유할 수 있으므로 특정 환경에 대한 프록시 배포를 관리하는 방법을 신중하게 생각해야 합니다. 하이브리드에서 권장사항은 여러 환경을 만들고 각 환경에 제한된 수의 프록시를 배포하는 것입니다.

환경에 몇 개의 프록시를 배포해야 하나요? 이 질문에 대한 답변 집합은 없습니다. 그러나 다음 표에서 각 환경에 배포된 프록시의 수를 제한하는 것이 좋은 이유와 프록시 배포를 관리할 때 고려해야 할 사항에 대한 일반적인 안내를 제공합니다.

고려할 문제 설명
메시지 프로세서 부팅 시간 메시지 프로세서(MP)의 부팅에 소요되는 시간과 해당 MP에 배포된 프록시 수 사이에는 직접적인 상관관계가 있습니다. 자동 확장 Kubernetes 환경에서 부팅 시간이 늘어나는 것은 문제가 될 수 있습니다. MP에 배포되는 프록시가 많을수록 확장이나 다시 만들기가 필요한 경우에는 MP가 준비될 때까지 더 오랜 시간이 걸립니다.
확장 성능 환경에 배포된 프록시가 여러 개 있고 프록시 중 하나가 트래픽이 많아 빈번하게 자동 확장되는 경우, 해당 환경의 모든 프록시가 이 프록시와 함께 확장됩니다. 트래픽이 많은 단일 프록시가 포함된 복수의 프록시 확장이 성능에 미치는 영향은 문제가 될 수 있습니다.
트래픽 많은 이웃 동일한 환경에 여러 프록시가 배포되어 있고 하나의 프록시가 비정상 종료되면 MP가 다시 시작되는 동안 환경의 모든 프록시가 다운됩니다. 환경에 배포된 프록시 수를 제한하여 단일 프록시 비정상 종료의 영향을 최소화할 수 있습니다.

환경 그룹 및 virtualhost

환경 그룹을 사용하면 환경을 그룹화할 수 있습니다. 각 그룹 내 환경은 동일한 호스트 이름을 공유합니다. 멀티 리전 하이브리드 설치를 구현하는 경우 환경을 함수, 호스트 이름 주소, 리전별로 또는 원하는 다른 측정항목으로 그룹화할 수 있습니다.

라우팅은 환경 그룹 호스트 이름, API 프록시 기본 경로, 환경의 조합으로 관리되므로 각 가상 호스트는 환경 그룹 이름과 해당 인증서만 나열하면 됩니다.

다음 코드는 여러 virtualhost가 정의된 구성 재정의 예시를 보여줍니다. virtualhost의 이름은 환경 그룹 이름이어야 합니다.

gcp:
  region: us-central1
  projectID: hybrid-example

k8sCluster:
  name: apigee-hybrid
  region: us-central1

org: hybrid-example

instanceID: "my_hybrid_example"

virtualhosts:
  - name: group-1  # the name of an environment group
    sslCertPath: ./certs/keystore.pem
    sslKeyPath: ./certs/keystore.key

virtualhosts:
  - name: group-2
    sslCertPath: ./certs/keystore.pem
    sslKeyPath: ./certs/keystore.key
...

추가 리소스