환경은 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
환경과 연결된 메시지 프로세서로 이를 전송합니다.
마찬가지로 foo1
도 prod
환경에 배포된 경우 호스트 별칭 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 ...