2장. Kafka 브리지용 3scale 배포
Kafka 브리지와 함께 3scale을 사용하려면 먼저 배포한 다음 Kafka Bridge API를 검색하도록 구성합니다.
또한 3scale APIcast 및 3scale toolbox를 사용합니다.
- APIcast는 3scale에서 HTTP 클라이언트가 Kafka Bridge API 서비스에 연결할 수 있도록 NGINX 기반 API 게이트웨이로 제공됩니다.
- 3scale toolbox는 Kafka Bridge 서비스의 OpenAPI 사양을 3scale로 가져오는 데 사용되는 구성 툴입니다.
이 시나리오에서는 동일한 OpenShift 클러스터에서 AMQ Streams, Kafka, Kafka Bridge 및 3scale/APIcast를 실행합니다.
Kafka Bridge와 동일한 클러스터에 3scale을 이미 배포한 경우 배포 단계를 건너뛰고 현재 배포를 사용할 수 있습니다.
사전 요구 사항
- 3scale 이해
- AMQ Streams 및 Kafka가 실행 중입니다.
- Kafka 브리지 배포
3scale 배포의 경우:
- Red Hat 3scale API Management 지원 구성을 확인합니다.
-
설치에는
system:admin과 같은cluster-admin역할이 있는 사용자가 필요합니다. 다음을 설명하는 JSON 파일에 액세스해야 합니다.
-
Kafka 브리지 OpenAPI 사양 (
openapiv2.json) Kafka Bridge의 헤더 수정 및 라우팅 정책 (
policies_config.json)GitHub 에서 JSON 파일을 찾습니다.
-
Kafka 브리지 OpenAPI 사양 (
자세한 내용은 Red Hat 3scale 설명서를 참조하십시오.
절차
OpenShift 클러스터에 3scale API Management를 배포합니다.
새 프로젝트를 생성하거나 기존 프로젝트를 사용합니다.
oc new-project my-project \ --description="description" --display-name="display_name"3scale 배포.
Red Hat 3scale 설명서는 템플릿 또는 Operator를 사용하여 OpenShift에 3scale을 배포하는 방법을 설명합니다.
어떤 접근 방식을 사용하든 WILDCARD_DOMAIN 매개변수를 OpenShift 클러스터의 도메인으로 설정해야 합니다.
3scale 관리 포털에 액세스하기 위해 제공된 URLS 및 인증 정보를 기록합니다.
Kafka Bridge 서비스를 검색하기 위해 3scale에 대한 권한을 부여합니다.
oc adm policy add-cluster-role-to-user view system:serviceaccount:my-project:amp3scale이 OpenShift 콘솔 또는 CLI에서 Openshift 클러스터에 성공적으로 배포되었는지 확인합니다.
예를 들면 다음과 같습니다.
oc get deployment 3scale-operator3scale toolbox를 설정합니다.
- Red Hat 3scale 설명서에 제공된 정보를 사용하여 3scale toolbox를 설치합니다.
3scale과 상호 작용할 수 있도록 환경 변수를 설정합니다.
export REMOTE_NAME=strimzi-kafka-bridge1 export SYSTEM_NAME=strimzi_http_bridge_for_apache_kafka2 export TENANT=strimzi-kafka-bridge-admin3 export PORTAL_ENDPOINT=$TENANT.3scale.net4 export TOKEN=3scale access token5 - 1
REMOTE_NAME은 3scale 관리 포털의 원격 주소에 할당된 이름입니다.- 2
SYSTEM_NAME은 3scale toolbox를 통해 OpenAPI 사양을 가져와서 생성된 3scale 서비스/API의 이름입니다.- 3
TENANT는 3scale 관리 포털의 테넌트 이름입니다(즉,https://$TENANT.3scale.net).- 4
PORTAL_ENDPOINT는 3scale 관리 포털을 실행하는 엔드포인트입니다.- 5
TOKEN은 3scale toolbox 또는 HTTP 요청을 통한 상호 작용을 위해 3scale 관리 포털에서 제공하는 액세스 토큰입니다.
3scale toolbox의 원격 웹 주소를 구성합니다.
3scale remote add $REMOTE_NAME https://$TOKEN@$PORTAL_ENDPOINT/이제 toolbox를 실행할 때마다 3scale 관리 포털의 끝점 주소를 지정할 필요가 없습니다.
Cluster Operator 배포에 3scale에서 Kafka Bridge 서비스를 검색하는 데 필요한 레이블 및 주석 속성이 있는지 확인합니다.
#... env: - name: STRIMZI_CUSTOM_KAFKA_BRIDGE_SERVICE_LABELS value: | discovery.3scale.net=true - name: STRIMZI_CUSTOM_KAFKA_BRIDGE_SERVICE_ANNOTATIONS value: | discovery.3scale.net/scheme=http discovery.3scale.net/port=8080 discovery.3scale.net/path=/ discovery.3scale.net/description-path=/openapi #...그렇지 않은 경우 OpenShift 콘솔을 통해 속성을 추가하거나 Cluster Operator 및 Kafka Bridge를 재배포합니다.
3scale을 통해 Kafka 브리지 API 서비스를 검색합니다.
- 3scale을 배포할 때 제공된 인증 정보를 사용하여 3scale 관리 포털에 로그인합니다.
- 관리 포털 대시보드의 API 에서 제품 생성을 클릭합니다.
- OpenShift에서 가져오기 를 클릭합니다.
- Kafka 브리지 서비스 선택
제품 생성을 클릭합니다.
Kafka 브리지 서비스를 보려면 페이지를 새로 고쳐야 할 수도 있습니다.
이제 서비스의 구성을 가져와야 합니다. 편집기에서 이 작업을 수행하지만 포털을 열어서 가져오기가 성공했는지 확인합니다.
Kafka Bridge 서비스의 기본 URL을 사용하도록 JSON(OpenAPI 사양)에서 Host 필드를 편집합니다.
예를 들면 다음과 같습니다.
"host": "my-bridge-bridge-service.my-project.svc.cluster.local:8080"호스트URL에 올바른 항목이 포함되어 있는지 확인합니다.- Kafka 브리지 이름(my-bridge)
- 프로젝트 이름 (my-project)
- Kafka 브리지용 포트(8080)
3scale toolbox를 사용하여 업데이트된 OpenAPI 사양을 가져옵니다.
3scale import openapi -k -d $REMOTE_NAME openapiv2.json -t myproject-my-bridge-bridge-service서비스(JSON 파일)의 헤더 수정 및 라우팅 정책을 가져옵니다.
3scale에서 생성한 서비스의 ID를 찾습니다.
여기에서 'jq' 유틸리티 를 사용합니다.
export SERVICE_ID=$(curl -k -s -X GET "https://$PORTAL_ENDPOINT/admin/api/services.json?access_token=$TOKEN" | jq ".services[] | select(.service.system_name | contains(\"$SYSTEM_NAME\")) | .service.id")정책을 가져올 때 ID가 필요합니다.
정책을 가져옵니다.
curl -k -X PUT "https://$PORTAL_ENDPOINT/admin/api/services/$SERVICE_ID/proxy/policies.json" --data "access_token=$TOKEN" --data-urlencode policies_config@policies_config.json
-
3scale 관리 포털에서
으로 이동하여 Kafka Bridge 서비스의 끝점 및 정책이 로드되었는지 확인합니다. -
(애플리케이션 계획 생성)으로 이동하여 애플리케이션 계획을 생성합니다. ScanSetting
. 인증을 위한 사용자 키를 가져오려면 애플리케이션이 필요합니다.
(프로덕션 환경 단계) 프로덕션 게이트웨이에서 API를 사용할 수 있도록 하려면 구성을 승격합니다.
3scale proxy-config promote $REMOTE_NAME $SERVICE_IDAPI 테스트 툴을 사용하여 소비자 생성 호출과 애플리케이션에 대해 생성된 사용자 키를 사용하여 APIcast 게이트웨이를 통해 Kafka 브릿지에 액세스할 수 있는지 확인합니다.
예를 들면 다음과 같습니다.
https//my-project-my-bridge-bridge-service-3scale-apicast-staging.example.com:443/consumers/my-group?user_key=3dfc188650101010ecd7fdc56098ce95Kafka 브리지에서 페이로드가 반환되면 소비자가 성공적으로 생성되었습니다.
{ "instance_id": "consumer1", "base uri": "https//my-project-my-bridge-bridge-service-3scale-apicast-staging.example.com:443/consumers/my-group/instances/consumer1" }기본 URI는 클라이언트가 후속 요청에서 사용할 주소입니다.