3.4. 제품 구성
API 백엔드의 엔드포인트 호스트인 Private Base URL 필드에 API 백엔드를 선언해야 합니다. APIcast는 모든 인증, 권한 부여, 속도 제한 및 통계가 처리된 후 모든 트래픽을 API 백엔드로 리디렉션합니다.
이 섹션에서는 제품 구성을 안내합니다.
3.4.1. API 백엔드 선언
일반적으로 API의 프라이빗 기본 URL은 관리하는 도메인의 https://api-backend.yourdomain.com:443
(yourdomain.com
)과 같습니다. 예를 들어, Twitter API와 통합하려는 경우 개인 기본 URL은 https://api.twitter.com/
입니다.
이 예제에서는 3scale에서 호스팅하는 Echo API 를 사용하여 경로를 수락하고 요청에 대한 정보를 반환합니다(path, request parameters, headers 등). 프라이빗 기본 URL은 https://echo-api.3scale.net:443
입니다.
절차
프라이빗(관리되지 않음) API가 작동하는지 테스트합니다. 예를 들어, Echo API의 경우
curl
명령을 사용하여 다음 호출을 수행할 수 있습니다.$ curl "https://echo-api.3scale.net:443"
다음과 같은 응답을 받습니다.
{ "method": "GET", "path": "/", "args": "", "body": "", "headers": { "HTTP_VERSION": "HTTP/1.1", "HTTP_HOST": "echo-api.3scale.net", "HTTP_ACCEPT": "*/*", "HTTP_USER_AGENT": "curl/7.51.0", "HTTP_X_FORWARDED_FOR": "2.139.235.79, 10.0.103.58", "HTTP_X_FORWARDED_HOST": "echo-api.3scale.net", "HTTP_X_FORWARDED_PORT": "443", "HTTP_X_FORWARDED_PROTO": "https", "HTTP_FORWARDED": "for=10.0.103.58;host=echo-api.3scale.net;proto=https" }, "uuid": "ee626b70-e928-4cb1-a1a4-348b8e361733" }
3.4.2. 인증 설정 구성
[ your_product_name] > Integration > Settings 의 AUTHENTICATION 섹션에서 API에 대한 인증 설정을 구성할 수 있습니다.
필드 | 설명 |
---|---|
인증 사용자 키 | 인증 정보 위치와 연결된 사용자 키를 설정합니다. |
인증 정보 위치 | 인증 정보가 HTTP 헤더로 전달되는지, 쿼리 매개변수 또는 HTTP 기본 인증으로 전달되는지 여부를 정의합니다. |
호스트 헤더 | 사용자 지정 호스트 요청 헤더를 정의합니다. 이는 API 백엔드가 특정 호스트의 트래픽만 허용하는 경우에만 필요합니다. |
시크릿 토큰 | API 백엔드에 대한 직접 개발자 요청을 차단하는 데 사용됩니다. 여기에서 헤더 값을 설정하고 백엔드에서 이 시크릿 헤더를 사용하여 호출만 허용하도록 합니다. |
또한 [ your_product_name] > Integration > Settings 에서 GATEWAY RESPONSE 오류 코드를 구성할 수 있습니다. 오류 (인증 실패, 인증 누락 및 일치하는 항목이 없음)에 대한 응답 코드, 콘텐츠 유형 및 응답 본문을 정의합니다.
응답 코드 | 응답 본문 |
---|---|
403 | 인증이 실패했습니다 |
403 | 인증 매개변수가 누락됨 |
404 | 일치하는 매핑 규칙 없음 |
429 | 사용량 제한 초과 |
3.4.3. API 테스트 호출 구성
API를 구성하려면 제품을 사용하여 백엔드를 테스트하고 APIcast 구성을 준비 및 프로덕션 환경으로 승격하여 요청 호출을 기반으로 테스트를 수행해야 합니다.
각 제품의 경우 요청은 경로에 따라 해당 백엔드로 리디렉션됩니다. 이 경로는 제품에 백엔드를 추가할 때 구성됩니다. 예를 들어 제품에 두 개의 백엔드가 추가되면 각 백엔드에는 고유한 경로가 있습니다.
사전 요구 사항
- 제품에 하나 이상의 백엔드가 추가되었습니다.
- 각 백엔드의 매핑 규칙이 제품에 추가되었습니다.
- 액세스 정책을 정의하는 애플리케이션 계획입니다.
- 애플리케이션 계획을 구독하는 애플리케이션입니다.
절차
- [ your_product_name] > Integration > Configuration으로 이동하여 APIcast 구성을 스테이징으로 승격합니다.
APIcast Configuration에서 제품에 추가된 각 백엔드의 매핑 규칙을 확인할 수 있습니다. promote v.[n] to Staging APIcast 를 클릭합니다.
- v.[n] 은 승격할 버전 번호를 나타냅니다.
스테이징으로 승격되면 프로덕션으로 승격할 수 있습니다. Staging APIcast에서 promote v.[n] to Production APIcast를 클릭합니다.
- v.[n] 은 승격할 버전 번호를 나타냅니다.
명령줄에서 API에 대한 요청을 테스트하려면 테스트에 대해 예제 curl에 제공된 명령을 사용합니다.
- curl 명령 예제는 제품의 첫 번째 매핑 규칙을 기반으로 합니다.
API에 대한 요청을 테스트할 때 메서드 및 메트릭을 추가하여 매핑 규칙을 수정할 수 있습니다.
구성을 수정하고 API를 호출하기 전에 스테이징(Staging) 및 프로덕션(Production) 환경으로 승격해야 합니다. 스테이징 환경으로 승격할 보류 중인 변경 사항이 있는 경우 Integration 메뉴 항목 옆에 관리 포털에 느낌표가 표시됩니다.
3scale 호스팅 APIcast 게이트웨이는 인증 정보를 검증하고 API의 애플리케이션 계획에 대해 정의한 속도 제한을 적용합니다. 인증 정보 없이 호출하거나 잘못된 인증 정보를 사용하는 경우 Authentication failed
오류 메시지가 표시됩니다.
3.4.4. Podman에 APIcast 배포
이는 Red Hat 3scale API Management API 게이트웨이로 사용할 Pod Manager(Podman) 컨테이너 환경에 APIcast를 배포하는 단계별 가이드입니다.
Podman 컨테이너 환경에 APIcast를 배포할 때 지원되는 RHEL(Red Hat Enterprise Linux) 및 Podman은 다음과 같습니다.
- RHEL 8.x/9.x
- Podman 4.2.0/4.1.1
사전 요구 사항
- 3scale 관리 포털에서 3장. APIcast 설치에 따라 APIcast를 구성해야 합니다.
Red Hat Ecosystem Catalog에 액세스할 수 있습니다.
- 레지스트리 서비스 계정을 생성하려면 레지스트리 서비스 계정 생성 및 수정을 참조하십시오.
Podman 컨테이너 환경에 APIcast를 배포하려면 다음 섹션에 설명된 단계를 수행합니다.
3.4.4.1. Podman 컨테이너 환경 설치
이 가이드에서는 RHEL 8.x에서 Podman 컨테이너 환경을 설정하는 단계를 설명합니다. Docker는 RHEL 8.x에 포함되어 있지 않으므로 컨테이너 작업을 위해 Podman을 사용합니다.
RHEL 8.x를 사용한 Podman에 대한 자세한 내용은 컨테이너 명령줄 참조를 확인하십시오.
절차
Podman 컨테이너 환경 패키지를 설치합니다.
$ sudo dnf install podman
추가 리소스
다른 운영 체제의 경우 다음 Podman 설명서를 참조하십시오.
- podman 설치 지침
3.4.4.2. Podman 환경 실행
Podman 컨테이너 환경을 실행하려면 아래 절차를 따르십시오.
절차
Red Hat 레지스트리에서 Podman 컨테이너 이미지를 사용할 준비가 된 것을 다운로드합니다.
$ podman pull registry.redhat.io/3scale-amp2/apicast-gateway-rhel8:3scale2.13
Podman에서 APIcast를 실행합니다.
$ podman run --name apicast --rm -p 8080:8080 -e THREESCALE_PORTAL_ENDPOINT=https://<access_token>@<domain>-admin.3scale.net registry.redhat.io/3scale-amp2/apicast-gateway-rhel8:3scale2.13
여기서
<access_token>
은 3scale 계정 관리 API의 액세스 토큰입니다. 액세스 토큰 대신 공급자 키를 사용할 수 있습니다.<domain>-admin.3scale.net
은 3scale 관리 포털의 URL입니다.
이 명령은 포트 8080
에서 "apicast"라는 Podman 컨테이너 엔진을 실행하고 3scale 관리 포털에서 JSON 구성 파일을 가져옵니다. 기타 구성 옵션은 APIcast 설치를 참조하십시오.
3.4.4.2.1. Podman을 사용하여 APIcast 테스트
이전 단계에서는 3scale 레지스트리의 고유한 구성 파일 및 Podman 컨테이너 이미지를 사용하여 Podman 컨테이너 엔진이 실행되고 있는지 확인합니다. 포트 8080
에서 APIcast를 통해 호출을 테스트하고 3scale 계정에서 가져올 수 있는 올바른 인증 정보를 제공할 수 있습니다.
테스트 호출은 APIcast가 올바르게 실행되고 있는지 확인할 뿐만 아니라 인증 및 보고가 성공적으로 처리되고 있는지도 확인합니다.
호출에 사용하는 호스트가 Integration (통합) 페이지의 Public Base URL 필드에 구성된 호스트와 같은지 확인합니다.
3.4.4.3. podman
명령 옵션
podman
명령에 다음 옵션 예제를 사용할 수 있습니다.
-
-d
: 분리된 모드로 컨테이너를 실행하고 컨테이너 ID를 출력합니다. 지정하지 않으면 컨테이너가 전경 모드에서 실행되며CTRL + c
를 사용하여 중지할 수 있습니다. 분리 모드에서 시작되면podman attach
명령을 사용하여 컨테이너에 다시 연결할 수 있습니다(예:podman attach apicast
). -
ps
및-a
: Podmanps
는 생성 및 실행 중인 컨테이너를 나열하는 데 사용됩니다.ps
명령에-a
를 추가하면 실행 중이고 중지된 모든 컨테이너(예:podman ps -a
)가 표시됩니다. -
inspect
및-l
: 실행 중인 컨테이너를 검사합니다. 예를 들어, 컨테이너에 할당된 ID를 확인하려면inspect
를 사용합니다.-l
을 사용하여 최신 컨테이너의 세부 정보를 가져옵니다(예:podman inspect -l | grep Id\":
).