1.2. 3scale APIcast 게이트웨이 정책
3scale은 Kafka 브리지의 단일 항목 지점을 제공하는 3scale로 배포된 API 게이트웨이인 3scale APIcast와 함께 사용됩니다.
APIcast 정책은 게이트웨이 작동 방식을 사용자 지정하는 메커니즘을 제공합니다. 3scale은 게이트웨이 구성을 위한 표준 정책 세트를 제공합니다. 고유한 정책을 생성할 수도 있습니다.
APIcast 정책에 대한 자세한 내용은 Red Hat 3scale 설명서를 참조하십시오.
Kafka 브리지의 APIcast 정책
Kafka 브리지와 3scale 통합을 위한 샘플 정책 구성은 다음을 정의하는 policies_config.json 파일과 함께 제공됩니다.
- 익명 액세스
- 헤더 수정
- 라우팅
- URL 재작성
이 파일을 통해 게이트웨이 정책을 활성화하거나 비활성화합니다.
이 샘플을 자체 정책을 정의하는 시작점으로 사용할 수 있습니다.
- 익명 액세스
- 익명 액세스 정책은 인증 없이 서비스를 노출하여 HTTP 클라이언트가 제공하지 않는 경우 기본 인증 정보( 익명 액세스용)를 제공합니다. 이 정책은 필수 사항이 아니며 인증이 항상 필요한 경우 비활성화하거나 제거할 수 있습니다.
- 헤더 수정
헤더 수정 정책을 사용하면 기존 HTTP 헤더를 수정하거나 게이트웨이를 통과하는 요청 또는 응답에 새 헤더를 추가할 수 있습니다. 3scale 통합의 경우 정책은 HTTP 클라이언트에서 Kafka 브리지로 게이트웨이를 통과하는 모든 요청에 헤더를 추가합니다.
Kafka 브리지는 새 소비자 생성 요청을 수신하면 소비자가 모든 후속 요청에 사용해야 하는 URI가 있는
base_uri필드가 포함된 JSON 페이로드를 반환합니다. 예를 들면 다음과 같습니다.{ "instance_id": "consumer-1", "base_uri":"http://my-bridge:8080/consumers/my-group/instances/consumer1" }{ "instance_id": "consumer-1", "base_uri":"http://my-bridge:8080/consumers/my-group/instances/consumer1" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow APIcast를 사용하는 경우 클라이언트는 모든 후속 요청을 게이트웨이에 직접 전송하지 않고 Kafka 브리지로 직접 보냅니다. URI에는 게이트웨이 뒤의 Kafka 브리지 주소가 아닌 게이트웨이 호스트 이름이 필요합니다.
헤더 수정 정책을 사용하여 Kafka 브리지에서 게이트웨이 호스트 이름을 사용하도록 헤더가 HTTP 클라이언트의 요청에 추가됩니다.
예를 들어
Forwarded: host=my-gateway:80;proto=http헤더를 적용하면 Kafka 브리지는 다음을 소비자에 제공합니다.{ "instance_id": "consumer-1", "base_uri":"http://my-gateway:80/consumers/my-group/instances/consumer1" }{ "instance_id": "consumer-1", "base_uri":"http://my-gateway:80/consumers/my-group/instances/consumer1" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow X-Forwarded-Path헤더는 클라이언트에서 게이트웨이로 요청에 포함된 원래 경로를 전달합니다. 이 헤더는 게이트웨이가 두 개 이상의 Kafka Bridge 인스턴스를 지원할 때 적용되는 라우팅 정책과 엄격하게 관련이 있습니다.- 라우팅
Kafka Bridge 인스턴스가 두 개 이상 있는 경우 라우팅 정책이 적용됩니다. 요청은 소비자가 처음 생성된 동일한 Kafka Bridge 인스턴스로 전송되어야 하므로 요청은 적절한 Kafka Bridge 인스턴스에 요청을 전달할 게이트웨이의 경로를 지정해야 합니다.
라우팅 정책은 각 브리지 인스턴스의 이름을 지정하고 라우팅은 이름을 사용하여 수행됩니다. Kafka 브리지를 배포할 때
KafkaBridge사용자 정의 리소스에서 이름을 지정합니다.예를 들어 각 요청(
X-Forwarded-Path사용)은 다음과 같습니다.http://my-gateway:80/my-bridge-1/consumers/my-group/instances/consumer1다음으로 전달됩니다.
http://my-bridge-1-bridge-service:8080/consumers/my-group/instances/consumer1URL 재작성 정책은 게이트웨이에서 Kafka 브리지로 요청을 전달할 때 사용되지 않으므로 브리지 이름을 제거합니다.
- URL 재작성
URL 재이동 정책을 사용하면 클라이언트의 특정 Kafka Bridge 인스턴스에 대한 요청이 게이트웨이의 요청을 Kafka 브리지로 전달할 때 브리지 이름을 포함하지 않습니다.
브리지 이름은 브리지에서 노출하는 끝점에서 사용되지 않습니다.