Red Hat 3scale API Management 운영
배포 자동화, 환경 확장 및 문제 해결 방법
초록
Red Hat 문서에 관한 피드백 제공 링크 복사링크가 클립보드에 복사되었습니다!
문서 개선을 위한 의견에 감사드립니다.
개선 사항을 제안하려면 Jira 문제를 열고 제안된 변경 사항을 설명합니다. 귀하의 요청을 신속하게 처리할 수 있도록 가능한 한 자세한 정보를 제공하십시오.
사전 요구 사항
- Red Hat 고객 포털 계정이 있어야 합니다. 이 계정을 사용하면 Red Hat Jira Software 인스턴스에 로그인할 수 있습니다. 계정이 없는 경우 계정을 생성하라는 메시지가 표시됩니다.
프로세스
- 다음 Create 문제를 클릭합니다.
- 요약 텍스트 상자에 문제에 대한 간략한 설명을 입력합니다.
설명 텍스트 상자에 다음 정보를 입력합니다.
- 문제를 발견한 페이지의 URL입니다.
-
문제에 대한 자세한 설명입니다.
다른 필드에 있는 정보는 기본값에 따라 그대로 둘 수 있습니다.
- 생성 을 클릭하여 Jira 문제를 문서 팀에 제출합니다.
피드백을 제공하기 위해 시간을 내어 주셔서 감사합니다.
1장. 3scale API Management 일반 구성 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat 3scale API Management 관리자는 설정을 조정할 수 있는 설치 또는 계정에서 사용할 수 있는 일반 구성 옵션이 있습니다.
1.1. 유효한 로그인 세션 길이 구성 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat 3scale API Management 관리자는 관리 포털과 개발자 포털에 유효한 로그인 세션 길이를 구성하여 최대 시간 초과 및 비활성 상태에 대한 제한이 있도록 할 수 있습니다.
유효한 로그인 세션 길이를 구현하려면 USER_SESSION_TTL 을 초로 설정해야 합니다. 예를 들어 1,800초는 30분입니다. 값이 null, 즉, 설정되지 않았거나 빈 문자열로 설정된 경우 세션 기본 길이는 2 주 동안입니다.
사전 요구 사항
- 관리자 권한이 있는 3scale 계정입니다.
프로세스
system-app시크릿에서USER_SESSION_TTL값을 초 단위로 업데이트합니다.oc patch secret system-app -p '{"stringData": {"USER_SESSION_TTL": "'1800'"}}'$ oc patch secret system-app -p '{"stringData": {"USER_SESSION_TTL": "'1800'"}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow rollout
system-app:oc rollout restart deployment/system-app
$ oc rollout restart deployment/system-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2장. 3scale API Management 작업 및 확장 링크 복사링크가 클립보드에 복사되었습니다!
이 문서는 랩탑 또는 유사한 최종 사용자 장비에 로컬 설치를 위한 것이 아닙니다.
이 섹션에서는 Red Hat 3scale API Management 2.16 설치의 작업 및 확장 작업에 대해 설명합니다.
사전 요구 사항
- 지원되는 OpenShift 버전에 설치되어 처음 구성된 3scale 온-프레미스 인스턴스입니다.
3scale 작업 및 스케일링 작업을 수행하려면 다음 섹션에 설명된 단계를 수행합니다.
2.1. APIcast 재배포 링크 복사링크가 클립보드에 복사되었습니다!
3scale 관리 포털을 통해 시스템 변경 사항을 테스트하고 승격할 수 있습니다.
사전 요구 사항
- 3scale 온-프레미스의 배포된 인스턴스입니다.
- APIcast 배포 방법을 선택했습니다.
기본적으로 포함된 OpenShift 클러스터와 다른 OpenShift 클러스터에 모두 APIcast 배포는 3scale 관리 포털을 통해 스테이징 및 프로덕션 게이트웨이에 변경 사항을 게시할 수 있도록 구성됩니다.
OpenShift에 APIcast를 재배포하려면 다음을 수행합니다.
프로세스
- 시스템을 변경합니다.
- 관리 포털에서 스테이징 및 테스트에 배포합니다.
- 관리 포털에서 프로덕션으로 승격합니다.
기본적으로 APIcast는 5분마다 한 번씩 승격된 업데이트를 검색하고 게시합니다.
Docker 컨테이너 환경 또는 네이티브 설치에서 APIcast를 사용하는 경우 스테이징 및 프로덕션 게이트웨이를 구성하고 게이트웨이에서 게시된 변경 사항을 검색하는 빈도를 나타냅니다. APIcast 게이트웨이를 구성한 후 3scale 관리 포털을 통해 APIcast를 재배포할 수 있습니다.
Docker 컨테이너 환경 또는 네이티브 설치에 APIcast를 재배포하려면 다음을 수행합니다.
프로세스
- APIcast 게이트웨이를 구성하고 3scale 온-프레미스에 연결합니다.
- 시스템을 변경합니다.
- 관리 포털에서 스테이징 및 테스트에 배포합니다.
- 관리 포털에서 프로덕션으로 승격합니다.
APIcast는 구성된 빈도로 승격된 업데이트를 검색하고 게시합니다.
2.2. 온프레미스 3scale API Management 확장 링크 복사링크가 클립보드에 복사되었습니다!
APIcast 배포가 증가함에 따라 사용 가능한 스토리지 양을 늘려야 할 수 있습니다. 스토리지를 확장하는 방법은 영구 스토리지에 사용하는 파일 시스템의 유형에 따라 다릅니다.
NFS(네트워크 파일 시스템)를 사용하는 경우 다음 명령을 사용하여 PV(영구 볼륨)를 확장할 수 있습니다.
oc edit pv <pv_name>
$ oc edit pv <pv_name>
다른 스토리지 방법을 사용하는 경우 다음 섹션에 나열된 방법 중 하나를 사용하여 영구 볼륨을 수동으로 확장해야 합니다.
2.2.1. 방법 1: 영구 볼륨 백업 및 교체 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
- 기존 영구 볼륨에서 데이터를 백업합니다.
- 새 크기 요구 사항에 맞게 확장된 대상 영구 볼륨을 생성하고 연결합니다.
-
사전 바인딩된 영구 볼륨 클레임을 생성하고
volumeName필드를 사용하여 새 PVC(PersistentVolumeClaim) 및 영구 볼륨 이름을 지정합니다. - 백업에서 새로 생성된 PV로 데이터를 복원합니다.
새 PV의 이름으로 배포 구성을 수정합니다.
oc edit deployment/system-app
$ oc edit deployment/system-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 새 PV가 구성되어 올바르게 작동하는지 확인합니다.
- 이전 PVC를 삭제하여 클레임된 리소스를 해제합니다.
2.2.2. 방법 2: 3scale API Management 백업 및 재배포 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
- 기존 영구 볼륨에서 데이터를 백업합니다.
- 3scale Pod를 종료합니다.
- 새 크기 요구 사항에 맞게 확장된 대상 영구 볼륨을 생성하고 연결합니다.
- 백업에서 새로 생성된 PV로 데이터를 복원합니다.
사전 바인딩된 영구 볼륨 클레임을 생성합니다. 다음을 지정합니다.
- 새 PVC의 크기
-
volumeName필드를 사용하는 영구 볼륨 이름입니다.
- amp.yml 을 배포합니다.
- 새 PV가 구성되어 올바르게 작동하는지 확인합니다.
- 이전 PVC를 삭제하여 클레임된 리소스를 해제합니다.
2.2.3. 온프레미스 배포 3scale API Management 구성 링크 복사링크가 클립보드에 복사되었습니다!
3scale에 맞게 스케일링할 주요 배포 구성은 다음과 같습니다.
- APIcast 프로덕션
- 백엔드 리스너
- 백엔드 작업자
2.2.3.1. OCP를 통한 확장 링크 복사링크가 클립보드에 복사되었습니다!
APIManager CR을 사용하는 OCP(OpenShift Container Platform)를 통해 배포 구성을 확장 또는 축소할 수 있습니다.
특정 배포 구성을 확장하려면 다음을 사용합니다.
다음 APIManager CR을 사용하여 APIcast 프로덕션 배포 구성을 확장합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 APIManager CR을 사용하여 배포 구성의 백엔드 리스너, 백엔드 작업자 및 백엔드 cron 구성 요소를 확장합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 적절한 환경 변수를 Pod당 원하는 프로세스 수로 설정합니다.
backend-listenerPod의PUMA_WORKERS:oc set env deployment/backend-listener --overwrite PUMA_WORKERS=<number_of_processes>
$ oc set env deployment/backend-listener --overwrite PUMA_WORKERS=<number_of_processes>Copy to Clipboard Copied! Toggle word wrap Toggle overflow system-appPod의UNICORN_WORKERS:oc set env deployment/system-app --overwrite UNICORN_WORKERS=<number_of_processes>
$ oc set env deployment/system-app --overwrite UNICORN_WORKERS=<number_of_processes>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.3.2. 수직 및 수평 하드웨어 확장 링크 복사링크가 클립보드에 복사되었습니다!
리소스를 추가하여 OpenShift에서 3scale 배포의 성능을 향상시킬 수 있습니다. 수평 확장으로 OpenShift 클러스터에 더 많은 컴퓨팅 노드를 Pod로 추가하거나 기존 컴퓨팅 노드에 리소스를 수직 확장으로 할당할 수 있습니다.
수평 스케일링
더 많은 컴퓨팅 노드를 OpenShift에 Pod로 추가할 수 있습니다. 추가 컴퓨팅 노드가 클러스터의 기존 노드와 일치하는 경우 환경 변수를 재구성할 필요가 없습니다.
수직 확장
기존 컴퓨팅 노드에 더 많은 리소스를 할당할 수 있습니다. 더 많은 리소스를 할당하는 경우 성능을 높이기 위해 Pod에 프로세스를 추가해야 합니다.
3scale 배포에서 다른 사양 및 구성이 있는 컴퓨팅 노드를 사용하지 마십시오.
2.2.3.3. 라우터 확장 링크 복사링크가 클립보드에 복사되었습니다!
트래픽이 증가함에 따라 Red Hat OCP 라우터에서 요청을 적절하게 처리할 수 있는지 확인합니다. 라우터에서 요청 처리량을 제한하는 경우 라우터 노드를 확장해야 합니다.
2.3. 작업 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 OpenShift에 표시되도록 3scale 감사 로깅을 구성하는 방법과 OpenShift에서 3scale 로그 및 작업 큐에 액세스하는 방법을 설명합니다.
2.3.1. OpenShift에서 3scale API Management 감사 로깅 구성 링크 복사링크가 클립보드에 복사되었습니다!
이를 통해 Elasticsearch, Fluentd 및 Kibana(EFK) 로깅 툴을 통해 모든 로그를 쿼리할 수 있습니다. 이러한 툴은 3scale 구성 변경 사항, 이러한 변경을 수행한 사용자 및 시기에 대한 가시성을 향상시킵니다. 예를 들어 청구, 애플리케이션 계획, API(애플리케이션 프로그래밍 인터페이스) 구성 등에 대한 변경 사항이 포함됩니다.
사전 요구 사항
- 3scale 2.16 배포.
프로세스
모든 애플리케이션 로그를 표준 OpenShift 포드 로그로 전달하도록 감사 로깅을 stdout 로 구성합니다.
몇 가지 고려 사항:
-
3scale이 온-프레미스에 배포되면 기본적으로
stdout에 대한 감사 로깅이 비활성화됩니다. 이 기능을 완전히 작동하도록 구성해야 합니다. -
3scale 호스팅에서는
stdout에 대한 감사 로깅을 사용할 수 없습니다.
2.3.2. 감사 로깅 활성화 링크 복사링크가 클립보드에 복사되었습니다!
3scale은 features.yml 구성 파일을 사용하여 일부 글로벌 기능을 활성화합니다. stdout 에 대한 감사 로깅을 활성화하려면 ConfigMap 에서 이 파일을 마운트하여 기본 파일을 교체해야 합니다. features.yml 을 사용하는 OpenShift pod는 system-app 및 system-sidekiq 입니다.
사전 요구 사항
- 3scale 프로젝트에 대한 관리자 액세스 권한이 있어야 합니다.
프로세스
stdout에 감사 로깅을 활성화하려면 다음 명령을 입력합니다.oc patch configmap system -p '{"data": {"features.yml": "features: &default\n logging:\n audits_to_stdout: true\n\nproduction:\n <<: *default\n"}}'$ oc patch configmap system -p '{"data": {"features.yml": "features: &default\n logging:\n audits_to_stdout: true\n\nproduction:\n <<: *default\n"}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 환경 변수를 내보냅니다.
export PATCH_SYSTEM_VOLUMES='{"spec":{"template":{"spec":{"volumes":[{"emptyDir":{"medium":"Memory"},"name":"system-tmp"},{"configMap":{"items":[{"key":"zync.yml","path":"zync.yml"},{"key":"rolling_updates.yml","path":"rolling_updates.yml"},{"key":"service_discovery.yml","path":"service_discovery.yml"},{"key":"features.yml","path":"features.yml"}],"name":"system"},"name":"system-config"}]}}}}'$ export PATCH_SYSTEM_VOLUMES='{"spec":{"template":{"spec":{"volumes":[{"emptyDir":{"medium":"Memory"},"name":"system-tmp"},{"configMap":{"items":[{"key":"zync.yml","path":"zync.yml"},{"key":"rolling_updates.yml","path":"rolling_updates.yml"},{"key":"service_discovery.yml","path":"service_discovery.yml"},{"key":"features.yml","path":"features.yml"}],"name":"system"},"name":"system-config"}]}}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 업데이트된 배포 구성을 관련 OpenShift 포드에 적용합니다.
oc patch deployment system-app -p $PATCH_SYSTEM_VOLUMES oc patch deployment system-sidekiq -p $PATCH_SYSTEM_VOLUMES
$ oc patch deployment system-app -p $PATCH_SYSTEM_VOLUMES $ oc patch deployment system-sidekiq -p $PATCH_SYSTEM_VOLUMESCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3.3. Red Hat OpenShift의 로깅 구성 링크 복사링크가 클립보드에 복사되었습니다!
3scale 애플리케이션 로그를 OpenShift로 전달하도록 감사 로깅을 활성화한 경우 로깅 툴을 사용하여 3scale 애플리케이션을 모니터링할 수 있습니다.
Red Hat OpenShift에 대한 로깅 구성에 대한 자세한 내용은 다음을 참조하십시오.
2.3.4. 로그 액세스 링크 복사링크가 클립보드에 복사되었습니다!
각 구성 요소의 배포 구성에는 액세스 및 예외에 대한 로그가 포함되어 있습니다. 배포에 문제가 발생하면 해당 로그에서 자세한 내용을 확인하십시오.
다음 단계에 따라 3scale의 로그에 액세스합니다.
프로세스
로그를 원하는 Pod의 ID를 찾습니다.
oc get pods
$ oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc logs및 선택한 Pod의 ID를 입력합니다.oc logs <pod>
$ oc logs <pod>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 시스템 포드에는 각각 별도의 로그가 있는 두 개의 컨테이너가 있습니다. 컨테이너 로그에 액세스하려면
system-provider및system-developerPod를 사용하여--container매개변수를 지정합니다.oc logs <pod> --container=system-provider oc logs <pod> --container=system-developer
$ oc logs <pod> --container=system-provider $ oc logs <pod> --container=system-developerCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3.5. 작업 대기열 확인 링크 복사링크가 클립보드에 복사되었습니다!
작업 큐에는 system-sidekiq Pod에서 보낸 정보 로그가 포함됩니다. 이러한 로그를 사용하여 클러스터가 데이터를 처리하고 있는지 확인합니다. OpenShift CLI를 사용하여 로그를 쿼리할 수 있습니다.
oc get jobs
$ oc get jobs
oc logs <job>
$ oc logs <job>
2.3.6. 단조적 성장 방지 링크 복사링크가 클립보드에 복사되었습니다!
고정적 증가를 방지하기 위해 기본적으로 3scale 일정은 다음 테이블을 자동으로 제거합니다.
user_sessions
정리는 일주일에 한 번 트리거되고 2주가 지난 레코드를 삭제합니다.
audits
정리는 하루에 한 번 트리거되고 3개월 이상 오래된 레코드를 삭제합니다.
log_entries
정리는 하루에 한 번 트리거되고 6개월 이상 오래된 레코드를 삭제합니다.
event_store_events
정리는 일주일에 한 번 트리거되고 1주일 이상 오래된 레코드를 삭제합니다.
위에 나열된 테이블을 제외하고 다음 표에서는 데이터베이스 관리자가 수동으로 제거해야 합니다.
- 경고
| 데이터베이스 유형 | SQL 명령 |
|---|---|
| MySQL |
DELETE FROM alerts WHERE timestamp < NOW() - INTERVAL 14 DAY;
|
| PostgreSQL |
DELETE FROM alerts WHERE timestamp < NOW() - INTERVAL '14 day';
|
| Oracle |
DELETE FROM alerts WHERE timestamp <= TRUNC(SYSDATE) - 14;
|
추가 리소스
3장. 3scale API Management 모니터링 활성화 링크 복사링크가 클립보드에 복사되었습니다!
Prometheus 및 Grafana Operator를 사용하여 Red Hat 3scale API Management 모니터링을 활성화할 수 있습니다. Prometheus는 애플리케이션 및 인프라의 지표를 실시간으로 수집하고 분석하도록 설계된 오픈 소스 모니터링 및 경고 툴입니다. Grafana는 사용자 지정 가능한 대시보드에서 다양한 소스의 실시간 데이터를 표시하고 모니터링하는 데 사용되는 오픈 소스 분석 및 시각화 플랫폼입니다.
OpenShift 4.16 이상에서 Grafana 4를 사용 중단하면 지침은 다음 두 섹션으로 나뉩니다.
- OpenShift 4.15 및 이전 버전의 경우
- OpenShift 4.16 이상의 경우
- Grafana 5는 OpenShift 4.14 이상에서 사용할 수 있으며 3scale 2.15 Operator에서 지원합니다. 가능한 경우 Grafana 5를 사용하는 것이 좋습니다.
- Prometheus 및 Grafana에 대한 Red Hat 지원은 Red Hat 제품 설명서에 제공된 구성 권장 사항으로 제한됩니다.
- 3scale Operator는 모니터링 리소스를 생성하지만 해당 리소스를 수정하지는 않습니다.
- 3scale Operator 및 Prometheus Operator를 동일한 네임스페이스에 설치하거나 클러스터 전체 Operator를 사용해야 합니다.
Grafana 4에서 Grafana 5로 마이그레이션하는 단계도 다룹니다.
사전 요구 사항
- 3scale Operator가 설치되어 있습니다.
Prometheus Operator는 OperatorHub 에서 설치됩니다. Prometheus Operator를 사용하여 Prometheus 인스턴스를 생성하고 관리할 수 있습니다. 3scale 모니터링에 필요한
PrometheusCRD(사용자 정의 리소스 정의)를 제공합니다.다음 Prometheus Operator 버전은 OCP(OpenShift Container Platform) 버전에 따라 3scale과 호환됩니다.
- OCP 4.15 또는 이전 버전을 사용하는 최신 Prometheus 커뮤니티 Operator
- OCP 4.16 이상을 사용하는 최신 Prometheus 커뮤니티 Operator
Grafana Operator는 OperatorHub 에서 설치됩니다. Grafana operator를 사용하여 Grafana 인스턴스를 생성 및 관리할 수 있습니다. 3scale 모니터링에 필요한
GrafanaDashboardCRD를 제공합니다.다음 Grafana Operator 버전은 OCP 버전에 따라 3scale과 호환됩니다.
- OCP 4.15 또는 이전 버전의 Grafana 커뮤니티 Operator 4.
- OCP 4.16 이상이 포함된 Grafana 커뮤니티 Operator 5.
클러스터가 인터넷에 노출되면 Prometheus 및 Grafana 서비스를 보호하십시오.
이 섹션에서는 Grafana 대시보드를 볼 수 있도록 3scale 인스턴스의 모니터링을 활성화하는 방법을 설명합니다.
3.1. Grafana 4 및 Prometheus를 OCP 4.15로 구성 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform (OCP) 버전에 대해 Grafana 및 Prometheus를 최대 4.15로 구성합니다. 이 가이드에서는 3scale 환경을 모니터링하기 위해 이러한 툴을 설정하여 실시간 인사이트 및 데이터 시각화를 제공합니다.
프로세스
OperatorHub 에서 Grafana 4 커뮤니티 Operator를 설치합니다.
- OpenShift 관리자 인증 정보를 사용하여 OCP(OpenShift Container Platform)에 로그인합니다.
Grafana 커뮤니티 Operator를 설치할 프로젝트 목록에서 프로젝트를 선택합니다.
중요3scale Operator를 설치한 동일한 프로젝트에 Grafana 커뮤니티 Operator를 설치합니다.
- Operators > OperatorHub 로 이동합니다.
- "grafana"를 검색하고 Grafana Operator 를 클릭합니다.
Grafana Community Operator 페이지에서 설치를 클릭합니다. Create Operator Subscription 페이지가 표시됩니다. Grafana Operator 서브스크립션을 생성하려면 다음 단계를 완료합니다.
- 클러스터에서 특정 네임스페이스를 클릭하고 Grafana 커뮤니티 Operator를 설치할 프로젝트를 선택합니다.
- Subscribe를 클릭합니다.
- 승인 을 클릭합니다.
OperatorHub 에서 최신 Prometheus 커뮤니티 Operator를 설치합니다.
- OpenShift 관리자 인증 정보를 사용하여 OCP(OpenShift Container Platform)에 로그인합니다.
Prometheus 커뮤니티 Operator를 설치할 프로젝트 목록에서 프로젝트를 선택합니다.
중요3scale Operator를 설치한 동일한 프로젝트에 Prometheus 커뮤니티 Operator를 설치합니다.
- Operators > OperatorHub 로 이동합니다.
- "prometheus"를 검색하고 Prometheus Operator 를 클릭합니다.
Prometheus Community Operator 페이지에서 설치를 클릭합니다. Create Operator Subscription 페이지가 표시됩니다. Prometheus Operator 서브스크립션을 생성하려면 다음 단계를 완료합니다.
- 클러스터에서 특정 네임스페이스를 클릭하고 Prometheus Operator를 설치할 프로젝트를 선택합니다.
- Subscribe를 클릭합니다.
- 승인 을 클릭합니다.
3scale 배포 YAML의
spec.monitoring.enabled매개변수를true로 설정하여 모니터링을 활성화합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift 클러스터에 로그인합니다. 3scale의 OpenShift 프로젝트에서 edit 클러스터 역할을 가진 사용자로 로그인해야 합니다(예:
cluster-admin).oc login
$ oc loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow 3scale 프로젝트로 전환합니다.
oc project <project_name>
$ oc project <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Prometheus의 새 서비스 계정을 생성합니다.
oc create serviceaccount prometheus-monitoring
$ oc create serviceaccount prometheus-monitoringCopy to Clipboard Copied! Toggle word wrap Toggle overflow ClusterRoleBinding을 생성하여 Prometheus ServiceAccount에 메트릭을 스크랩하는 데 필요한 RBAC(역할 기반 액세스 제어) 권한을 부여합니다. ClusterRoleBinding을 생성하기 전에 ServiceAccount 네임스페이스를 업데이트합니다.
oc adm policy add-cluster-role-to-user cluster-monitoring-view -z prometheus-monitoring -n "<3scale_namespace>
$ oc adm policy add-cluster-role-to-user cluster-monitoring-view -z prometheus-monitoring -n "<3scale_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow prometheus-monitoringServiceAccount에 대한 토큰을 생성합니다.oc create token prometheus-monitoring
$ oc create token prometheus-monitoringCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 토큰이 만료되면 Prometheus는 필요한 리소스에 대한 액세스 권한이 손실됩니다.
--duration X[s|m|h]를 추가하여 토큰의 유효 기간을 지정합니다.-
생성한 토큰으로 3scale-scrape-configs.yaml
bearer_token필드를 업데이트합니다. additional-scrape-config 시크릿을 생성합니다.
oc create secret generic additional-scrape-configs --from-file=3scale-scrape-configs.yaml=./3scale-scrape-configs.yaml
$ oc create secret generic additional-scrape-configs --from-file=3scale-scrape-configs.yaml=./3scale-scrape-configs.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Prometheus를 배포합니다.
Prometheus.yaml 파일에서
spec.externalUrl필드를 외부 URL로 채웁니다. URL 템플릿은 다음과 같아야 합니다.spec: ... externalUrl: https://prometheus.<namespace-name>.apps.<cluster-domain>
spec: ... externalUrl: https://prometheus.<namespace-name>.apps.<cluster-domain>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Prometheus 서버를 배포합니다.
oc apply -f prometheus.yaml
$ oc apply -f prometheus.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Prometheus 경로를 생성합니다.
oc expose service prometheus-operated --hostname prometheus.<namespace-name>.apps.<cluster-name>
$ oc expose service prometheus-operated --hostname prometheus.<namespace-name>.apps.<cluster-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Grafana 데이터 소스를 배포합니다.
oc apply -f datasource-v4.yaml
$ oc apply -f datasource-v4.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Grafana 배포
oc apply -f grafana-v4.yaml
$ oc apply -f grafana-v4.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
추가 리소스
3.2. OCP 4.16용 Grafana 및 Prometheus 구성 링크 복사링크가 클립보드에 복사되었습니다!
OCP(OpenShift Container Platform) 4.16에 대한 Grafana 및 Prometheus를 구성합니다. 이 가이드에서는 OCP 4.16에 최적화된 모니터링 및 데이터 시각화를 설정하는 단계를 설명합니다.
프로세스
OperatorHub 에서 Grafana 5 커뮤니티 Operator를 설치합니다.
- OpenShift 관리자 인증 정보를 사용하여 OCP(OpenShift Container Platform)에 로그인합니다.
- Grafana 커뮤니티 Operator를 설치할 프로젝트 목록에서 프로젝트를 선택합니다.
- Operators > OperatorHub 로 이동합니다.
- "grafana"를 검색하고 Grafana Operator 를 클릭합니다.
Grafana Community Operator 페이지에서 설치를 클릭합니다. Create Operator Subscription 페이지가 표시됩니다. Grafana Operator 서브스크립션을 생성하려면 다음 단계를 완료합니다.
- 클러스터에서 특정 네임스페이스를 클릭하고 Grafana 커뮤니티 Operator를 설치할 프로젝트를 선택합니다.
- Subscribe를 클릭합니다.
- 승인 을 클릭합니다.
OperatorHub 에서 최신 Prometheus 커뮤니티 Operator를 설치합니다.
- OpenShift 관리자 인증 정보를 사용하여 OCP(OpenShift Container Platform)에 로그인합니다.
Prometheus 커뮤니티 Operator를 설치할 프로젝트 목록에서 프로젝트를 선택합니다.
중요3scale Operator를 설치한 동일한 프로젝트에 Prometheus 커뮤니티 Operator를 설치합니다.
- Operators > OperatorHub 로 이동합니다.
- "prometheus"를 검색하고 Prometheus Operator 를 클릭합니다.
Prometheus Community Operator 페이지에서 설치를 클릭합니다. Create Operator Subscription 페이지가 표시됩니다. Prometheus Operator 서브스크립션을 생성하려면 다음 단계를 완료합니다.
- 클러스터에서 특정 네임스페이스를 클릭하고 Prometheus 커뮤니티 Operator를 설치할 프로젝트를 선택합니다.
- Subscribe를 클릭합니다.
- 승인 을 클릭합니다.
3scale 배포 YAML의
spec.monitoring.enabled매개변수를true로 설정하여 모니터링을 활성화합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift 클러스터에 로그인합니다. 3scale의 OpenShift 프로젝트에서 edit 클러스터 역할을 가진 사용자로 로그인해야 합니다(예:
cluster-admin).oc login
$ oc loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow 3scale 프로젝트로 전환합니다.
oc project <project_name>
$ oc project <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Prometheus의 새 서비스 계정을 생성합니다.
oc create serviceaccount prometheus-monitoring
$ oc create serviceaccount prometheus-monitoringCopy to Clipboard Copied! Toggle word wrap Toggle overflow ClusterRoleBinding을 생성하여 Prometheus ServiceAccount에 메트릭을 스크랩하는 데 필요한 RBAC(역할 기반 액세스 제어) 권한을 부여합니다. ClusterRoleBinding을 생성하기 전에 ServiceAccount 네임스페이스를 업데이트합니다.
oc adm policy add-cluster-role-to-user cluster-monitoring-view -z prometheus-monitoring -n "<3scale_namespace>"
$ oc adm policy add-cluster-role-to-user cluster-monitoring-view -z prometheus-monitoring -n "<3scale_namespace>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow prometheus-monitoringServiceAccount에 대한 토큰을 생성합니다.oc create token prometheus-monitoring
$ oc create token prometheus-monitoringCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 토큰이 만료되면 Prometheus는 필요한 리소스에 대한 액세스 권한이 손실됩니다.
--duration X[s|m|h]를 추가하여 토큰의 유효 기간을 지정합니다.-
생성한 토큰으로 3scale-scrape-configs.yaml
bearer_token필드를 업데이트합니다. additional-scrape-config 시크릿을 생성합니다.
oc create secret generic additional-scrape-configs --from-file=3scale-scrape-configs.yaml=./3scale-scrape-configs.yaml
$ oc create secret generic additional-scrape-configs --from-file=3scale-scrape-configs.yaml=./3scale-scrape-configs.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Prometheus를 배포합니다.
Prometheus.yaml 파일에서
spec.externalUrl필드를 외부 URL로 채웁니다. URL 템플릿은 다음과 같아야 합니다.spec: ... externalUrl: https://prometheus.<namespace-name>.apps.<cluster-domain>
spec: ... externalUrl: https://prometheus.<namespace-name>.apps.<cluster-domain>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Prometheus 서버를 배포합니다.
oc apply -f prometheus.yaml
$ oc apply -f prometheus.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Prometheus 경로를 생성합니다.
oc expose service prometheus-operated --hostname prometheus.<namespace-name>.apps.<cluster-name>
$ oc expose service prometheus-operated --hostname prometheus.<namespace-name>.apps.<cluster-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Grafana 데이터 소스를 배포합니다.
oc apply -f datasource-v5.yaml
$ oc apply -f datasource-v5.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Grafana를 배포합니다.
oc apply -f grafana-v5.yaml
$ oc apply -f grafana-v5.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow grafana 경로를 노출합니다.
oc expose service example-grafana-service
$ oc expose service example-grafana-serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3. OpenShift Container Platform 4.16에서 Grafana 4를 Grafana 5로 마이그레이션 링크 복사링크가 클립보드에 복사되었습니다!
이 단계별 가이드에서는 Grafana 4에서 OCP(OpenShift Container Platform) 4.16 이상에서 Grafana 5로 마이그레이션하는 방법을 설명합니다. 이 프로세스에서는 Grafana 4를 제거하는 방법을 설명하고 Grafana 5를 설정하고 필요한 모든 구성 요소가 업데이트되도록 합니다.
마이그레이션을 시작하기 전에 중요한 데이터 및 대시보드를 백업하십시오.
3.3.1. Grafana 4 제거 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
Grafana 4 사용자 정의 리소스(CR)를 제거합니다.
중요Grafana 4 CR을 제거하면 서비스 및 경로와 함께 Grafana 4 애플리케이션이 삭제됩니다.
oc delete grafana <grafana-cr-name> -n <namespace>
$ oc delete grafana <grafana-cr-name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 경로 제거를 확인합니다.
oc get route -n <namespace>
$ oc get route -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 경로가 여전히 존재하는 경우 수동으로 경로를 삭제합니다.
oc delete route <grafana-route-name> -n <namespace>
$ oc delete route <grafana-route-name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Grafana 4 데이터 소스 CR을 제거합니다.
oc delete grafanadatasource <datasource-cr-name> -n <namespace>
$ oc delete grafanadatasource <datasource-cr-name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Grafana 4 Operator를 제거합니다.
oc delete subscription <grafana-operator-subscription> -n <namespace> oc delete clusterserviceversion <grafana-operator-csv-name> -n <namespace>
$ oc delete subscription <grafana-operator-subscription> -n <namespace> $ oc delete clusterserviceversion <grafana-operator-csv-name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.2. Grafana 5 설치 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
Grafana 5를 설치합니다.
다음 절차에 따라 Grafana 및 Prometheus for OCP 4.16 구성절차를 따르십시오.
Prometheus 인스턴스를 다시 시작하여 새 구성을 적용합니다.
oc rollout restart statefulset prometheus-k8s -n <namespace>
$ oc rollout restart statefulset prometheus-k8s -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.3. Grafana 5 CRD로 사용자 정의 대시보드 마이그레이션 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
사용자 정의 대시보드를 Grafana 5 CRD로 마이그레이션합니다.
내보낸 JSON 대시보드를 Grafana v5의 CRD(Custom Resource Definitions)로 변환합니다. GrafanaDashboard CR의 YAML의 예:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 대시보드 CRD를 적용합니다.
oc apply -f grafana-dashboard.yaml
$ oc apply -f grafana-dashboard.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.4. 선택 사항: Grafana 4 CRD 제거 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
Grafana 4 대시보드 CRD를 삭제합니다.
oc delete crd grafanadashboards.integreatly.org
$ oc delete crd grafanadashboards.integreatly.orgCopy to Clipboard Copied! Toggle word wrap Toggle overflow 중요CRD를 제거하지 않으면 3scale Operator가 Grafana 4 대시보드를 계속 조정하지만 모니터링 스택에 영향을 미치지 않습니다.
3.3.5. Grafana operator 및 Grafana 배포 다시 시작 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
3scale Operator를 다시 시작합니다.
oc rollout restart deployment/3scale-operator -n <namespace>
$ oc rollout restart deployment/3scale-operator -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Grafana operator 및 Grafana 배포를 다시 시작합니다.
oc rollout restart deployment/grafana-operator -n <namespace> oc rollout restart deployment/<grafana-deployment-name> -n <namespace>
$ oc rollout restart deployment/grafana-operator -n <namespace> $ oc rollout restart deployment/<grafana-deployment-name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4. 3scale API Management의 메트릭 보기 링크 복사링크가 클립보드에 복사되었습니다!
3scale, Prometheus 및 Grafana를 구성한 후 이 섹션에 설명된 지표를 볼 수 있습니다.
프로세스
- Grafana 콘솔에 로그인합니다.
다음에 대한 메트릭을 볼 수 있는지 확인합니다.
- 3scale이 설치된 Pod 및 네임스페이스 수준의 Kubernetes 리소스
- APIcast Staging
- APIcast 프로덕션
- 백엔드 작업자
- 백엔드 리스너
- 시스템
- Zync
3.5. Prometheus에 노출되는 3scale API Management 시스템 지표 링크 복사링크가 클립보드에 복사되었습니다!
지표를 노출하기 위해 Prometheus 끝점과 함께 3scale 시스템 Pod를 사용하도록 다음 포트를 구성할 수 있습니다.
| system-app | 포트 |
|---|---|
|
| 9394 |
|
| 9395 |
|
| 9396 |
| system-sidekiq | 포트 |
|---|---|
|
| 9394 |
끝점은 다음을 사용하여 내부적으로만 액세스할 수 있습니다.
http://${service}:${port}/metrics
http://${service}:${port}/metrics
예를 들면 다음과 같습니다.
http://system-developer:9394/metrics
http://system-developer:9394/metrics
4장. Webhook를 사용한 3scale API Management 자동화 링크 복사링크가 클립보드에 복사되었습니다!
Webhook는 자동화를 용이하게 하는 기능이며 3scale에서 발생하는 이벤트를 기반으로 다른 시스템을 통합하는 데에도 사용됩니다. 3scale 시스템 내에서 지정된 이벤트가 발생하면 애플리케이션에 Webhook 메시지가 표시됩니다. 예를 들어 Webhook를 구성하면 새 계정 등록의 데이터를 사용하여 개발자 포털을 채울 수 있습니다.
4.1. Webhook 개요 링크 복사링크가 클립보드에 복사되었습니다!
Webhook는 Webhook 구성 창에서 사용 가능한 이벤트에서 선택한 이벤트에 의해 트리거되는 사용자 정의 HTTP 콜백입니다. 이러한 이벤트 중 하나가 발생하면 3scale 시스템에서 Webhook 섹션에 지정된 URL 주소에 대한 HTTP 또는 HTTPS 요청을 수행합니다. Webhook를 사용하면 이벤트 추적과 같은 일부 원하는 동작을 호출하도록 리스너를 구성할 수 있습니다.
웹 후크 형식은 항상 동일합니다. 다음 구조의 XML 문서를 사용하여 엔드포인트에 게시를 만듭니다.
각 요소는 정보를 제공합니다.
<type>
애플리케이션,계정 등과 같은 이벤트 제목을 제공합니다.
<action>
업데이트된,created,deleted 와 같은 값을 사용하여 수행된 작업을 지정합니다.
<object>
계정 관리 API에서 반환하는 동일한 형식으로 XML 개체 자체를 구성합니다. 이를 확인하려면 대화형 ActiveDocs 를 사용할 수 있습니다.
3scale에서 Webhook가 발행되었는지 확인해야 하는 경우 HTTPS Webhook URL을 노출하고 사용자 정의 매개변수를 3scale의 Webhook 선언에 추가합니다. 예: https://your-webhook-endpoint?someSecretParameterName=someSecretParameterValue. 매개변수 이름과 값을 결정합니다. 그런 다음 Webhook 끝점 내부에 이 매개변수 값이 있는지 확인합니다.
4.2. Webhook 구성 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
- 대시보드 메뉴에서 계정 설정을 선택한 다음 통합 > Webhook로 이동합니다.
Webhook의 동작을 나타냅니다. 두 가지 옵션이 있습니다.
- Webhook 활성화: Webhook를 활성화하거나 비활성화하려면 이 확인란을 선택합니다.
관리 포털의 작업: 이벤트가 발생할 때 Webhook 를 트리거하려면 이 확인란을 선택합니다.
다음을 고려하십시오.
- 트리거 이벤트로 구성된 내부 3scale API를 호출할 때 공급자 키가 아닌 액세스 토큰을 사용합니다.
- 이 확인란을 선택 취소하면 개발자 포털 트리거 Webhook의 작업만 제거됩니다.
- 트리거할 때 선택한 이벤트에 대한 알림에 대한 URL 주소를 지정합니다.
- 표시된 URL 주소에 콜백을 트리거하는 이벤트를 선택합니다.
설정을 구성한 후 Webhook 설정 업데이트를 클릭하여 변경 사항을 저장합니다.
4.3. Webhook 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
청취 끝점에 대한 중단이 발생하는 경우 실패한 전달을 복구할 수 있습니다. 3scale은 끝점이 200 코드로 응답하는 경우 전달되는 Webhook를 고려합니다. 그렇지 않으면 60 초 간격으로 5 번 재시도합니다. 중단 또는 주기적으로 복구한 후 대기열을 정리하고 검사를 실행해야 합니다. 다음 방법에 대한 자세한 내용은 ActiveDocs에서 확인할 수 있습니다.
- Webhook 목록에 실패한 배포가 나열됩니다.
- Webhook에서 실패한 전달을 삭제합니다.
추가 리소스
5장. 3scale API Management toolbox 링크 복사링크가 클립보드에 복사되었습니다!
3scale toolbox CLI는 더 이상 사용되지 않는 구성 요소입니다. 이는 더 이상 적극적인 개선의 핵심이 아닙니다. 사용 가능한 상태로 남아 있지만 향후 폐기를 예상하십시오. 프로비저닝 및 자동화 요구 사항에 3scale Application Capabilities Operator 를 사용합니다.
3scale toolbox 는 명령줄에서 3scale 제품을 관리할 수 있는 Ruby 클라이언트입니다.
3scale 문서 내에서 3scale toolbox, 지원되는 toolbox 명령, 서비스, 계획, SSL 및 TLS 문제 해결 등의 정보가 있습니다. 자세한 내용은 아래 섹션 중 하나를 참조하십시오.
5.1. toolbox 설치 링크 복사링크가 클립보드에 복사되었습니다!
공식적으로 지원되는 3scale toolbox 설치 방법은 3scale toolbox 컨테이너 이미지를 사용하는 것입니다.
5.1.1. toolbox 컨테이너 이미지 설치 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 toolbox 컨테이너 이미지를 설치하는 방법을 설명합니다.
사전 요구 사항
- Red Hat Ecosystem Catalog에서 3scale API Management toolbox 이미지를 참조하십시오.
- Red Hat 레지스트리 서비스 계정이 있어야 합니다.
- 이 항목의 예제에서는 Podman이 설치되어 있다고 가정합니다.
프로세스
Red Hat Ecosystem Catalog에 로그인합니다.
podman login registry.redhat.io
$ podman login registry.redhat.io Username: ${REGISTRY-SERVICE-ACCOUNT-USERNAME} Password: ${REGISTRY-SERVICE-ACCOUNT-PASSWORD} Login Succeeded!Copy to Clipboard Copied! Toggle word wrap Toggle overflow toolbox 컨테이너 이미지를 가져옵니다.
podman pull registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16
$ podman pull registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16Copy to Clipboard Copied! Toggle word wrap Toggle overflow 설치를 확인합니다.
podman run registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16 3scale help
$ podman run registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16 3scale helpCopy to Clipboard Copied! Toggle word wrap Toggle overflow
추가 리소스
- Red Hat Ecosystem Catalog에서 이미지를 가져오는 방법
Kubernetes에 3scale API Management toolbox를 설치하는 방법
참고: OpenShift에서
kubectl대신 올바른 이미지 이름과oc명령을 사용해야 합니다.
5.2. 지원되는 toolbox 명령 링크 복사링크가 클립보드에 복사되었습니다!
3scale toolbox를 사용하여 CLI(명령줄 도구)에서 API를 관리합니다.
update 명령이 제거되어 copy 명령으로 교체되었습니다.
지원되는 명령은 다음과 같습니다.
5.3. 서비스 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
아래 지정된 순서로 다음 필드를 지정하여 CSV 파일에서 서비스를 가져옵니다. CSV 파일에 이러한 헤더를 포함합니다.
service_name,endpoint_name,endpoint_http_method,endpoint_path,auth_mode,endpoint_system_name,type
service_name,endpoint_name,endpoint_http_method,endpoint_path,auth_mode,endpoint_system_name,type
다음 정보가 필요합니다.
-
3scale 관리자 계정:
{3SCALE_ADMIN} 3scale 인스턴스가 실행 중인 도메인:
{DOMAIN_NAME}- 호스팅된 APICast를 사용하는 경우 3scale.net입니다.
-
계정의 액세스 키:
{ACCESS_KEY} -
서비스의 CSV 파일(예:
examples/import_example.csv)
다음을 실행하여 서비스를 가져옵니다.
예
podman run -v $PWD/examples/import_example.csv:/tmp/import_example.csv registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16 3scale import csv --destination=https://{ACCESS_KEY}@{3SCALE_ADMIN}-admin.{DOMAIN_NAME} --file=/tmp/import_example.csv
$ podman run -v $PWD/examples/import_example.csv:/tmp/import_example.csv registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16 3scale import csv --destination=https://{ACCESS_KEY}@{3SCALE_ADMIN}-admin.{DOMAIN_NAME} --file=/tmp/import_example.csv
이 예에서는 Podman 볼륨을 사용하여 컨테이너에 리소스 파일을 마운트합니다. 파일을 현재 $PWD 폴더에서 사용할 수 있다고 가정합니다.
5.4. 서비스 복사 링크 복사링크가 클립보드에 복사되었습니다!
동일한 계정 또는 다른 계정에서 기존 서비스를 기반으로 새 서비스를 생성합니다. 서비스를 복사하면 관련 ActiveDocs도 복사됩니다.
다음 정보가 필요합니다.
-
복사하려는 서비스 ID:
{SERVICE_ID} -
3scale 관리자 계정:
{3SCALE_ADMIN} 3scale 인스턴스가 실행 중인 도메인:
{DOMAIN_NAME}- 호스팅된 APICast를 사용하는 경우 3scale.net입니다.
-
계정의 액세스 키:
{ACCESS_KEY} -
다른 계정에 복사하는 경우 대상 계정의 액세스 키:
{DEST_KEY} -
새 서비스의 이름:
{NEW_NAME}
예
podman run registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16 3scale copy service {SERVICE_ID} --source=https://{ACCESS_KEY}@{3SCALE_ADMIN}-admin.{DOMAIN_NAME} --destination=https://{DEST_KEY}@{3SCALE_ADMIN}-admin.{DOMAIN_NAME} --target_system_name={NEW_NAME}
$ podman run registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16 3scale copy service {SERVICE_ID} --source=https://{ACCESS_KEY}@{3SCALE_ADMIN}-admin.{DOMAIN_NAME} --destination=https://{DEST_KEY}@{3SCALE_ADMIN}-admin.{DOMAIN_NAME} --target_system_name={NEW_NAME}
복사할 서비스에 사용자 지정 정책이 있는 경우 해당 사용자 지정 정책 정의가 서비스를 복사할 대상에 이미 있는지 확인합니다. 사용자 정의 정책 정의 복사에 대한 자세한 내용은 정책 레지스트리 복사를참조하십시오.
5.5. 서비스 설정만 복사 링크 복사링크가 클립보드에 복사되었습니다!
서비스 및 프록시 설정, 메트릭, 방법, 애플리케이션 계획 제한, 서비스에서 다른 기존 서비스로의 매핑 규칙을 대량 복사할 수 있습니다.
다음 정보가 필요합니다.
-
복사하려는 서비스 ID:
{SERVICE_ID} -
대상의 서비스 ID:
{DEST_ID} -
3scale 관리자 계정:
{3SCALE_ADMIN} 3scale 인스턴스가 실행 중인 도메인:
{DOMAIN_NAME}- 호스팅된 APICast를 사용하는 경우 3scale.net입니다.
-
계정의 액세스 키:
{ACCESS_KEY} -
대상 계정의 액세스 키:
{DEST_KEY}
또한 선택적 플래그를 사용할 수 있습니다.
-
복사하기 전에 기존 대상 서비스 매핑 규칙을 제거하는
-f플래그입니다. -
대상 서비스에 매핑 규칙만 복사하는
-r플래그입니다.
update 명령이 제거되어 copy 명령으로 교체되었습니다.
다음 예제 명령은 한 서비스에서 다른 기존 서비스로 대량 복사를 수행합니다.
podman run registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16 3scale copy [opts] service --source=https://{ACCESS_KEY}@{3SCALE_ADMIN}-admin.{DOMAIN_NAME} --destination=https://{DEST_KEY}@{3SCALE_ADMIN}-admin.{DOMAIN_NAME} {SERVICE_ID} {DEST_ID}
$ podman run registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16 3scale copy [opts] service --source=https://{ACCESS_KEY}@{3SCALE_ADMIN}-admin.{DOMAIN_NAME} --destination=https://{DEST_KEY}@{3SCALE_ADMIN}-admin.{DOMAIN_NAME} {SERVICE_ID} {DEST_ID}
5.6. OpenAPI 인증 링크 복사링크가 클립보드에 복사되었습니다!
3scale toolbox를 사용하여 OpenAPI 인증을 구현하면 인증된 사용자만 API에 액세스하고 민감한 데이터를 보호하며 API 사용량을 효율적으로 관리할 수 있습니다. 이 접근 방식은 API 인프라를 강화하고 개발자와 소비자 간의 신뢰를 촉진합니다.
하나의 최상위 보안 요구 사항만 지원됩니다. 작업 수준 보안 요구 사항은 지원되지 않습니다.
지원되는 보안 체계: apiKey 및 oauth2 모든 flow 유형이 있습니다.
apiKey 보안 스키마 유형의 경우:
- 인증 정보 위치는 보안 스키마 오브젝트의 OpenAPI에서 읽습니다.
- 인증 사용자 키는 보안 스키마 오브젝트의 OpenAPI 이름 필드에서 읽습니다.
apiKey 보안 요구 사항이 있는 OpenAPI 3.0.2의 부분적인 예:
oauth2 보안 스키마 유형의 경우:
-
인증 정보 위치는 헤더에 하드 코딩됩니다.
-
OpenID Connect 문제 유형 기본값은
rest입니다.--oidc-issuer-type=<value> 명령 옵션을 사용하여 이 값을재정의할 수 있습니다. -
OpenID Connect 발급자는 OpenAPI에서 읽지 않습니다. 3scale에서는 발행자 URL에 클라이언트 시크릿을 포함해야 하므로 이
--oidc-issuer-endpoint=<value> 명령 옵션을 사용하여 문제를 설정해야 합니다. - OIDC AUTHORIZATION FLOW는 보안 체계 오브젝트의 flows 필드에서 읽습니다.
oauth2 보안 요구 사항이 있는 OpenAPI 3.0.2의 부분적인 예:
OpenAPI가 보안 요구 사항을 지정하지 않는 경우:
- 제품은 Open API 로 간주됩니다.
-
default_credentials3scale 정책이 추가되었습니다. 참고: 이 값은anonymous_policy라고도 합니다. -
--default-credentials-userkey명령이 필요합니다. 참고: 이 제공되지 않는 경우 명령이 실패합니다.
추가 리소스
5.7. OpenAPI 정의 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
새 서비스를 생성하거나 기존 서비스를 업데이트하려면 로컬 파일 또는 URL에서 OpenAPI 정의를 가져올 수 있습니다. 가져오기의 기본 서비스 이름은 OpenAPI 정의에 info.title 로 지정됩니다. 그러나 --target_system_name=<NEW NAME> 을 사용하여 이 서비스 이름을 재정의할 수 있습니다. 이렇게 하면 서비스 이름이 이미 있는 경우 업데이트되거나 서비스 이름이 없는 경우 새 서비스 이름을 생성합니다.
가져오기 openapi 명령의 형식은 다음과 같습니다.
3scale import openapi [opts] -d <destination> <specification>
$ 3scale import openapi [opts] -d <destination> <specification>
OpenAPI < ;specification& gt;은 다음 중 하나일 수 있습니다.
-
/path/to/your/definition/file.[json|yaml|yml] -
http[s]://domain/resource/path.[json|yaml|yml]
예
podman run -v $PWD/my-test-api.json:/tmp/my-test-api.json registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16 3scale import openapi [opts] -d=https://{DEST_KEY}@{3SCALE_ADMIN}-admin.{DOMAIN_NAME} /tmp/my-test-api.json
$ podman run -v $PWD/my-test-api.json:/tmp/my-test-api.json registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16 3scale import openapi [opts] -d=https://{DEST_KEY}@{3SCALE_ADMIN}-admin.{DOMAIN_NAME} /tmp/my-test-api.json
명령 옵션
가져오기 openapi 명령 옵션은 다음과 같습니다.
-d --destination=<value>-
형식의 3scale 대상 인스턴스:
http[s]://<authentication>@3scale_domain. -t --target_system_name=<value>- 3scale 대상 시스템 이름입니다.
--backend-api-secret-token=<value>- API 게이트웨이에서 백엔드 API로 전송한 사용자 정의 시크릿 토큰입니다.
--backend-api-host-header=<value>- API 게이트웨이에서 백엔드 API로 전송한 사용자 지정 호스트 헤더입니다.
자세한 내용은 3scale import openapi --help 명령을 참조하십시오.
OpenAPI 가져오기 규칙
지원되는 보안 체계는 OAuth 흐름 유형의 apiKey 및 oauth2 입니다.
OpenAPI 사양은 다음 중 하나여야 합니다.
- 사용 가능한 경로의 파일 이름입니다.
-
toolbox가 콘텐츠를 다운로드할 수 있는 URL입니다. 지원되는 스키마는
http및https입니다. -
stdin표준 입력 스트림에서 읽습니다. 이 값은-값을 설정하여 제어합니다.
OpenAPI 정의를 가져올 때 다음과 같은 추가 규칙이 적용됩니다.
- 정의는 OpenAPI 2.0 또는 OpenAPI 3.0으로 검증됩니다.
- OpenAPI 정의의 모든 매핑 규칙을 가져옵니다. API > 통합 에서 볼 수 있습니다.
- 3scale 제품의 모든 매핑 규칙이 교체됩니다.
- OpenAPI 정의에 포함된 메서드만 수정됩니다.
-
OpenAPI 정의에서만 존재하는 모든 방법은
Hits메트릭에 연결됩니다. -
메서드를 교체하려면 정확한 패턴 일치를 사용하여 메서드 이름을 OpenAPI 정의
operation.operationId에 정의된 메서드와 동일해야 합니다.
toolbox는 정책 체인에 없는 경우 anonymous_policy 라고도 하는 default_credentials 정책을 추가합니다. default_credentials 정책은 선택적 매개 변수 --default-credentials- userkey 에 제공된 userkey를 사용하여 구성됩니다.
OpenAPI 3.0은 보안 체계 및 보안 요구 사항 기능을 사용하여 API에 대한 보안을 지정하는 방법을 제공합니다. 자세한 내용은 공식 Swagger 인증 및 권한 부여 설명서를 참조하십시오.
OpenAPI 3.0 제한 사항
OpenAPI 3.0 정의를 가져올 때 다음과 같은 제한 사항이 적용됩니다.
-
servers목록의 첫 번째server.url요소만 개인 URL로 구문 분석됩니다.server.url요소의경로구성 요소는 OpenAPI의basePath속성으로 사용됩니다. - toolbox는 작업 오브젝트의 경로 항목 및 서버의 서버를 구문 분석하지 않습니다.
- 보안 체계 개체의 여러 흐름은 지원되지 않습니다.
5.8. OpenAPI 정의에서 3scale API Management 백엔드 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
toolbox import 명령을 사용하여 OpenAPI 정의를 가져오고 3scale 백엔드 API를 생성할 수 있습니다. 명령행 옵션 --backend 는 이 기능을 활성화합니다. 3scale은 OpenAPI 정의를 사용하여 백엔드 및 개인 기본 URL과 매핑 규칙 및 방법을 생성하고 저장합니다.
사전 요구 사항
- 3scale 2.16 온-프레미스 인스턴스에 대한 관리자 권한이 있는 사용자 계정.
- API를 정의하는 OAS 문서입니다.
프로세스
다음 형식을 사용하여
가져오기명령을 실행하여 백엔드를 생성합니다.3scale import openapi -d <remote> --backend <OAS>
$ 3scale import openapi -d <remote> --backend <OAS>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
&
lt;remote>를 백엔드를 생성할 3scale 인스턴스의 URL로 바꿉니다. 이 형식 사용:http[s]://<authentication>@3scale_domain &
lt;OAS>를/path/to/your/oasdoc.yaml로 바꿉니다.Expand 표 5.1. 추가 OpenAPI 정의 옵션 옵션 설명 -o --output=<value>출력 형식입니다. JSON 또는 YAML일 수 있습니다.
--override-private-base-url=<value>3scale은 OpenAPI 정의의
servers[0].url필드에서 백엔드의 프라이빗 끝점을 읽습니다. 해당 필드의 설정을 재정의하려면 이 옵션을 지정하고 <value>를 선택한 프라이빗 기본 URL로 바꿉니다. OpenAPI 정의에서servers[0].url필드에 값을 지정하지 않고가져오기명령에 이 옵션을 지정하지 않으면 실행이 실패합니다.--prefix-matchingOpenAPI 작업에서 파생된 매핑 규칙에 대해 엄격한 일치보다 접두사 일치를 사용합니다.
--skip-openapi-validationOpenAPI 스키마 검증을 건너뜁니다.
-t --target_system_name=<value>대상 시스템 이름은 테넌트의 고유 키입니다. 시스템 이름은 OpenAPI 정의에서 유추할 수 있지만 이 매개변수를 사용하여 자체 이름으로 재정의할 수 있습니다.
5.9. 원격 액세스 인증 정보 관리 링크 복사링크가 클립보드에 복사되었습니다!
원격 3scale 인스턴스 작업을 용이하게 하려면 3scale toolbox를 사용하여 원격 URL 주소 및 인증 세부 정보를 정의하여 구성 파일의 원격 인스턴스에 액세스할 수 있습니다. 그런 다음 toolbox 명령에서 짧은 이름을 사용하여 이러한 원격을 참조할 수 있습니다.
구성 파일의 기본 위치는 $HOME/.3scalerc.yaml 입니다. 그러나 THREESCALE_CLI_CONFIG 환경 변수 또는 --config-file <config_file > toolbox 옵션을 사용하여 다른 위치를 지정할 수 있습니다.
원격 액세스 인증 정보를 추가할 때 access_token 또는 provider_key 를 지정할 수 있습니다.
-
http[s]://<access_token>@<3scale-instance-domain> -
http[s]://<provider_key>@<3scale-instance-domain>
5.9.1. 원격 액세스 인증 정보 추가 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제 명령은 < url >에 짧은 < name >을 사용하여 원격 3scale 인스턴스를 추가합니다.
3scale remote add [--config-file <config_file>] <name> <url>
$ 3scale remote add [--config-file <config_file>] <name> <url>
예
podman run --name toolbox-container registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16 3scale remote add instance_a https://123456789@example_a.net podman commit toolbox-container toolbox
$ podman run --name toolbox-container registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16 3scale remote add instance_a https://123456789@example_a.net
$ podman commit toolbox-container toolbox
이 예제에서는 원격 인스턴스를 생성하고 컨테이너를 커밋하여 새 이미지를 생성합니다. 그런 다음 포함된 원격 정보를 사용하여 새 이미지를 실행할 수 있습니다. 예를 들어 다음 명령은 새 이미지를 사용하여 새로 추가된 원격을 표시합니다.
podman run toolbox 3scale remote list
$ podman run toolbox 3scale remote list
instance_a https://example_a.net 123456789
다른 toolbox 명령은 새로 생성된 이미지를 사용하여 추가된 원격에 액세스할 수 있습니다. 이 예에서는 registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16 대신 toolbox 라는 이미지를 사용합니다.
컨테이너에 toolbox에 대한 보안을 저장하는 것은 예를 들어 다른 사용자에게 보안을 사용하거나 자동화를 위해 컨테이너를 사용할 때 잠재적인 보안 위험입니다. OpenShift의 Podman 또는 시크릿에서 보안 볼륨을 사용합니다.
추가 리소스
Podman 사용에 대한 자세한 내용은 다음을 참조하십시오.
5.9.2. 원격 액세스 인증 정보 나열 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제 명령은 원격 액세스 인증 정보를 나열하는 방법을 보여줍니다.
3scale remote list [--config-file <config_file>]
$ 3scale remote list [--config-file <config_file>]
이 명령은 추가된 원격 3scale 인스턴스 목록을 < name > < URL > < authentication-key > : 형식으로 표시합니다.
예
podman run <toolbox_image_with_remotes_added> 3scale remote list
$ podman run <toolbox_image_with_remotes_added> 3scale remote list
instance_a https://example_a.net 123456789
instance_b https://example_b.net 987654321
5.9.3. 원격 액세스 인증 정보 제거 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제 명령은 원격 액세스 인증 정보를 제거하는 방법을 보여줍니다.
3scale remote remove [--config-file <config_file>] <name>
$ 3scale remote remove [--config-file <config_file>] <name>
이 명령은 짧은 < name > :을 사용하여 원격 3scale 인스턴스를 제거합니다.
예
podman run <toolbox_image_with_remote_added> 3scale remote remove instance_a
$ podman run <toolbox_image_with_remote_added> 3scale remote remove instance_a
5.9.4. 원격 액세스 인증 정보 이름 변경 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제 명령은 원격 액세스 인증 정보의 이름을 변경하는 방법을 보여줍니다.
3scale remote rename [--config-file <config_file>] <old_name> <new_name>
$ 3scale remote rename [--config-file <config_file>] <old_name> <new_name>
이 명령은 짧은 < old_name >으로 원격 3scale 인스턴스의 이름을 < new_name >으로 변경합니다.
예
podman run <toolbox_image_with_remote_added> 3scale remote rename instance_a instance_b
$ podman run <toolbox_image_with_remote_added> 3scale remote rename instance_a instance_b
5.10. 애플리케이션 계획 생성 링크 복사링크가 클립보드에 복사되었습니다!
3scale toolbox를 사용하여 개발자 포털에서 애플리케이션 계획을 생성, 업데이트, 나열, 삭제, 표시 또는 내보냅니다.
5.10.1. 새 애플리케이션 계획 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 단계를 사용하여 새 애플리케이션 계획을 생성합니다.
- 애플리케이션 계획 이름을 제공해야 합니다.
-
system-name을 재정의하려면 선택적 매개변수를 사용합니다. - 동일한 이름의 애플리케이션 계획이 이미 존재하는 경우 오류 메시지가 표시됩니다.
-
--플래그를 사용하여 애플리케이션 계획을 기본값으로 설정합니다.default --publish플래그를 사용하여게시된애플리케이션 계획을 생성합니다.-
기본적으로
숨겨집니다.
-
기본적으로
--플래그를 사용하여 비활성화된 애플리케이션 계획을 생성합니다.disabled-
기본적으로
활성화되어있습니다.
-
기본적으로
서비스위치 인수는 서비스 참조이며 서비스 ID 또는 서비스system_name일 수 있습니다.- 도구 상자는 둘 중 하나를 사용합니다.
다음 명령은 새 애플리케이션 계획을 생성합니다.
3scale application-plan create [opts] <remote> <service> <plan-name>
$ 3scale application-plan create [opts] <remote> <service> <plan-name>
애플리케이션 계획을 생성하는 동안 다음 옵션을 사용합니다.
5.10.2. 애플리케이션 계획 생성 또는 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
다음 단계를 사용하여 새 애플리케이션 계획을 생성하거나 기존 애플리케이션 계획을 업데이트합니다.
-
--플래그를 사용하여 기본 애플리케이션 계획을 업데이트합니다.default -
--publish플래그를 사용하여게시된애플리케이션 계획을 업데이트합니다. -
--hide플래그를 사용하여숨겨진애플리케이션 계획을 업데이트합니다. -
--플래그를 사용하여 비활성화된 애플리케이션 계획을 업데이트합니다.disabled -
--플래그를 사용하여 활성화된 애플리케이션 계획을 업데이트합니다.enabled
서비스위치 인수는 서비스 참조이며 서비스 ID 또는 서비스system_name일 수 있습니다.- 도구 상자는 둘 중 하나를 사용합니다.
계획위치 인수는 계획 참조이며 계획 ID 또는 계획system_name일 수 있습니다.- 도구 상자는 둘 중 하나를 사용합니다.
다음 명령은 애플리케이션 계획을 업데이트합니다.
3scale application-plan create [opts] <remote> <service> <plan>
$ 3scale application-plan create [opts] <remote> <service> <plan>
애플리케이션 계획을 업데이트하는 동안 다음 옵션을 사용합니다.
5.10.3. 애플리케이션 계획 나열 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령은 애플리케이션 계획을 나열합니다.
3scale application-plan list [opts] <remote> <service>
$ 3scale application-plan list [opts] <remote> <service>
애플리케이션 계획을 나열하는 동안 다음 옵션을 사용합니다.
5.10.4. 애플리케이션 계획 표시 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령은 애플리케이션 계획을 보여줍니다.
3scale application-plan show [opts] <remote> <service> <plan>
$ 3scale application-plan show [opts] <remote> <service> <plan>
애플리케이션 계획을 표시하는 동안 다음 옵션을 사용합니다.
5.10.5. 애플리케이션 계획 삭제 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령은 애플리케이션 계획을 삭제합니다.
3scale application-plan delete [opts] <remote> <service> <plan>
$ 3scale application-plan delete [opts] <remote> <service> <plan>
애플리케이션 계획을 삭제하는 동안 다음 옵션을 사용합니다.
5.10.6. 애플리케이션 계획 내보내기/가져오기 링크 복사링크가 클립보드에 복사되었습니다!
단일 애플리케이션 계획을 yaml 콘텐츠로 내보내거나 가져올 수 있습니다.
다음을 확인합니다.
- 애플리케이션 계획에 정의된 제한 사항이 포함됩니다.
- 애플리케이션 계획에 정의된 가격 규칙이 포함됩니다.
- 제한 및 가격 규칙에 따라 참조되는 메트릭/메서드가 포함됩니다.
- 애플리케이션 계획에 정의된 기능이 포함되어 있습니다.
-
서비스는
id또는system_name에서 참조할 수 있습니다. -
애플리케이션 계획은
id또는system_name에서 참조할 수 있습니다.
5.10.6.1. 애플리케이션 계획을 파일로 내보내기 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령은 애플리케이션 계획을 내보냅니다.
3scale application-plan export [opts] <remote> <service_system_name> <plan_system_name>
$ 3scale application-plan export [opts] <remote> <service_system_name> <plan_system_name>
예
podman run -u root -v $PWD:/tmp registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16 3scale application-plan export --file=/tmp/plan.yaml remote_name service_name plan_name
$ podman run -u root -v $PWD:/tmp registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16 3scale application-plan export --file=/tmp/plan.yaml remote_name service_name plan_name
이 예에서는 Podman 볼륨을 사용하여 출력에 내보낸 파일을 현재 $PWD 폴더에 마운트합니다.
내보내기 명령과 관련이 있습니다.
- 원격 서비스 및 애플리케이션 계획에 대한 읽기 전용 작업.
명령 출력은
stdout또는 파일일 수 있습니다.-
-f옵션으로 지정하지 않으면 기본적으로yaml콘텐츠가stdout에 작성됩니다.
-
애플리케이션 계획을 내보내는 동안 다음 옵션을 사용합니다.
5.10.6.2. 파일에서 애플리케이션 계획 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령은 애플리케이션 계획을 가져옵니다.
3scale application-plan import [opts] <remote> <service_system_name>
$ 3scale application-plan import [opts] <remote> <service_system_name>
예
podman run -v $PWD/plan.yaml:/tmp/plan.yaml registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16 3scale application-plan import --file=/tmp/plan.yaml remote_name service_name
$ podman run -v $PWD/plan.yaml:/tmp/plan.yaml registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16 3scale application-plan import --file=/tmp/plan.yaml remote_name service_name
이 예에서는 Podman 볼륨을 사용하여 현재 $PWD 폴더의 컨테이너에 가져온 파일을 마운트합니다.
5.10.6.3. URL에서 애플리케이션 계획 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
3scale application-plan import -f http[s]://domain/resource/path.yaml remote_name service_name
$ 3scale application-plan import -f http[s]://domain/resource/path.yaml remote_name service_name
가져오기 명령과 관련된 특정 명령:
명령 입력 콘텐츠는
stdin, file 또는 URL 형식일 수 있습니다.-
-f옵션으로 지정하지 않으면 기본적으로yaml콘텐츠를stdin에서 읽습니다.
-
- 원격 서비스에서 애플리케이션 계획을 찾을 수 없는 경우 생성됩니다.
선택적 param
-p,--plan원격 대상 애플리케이션 계획id또는system_name.-
-p옵션으로 지정하지 않으면 기본적으로yaml콘텐츠의 plan 속성system_name에서 애플리케이션 계획을 참조합니다.
-
- 원격 서비스에서 찾을 수 없는 yaml 콘텐츠의 모든 메트릭 또는 방법이 생성됩니다.
애플리케이션 계획을 가져오는 동안 다음 옵션을 사용합니다.
5.11. 메트릭 생성 링크 복사링크가 클립보드에 복사되었습니다!
3scale toolbox를 사용하여 개발자 포털에서 메트릭을 생성, 업데이트, 나열 및 삭제합니다.
메트릭을 생성하려면 다음 단계를 사용하십시오.
- 메트릭 이름을 제공해야 합니다.
-
system-name을 재정의하려면 선택적 매개변수를 사용합니다. - 동일한 이름의 메트릭이 이미 존재하는 경우 오류 메시지가 표시됩니다.
--플래그를 사용하여 비활성화된 지표를 생성합니다.disabled-
기본적으로
활성화되어있습니다.
-
기본적으로
서비스위치 인수는 서비스 참조이며 서비스 ID 또는 서비스system_name일 수 있습니다.- 도구 상자는 둘 중 하나를 사용합니다.
다음 명령은 메트릭을 생성합니다.
3scale metric create [opts] <remote> <service> <metric-name>
$ 3scale metric create [opts] <remote> <service> <metric-name>
메트릭을 생성하는 동안 다음 옵션을 사용합니다.
5.11.1. 메트릭 생성 또는 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
다음 단계를 사용하여 새 메트릭을 생성하거나 기존 메트릭을 업데이트합니다.
- 동일한 이름의 메트릭이 이미 존재하는 경우 오류 메시지가 표시됩니다.
-
--플래그를 사용하여 비활성화된 지표를 업데이트합니다.disabled -
--플래그를 사용하여 활성화된 메트릭으로 업데이트합니다.enabled
서비스위치 인수는 서비스 참조이며 서비스 ID 또는 서비스system_name일 수 있습니다.- 도구 상자는 둘 중 하나를 사용합니다.
지표위치 인수는 지표 참조이며 지표 ID 또는 지표system_name일 수 있습니다.- 도구 상자는 둘 중 하나를 사용합니다.
다음 명령도 메트릭을 업데이트합니다.
3scale metric apply [opts] <remote> <service> <metric>
$ 3scale metric apply [opts] <remote> <service> <metric>
메트릭을 업데이트하는 동안 다음 옵션을 사용합니다.
5.11.2. 메트릭 나열 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령은 메트릭을 나열합니다.
3scale metric list [opts] <remote> <service>
$ 3scale metric list [opts] <remote> <service>
메트릭을 나열하는 동안 다음 옵션을 사용합니다.
5.11.3. 메트릭 삭제 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령은 메트릭을 삭제합니다.
3scale metric delete [opts] <remote> <service> <metric>
$ 3scale metric delete [opts] <remote> <service> <metric>
메트릭을 삭제하는 동안 다음 옵션을 사용합니다.
5.12. 방법 생성 링크 복사링크가 클립보드에 복사되었습니다!
3scale toolbox를 사용하여 개발자 포털에서 메서드를 생성, 적용, 나열 및 삭제합니다.
5.12.1. 방법 생성 링크 복사링크가 클립보드에 복사되었습니다!
방법을 생성하려면 다음 단계를 사용하십시오.
- 메서드 이름을 제공해야 합니다.
-
system-name을 재정의하려면 선택적 매개변수를 사용합니다. - 동일한 이름의 메서드가 이미 존재하는 경우 오류 메시지가 표시됩니다.
--플래그로 비활성화된 방법을 생성합니다.disabled-
기본적으로
활성화되어있습니다.
-
기본적으로
서비스위치 인수는 서비스 참조이며 서비스 ID 또는 서비스system_name일 수 있습니다.- 도구 상자는 둘 중 하나를 사용합니다.
다음 명령은 메서드를 생성합니다.
3scale method create [opts] <remote> <service> <method-name>
$ 3scale method create [opts] <remote> <service> <method-name>
방법을 생성하는 동안 다음 옵션을 사용합니다.
5.12.2. 방법 생성 또는 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
다음 단계에 따라 새 메서드를 생성하거나 기존 메서드를 업데이트합니다.
- 동일한 이름의 메서드가 이미 존재하는 경우 명령에서 오류 메시지를 반환합니다.
-
--메서드로 업데이트합니다.disabled플래그를 사용하여 disabled -
--메서드로 업데이트합니다.enabled플래그를 사용하여 활성화된
서비스위치 인수는 서비스 참조이며 서비스 ID 또는 서비스system_name일 수 있습니다.- 도구 상자는 둘 중 하나를 사용합니다.
메서드위치 인수는 메서드 참조이며 메서드id또는 methodsystem_name일 수 있습니다.- 도구 상자는 둘 중 하나를 사용합니다.
다음 명령은 방법을 업데이트합니다.
3scale method apply [opts] <remote> <service> <method>
$ 3scale method apply [opts] <remote> <service> <method>
방법을 업데이트하는 동안 다음 옵션을 사용합니다.
5.12.3. 메서드 나열 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령은 방법을 나열합니다.
3scale method list [opts] <remote> <service>
$ 3scale method list [opts] <remote> <service>
메서드를 나열하는 동안 다음 옵션을 사용합니다.
5.12.4. 방법 삭제 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령은 방법을 삭제합니다.
3scale method delete [opts] <remote> <service> <metric>
$ 3scale method delete [opts] <remote> <service> <metric>
방법을 삭제하는 동안 다음 옵션을 사용합니다.
5.13. 서비스 생성 링크 복사링크가 클립보드에 복사되었습니다!
3scale toolbox를 사용하여 개발자 포털에서 서비스를 생성, 적용, 나열, 표시 또는 삭제합니다.
5.13.1. 새 서비스 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령은 새 서비스를 생성합니다.
3scale service create [options] <remote> <service-name>
$ 3scale service create [options] <remote> <service-name>
서비스를 생성하는 동안 다음 옵션을 사용합니다.
5.13.2. 서비스 생성 또는 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
다음을 사용하여 새 서비스를 생성하거나 기존 서비스를 업데이트합니다.
service-id_or_system-name위치 인수는 서비스 참조입니다.-
서비스 ID 또는 서비스
일 수 있습니다.system_name - Toolbox는 자동으로 이를 파악합니다.
-
서비스 ID 또는 서비스
-
이 명령은
idempotent입니다.
다음 명령은 서비스를 업데이트합니다.
3scale service apply <remote> <service-id_or_system-name>
$ 3scale service apply <remote> <service-id_or_system-name>
서비스를 업데이트하는 동안 다음 옵션을 사용합니다.
5.13.3. 서비스 나열 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령은 서비스를 나열합니다.
3scale service list <remote>
$ 3scale service list <remote>
서비스를 나열하는 동안 다음 옵션을 사용합니다.
5.13.4. 서비스 표시 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령은 서비스를 보여줍니다.
3scale service show <remote> <service-id_or_system-name>
$ 3scale service show <remote> <service-id_or_system-name>
서비스를 표시하는 동안 다음 옵션을 사용합니다.
5.13.5. 서비스 삭제 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령은 서비스를 삭제합니다.
3scale service delete <remote> <service-id_or_system-name>
$ 3scale service delete <remote> <service-id_or_system-name>
서비스를 삭제하는 동안 다음 옵션을 사용합니다.
5.14. ActiveDocs 생성 링크 복사링크가 클립보드에 복사되었습니다!
3scale toolbox를 사용하여 개발자 포털에서 ActiveDocs를 생성, 업데이트, 나열 또는 삭제합니다.
5.14.1. 새 ActiveDocs 생성 링크 복사링크가 클립보드에 복사되었습니다!
OpenAPI 사양과 호환되는 API 정의에서 새 ActiveDocs를 생성하려면 다음을 수행합니다.
필요한 경우 3scale에 API 정의를 추가하여 이름을 지정합니다.
3scale activedocs create <remote> <activedocs-name> <specification>
$ 3scale activedocs create <remote> <activedocs-name> <specification>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ActiveDocs에 대한 OpenAPI 사양이 필요하며 다음 값 중 하나여야 합니다.
- 사용 가능한 경로의 파일 이름입니다.
-
toolbox가 콘텐츠를 다운로드할 수 있는 URL입니다. 지원되는 스키마는
http및https입니다. stdin표준 입력 스트림에서 읽습니다. 이 값은-값을 설정하여 제어합니다.ActiveDocs를 생성하는 동안 다음 옵션을 사용합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 개발자 포털에 정의를 게시합니다.
5.14.2. ActiveDocs 생성 또는 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 사용하여 새 ActiveDocs를 생성하거나 기존 ActiveDocs를 새 API 정의로 업데이트합니다.
3scale activedocs apply <remote> <activedocs_id_or_system_name>
$ 3scale activedocs apply <remote> <activedocs_id_or_system_name>
ActiveDocs를 업데이트하는 동안 다음 옵션을 사용합니다.
activedocs의 동작은 3scale 2.8에서 --skip-swagger-validations 가 변경되었습니다. activedocs apply 를 사용하여 기존 스크립트를 업데이트해야 할 수도 있습니다. 이전 버전에서는 각 activedocs apply 명령에서 이 옵션을 지정하지 않은 경우 검증을 건너뛰지 않았습니다. 이제 --skip-swagger-validations 가 기본적으로 true 입니다.
5.14.3. ActiveDocs 나열 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 사용하여 다음을 포함하여 개발자 포털의 모든 ActiveDocs에 대한 정보를 가져옵니다.
- id
- name
- 시스템 이름
- description
- 게시됨(개발 포털에 표시될 수 있음)
- 생성 날짜
- 최신 업데이트 날짜
다음 명령은 정의된 모든 ActiveDocs를 나열합니다.
3scale activedocs list <remote>
$ 3scale activedocs list <remote>
ActiveDocs를 나열하는 동안 다음 옵션을 사용합니다.
5.14.4. ActiveDocs 삭제 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령은 ActiveDocs를 제거합니다.
3scale activedocs delete <remote> <activedocs-id_or-system-name>
$ 3scale activedocs delete <remote> <activedocs-id_or-system-name>
ActiveDocs를 삭제하는 동안 다음 옵션을 사용합니다.
5.15. 프록시 구성 나열 링크 복사링크가 클립보드에 복사되었습니다!
3scale toolbox를 사용하여 개발자 포털에서 정의된 모든 프록시 구성을 나열, 표시, 승격합니다.
다음 명령은 프록시 구성을 나열합니다.
3scale proxy-config list <remote> <service> <environment>
$ 3scale proxy-config list <remote> <service> <environment>
프록시 구성을 나열하는 동안 다음 옵션을 사용합니다.
5.15.1. 프록시 구성 표시 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령은 프록시 구성을 보여줍니다.
3scale proxy-config show <remote> <service> <environment>
$ 3scale proxy-config show <remote> <service> <environment>
프록시 구성을 표시하는 동안 다음 옵션을 사용합니다.
5.15.2. 프록시 구성 승격 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령은 최신 스테이징 프록시 구성을 프로덕션 환경으로 승격합니다.
3scale proxy-config promote <remote> <service>
$ 3scale proxy-config promote <remote> <service>
최신 스테이징 프록시 구성을 프로덕션 환경으로 승격하는 동안 다음 옵션을 사용합니다.
5.15.3. 프록시 구성 내보내기 링크 복사링크가 클립보드에 복사되었습니다!
예를 들어 3scale 인스턴스에 연결되지 않은 자체 관리 APIcast 게이트웨이가 있는 경우 proxy-config 내보내기 명령을 사용합니다. 이 시나리오에서는 3scale 구성을 수동으로 삽입하거나 APICast 배포 및 구성 옵션을 사용하여 삽입합니다. 두 경우 모두 3scale 구성을 제공해야 합니다.
다음 명령은 APIcast 게이트웨이에 삽입할 수 있는 구성을 내보냅니다.
3scale proxy-config export <remote>
$ 3scale proxy-config export <remote>
3scale 구성 파일로 사용할 공급자 계정에 대한 프록시 구성을 내보낼 때 다음 옵션을 지정할 수 있습니다.
Options for proxy-config
--environment=<value> Gateway environment. Must be 'sandbox' or
'production' (default: sandbox)
-o --output=<value> Output format. One of: json|yaml
Options for proxy-config
--environment=<value> Gateway environment. Must be 'sandbox' or
'production' (default: sandbox)
-o --output=<value> Output format. One of: json|yaml
5.15.4. 프록시 구성 배포 링크 복사링크가 클립보드에 복사되었습니다!
다음 배포 명령은 Service Mesh를 사용하는 경우 APIcast 구성을 3scale의 스테이징 환경 또는 프로덕션 환경으로 승격합니다.
3scale proxy deploy <remote> <service>
$ 3scale proxy deploy <remote> <service>
deploy 명령을 사용하여 APIcast 구성을 스테이징 환경으로 승격할 때 다음 옵션을 지정할 수 있습니다.
-o --output=<value> Output format. One of: json|yaml
-o --output=<value> Output format. One of: json|yaml
5.15.5. 프록시 구성 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
다음 업데이트 명령은 APIcast 구성을 업데이트합니다.
3scale proxy update <remote> <service>
$ 3scale proxy update <remote> <service>
update 명령을 사용하여 APIcast 구성을 업데이트할 때 다음 옵션을 지정할 수 있습니다.
-o --output=<value> Output format. One of: json|yaml
-p --param=<value> APIcast configuration parameters. Format:
[--param key=value]. Multiple options allowed.
-o --output=<value> Output format. One of: json|yaml
-p --param=<value> APIcast configuration parameters. Format:
[--param key=value]. Multiple options allowed.
5.15.6. 프록시 구성 표시 링크 복사링크가 클립보드에 복사되었습니다!
다음 show 명령은 배포되지 않은 APIcast 구성을 가져옵니다.
3scale proxy show <remote> <service>
$ 3scale proxy show <remote> <service>
show 명령을 사용하여 배포되지 않은 APIcast 구성을 가져올 때 다음 옵션을 지정할 수 있습니다.
-o --output=<value> Output format. One of: json|yaml
$ -o --output=<value> Output format. One of: json|yaml
5.15.7. 프록시 구성 배포(더 이상 사용되지 않음) 링크 복사링크가 클립보드에 복사되었습니다!
3scale 2.12에서는 proxy-config deploy 명령에 대한 지원이 더 이상 사용되지 않습니다.
다음 명령을 사용합니다.
-
프록시 배포 -
프록시 업데이트 -
프록시 표시
자세한 내용은 프록시 구성 배포를 참조하십시오.
다음 배포 명령은 Service Mesh를 사용하는 경우 APIcast 구성을 3scale의 스테이징 환경 또는 프로덕션 환경으로 승격합니다.
3scale proxy-config deploy <remote> <service>
$ 3scale proxy-config deploy <remote> <service>
deploy 명령을 사용하여 APIcast 구성을 스테이징 환경으로 승격할 때 다음 옵션을 지정할 수 있습니다.
-o --output=<value> Output format. One of: json|yaml
$ -o --output=<value> Output format. One of: json|yaml
추가 리소스
5.16. 정책 레지스트리 복사 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같은 경우 toolbox 명령을 사용하여 3scale 소스 계정에서 대상 계정으로 정책 레지스트리를 복사합니다.
- 대상 계정에서 누락된 사용자 정의 정책이 생성됩니다.
- 대상 계정에서 일치하는 사용자 지정 정책이 업데이트됩니다.
- 이 복사 명령은 멱등입니다.
- 누락된 사용자 지정 정책은 소스 계정에 존재하고 계정 테넌트에 없는 사용자 지정 정책으로 정의됩니다.
- 일치하는 사용자 지정 정책은 소스 계정과 대상 계정 모두에 존재하는 사용자 지정 정책으로 정의됩니다.
다음 명령은 정책 레지스트리를 복사합니다.
3scale policy-registry copy [opts] <source_remote> <target_remote>
$ 3scale policy-registry copy [opts] <source_remote> <target_remote>
5.17. 애플리케이션 나열 링크 복사링크가 클립보드에 복사되었습니다!
3scale toolbox를 사용하여 애플리케이션 개발자 포털을 나열, 생성, 표시, 적용 또는 삭제합니다.
다음 명령은 애플리케이션을 나열합니다.
3scale application list [opts] <remote>
$ 3scale application list [opts] <remote>
애플리케이션을 나열하는 동안 다음 옵션을 사용합니다.
5.17.1. 애플리케이션 생성 링크 복사링크가 클립보드에 복사되었습니다!
create 명령을 사용하여 지정된 3scale 계정 및 애플리케이션 계획에 연결된 하나의 애플리케이션을 생성합니다.
필요한 위치 매개변수는 다음과 같습니다.
-
&
lt;service> 참조. 서비스 ID 또는 서비스일 수 있습니다.system_name &
lt;account> 참조 다음 중 하나일 수 있습니다.-
계정
ID -
계정의 admin 사용자의 사용자
이름,이메일또는user_id -
provider_key
-
계정
-
<application plan> 참조 계획 ID 중 하나이거나system_name을 계획할 수 있습니다. -
&
lt;name> 애플리케이션 이름입니다.
다음 명령은 애플리케이션을 생성합니다.
3scale application create [opts] <remote> <account> <service> <application-plan> <name>
$ 3scale application create [opts] <remote> <account> <service> <application-plan> <name>
애플리케이션을 생성하는 동안 다음 옵션을 사용합니다.
5.17.2. 애플리케이션 표시 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령은 애플리케이션을 보여줍니다.
3scale application show [opts] <remote> <application>
$ 3scale application show [opts] <remote> <application>
애플리케이션 매개변수는 다음을 허용합니다.
-
user_key- API 키 -
app_id- app_id/app_key 쌍 또는 OAuth 및 OpenID Connect (OIDC) 인증 모드의 클라이언트 ID -
애플리케이션 내부
ID
5.17.3. 애플리케이션 생성 또는 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 사용하여 새 애플리케이션을 생성하거나 기존 애플리케이션을 업데이트합니다.
3scale application apply [opts] <remote> <application>
$ 3scale application apply [opts] <remote> <application>
애플리케이션 매개변수는 다음을 허용합니다.
-
user_key- API 키 -
app_id- app_id/app_key 쌍 또는 OAuth 및 OIDC 인증 모드의 클라이언트 ID -
애플리케이션 내부
ID 애플리케이션을 찾을 수 없는 경우
계정선택적 인수가 필요합니다. 다음 중 하나일 수 있습니다.-
계정
ID -
3scale 계정의 관리자 사용자
이름,이메일또는user_id -
provider_key
-
계정
-
애플리케이션
이름은3scale에서 고유하지 않으므로 name을 고유 식별자로 사용할 수 없습니다. -
--resume플래그로 일시 중지된 애플리케이션을 다시 시작합니다. -
애플리케이션을 일시 중단 -
--suspend플래그에 의해 일시 중지된 상태를 변경합니다.
애플리케이션을 업데이트하는 동안 다음 옵션을 사용합니다.
5.17.4. 애플리케이션 삭제 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령은 애플리케이션을 삭제합니다.
3scale application delete [opts] <remote> <application>
$ 3scale application delete [opts] <remote> <application>
애플리케이션 매개변수는 다음을 허용합니다.
-
user_key- API 키 -
app_id- app_id/app_key 쌍 또는 OAuth 및 OIDC 인증 모드의 클라이언트 ID -
애플리케이션 내부
ID
5.18. 제품 내보내기 링크 복사링크가 클립보드에 복사되었습니다!
소스 3scale 인스턴스와 연결되지 않은 3scale 인스턴스로 해당 제품을 가져올 수 있도록 yaml 형식으로 3scale 제품 정의를 내보낼 수 있습니다. 해당 제품을 내보내려면 3scale 제품을 설정해야 합니다. API 호출을 테스트하기 위한 새 제품 생성 을 참조하십시오.
두 3scale 인스턴스에 네트워크 연결이 있는 경우 두 3scale 인스턴스에서 동일한 3scale 제품을 사용하려는 경우 toolbox 3scale copy 명령을 사용합니다.
자세한 내용은 3scale API Management Operator를 사용하여 3scale 구성 및 프로비저닝을 참조하십시오.
제품의 기본 정보와 함께 출력 yaml 에는 다음이 포함됩니다.
- 제품에 연결된 백엔드입니다.
- 연결된 백엔드의 메트릭, 방법 및 매핑 규칙.
- 애플리케이션 계획에 정의된 제한 및 가격 규칙입니다.
- 제한 및 가격 규칙에 따라 참조되는 메트릭 및 메서드입니다.
제품 내보내기는 읽기 전용 작업입니다. 즉, 제품을 반복적으로 내보내는 것이 안전합니다. toolbox는 내보내는 제품을 변경하지 않습니다. 원하는 경우 yaml 출력을 다른 3scale 인스턴스로 가져오기 전에 수정할 수 있습니다.
3scale 제품 내보내기는 다음과 같은 상황을 위한 것입니다.
-
소스와 대상 3scale 인스턴스 간에는 연결이 없습니다. 예를 들어 둘 이상의 3scale 인스턴스에서 동일한 제품을 사용하려는 경우 toolbox
3scale copy명령을 실행하지 않는 심각한 네트워크 제한 사항이 있을 수 있습니다. -
Git 또는 기타 소스 제어 시스템을 사용하여
yaml형식으로 3scale 제품 정의를 유지 관리하려고 합니다.
3scale toolbox 내보내기 및 가져오기 명령은 제품 정의 백업 및 복원에도 유용할 수 있습니다.
형식
내보내기 명령을 실행하려면 이 형식을 사용합니다.
3scale product export [-f output-file] <remote> <product>
$ 3scale product export [-f output-file] <remote> <product>
export 명령은 stdout 또는 파일로 출력을 보낼 수 있습니다. 기본값은 stdout 입니다. 출력을 파일로 보내려면 .yaml 파일의 이름으로 -f 또는 --file 옵션을 지정합니다.
& lt;remote >를 제품을 내보내는 3scale 인스턴스와 연결된 3scale 공급자 계정 별칭 또는 URL로 바꿉니다. 자세한 내용은 원격 액세스 인증 정보 관리를 참조하십시오.
& lt;product >를 내보내려는 제품의 시스템 이름 또는 3scale ID로 바꿉니다. 이 제품은 사용자가 지정한 3scale 공급자 계정과 연결되어 있어야 합니다. 제품 개요 페이지의 3scale 관리 포털에서 제품의 시스템 이름을 찾을 수 있습니다. 제품의 3scale ID를 가져오려면 toolbox 3scale services show 명령을 실행합니다.
예
다음 명령은 my-3scale-1 공급자 계정과 연결된 3scale 인스턴스에서 petstore 제품을 내보내고 petstore-product.yaml 파일에 출력합니다.
3scale product export -f petstore-product.yaml my-3scale-1 petstore
$ 3scale product export -f petstore-product.yaml my-3scale-1 petstore
다음은 Default API 제품에 대한 직렬화 예입니다.
Product CR 내보내기 및 파이핑
내보내기 명령을 실행하면 출력을 파이프하여 제품 CR(사용자 정의 리소스) 을 생성할 수 있습니다. 이 CR을 포함하는 3scale 인스턴스는 다음 사항에 따라 다릅니다.
-
3scale-provider-account보안이 정의되면 3scale Operator는 해당 보안으로 식별된 3scale 인스턴스에 product CR을 생성합니다. -
3scale-provider-account보안이 정의되지 않은 경우 네임스페이스에 새 제품 CR이 설치되어 있는 3scale 인스턴스가 있는 경우 3scale Operator는 해당 네임스페이스에 product CR을 생성합니다. -
3scale-provider-account보안이 정의되지 않은 경우 새 제품 CR에 3scale 인스턴스가 포함되지 않은 경우 3scale Operator는 제품 CR을 실패 상태로 표시합니다.
threescale-provider-account 시크릿이 포함된 네임스페이스에서 다음 명령을 실행한다고 가정합니다. toolbox는 petstore CR을 threescale-provider-account 시크릿에서 식별된 3scale 인스턴스로 파이프합니다.
3scale product export my-3scale-1 petstore | oc apply -f -
$ 3scale product export my-3scale-1 petstore | oc apply -f -
5.19. 제품 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
소스 및 대상 3scale 인스턴스에 네트워크 연결이 없는 경우 둘 이상의 3scale 인스턴스에서 동일한 3scale 제품을 사용하려면 하나의 3scale 인스턴스에서 3scale 제품을 내보내 다른 3scale 인스턴스로 가져옵니다. 제품을 가져오려면 toolbox 3scale product import 명령을 실행합니다.
두 3scale 인스턴스에 네트워크 연결이 있는 경우 두 3scale 인스턴스에서 동일한 3scale 제품을 사용하려는 경우 toolbox 3scale copy 명령을 사용합니다.
설명
3scale 제품을 가져올 때 toolbox는 Product 및 Backend CRD(사용자 정의 리소스 정의)를 준수하는 .yaml 형식으로 직렬화된 제품 정의가 필요합니다. toolbox 3scale product export 명령을 실행하거나 .yaml 형식의 제품 정의를 수동으로 생성하여 이 .yaml 콘텐츠를 가져올 수 있습니다.
제품을 내보낸 경우 가져온 정의에 내보낸 내용이 포함되어 있으며 여기에는 다음이 포함될 수 있습니다.
- 제품에 연결된 백엔드입니다.
- 연결된 백엔드의 메트릭, 방법 및 매핑 규칙.
- 애플리케이션 계획에 정의된 제한 및 가격 규칙입니다.
- 제한 및 가격 규칙에 따라 참조되는 메트릭 및 메서드입니다.
원하는 경우 내보낸 .yaml 출력을 다른 3scale 인스턴스로 가져오기 전에 수정할 수 있습니다.
import 명령은 idempotent입니다. 여러 번 실행하여 동일한 제품을 가져올 수 있으며 결과 3scale 구성은 동일하게 유지됩니다. 가져오기 프로세스 중에 오류가 발생하면 명령을 다시 실행하는 것이 안전합니다. 가져오기 프로세스에서 3scale 인스턴스에서 제품을 찾을 수 없는 경우 제품을 생성합니다. 또한 .yaml 정의에 정의되어 있으며 3scale 인스턴스에서 찾을 수 없는 모든 메트릭, 메서드 또는 백엔드를 생성합니다.
3scale 제품을 가져오는 것은 다음과 같은 상황을 위한 것입니다.
-
소스와 대상 3scale 인스턴스 간에는 연결이 없습니다. 예를 들어 둘 이상의 3scale 인스턴스에서 동일한 제품을 사용하려는 경우 toolbox
3scale copy명령을 실행하지 않는 심각한 네트워크 제한 사항이 있을 수 있습니다. -
Git 또는 기타 소스 제어 시스템을 사용하여
.yaml형식으로 3scale 제품 정의를 유지 관리하려고 합니다.
3scale toolbox 내보내기 및 가져오기 명령은 제품 정의 백업 및 복원에도 유용할 수 있습니다.
형식
가져오기 명령을 실행하려면 이 형식을 사용합니다.
3scale product import [<options>] <remote>
$ 3scale product import [<options>] <remote>
import 명령은 stdin 또는 파일에서 .yaml 입력을 사용합니다. 기본값은 stdin 입니다.
다음 옵션을 지정할 수 있습니다.
-
-f또는--file그 뒤에 파일 이름은 지정하는.yaml파일에서 입력을 가져옵니다. 이 파일에는 3scale Product 및BackendCRD를 준수하는 3scale제품정의가 포함되어야 합니다. -
-O 또는--output이후json또는yaml은 지정한 형식으로 가져온 항목을 나열하는 보고서를 출력합니다. 기본 출력 형식은json입니다.
& lt;remote >를 제품을 가져오려는 3scale 인스턴스와 연결된 3scale 공급자 계정 별칭 또는 URL로 바꿉니다. 자세한 내용은 원격 액세스 인증 정보 관리를 참조하십시오.
예
다음 명령은 petstore-product.yaml 에 정의된 제품을 my-3scale-2 공급자 계정과 연결된 3scale 인스턴스로 가져옵니다. 기본적으로 가져온 내용에 대한 보고서는 .json 형식으로 되어 있습니다.
3scale product import -f petstore-product.yaml my-3scale-2
$ 3scale product import -f petstore-product.yaml my-3scale-2
가져오기 명령은 가져온 항목을 나열하는 보고서를 출력합니다. 예를 들면 다음과 같습니다.
직렬화된 제품 정의의 예는 제품 내보내기 끝에 있습니다.
5.20. 제품 정책 체인 내보내기 및 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
제품의 정책 체인을 yaml 또는 json 콘텐츠로 내보내거나 가져올 수 있습니다. 명령줄에서 ID 또는 시스템 값으로 제품을 참조합니다. 제품의 정책 체인을 내보내거나 가져오려면 3scale 제품을 설정해야 합니다. 참조: API 호출을 테스트하기 위한 새 제품 생성.
내보내기 명령의 기능
- 명령은 원격 제품에 대한 읽기 전용 작업입니다.
-
명령은 기본적으로 표준 출력
stdout에 출력을 작성합니다.-f플래그는 명령의 출력을 파일에 작성하는 데 사용할 수 있습니다. -
명령 출력 형식은
json또는yaml입니다. 기본 형식은yaml입니다.
수출 제품 정책 체인에 대한 도움말 옵션
명령 형식
다음은 정책 체인을 yaml 의 파일로 내보내는 명령의 형식입니다.
3scale policies export -f policies.yaml -o yaml remote_name product_name
$ 3scale policies export -f policies.yaml -o yaml remote_name product_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow
가져오기 명령의 기능:
-
명령은 표준 입력 또는
stdin에서 입력을 읽습니다.-f FILE플래그가 설정되면 파일에서 입력을 읽습니다.-uURL 플래그가 설정되면 URL에서 입력을 읽습니다. -
가져온 콘텐츠는
yaml또는json일 수 있습니다. toolbox가 자동으로 감지되므로 형식을 지정할 필요가 없습니다. -
기존 정책 체인은 새로 가져온 정책 체인을 덮어씁니다. 그런 다음
SET의미 체계가 구현됩니다. - 모든 콘텐츠 검증은 3scale API로 위임됩니다.
가져오기 제품 정책 체인에 대한 도움말 옵션
명령 형식
다음은 파일에서 정책 체인을 가져올 명령의 형식입니다.
3scale policies import -f plan.yaml remote_name product_name
$ 3scale policies import -f plan.yaml remote_name product_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음은 URI에서 정책 체인을 가져올 명령의 형식입니다.
3scale policies import -f http[s]://domain/resource/path.yaml remote_name product_name
$ 3scale policies import -f http[s]://domain/resource/path.yaml remote_name product_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.21. API 백엔드 복사 링크 복사링크가 클립보드에 복사되었습니다!
지정된 3scale 시스템에서 지정된 소스 API 백엔드의 사본을 생성합니다. 대상 시스템은 기본적으로 소스 백엔드 시스템 이름으로 먼저 검색합니다.
- 선택한 시스템 이름이 있는 백엔드를 찾을 수 없는 경우 생성됩니다.
- 선택한 시스템 이름이 있는 백엔드가 발견되면 교체됩니다. 없는 메트릭 및 메서드만 생성되는 반면 매핑 규칙은 새 규칙으로 완전히 교체됩니다.
--target_system_name 옵션을 사용하여 시스템 이름을 재정의할 수 있습니다.
복사된 구성 요소
다음 API 백엔드 구성 요소가 복사됩니다.
- 지표
- 방법
- 매핑 규칙: 복사되고 교체됩니다.
프로세스
다음 명령을 입력하여 API 백엔드를 복사합니다.
3scale backend copy [opts] -s <source_remote> -d <target_remote> <source_backend>
$ 3scale backend copy [opts] -s <source_remote> -d <target_remote> <source_backend>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 지정된 3scale 인스턴스는 원격 이름 또는 URL일 수 있습니다.
참고명령당 단일 API 백엔드만 복사할 수 있습니다. 여러 명령을 사용하여 여러 백엔드를 복사할 수 있습니다. 다른
--target_system_name 이름을지정하여 동일한 백엔드를 여러 번 복사할 수 있습니다.
API 백엔드를 복사할 때 다음 옵션을 사용합니다.
다음 예제 명령은 --target_system_name 에 다른 값을 지정하여 API 백엔드를 여러 번 복사하는 방법을 보여줍니다.
podman run registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16 3scale backend copy [-t target_system_name] -s 3scale1 -d 3scale2 api_backend_01
$ podman run registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16 3scale backend copy [-t target_system_name] -s 3scale1 -d 3scale2 api_backend_01
5.22. API 제품 복사 링크 복사링크가 클립보드에 복사되었습니다!
대상 3scale 시스템에서 지정된 소스 API 제품의 사본을 생성합니다. 기본적으로 소스 API 제품 시스템 이름은 먼저 대상 시스템을 검색합니다.
-
선택한
system-name을 가진 제품을 찾을 수 없는 경우 생성됩니다. -
선택한
system-name이 있는 제품이 발견되면 업데이트됩니다. 없는 메트릭 및 메서드만 생성되는 반면 매핑 규칙은 새 규칙으로 완전히 교체됩니다.
--target_system_name 옵션을 사용하여 시스템 이름을 재정의할 수 있습니다.
복사된 구성 요소
다음 API 제품 구성 요소가 복사됩니다.
- 구성 및 설정
- 메트릭 및 방법
- 매핑 규칙: 복사되고 교체됩니다.
- 애플리케이션 계획, 가격 규칙 및 제한
- 애플리케이션 사용 규칙
- Policies
- 백엔드
- ActiveDocs
프로세스
다음 명령을 입력하여 API 제품을 복사합니다.
3scale product copy [opts] -s <source_remote> -d <target_remote> <source_product>
$ 3scale product copy [opts] -s <source_remote> -d <target_remote> <source_product>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 지정된 3scale 인스턴스는 원격 이름 또는 URL일 수 있습니다.
참고명령당 단일 API 제품만 복사할 수 있습니다. 여러 명령을 사용하여 여러 제품을 복사할 수 있습니다. 다른
--target_system_name 이름을지정하여 동일한 제품을 여러 번 복사할 수 있습니다.
API 제품을 복사할 때 다음 옵션을 사용합니다.
다음 예제 명령은 --target_system_name 에 대해 다른 값을 지정하여 API 제품을 여러 번 복사하는 방법을 보여줍니다.
podman run registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16 3scale product copy [-t target_system_name] -s 3scale1 -d 3scale2 my_api_product_01
$ podman run registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.16 3scale product copy [-t target_system_name] -s 3scale1 -d 3scale2 my_api_product_01
5.23. SSL 및 TLS 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 SSL/TLS(Secure Sockets Layer/Transport Layer Security) 관련 문제를 해결하는 방법을 설명합니다.
자체 서명된 SSL 인증서와 관련된 문제가 발생하는 경우 이 섹션에 설명된 대로 원격 호스트 인증서를 다운로드하여 사용할 수 있습니다. 예를 들어 일반적인 오류에는 SSL 인증서 문제: 인증서 포함됩니다.
체인의 자체 서명된 인증서 또는 자체 서명된 인증서가
프로세스
openssl을 사용하여 원격 호스트 인증서를 다운로드합니다. 예를 들면 다음과 같습니다.echo | openssl s_client -showcerts -servername self-signed.badssl.com -connect self-signed.badssl.com:443 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > self-signed-cert.pem
$ echo | openssl s_client -showcerts -servername self-signed.badssl.com -connect self-signed.badssl.com:443 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > self-signed-cert.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow curl을 사용하여 인증서가 올바르게 작동하는지 확인합니다. 예를 들면 다음과 같습니다.SSL_CERT_FILE=self-signed-cert.pem curl -v https://self-signed.badssl.com
$ SSL_CERT_FILE=self-signed-cert.pem curl -v https://self-signed.badssl.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 인증서가 올바르게 작동하는 경우 더 이상 SSL 오류가 발생하지 않습니다. 인증서가 올바르게 작동하지 않는 경우
-k옵션(또는 긴 형식인--insecure)을 사용하여curl명령을 실행하십시오. 이는 그렇지 않으면 안전하지 않은 것으로 간주되는 서버 연결에 대해서도 진행하려고 한다는 것을 나타냅니다.SSL_CERT_FILE환경 변수를3scale명령에 추가합니다. 예를 들면 다음과 같습니다.podman run --env "SSL_CERT_FILE=/tmp/self-signed-cert.pem" -v $PWD/self-signed-cert.pem:/tmp/self-signed-cert.pem registry.redhat.io/3scale-amp2/toolbox-rhel7:3scale2.16 3scale service list https://{ACCESS_KEY}@{3SCALE_ADMIN}-admin.{DOMAIN_NAME}$ podman run --env "SSL_CERT_FILE=/tmp/self-signed-cert.pem" -v $PWD/self-signed-cert.pem:/tmp/self-signed-cert.pem registry.redhat.io/3scale-amp2/toolbox-rhel7:3scale2.16 3scale service list https://{ACCESS_KEY}@{3SCALE_ADMIN}-admin.{DOMAIN_NAME}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예에서는 Podman 볼륨을 사용하여 컨테이너에 인증서 파일을 마운트합니다. 파일을 현재
$PWD폴더에서 사용할 수 있다고 가정합니다.대체 방법은 3scale toolbox 이미지를 기본 이미지로 사용하여 자체 toolbox 이미지를 생성한 다음 고유한 신뢰할 수 있는 인증서 저장소를 설치하는 것입니다.
6장. 3scale API Management에서 API 환경 매핑 링크 복사링크가 클립보드에 복사되었습니다!
API 공급자는 3scale 관리 포털을 통해 관리되는 API에 액세스할 수 있습니다. 그런 다음 많은 환경에서 API 백엔드를 배포합니다. API 백엔드 환경에는 다음이 포함됩니다.
- 개발, 품질 보증(QA), 스테이징 및 프로덕션에 사용되는 다양한 환경.
- 자체 API 백엔드 세트를 관리하는 팀 또는 부서에 다양한 환경이 사용됩니다.
Red Hat 3scale API Management 제품은 API의 단일 API 또는 서브 세트를 나타내지만 다른 API 백엔드 환경을 매핑하고 관리하는 데도 사용됩니다.
3scale 제품의 API 환경 매핑에 대한 자세한 내용은 다음 섹션을 참조하십시오.
6.1. 환경당 제품 링크 복사링크가 클립보드에 복사되었습니다!
이 방법은 각 API 백엔드 환경에 별도의 3scale 제품을 사용합니다. 각 제품에서 프로덕션 게이트웨이 및 스테이징 게이트웨이를 구성하여 게이트웨이 구성에 대한 변경 사항을 안전하게 테스트하고 API 백엔드와 마찬가지로 프로덕션 구성으로 승격할 수 있습니다.
Production Product => Production Product APIcast gateway => Production Product API upstream Staging Product => Staging Product APIcast gateway => Staging Product API upstream
Production Product => Production Product APIcast gateway => Production Product API upstream
Staging Product => Staging Product APIcast gateway => Staging Product API upstream
다음과 같이 API 백엔드 환경에 대한 제품을 구성합니다.
개발 환경
개발 백엔드 생성
- 이름: Dev
- 프라이빗 기본 URL: API 백엔드의 URL
Dev 제품 만들기
-
프로덕션 퍼블릭 기본 URL:
https://dev-api-backend.yourdomain.com -
스테이징 공개 기본 URL:
https://dev-api-backend.yourdomain.com - 백엔드 경로를 사용하여 Dev 백엔드 추가 /
-
프로덕션 퍼블릭 기본 URL:
Cryostat 환경
Cryostat 백엔드 생성
- 이름: Cryo stat
- 프라이빗 기본 URL: API 백엔드의 URL
Cryostat 제품 생성
-
프로덕션 퍼블릭 기본 URL:
https://qa-api-backend.yourdomain.com -
스테이징 공개 기본 URL:
https://qa-api-backend.yourdomain.com - 백엔드 경로를 사용하여 Cryostat 백엔드 추가 /
-
프로덕션 퍼블릭 기본 URL:
프로덕션 환경
프로덕션 백엔드 생성
- 이름: Prod
- 프라이빗 기본 URL: API 백엔드의 URL
Prod 제품 생성
-
프로덕션 퍼블릭 기본 URL:
https://prod-api-backend.yourdomain.com -
스테이징 공개 기본 URL:
https://prod-api-backend.yourdomain.com - 백엔드 경로를 사용하여 프로덕션 백엔드 추가 /
-
프로덕션 퍼블릭 기본 URL:
6.2. 3scale API Management 온-프레미스 인스턴스 링크 복사링크가 클립보드에 복사되었습니다!
3scale 온-프레미스 인스턴스의 경우 API 백엔드 환경을 관리하기 위해 3scale을 설정하는 여러 가지 방법이 있습니다.
- 각 API 백엔드 환경에 대해 별도의 3scale 인스턴스
- 멀티 테넌시 기능을 사용하는 단일 3scale 인스턴스
6.2.1. 환경당 3scale API Management 인스턴스 분리 링크 복사링크가 클립보드에 복사되었습니다!
이 접근 방식에서는 각 API 백엔드 환경에 별도의 3scale 인스턴스가 배포됩니다. 이 아키텍처의 이점은 각 환경이 서로 격리되므로 공유 데이터베이스 또는 기타 리소스가 없다는 것입니다. 예를 들어 한 환경에서 수행되는 모든 로드 테스트는 다른 환경의 리소스에 영향을 미치지 않습니다.
이러한 설치 분리는 위에서 설명한 것처럼 이점이 있지만 더 많은 운영 리소스 및 유지 관리가 필요합니다. 이러한 추가 리소스는 OpenShift 관리 계층에 필요하며 3scale 계층에 반드시 필요한 것은 아닙니다.
6.2.2. 환경당 3scale API Management 테넌트 분리 링크 복사링크가 클립보드에 복사되었습니다!
이 접근 방식에서는 단일 3scale 인스턴스가 사용되지만 멀티 테넌시 기능은 여러 API 백엔드를 지원하는 데 사용됩니다.
두 가지 옵션이 있습니다.
- 단일 테넌트 내에서 환경과 3scale 제품 간에 1-to-1 매핑을 생성합니다.
필요에 따라 테넌트당 하나 이상의 제품이 있는 환경과 테넌트 간에 1-to-1 매핑을 만듭니다.
- API 백엔드 환경( dev-tenant, qa-tenant, prod-tenant)에 해당하는 테넌트 3개가 있습니다. 이 접근 방식의 이점은 환경을 논리적으로 분리할 수 있지만 공유 물리적 리소스를 사용한다는 것입니다.
API 환경을 여러 테넌트가 있는 단일 설치에 매핑하기 위한 최상의 전략을 분석할 때 공유 물리적 리소스를 고려해야 합니다.
6.3. 3scale API Management 혼합 방식 링크 복사링크가 클립보드에 복사되었습니다!
3scale API Management 온-프레미스 인스턴스에 설명된 접근 방식을 결합할 수 있습니다. 예를 들면 다음과 같습니다.
- 프로덕션을 위한 별도의 3scale 인스턴스입니다.
- dev 및 qa의 비 프로덕션 환경에 대해 별도의 테넌트가 있는 별도의 3scale 인스턴스입니다.
6.4. APIcast 게이트웨이를 사용한 3scale API Management 링크 복사링크가 클립보드에 복사되었습니다!
3scale 온-프레미스 인스턴스의 경우 API 백엔드 환경을 관리하기 위해 3scale을 설정하는 두 가지 대안이 있습니다.
- 각 3scale 설치에는 스테이징 및 프로덕션을 위한 두 가지 기본 제공 APIcast 게이트웨이가 포함되어 있습니다.
- 3scale이 실행 중인 OpenShift 클러스터에 추가 APIcast 게이트웨이를 외부에 배포합니다.
6.4.1. APIcast 기본 게이트웨이 링크 복사링크가 클립보드에 복사되었습니다!
APIcast 기본 제공 게이트웨이가 사용되는 경우 APIcast 게이트웨이를 사용하여 3scale API Management에 설명된 위의 방법을 사용하여 구성된 API 백엔드가 자동으로 처리됩니다. 3scale 마스터 관리자가 테넌트를 추가하면 프로덕션 및 스테이징 기본 APIcast 게이트웨이에서 테넌트에 대한 경로가 생성됩니다. 다중 테넌시 하위 도메인 이해를 참조하십시오.
-
<API_NAME>-<TENANT_NAME>-apicast-staging.<WILDCARD_DOMAIN> -
<API_NAME>-<TENANT_NAME>-apicast-production.<WIDLCARD_DOMAIN>
따라서 다른 테넌트에 매핑된 각 API 백엔드 환경에서는 고유한 경로를 가져옵니다. 예를 들면 다음과 같습니다.
-
Dev
<API_NAME>-dev-apicast-staging.<WILDCARD_DOMAIN> -
QA
<API_NAME>-qa-apicast-staging.<WILDCARD_DOMAIN> -
Prod
<API_NAME>-prod-apicast-staging.<WILDCARD_DOMAIN>
6.4.2. 추가 APIcast 게이트웨이 링크 복사링크가 클립보드에 복사되었습니다!
추가 APIcast 게이트웨이는 3scale 인스턴스가 실행 중인 것과 다른 OpenShift 클러스터에 배포됩니다. 추가 APIcast 게이트웨이를 설정하고 사용하는 방법에는 여러 가지가 있습니다. APIcast를 시작할 때 사용되는 환경 변수 THREESCALE_PORTAL_ENDPOINT 의 값은 추가 APIcast 게이트웨이 설정 방법에 따라 다릅니다.
별도의 APIcast 게이트웨이는 각 API 백엔드 환경에 사용할 수 있습니다. 예를 들면 다음과 같습니다.
DEV_APICAST -> DEV_TENANT ; DEV_APICAST started with THREESCALE_PORTAL_ENDPOINT = admin portal for DEV_TENANT QA_APICAST -> QA_TENANT ; QA_APICAST started with THREESCALE_PORTAL_ENDPOINT = admin portal for QA_APICAST PROD_APICAST -> PROD_TENANT ; PROD_APICAST started with THREESCALE_PORTAL_ENDPOINT = admin portal for PROD_APICAST
DEV_APICAST -> DEV_TENANT ; DEV_APICAST started with THREESCALE_PORTAL_ENDPOINT = admin portal for DEV_TENANT
QA_APICAST -> QA_TENANT ; QA_APICAST started with THREESCALE_PORTAL_ENDPOINT = admin portal for QA_APICAST
PROD_APICAST -> PROD_TENANT ; PROD_APICAST started with THREESCALE_PORTAL_ENDPOINT = admin portal for PROD_APICAST
APIcast는 구성을 다운로드하는 데 THREESCALE_PORTAL_ENDPOINT 를 사용합니다. API 백엔드 환경에 매핑되는 각 테넌트는 별도의 APIcast 게이트웨이를 사용합니다. THREESCALE_PORTAL_ENDPOINT 는 해당 API 백엔드 환경과 관련된 모든 제품 구성이 포함된 테넌트의 관리 포털로 설정됩니다.
단일 APIcast 게이트웨이는 여러 API 백엔드 환경에서 사용할 수 있습니다. 이 경우 THREESCALE_PORTAL_ENDPOINT 가 마스터 관리 포털 로 설정됩니다.
7장. 3scale API Management toolbox를 사용하여 API 라이프사이클 자동화 링크 복사링크가 클립보드에 복사되었습니다!
이 주제에서는 Red Hat 3scale API Management를 사용한 API 라이프사이클의 개념에 대해 설명하고 API 공급자가 3scale toolbox 명령으로 CI/CD(Continuous Integration/Continuous Deployment) 파이프라인을 사용하여 배포 단계를 자동화하는 방법을 보여줍니다. 샘플 Jenkins CI/CD 파이프라인을 배포하는 방법, 3scale 공유 라이브러리를 사용하여 사용자 정의 Jenkins 파이프라인을 생성하는 방법 및 처음부터 사용자 정의 파이프라인을 생성하는 방법을 설명합니다.
7.1. API 라이프사이클 단계 개요 링크 복사링크가 클립보드에 복사되었습니다!
API 라이프사이클은 API가 더 이상 사용되지 않을 때까지 생성되는 경우의 모든 필수 활동을 설명합니다. 3scale을 사용하면 API 공급자가 전체 API 라이프사이클 관리를 수행할 수 있습니다. 이 섹션에서는 API 라이프사이클의 각 단계에 대해 설명하고 목표 및 예상 결과에 대해 설명합니다.
다음 다이어그램은 왼쪽의 API 공급자 기반 단계와 오른쪽에 API 소비자 기반 단계를 보여줍니다.
Red Hat은 현재 API 공급자 주기의 설계, 구현, 배포, 보안 및 관리 및 API 소비자 사이클의 모든 단계를 지원합니다.
7.1.1. API 공급자 사이클 링크 복사링크가 클립보드에 복사되었습니다!
API 공급자 주기 단계는 API를 지정, 개발 및 배포하는 단계를 기반으로 합니다. 다음은 각 단계의 목적과 결과를 설명합니다.
| Stage | 목표 | 결과 |
|---|---|---|
| 1. 전략 | 목표, 리소스, 대상 시장, 일정 기간 및 계획을 포함하여 API의 기업 전략을 결정합니다. | 기업 전략은 목표를 달성하기 위한 명확한 계획으로 정의됩니다. |
| 2. 설계 | 프로젝트 간의 종속성을 손상시키고 피드백을 수집하고 위험 및 출시 시간(예: Apicurio Studio 사용)을 줄이기 위해 API 계약을 조기에 생성합니다. | 소비자 중심 API 계약은 API로 교환될 수 있는 메시지를 정의합니다. API 소비자는 피드백을 제공했습니다. |
| 3. mock | API 소비자가 구현을 시작하는 데 사용할 수 있는 실제 예제 및 페이로드와 API 계약을 추가로 지정합니다. | mock API는 라이브 상태이며 실제 예제를 반환합니다. API 계약이 예와 함께 완료됩니다. |
| 4. 테스트 | 개발된 API를 테스트하는 데 사용할 수 있는 비즈니스 기대치와의 API 계약을 추가로 지정합니다. | 일련의 승인 테스트가 생성됩니다. API 문서는 비즈니스 기대치에 따라 완료됩니다. |
| 5. 구현 | Red Hat Fuse와 같은 통합 프레임워크 또는 원하는 개발 언어를 사용하여 API를 구현합니다. 구현이 API 계약과 일치하는지 확인합니다. | API가 구현됩니다. 사용자 정의 API 관리 기능이 필요한 경우 3scale APIcast 정책도 개발됩니다. |
| 6. 배포 | 3scale toolbox의 CI/CD 파이프라인을 사용하여 API 통합, 테스트, 배포 및 관리를 자동화합니다. | CI/CD 파이프라인은 자동화된 방식으로 프로덕션 환경에 대한 API를 통합, 테스트, 배포 및 관리합니다. |
| 7. 보안 | API가 안전한지 확인합니다(예: 보안 개발 관행 및 자동화된 보안 테스트 사용). | 보안 지침, 프로세스 및 게이트가 설치되어 있습니다. |
| 8. 관리 | 환경, 버전 관리, 사용 중단 및 대규모 폐기 간 API 승격을 관리합니다. | 프로세스 및 툴은 대규모 API(예: API 변경 중단을 방지하기 위해 의미 체계 버전 관리)를 관리하기 위한 것입니다. |
7.1.2. API 소비자 사이클 링크 복사링크가 클립보드에 복사되었습니다!
API 소비자 사이클 단계는 사용을 위해 API를 승격, 배포 및 조정하는 작업을 기반으로 합니다. 다음은 각 단계의 목적과 결과를 설명합니다.
| Stage | 목표 | 결과 |
|---|---|---|
| 9. Discover | API를 타사 개발자, 파트너 및 내부 사용자로 승격합니다. | 개발자 포털이 활성화되어 있고 최신 문서가 이 개발자 포털(예: 3scale ActiveDocs 사용)으로 지속적으로 푸시됩니다. |
| 10. 개발 | 타사 개발자, 파트너 및 내부 사용자를 안내하고 활성화하여 API를 기반으로 애플리케이션을 개발할 수 있습니다. | 개발자 포털에는 모범 사례, 가이드 및 권장 사항이 포함되어 있습니다. API 개발자는 mock 및 test 엔드포인트에 액세스하여 소프트웨어를 개발할 수 있습니다. |
| 11. 사용 | 증가하는 API 사용을 처리하고 대규모로 API 소비자를 관리합니다. | 준비된 애플리케이션 계획은 소비에 사용할 수 있으며 최신 가격 및 제한이 지속적으로 제공됩니다. API 소비자는 CI/CD 파이프라인에서 API 키 또는 클라이언트 ID/시크릿 생성을 통합할 수 있습니다. |
| 12. 모니터 | API 상태, 품질 및 개발자 참여에 대한 사실적이고 정량화된 피드백을 수집합니다(예: Time to first Hello World!). | 모니터링 시스템이 설치되어 있습니다. 대시보드에는 API에 대한 KPI(예: 가동 시간, 분당 요청, 대기 시간 등)가 표시됩니다. |
| 13. monetize | 규모에 따라 새로운 소득을 유도합니다 (이 단계는 선택 사항입니다). | 예를 들어 많은 수의 소규모 API 소비자를 대상으로 하는 경우 수익화가 활성화되고 소비자는 자동화된 방식으로 사용량을 기반으로 청구됩니다. |
7.2. 샘플 Jenkins CI/CD 파이프라인 배포 링크 복사링크가 클립보드에 복사되었습니다!
3scale toolbox를 사용한 API 라이프사이클 자동화는 API 라이프사이클의 배포 단계에 중점을 두고 있으며 CI/CD 파이프라인을 사용하여 API 관리 솔루션을 자동화할 수 있습니다. 이 항목에서는 3scale toolbox를 호출하는 샘플 Jenkins 파이프라인을 배포하는 방법을 설명합니다.
- 7.2.1절. “Jenkins CI/CD 파이프라인 샘플”
- 7.2.2절. “3scale API Management Hosted 환경 설정”
- 7.2.3절. “3scale API Management 온-프레미스 환경 설정”
- 7.2.4절. “OpenID Connect용 Red Hat Single Sign-On 및 Red Hat build of Keycloak 배포”
- 7.2.5절. “3scale API Management toolbox 설치 및 액세스 활성화”
- 7.2.6절. “API 백엔드 배포”
- 7.2.7절. “자체 관리 APIcast 인스턴스 배포”
- 7.2.8절. “샘플 파이프라인 설치 및 배포”
- 7.2.9절. “3scale API Management toolbox를 사용한 API 라이프사이클 자동화의 제한 사항”
7.2.1. Jenkins CI/CD 파이프라인 샘플 링크 복사링크가 클립보드에 복사되었습니다!
다음 샘플은 API 라이프사이클 자동화를 위해 Jenkins 파이프라인을 생성하고 배포하는 방법에 대한 예로 Red Hat Integration 리포지토리에 제공됩니다.
| 샘플 파이프라인 | 대상 환경 | 보안 |
|---|---|---|
| 3scale Hosted | API 키 | |
| APIcast 자체 관리가 포함된 3scale Hosted 및 3scale 온-프레미스 | 없음 | |
| APIcast 자체 관리가 포함된 3scale Hosted 및 3scale 온-프레미스 | OpenID Connect(OIDC) | |
| APIcast 자체 관리로 개발, 테스트 및 프로덕션에 3scale 호스팅 | API 키 | |
| APIcast 자체 관리로 개발, 테스트 및 프로덕션에 3scale 호스팅 | API 키, 없음, OIDC |
이러한 샘플은 3scale toolbox를 호출하는 3scale Jenkins 공유 라이브러리를 사용하여 주요 API 관리 기능을 보여줍니다. 이 주제에서 설정 단계를 수행한 후 Red Hat Integration 리포지토리의 각 샘플 사용 사례에 제공된 OpenShift 템플릿을 사용하여 파이프라인을 설치할 수 있습니다.
샘플 파이프라인 및 애플리케이션은 예제로만 제공됩니다. 샘플 파이프라인에서 활용하는 기본 API, CLI 및 기타 인터페이스는 Red Hat에서 완전히 지원됩니다. 파이프라인에 대한 모든 수정 사항은 Red Hat에서 직접 지원하지 않습니다.
7.2.2. 3scale API Management Hosted 환경 설정 링크 복사링크가 클립보드에 복사되었습니다!
모든 샘플 Jenkins CI/CD 파이프라인에는 3scale Hosted 환경을 설정해야 합니다.
SaaS - API 키,다중 환경 및 Semantic 버전 관리 샘플 파이프라인은 3scale Hosted만 사용합니다. 하이브리드 - 개방형 및 하이브리드 - OIDC 파이프라인도 3scale 온-프레미스를 사용합니다. 3scale 온-프레미스 환경 설정 도 참조하십시오.
사전 요구 사항
- Linux 워크스테이션이 있어야 합니다.
- 3scale Hosted 환경이 있어야 합니다.
OpenShift 3.11 클러스터가 있어야 합니다. OpenShift 4는 현재 지원되지 않습니다.
- 지원되는 구성에 대한 자세한 내용은 Red Hat 3scale API Management Supported Configurations 페이지를 참조하십시오.
- OpenShift 설명서에 설명된 대로 OpenShift 라우터에서 와일드카드 경로가 활성화되어 있는지 확인합니다.
프로세스
- 3scale Hosted 관리 포털 콘솔에 로그인합니다.
- 계정 관리 API에 대한 쓰기 액세스 권한이 있는 새 액세스 토큰을 생성합니다.
나중에 사용할 수 있도록 생성된 액세스 토큰을 저장합니다. 예를 들면 다음과 같습니다.
export SAAS_ACCESS_TOKEN=123...456
$ export SAAS_ACCESS_TOKEN=123...456Copy to Clipboard Copied! Toggle word wrap Toggle overflow 나중에 사용할 수 있도록 3scale 테넌트의 이름을 저장합니다. 이는 관리 포털 URL에서
-admin.3scale.net앞의 문자열입니다. 예를 들면 다음과 같습니다.export SAAS_TENANT=my_username
$ export SAAS_TENANT=my_usernameCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 관리 포털에서 Audience > Accounts > Listing 으로 이동합니다.
- Developer 를 클릭합니다.
개발자 계정 ID 를 저장합니다.
/buyers/accounts/이후 URL의 마지막 부분입니다. 예를 들면 다음과 같습니다.export SAAS_DEVELOPER_ACCOUNT_ID=123...456
$ export SAAS_DEVELOPER_ACCOUNT_ID=123...456Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2.3. 3scale API Management 온-프레미스 환경 설정 링크 복사링크가 클립보드에 복사되었습니다!
하이브리드 - 개방형 및 프레미스 환경을 설정해야 합니다.
하이브리드 - OIDC 샘플 Jenkins CI/CD 파이프라인만 3scale 온-
이러한 하이브리드 샘플 파이프라인을 사용하려면 3scale 온-프레미스 환경과 3scale Hosted 환경을 설정해야 합니다. 3scale API Management Hosted 환경 설정 도 참조하십시오.
사전 요구 사항
- Linux 워크스테이션이 있어야 합니다.
- 3scale 온-프레미스 환경이 있어야 합니다. OpenShift에서 템플릿을 사용하여 3scale 온-프레미스를 설치하는 방법에 대한 자세한 내용은 3scale API Management 설치 설명서를 참조하십시오.
OpenShift 4.x 클러스터가 있어야 합니다.
- 지원되는 구성에 대한 자세한 내용은 Red Hat 3scale API Management Supported Configurations 페이지를 참조하십시오.
- OpenShift 설명서에 설명된 대로 OpenShift 라우터에서 와일드카드 경로가 활성화되어 있는지 확인합니다.
프로세스
- 3scale 온-프레미스 관리 포털 콘솔에 로그인합니다.
- 계정 관리 API에 대한 쓰기 액세스 권한이 있는 새 액세스 토큰을 생성합니다.
나중에 사용할 수 있도록 생성된 액세스 토큰을 저장합니다. 예를 들면 다음과 같습니다.
export SAAS_ACCESS_TOKEN=123...456
$ export SAAS_ACCESS_TOKEN=123...456Copy to Clipboard Copied! Toggle word wrap Toggle overflow 나중에 사용할 수 있도록 3scale 테넌트의 이름을 저장합니다.
export ONPREM_ADMIN_PORTAL_HOSTNAME="$(oc get route system-provider-admin -o jsonpath='{.spec.host}')"$ export ONPREM_ADMIN_PORTAL_HOSTNAME="$(oc get route system-provider-admin -o jsonpath='{.spec.host}')"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 와일드카드 경로를 정의합니다.
export OPENSHIFT_ROUTER_SUFFIX=app.openshift.test # Replace me! export APICAST_ONPREM_STAGING_WILDCARD_DOMAIN=onprem-staging.$OPENSHIFT_ROUTER_SUFFIX export APICAST_ONPREM_PRODUCTION_WILDCARD_DOMAIN=onprem-production.$OPENSHIFT_ROUTER_SUFFIX
$ export OPENSHIFT_ROUTER_SUFFIX=app.openshift.test # Replace me! $ export APICAST_ONPREM_STAGING_WILDCARD_DOMAIN=onprem-staging.$OPENSHIFT_ROUTER_SUFFIX $ export APICAST_ONPREM_PRODUCTION_WILDCARD_DOMAIN=onprem-production.$OPENSHIFT_ROUTER_SUFFIXCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고OPENSHIFT_ROUTER_SUFFIX값을 OpenShift 라우터의 접미사(예:app.openshift.test)로 설정해야 합니다.기존 3scale 온-프레미스 인스턴스에 와일드카드 경로를 추가합니다.
oc create route edge apicast-wildcard-staging --service=apicast-staging --hostname="wildcard.$APICAST_ONPREM_STAGING_WILDCARD_DOMAIN" --insecure-policy=Allow --wildcard-policy=Subdomain oc create route edge apicast-wildcard-production --service=apicast-production --hostname="wildcard.$APICAST_ONPREM_PRODUCTION_WILDCARD_DOMAIN" --insecure-policy=Allow --wildcard-policy=Subdomain
$ oc create route edge apicast-wildcard-staging --service=apicast-staging --hostname="wildcard.$APICAST_ONPREM_STAGING_WILDCARD_DOMAIN" --insecure-policy=Allow --wildcard-policy=Subdomain $ oc create route edge apicast-wildcard-production --service=apicast-production --hostname="wildcard.$APICAST_ONPREM_PRODUCTION_WILDCARD_DOMAIN" --insecure-policy=Allow --wildcard-policy=SubdomainCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 관리 포털에서 Audience > Accounts > Listing 으로 이동합니다.
- Developer 를 클릭합니다.
개발자 계정 ID 를 저장합니다.
/buyers/accounts/: 이후 URL의 마지막 부분입니다.export ONPREM_DEVELOPER_ACCOUNT_ID=5
$ export ONPREM_DEVELOPER_ACCOUNT_ID=5Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2.4. OpenID Connect용 Red Hat Single Sign-On 및 Red Hat build of Keycloak 배포 링크 복사링크가 클립보드에 복사되었습니다!
Hybrid - OpenID Connect(OIDC) 또는 Semantic 버전 지정 샘플 파이프라인을 사용하는 경우 이 섹션의 단계를 수행하여 Red Hat Single Sign-On(SSO) 또는 Red Hat build of Keycloak을 3scale로 배포합니다. 이는 두 샘플 모두에서 사용되는 OIDC 인증에 필요합니다.
프로세스
Red Hat Single Sign -On 설명서 또는 Red Hat build of Keycloak 에 설명된 대로 Red Hat Single Sign -On 7.6을 배포합니다.
다음 예제 명령은 SSO 절차에 대한 간단한 요약을 제공합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 나중에 사용할 수 있도록 Red Hat Single Sign-On 설치의 호스트 이름을 저장합니다.
export SSO_HOSTNAME="$(oc get route sso -o jsonpath='{.spec.host}')"$ export SSO_HOSTNAME="$(oc get route sso -o jsonpath='{.spec.host}')"Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 3scale API Management 개발자 포털 설명서에 설명된 대로 3scale용 Red Hat Single Sign-On을 구성합니다.
나중에 사용할 수 있도록 영역 이름, 클라이언트 ID 및 클라이언트 시크릿을 저장합니다.
export REALM=3scale export CLIENT_ID=3scale-admin export CLIENT_SECRET=123...456
$ export REALM=3scale $ export CLIENT_ID=3scale-admin $ export CLIENT_SECRET=123...456Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2.5. 3scale API Management toolbox 설치 및 액세스 활성화 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 toolbox를 설치하고 원격 3scale 인스턴스를 생성하고 관리 포털에 액세스하는 데 사용되는 보안을 프로비저닝하는 방법을 설명합니다.
프로세스
- 3scale API Management toolbox에 설명된 대로 3scale toolbox 를 로컬로 설치합니다.
적절한 toolbox 명령을 실행하여 3scale 원격 인스턴스를 생성합니다.
3scale Hosted
3scale remote add 3scale-saas "https://$SAAS_ACCESS_TOKEN@$SAAS_TENANT-admin.3scale.net/"
$ 3scale remote add 3scale-saas "https://$SAAS_ACCESS_TOKEN@$SAAS_TENANT-admin.3scale.net/"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 3scale 온-프레미스
3scale remote add 3scale-onprem "https://$ONPREM_ACCESS_TOKEN@$ONPREM_ADMIN_PORTAL_HOSTNAME/"
$ 3scale remote add 3scale-onprem "https://$ONPREM_ACCESS_TOKEN@$ONPREM_ADMIN_PORTAL_HOSTNAME/"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 OpenShift 명령을 실행하여 3scale 관리 포털 및 액세스 토큰이 포함된 보안을 프로비저닝합니다.
oc create secret generic 3scale-toolbox -n "$TOOLBOX_NAMESPACE" --from-file="$HOME/.3scalerc.yaml"
$ oc create secret generic 3scale-toolbox -n "$TOOLBOX_NAMESPACE" --from-file="$HOME/.3scalerc.yaml"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2.6. API 백엔드 배포 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 샘플 파이프라인과 함께 제공되는 예제 API 백엔드를 배포하는 방법을 보여줍니다. 자체 파이프라인을 생성하고 배포할 때 필요에 따라 자체 API 백엔드를 대체할 수 있습니다.
프로세스
다음 샘플과 함께 사용할 수 있도록 Beer Catalog API 백엔드 예제를 배포합니다.
-
SaaS - API 키 -
하이브리드 - 오픈 하이브리드 - OIDCoc new-app -n "$TOOLBOX_NAMESPACE" -i openshift/redhat-openjdk18-openshift:1.4 https://github.com/microcks/api-lifecycle.git --context-dir=/beer-catalog-demo/api-implementation --name=beer-catalog $ oc expose -n "$TOOLBOX_NAMESPACE" svc/beer-catalog
$ oc new-app -n "$TOOLBOX_NAMESPACE" -i openshift/redhat-openjdk18-openshift:1.4 https://github.com/microcks/api-lifecycle.git --context-dir=/beer-catalog-demo/api-implementation --name=beer-catalog $ oc expose -n "$TOOLBOX_NAMESPACE" svc/beer-catalogCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
나중에 사용할 수 있도록 Beer Catalog API 호스트 이름을 저장합니다.
export BEER_CATALOG_HOSTNAME="$(oc get route -n "$TOOLBOX_NAMESPACE" beer-catalog -o jsonpath='{.spec.host}')"$ export BEER_CATALOG_HOSTNAME="$(oc get route -n "$TOOLBOX_NAMESPACE" beer-catalog -o jsonpath='{.spec.host}')"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 샘플과 함께 사용할 Red Hat Event API 백엔드 예제를 배포합니다.
-
다중 환경 의미 체계 버전 관리oc new-app -n "$TOOLBOX_NAMESPACE" -i openshift/nodejs:10 'https://github.com/nmasse-itix/rhte-api.git#085b015' --name=event-api oc expose -n "$TOOLBOX_NAMESPACE" svc/event-api
$ oc new-app -n "$TOOLBOX_NAMESPACE" -i openshift/nodejs:10 'https://github.com/nmasse-itix/rhte-api.git#085b015' --name=event-api $ oc expose -n "$TOOLBOX_NAMESPACE" svc/event-apiCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
나중에 사용할 수 있도록 Event API 호스트 이름을 저장합니다.
export EVENT_API_HOSTNAME="$(oc get route -n "$TOOLBOX_NAMESPACE" event-api -o jsonpath='{.spec.host}')"$ export EVENT_API_HOSTNAME="$(oc get route -n "$TOOLBOX_NAMESPACE" event-api -o jsonpath='{.spec.host}')"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2.7. 자체 관리 APIcast 인스턴스 배포 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션은 3scale Hosted 환경의 APIcast 자체 관리 인스턴스에 사용하기 위한 것입니다. 이는 SaaS - API 키를 제외한 모든 샘플 파이프라인에 적용됩니다.
프로세스
와일드카드 경로를 정의합니다.
export APICAST_SELF_MANAGED_STAGING_WILDCARD_DOMAIN=saas-staging.$OPENSHIFT_ROUTER_SUFFIX export APICAST_SELF_MANAGED_PRODUCTION_WILDCARD_DOMAIN=saas-production.$OPENSHIFT_ROUTER_SUFFIX
$ export APICAST_SELF_MANAGED_STAGING_WILDCARD_DOMAIN=saas-staging.$OPENSHIFT_ROUTER_SUFFIX $ export APICAST_SELF_MANAGED_PRODUCTION_WILDCARD_DOMAIN=saas-production.$OPENSHIFT_ROUTER_SUFFIXCopy to Clipboard Copied! Toggle word wrap Toggle overflow 프로젝트에 APIcast 자체 관리 인스턴스를 배포합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2.8. 샘플 파이프라인 설치 및 배포 링크 복사링크가 클립보드에 복사되었습니다!
필수 환경을 설정한 후 Red Hat Integration 리포지토리의 각 샘플 사용 사례에 대해 제공된 OpenShift 템플릿을 사용하여 샘플 파이프라인을 설치하고 배포할 수 있습니다. 예를 들어 이 섹션에서는 SaaS - API 키 샘플만 보여줍니다.
프로세스
제공된 OpenShift 템플릿을 사용하여 Jenkins 파이프라인을 설치합니다.
oc process -f saas-usecase-apikey/setup.yaml \ -p DEVELOPER_ACCOUNT_ID="$SAAS_DEVELOPER_ACCOUNT_ID" \ -p PRIVATE_BASE_URL="http://$BEER_CATALOG_HOSTNAME" \ -p NAMESPACE="$TOOLBOX_NAMESPACE" |oc create -f -$ oc process -f saas-usecase-apikey/setup.yaml \ -p DEVELOPER_ACCOUNT_ID="$SAAS_DEVELOPER_ACCOUNT_ID" \ -p PRIVATE_BASE_URL="http://$BEER_CATALOG_HOSTNAME" \ -p NAMESPACE="$TOOLBOX_NAMESPACE" |oc create -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같이 샘플을 배포합니다.
oc start-build saas-usecase-apikey
$ oc start-build saas-usecase-apikeyCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2.9. 3scale API Management toolbox를 사용한 API 라이프사이클 자동화의 제한 사항 링크 복사링크가 클립보드에 복사되었습니다!
이 릴리스에는 다음과 같은 제한 사항이 적용됩니다.
- OpenShift 지원
- 샘플 파이프라인은 OpenShift 3.11에서만 지원됩니다. OpenShift 4는 현재 지원되지 않습니다. 지원되는 구성에 대한 자세한 내용은 Red Hat 3scale API Management Supported Configurations 페이지를 참조하십시오.
- 애플리케이션 업데이트
-
애플리케이션에
3scale application applytoolbox 명령을 사용하여 애플리케이션을 생성하고 업데이트할 수 있습니다. 계정, 계획, 서비스 및 애플리케이션 키를 지원하는 명령을 생성합니다. - 업데이트 명령은 계정, 계획 또는 서비스에 대한 변경 사항을 지원하지 않습니다. 변경 사항이 전달되면 파이프라인이 트리거되고 오류가 표시되지 않지만 해당 필드는 업데이트되지 않습니다.
-
애플리케이션에
- 서비스 복사
-
3scale copy servicetoolbox 명령을 사용하여 사용자 지정 정책으로 서비스를 복사하는 경우 사용자 정의 정책을 먼저 별도로 복사해야 합니다.
7.3. 3scale API Management Jenkins 공유 라이브러리를 사용하여 파이프라인 생성 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 3scale toolbox를 사용하는 사용자 정의 Jenkins 파이프라인을 생성하는 모범 사례를 제공합니다. 3scale Jenkins 공유 라이브러리를 사용하여 예제 애플리케이션을 기반으로 toolbox를 호출하는 Groovy에서 Jenkins 파이프라인을 작성하는 방법을 설명합니다. 자세한 내용은 Jenkins 공유 라이브러리 를 참조하십시오.
Red Hat은 Red Hat Integration 리포지토리에 제공된 Jenkins 파이프라인 샘플을 지원합니다.
이러한 파이프라인에 대한 수정 사항은 Red Hat에서 직접 지원하지 않습니다. 환경에 생성하는 사용자 정의 파이프라인은 지원되지 않습니다.
사전 요구 사항
- 샘플 Jenkins CI/CD 파이프라인 배포
- API에 대한 OpenAPI 사양 파일이 있어야 합니다. 예를 들어 Apicurio Studio 를 사용하여 이를 생성할 수 있습니다.
프로세스
Jenkins 파이프라인 시작 부분에 다음을 추가하여 파이프라인의 3scale 공유 라이브러리를 참조합니다.
#!groovy library identifier: '3scale-toolbox-jenkins@master', retriever: modernSCM([$class: 'GitSCMSource', remote: 'https://github.com/rh-integration/3scale-toolbox-jenkins.git'])#!groovy library identifier: '3scale-toolbox-jenkins@master', retriever: modernSCM([$class: 'GitSCMSource', remote: 'https://github.com/rh-integration/3scale-toolbox-jenkins.git'])Copy to Clipboard Copied! Toggle word wrap Toggle overflow 파이프라인의 다양한 단계에서 사용할 수 있도록
ThreescaleService오브젝트를 보유하도록 전역 변수를 선언합니다.def service = null
def service = nullCopy to Clipboard Copied! Toggle word wrap Toggle overflow 모든 관련 정보를 사용하여
ThreescaleService를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Open
API.filename은 OpenAPI 사양이 포함된 파일의 경로입니다. -
environment.baseSystemName은environment.environmentName및 OpenAPI 사양info.version의 API 주요 버전을 기반으로 최종system_name을 계산하는 데 사용됩니다. -
Toolbox.openshiftProject는 Kubernetes 작업이 생성될 OpenShift 프로젝트입니다. -
Toolbox.secretName은 3scale API Management toolbox 설치 및 액세스 활성화에 표시된 대로 3scale toolbox 구성 파일을 포함하는 Kubernetes 시크릿의 이름입니다. -
Toolbox.destination은 3scale toolbox 원격 인스턴스의 이름입니다. -
applicationPlans는.yaml파일을 사용하거나 애플리케이션 계획 속성 세부 정보를 제공하여 생성할 애플리케이션 계획 목록입니다.
-
Open
3scale에서 서비스를 프로비저닝하는 파이프라인 단계를 추가합니다.
stage("Import OpenAPI") { service.importOpenAPI() echo "Service with system_name ${service.environment.targetSystemName} created !" }stage("Import OpenAPI") { service.importOpenAPI() echo "Service with system_name ${service.environment.targetSystemName} created !" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션 계획을 생성할 단계를 추가합니다.
stage("Create an Application Plan") { service.applyApplicationPlans() }stage("Create an Application Plan") { service.applyApplicationPlans() }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 테스트 애플리케이션을 생성하려면 글로벌 변수와 단계를 추가합니다.
stage("Create an Application") { service.applyApplication() }stage("Create an Application") { service.applyApplication() }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 통합 테스트를 실행하는 단계를 추가합니다. APIcast Hosted 인스턴스를 사용하는 경우 프록시 정의를 가져와서 스테이징 공용 URL을 추출해야 합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow API를 프로덕션으로 승격할 단계를 추가합니다.
stage("Promote to production") { service.promoteToProduction() }stage("Promote to production") { service.promoteToProduction() }Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.4. Jenkinsfile을 사용하여 파이프라인 생성 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 3scale toolbox를 사용하는 Groovy에서 사용자 정의 Jenkinsfile 을 처음부터 작성하는 모범 사례를 제공합니다.
Red Hat은 Red Hat Integration 리포지토리에 제공된 Jenkins 파이프라인 샘플을 지원합니다.
이러한 파이프라인에 대한 수정 사항은 Red Hat에서 직접 지원하지 않습니다. 환경에 생성하는 사용자 정의 파이프라인은 지원되지 않습니다. 이 섹션은 참조용으로만 제공됩니다.
사전 요구 사항
- 샘플 Jenkins CI/CD 파이프라인 배포
- API에 대한 OpenAPI 사양 파일이 있어야 합니다. 예를 들어 Apicurio Studio 를 사용하여 이를 생성할 수 있습니다.
프로세스
3scale toolbox를 호출하는 유틸리티 함수를 작성합니다. 다음은 3scale toolbox를 실행하는 Kubernetes 작업을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Kubernetes 오브젝트 템플릿
이 함수는 Kubernetes 오브젝트 템플릿을 사용하여 필요에 맞게 조정할 수 있는 3scale toolbox를 실행합니다. 3scale toolbox CLI 인수를 설정하고 결과 Kubernetes 작업 정의를 YAML 파일에 작성하고, 이전 버전의 toolbox를 정리하고 Kubernetes 작업을 생성한 후 기다립니다.
-
Pod가
Created상태와Running상태 간에 전환해야 하는 시간과 일치하도록 대기 시간을 서버 속도로 조정할 수 있습니다. 폴링 루프를 사용하여 이 단계를 구체화할 수 있습니다. -
OpenAPI 사양 파일은
openapi라는ConfigMap에서 가져옵니다. -
3scale 관리 포털 호스트 이름 및 액세스 토큰은 3scale API Management toolbox 설치 및 액세스 활성화에 표시된 대로
3scale-toolbox 라는 시크릿에서 가져옵니다. -
ConfigMap은 3단계에서 파이프라인에 의해 생성됩니다. 그러나 시크릿은 파이프라인 외부에 이미 프로비저닝되었으며 보안을 강화하기 위해 RBAC(역할 기반 액세스 제어)가 적용됩니다.
-
Pod가
Jenkins 파이프라인 단계에서 3scale toolbox와 함께 사용할 글로벌 환경 변수를 정의합니다. 예를 들면 다음과 같습니다.
3scale Hosted
def targetSystemName = "saas-apikey-usecase" def targetInstance = "3scale-saas" def privateBaseURL = "http://echo-api.3scale.net" def testUserKey = "abcdef1234567890" def developerAccountId = "john"
def targetSystemName = "saas-apikey-usecase" def targetInstance = "3scale-saas" def privateBaseURL = "http://echo-api.3scale.net" def testUserKey = "abcdef1234567890" def developerAccountId = "john"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 3scale 온-프레미스
자체 관리 APIcast 또는 3scale의 온-프레미스 설치를 사용하는 경우 다음 두 개의 변수를 더 선언해야 합니다.
def publicStagingBaseURL = "http://my-staging-api.example.test" def publicProductionBaseURL = "http://my-production-api.example.test"
def publicStagingBaseURL = "http://my-staging-api.example.test" def publicProductionBaseURL = "http://my-production-api.example.test"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 변수는 다음과 같이 설명되어 있습니다.
-
targetSystemName: 생성할 서비스의 이름입니다. -
targetInstance: 3scale API Management toolbox 설치에서 생성된 3scale 원격 인스턴스의 이름과 일치하며 액세스를 활성화합니다. -
privateBaseURL: API 백엔드의 끝점 호스트입니다. -
testUserKey: 통합 테스트를 실행하는 데 사용되는 사용자 API 키입니다. 표시된 대로 하드 코딩되거나 HMAC 함수에서 생성할 수 있습니다. -
developerAccountId: 테스트 애플리케이션이 생성될 대상 계정의 ID입니다. -
publicStagingBaseURL: 생성할 서비스의 공개 스테이징 기본 URL입니다. -
publicProductionBaseURL: 생성할 서비스의 공개 프로덕션 기본 URL입니다.
-
다음과 같이 OpenAPI 사양 파일을 가져와서 OpenShift에서
ConfigMap으로 프로비저닝하는 파이프라인 단계를 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 3scale toolbox를 사용하여 API를 3scale로 가져오는 파이프라인 단계를 추가합니다.
3scale Hosted
stage("Import OpenAPI") { runToolbox([ "3scale", "import", "openapi", "-d", targetInstance, "/artifacts/swagger.json", "--override-private-base-url=${privateBaseURL}", "-t", targetSystemName ]) }stage("Import OpenAPI") { runToolbox([ "3scale", "import", "openapi", "-d", targetInstance, "/artifacts/swagger.json", "--override-private-base-url=${privateBaseURL}", "-t", targetSystemName ]) }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 3scale 온-프레미스
자체 관리 APIcast 또는 3scale의 온-프레미스 설치를 사용하는 경우 공개 스테이징 및 프로덕션 기본 URL에 대한 옵션도 지정해야 합니다.
stage("Import OpenAPI") { runToolbox([ "3scale", "import", "openapi", "-d", targetInstance, "/artifacts/swagger.json", "--override-private-base-url=${privateBaseURL}", "-t", targetSystemName, "--production-public-base-url=${publicProductionBaseURL}", "--staging-public-base-url=${publicStagingBaseURL}" ]) }stage("Import OpenAPI") { runToolbox([ "3scale", "import", "openapi", "-d", targetInstance, "/artifacts/swagger.json", "--override-private-base-url=${privateBaseURL}", "-t", targetSystemName, "--production-public-base-url=${publicProductionBaseURL}", "--staging-public-base-url=${publicStagingBaseURL}" ]) }Copy to Clipboard Copied! Toggle word wrap Toggle overflow toolbox를 사용하여 3scale 애플리케이션 계획 및 애플리케이션을 생성하는 파이프라인 단계를 추가합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow toolbox를 사용하여 API를 프로덕션 환경으로 승격하는 단계를 추가합니다.
stage("Promote to production") { runToolbox([ "3scale", "proxy", "promote", targetInstance, targetSystemName ]) }stage("Promote to production") { runToolbox([ "3scale", "proxy", "promote", targetInstance, targetSystemName ]) }Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8장. 3scale API Management Operator를 사용하여 3scale 구성 및 프로비저닝 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat 3scale API Management 관리자는 3scale Operator를 사용하여 3scale 서비스를 구성하고 3scale 리소스를 프로비저닝할 수 있습니다. OCP(OpenShift Container Platform) 사용자 인터페이스에서 Operator를 사용합니다. Operator 사용은 관리 포털에서 3scale을 구성 및 프로비저닝하거나 3scale 내부 API를 사용하는 대신 사용할 수 있습니다.
3scale Operator를 사용하여 서비스를 구성하거나 리소스를 프로비저닝하는 경우 해당 서비스 또는 리소스를 업데이트하는 유일한 방법은 CR(사용자 정의 리소스)을 업데이트하는 것입니다.
관리 포털에서 서비스 및 리소스는 표시되지만 여기에 업데이트되지는 않습니다. 마찬가지로 내부 3scale API를 사용하여 서비스 및 리소스를 업데이트하지 마십시오. CR 이외의 방법을 사용하여 업데이트하면 Operator가 변경 사항을 되돌리고 구성을 변경하지 않고 유지합니다.
이 장에서는 운영자 애플리케이션 기능이 작동하는 방법과 Operator를 사용하여 사용자 정의 리소스를 배포하는 방법에 대해 자세히 설명합니다.
또한 3scale Operator를 사용할 때 기능 제한에 대한 정보가 있습니다.
8.1. 일반 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
3scale Operator를 사용하여 3scale을 구성하고 프로비저닝하려면 다음과 같은 필수 요소입니다.
- 3scale API Management 2.16 온-Premises 인스턴스에 대한 관리자 권한이 있는 사용자 계정
- 3scale API Management Operator가 설치되었습니다.
OpenShift 클러스터에 관리자 권한이 있는 사용자 계정이 있는 OpenShift Container Platform 4.
- 지원되는 구성에 대한 자세한 내용은 Red Hat 3scale API Management Supported Configurations 페이지를 참조하십시오.
8.2. 3scale API Management Operator를 통한 애플리케이션 기능 링크 복사링크가 클립보드에 복사되었습니다!
3scale Operator에는 다음과 같은 기능이 포함되어 있습니다.
- 기본 Red Hat 3scale API Management 솔루션과의 상호 작용을 허용합니다.
- OpenShift의 사용자 지정 리소스를 사용하여 3scale 애플리케이션을 선언적으로 관리합니다.
아래 다이어그램은 선언적 방식으로 OpenShift 사용자 정의 리소스를 사용하여 관리할 수 있는 3scale 엔터티 및 관계를 보여줍니다. 제품에는 하나 이상의 백엔드가 포함되어 있습니다. 제품 수준에서 애플리케이션, 애플리케이션 계획 및 매핑 규칙을 구성할 수 있습니다. 백엔드 수준에서 각 백엔드에 대한 메트릭, 방법 및 매핑 규칙을 설정할 수 있습니다.
3scale Operator는 사용자 정의 리소스 정의 및 해당 관계를 제공하며 다음 다이어그램에 표시됩니다.
8.3. 첫 번째 3scale API Management 제품 및 백엔드 배포 링크 복사링크가 클립보드에 복사되었습니다!
새로 생성된 테넌트에서 OCP(OpenShift Container Platform)를 사용하면 필요한 최소 구성으로 첫 번째 3scale 제품 및 백엔드를 배포합니다.
사전 요구 사항
일반 사전 요구 사항에 나열된 것과 동일한 설치 요구 사항은 다음과 같습니다.
- 3scale 계정은 작동 중인 OpenShift 네임스페이스에서 로컬 또는 원격 설치일 수 있습니다.
- 이 계정의 필수 매개변수는 3scale 관리 포털 URL 주소와 액세스 토큰입니다.
프로세스
3scale 관리 포털의 인증 정보를 사용하여 3scale 공급자 계정의 시크릿을 생성합니다. 예:
adminURL=https://3scale-admin.example.com및token=123456.oc create secret generic threescale-provider-account --from-literal=adminURL=https://3scale-admin.example.com --from-literal=token=123456
$ oc create secret generic threescale-provider-account --from-literal=adminURL=https://3scale-admin.example.com --from-literal=token=123456Copy to Clipboard Copied! Toggle word wrap Toggle overflow 업스트림 API URL을 사용하여 3scale 백엔드를 구성합니다.
다음 콘텐츠를 사용하여 YAML 파일을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 파일을 생성하면 Operator에서 단계가 성공했는지 확인합니다.
- 백엔드 CR(사용자 정의 리소스) 및 가능한 값의 필드에 대한 자세한 내용은 Backend CRD(사용자 정의 리소스 정의) 참조를 참조하십시오.
사용자 정의 리소스를 생성합니다.
oc create -f backend1.yaml
$ oc create -f backend1.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3scale 제품을 구성합니다.
이전에 생성한 백엔드에 적용되는 모든 기본 설정으로 제품을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 파일을 생성하면 Operator에서 단계가 성공했는지 확인합니다.
- Product CR 필드 및 가능한 값에 대한 자세한 내용은 Product CRD 참조를 참조하십시오.
사용자 정의 리소스를 생성합니다.
oc create -f product1.yaml
$ oc create -f product1.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 또한 기존 제품 CRD를 업데이트하여 백엔드에 연결할 수 있습니다.
oc apply -f product.yaml
$ oc apply -f product.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
생성된 사용자 정의 리소스는 3scale 인스턴스를 채우는 데 몇 초가 걸립니다. 리소스가 동기화될 때를 확인하려면 다음 대안 중 하나를 선택할 수 있습니다.
- 오브젝트의 status 필드를 확인합니다.
oc wait명령을 사용합니다.oc wait --for=condition=Synced --timeout=-1s backend/backend1 oc wait --for=condition=Synced --timeout=-1s product/product1
$ oc wait --for=condition=Synced --timeout=-1s backend/backend1 $ oc wait --for=condition=Synced --timeout=-1s product/product1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.4. 제품의 APIcast 구성 승격 링크 복사링크가 클립보드에 복사되었습니다!
3scale Operator를 사용하여 제품의 APIcast 구성을 스테이징 또는 프로덕션으로 승격할 수 있습니다. ProxyConfigPromote 사용자 정의 리소스(CR)는 최신 APIcast 구성을 스테이징 환경으로 승격합니다. 선택적으로 프로덕션 환경으로 승격하도록 ProxyConfigPromote CR을 구성할 수 있습니다.
-
ProxyConfigPromote오브젝트는 생성된 경우에만 적용됩니다. 생성 후 해당 업데이트는 조정되지 않습니다. -
proxyConfigPromote는 실제 구성이 변경되는 경우에만 구성 승격을 처리합니다. 변경 사항이 탐지되지 않으면 proxyConfigPromote가 오류 상태가 됩니다. 이 상태에서는 사용자 정의 리소스(CR)에 오류 메시지가 표시되고 삭제로 표시된 경우에도 사용자가 CR을 수동으로 제거해야 합니다.
사전 요구 사항
일반 사전 요구 사항에 나열된 것과 동일한 설치 요구 사항은 다음과 같습니다.
- product CR 이 이미 생성되어 있습니다.
프로세스
다음 콘텐츠를 사용하여 YAML 파일을 생성하고 저장합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow APIcast 구성을 프로덕션 환경으로 승격하려면 선택적 필드
spec.production을true로 설정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 성공적인 승격 후
ProxyConfigPromote 오브젝트를 삭제하려면 선택적 필드spec.deleteCR을true로 설정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 파일의 상태 조건을 확인하려면 다음 명령을 입력합니다.
oc get proxyconfigpromote proxyconfigpromote-sample -o yaml
$ oc get proxyconfigpromote proxyconfigpromote-sample -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력에
Ready또는Failed상태가 표시되어야 합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고프록시 구성을 변경하지 않으면 다음 메시지가 있는 ProxyConfigPromote CR의
실패출력 상태가 표시됩니다.-
스테이지로 승격할 때:
제품 변경 사항이 감지되지 않으므로 스테이징으로 승격할 수 없습니다. 이 proxyConfigPromote CR을 삭제한 다음 구성에 대한 변경 사항을 적용한 다음 새 proxyConfigPromote CR을 생성합니다. -
프로덕션 환경으로 승격할 때:
제품 변경 사항이 감지되지 않으므로 프로덕션으로 승격할 수 없습니다. 이 proxyConfigPromote CR을 삭제한 다음 구성에 대한 변경 사항을 적용한 다음 새 proxyConfigPromote CR을 생성합니다.
메시지의 지시에 따라 절차를 완료합니다.
-
스테이지로 승격할 때:
사용자 정의 리소스를 생성합니다.
oc create -f proxyconfigpromote-sample.yaml
oc create -f proxyconfigpromote-sample.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 지정된 예에서 출력은 다음과 같습니다.
proxyconfigpromote.capabilities.3scale.net/proxyconfigpromote-sample created
proxyconfigpromote.capabilities.3scale.net/proxyconfigpromote-sample createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.5. 3scale API Management Operator에서 사용자 정의 리소스가 연결되는 테넌트를 식별하는 방법 링크 복사링크가 클립보드에 복사되었습니다!
3scale CR(사용자 정의 리소스)을 배포하여 다양한 3scale 오브젝트를 관리할 수 있습니다. 3scale CR은 정확히 하나의 테넌트에 연결됩니다.
3scale Operator가 3scale과 동일한 네임스페이스에 설치된 경우 기본 동작은 3scale CR이 해당 3scale 인스턴스의 기본 테넌트에 연결되어 있다는 것입니다. 3scale CR을 다른 테넌트에 연결하려면 다음 중 하나를 수행할 수 있습니다.
3scale CR이 포함된 네임스페이스에
threescale-provider-account시크릿을 생성합니다. 3scale CR을 배포할 때 Operator는 이 시크릿을 읽고 CR이 연결되는 테넌트를 식별합니다. Operator에서 이 시크릿을 사용하려면 다음 중 하나가 true여야 합니다.-
3scale CR은
spec.providerAccountRef필드를 null로 지정합니다. 3scale CR은
spec.providerAccountRef필드를 생략합니다.threescale-provider-account시크릿은 CR이 연결되는 테넌트를 식별합니다. 시크릿에는 토큰 형태로 해당 3scale 인스턴스의 테넌트에 액세스하기 위한 URL 및 인증 정보 형식의 3scale 인스턴스에 대한 참조가 포함되어야 합니다. 예를 들면 다음과 같습니다.$ oc create secret generic threescale-provider-account --from-literal=adminURL=https://3scale-admin.example.com --from-literal=token=123456
$ oc create secret generic threescale-provider-account --from-literal=adminURL=https://3scale-admin.example.com --from-literal=token=123456Copy to Clipboard Copied! Toggle word wrap Toggle overflow 3scale-provider-account시크릿은 HTTP 연결을 사용할 수 있는 한 3scale 인스턴스의 모든 테넌트를 식별할 수 있습니다. 즉, CR 링크가 다른 네임스페이스 또는 다른 OpenShift 클러스터에 있을 수 있는 테넌트가 포함된 3scale CR 및 3scale 인스턴스입니다.
-
3scale CR은
3scale CR에서
spec.providerAccountRef를 지정하고 테넌트를 식별하는 OpenShiftSecret에 대한 로컬 참조 이름으로 설정합니다. 다음 3scaleDeveloperAccountCR 예에서mytenant는 시크릿입니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 시크릿에서 다음을 수행합니다.
-
adminURL은 모든 네임스페이스에 있을 수 있는 3scale 인스턴스의 URL을 지정합니다. 토큰은해당 3scale 인스턴스에서 하나의 테넌트에 대한 액세스에 대한 인증 정보를 지정합니다. 이 테넌트는 기본 테넌트 또는 해당 인스턴스의 다른 테넌트일 수 있습니다.일반적으로 테넌트 CR을 배포할 때 이 보안을 생성합니다. 예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
3scale Operator에서 CR에 연결된 테넌트를 식별할 수 없는 경우 Operator는 오류 메시지를 생성합니다.
8.6. 3scale API Management OpenAPI 사용자 정의 리소스 배포 링크 복사링크가 클립보드에 복사되었습니다!
OpenAPI CR(사용자 정의 리소스)은 개발자 포털에서 ActiveDocs에 사용할 수 있는 OAS(OpenAPI Specification) 문서를 가져오는 한 가지 방법입니다. OAS는 API에 하나의 특정 프로그래밍 언어를 사용하도록 묶지 않는 표준입니다. 사용자와 컴퓨터는 소스 코드 액세스, 문서 또는 네트워크 트래픽 검사 없이 API 제품의 기능을 더 쉽게 이해할 수 있습니다.
사전 요구 사항
- 3scale 2.16 온-프레미스 인스턴스에 대한 관리자 권한이 있는 사용자 계정.
- API를 정의하는 OAS 문서입니다.
-
OpenAPICR이 테넌트에 연결되는 방법을 설명합니다. -
APIKEY및openIdConnect/oauth2는 지원되는 보안 체계입니다.
OpenID Connect 및 OAuth2 제한 사항
OpenAPI 사양에서 3scale을 구성하려면 OpenAPI CR(사용자 정의 리소스)에 다음 데이터를 제공해야 합니다.
OpenID Connect (OIDC)
issuerType:-
기본값으로
rest인 발행자 유형을 정의합니다. OpenAPI CR에서 이 매개변수를 덮어쓸 수 있습니다.
-
기본값으로
, 일반 값 URL로 또는 issuerEndpoint URL을 사용하여issuerEndpointissuerEndpointRef시크릿을 정의합니다.-
CR에서
issuerEndpoint일반 값을 정의하는 경우issuerEndpointRef시크릿보다 우선합니다. -
issuerEndpoint형식은 OpenID 공급자 설정에 따라 다릅니다. Red Hat Single Sign-On의 경우https://<CLIENT_ID>:<CLIENT_SECRET>@:/auth/realms/<REALM_NAME>입니다.
-
CR에서
flows 오브젝트:
-
oauth2보안 스키마를 정의할 때 OpenAPI 문서에는 흐름이 포함됩니다. 그러나 보안 체계가 OpenID Connect인 경우 OpenAPI 문서는 흐름을 제공하지 않습니다. 이 경우 OpenAPI CR을 제공할 수 있습니다.
-
8.6.1. 시크릿에서 OAS 문서를 가져오는 3scale OpenAPI 사용자 정의 리소스 배포 링크 복사링크가 클립보드에 복사되었습니다!
3scale 백엔드 및 제품을 생성할 수 있도록 OpenAPI CR(사용자 정의 리소스)을 배포합니다.
Operator는 시크릿의 콘텐츠만 읽습니다. Operator는 시크릿의 필드 이름을 읽지 않습니다.
사전 요구 사항
프로세스
OAS 문서가 포함된 보안을 정의합니다. 예를 들어 다음 콘텐츠를 사용하여
myoasdoc1.yaml을 생성할 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 시크릿을 생성합니다. 예를 들면 다음과 같습니다.
oc create secret generic myoasdoc1 --from-file myoasdoc1.yaml
$ oc create secret generic myoasdoc1 --from-file myoasdoc1.yaml secret/myoasdoc1 createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenAPICR을 정의합니다. OAS 문서가 포함된 보안에 대한 참조를 지정해야 합니다. 예를 들어myopenapicr1.yaml파일을 생성할 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 방금 정의한 리소스를 생성합니다. 예를 들면 다음과 같습니다.
oc create -f myopenapicr1.yaml
$ oc create -f myopenapicr1.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 지정된 예에서 출력은 다음과 같습니다.
openapi.capabilities.3scale.net/myopenapicr1 created
$ openapi.capabilities.3scale.net/myopenapicr1 createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.6.2. 3scale OpenAPI 사용자 정의 리소스 정의 기능 링크 복사링크가 클립보드에 복사되었습니다!
OpenAPI CRD(사용자 정의 리소스 정의) 배포 기능에 대한 지식이 있으면 개발자 포털을 위한 3scale 제품, 백엔드 및 후속 ActiveDocs 생성에 도움이 됩니다.
OAS 문서는 다음에서 읽을 수 있습니다.
- Kubernetes 시크릿입니다.
- http 및 https 형식의 URL입니다.
-
OAS 문서에서
info.title설정은 215자를 초과해서는 안 됩니다. Operator는 이 설정을 사용하여 길이 제한이 있는 OpenShift 오브젝트 이름을 생성합니다. -
서버 목록의 첫 번째
servers[0].url요소만 개인 URL로 구문 분석됩니다. OAS(OpenAPI Specification)는servers[0].url요소의basePath구성 요소를 사용합니다. -
OpenAPICRD는 단일 최상위 보안 요구 사항을 지원하지만 운영 수준 보안은 지원하지 않습니다. -
OpenAPICRD는apiKey및openIdConnect/oauth2보안 스키마를 지원합니다.
8.6.3. OpenAPI 사용자 정의 리소스를 정의할 때 규칙 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
가져오기 규칙은 3scale 배포에 대해 OpenAPI 문서를 설정할 때 OAS(OpenAPI Specification)가 3scale에서 작동하는 방식을 지정합니다.
제품 이름
기본 제품 시스템 이름은 OpenAPI 문서의 info.title 필드에서 가져옵니다. OpenAPI 문서의 제품 이름을 재정의하려면 OpenAPI CR(사용자 정의 리소스)에 spec.productSystemName 필드를 지정합니다.
프라이빗 기본 URL
개인 기본 URL은 OpenAPI CR servers[0].url 필드에서 읽습니다. OpenAPI CR의 spec.privateBaseURL 필드를 사용하여 이를 덮어쓸 수 있습니다.
3scale 방법
가져온 OpenAPI 문서에 정의된 각 작업은 제품 수준에서 하나의 3scale 메서드로 변환됩니다. 메서드 이름은 작업 오브젝트의 operationId 필드에서 읽습니다.
3scale 매핑 규칙
가져온 OpenAPI 문서에 정의된 각 작업은 제품 수준에서 하나의 3scale 매핑 규칙으로 변환됩니다. 이전에는 기존 매핑 규칙이 OpenAPI CR로 가져온 규칙으로 교체되었습니다.
OpenAPI 문서에서 paths 오브젝트는 동사 및 패턴 속성에 대한 매핑 규칙을 제공합니다. 3scale 메서드는 operationId 에 따라 연결됩니다.
delta 값은 1 로 하드 코딩됩니다.
기본적으로 Strict 일치 정책이 구성됩니다. 일치하는 정책은 OpenAPI CRD의 spec. PrefixMatching 필드를 사용하여 Prefix 일치로 전환할 수 있습니다.
인증
하나의 최상위 보안 요구 사항만 지원됩니다. 운영 수준 보안 요구 사항은 지원되지 않습니다.
지원되는 보안 스키마는 apiKey 입니다.
apiKey 보안 스키마 유형:
-
인증 정보 위치는 보안 스키마 오브젝트의 OpenAPI
문서에서읽습니다. -
인증 사용자 키는 보안 스키마 오브젝트의 OpenAPI 문서
이름필드에서 읽습니다.
다음은 apiKey 보안 요구 사항이 있는 OAS 3.0.2의 부분적인 예입니다.
OpenAPI 문서에서 보안 요구 사항을 지정하지 않으면 다음이 적용됩니다.
-
apiKey에 대해 제품 인증이 구성됩니다. -
인증 정보 위치는
쿼리 매개변수(GET) 또는 본문 매개변수(POST/PUT/DELETE)로 기본 설정됩니다. -
Auth 사용자 키의 기본값은 3scale 값
user_key입니다.
3scale Authentication Security 는 OpenAPI CRD의 spec.privateAPIHostHeader 및 spec.privateAPISecretToken 필드를 사용하여 설정할 수 있습니다.
ActiveDocs
3scale ActiveDoc이 생성되지 않습니다.
3scale 제품 정책 체인
3scale 정책 체인은 기본 3scale 생성입니다.
3scale 배포 모드
기본적으로 구성된 3scale 배포 모드는 APIcast 3scale으로 관리됩니다. 그러나 spec.productionPublicBaseURL 또는 spec.stagingPublicBaseURL 또는 두 필드가 모두 OpenAPI CR에 있는 경우 제품의 배포 모드는 APIcast 자체 관리입니다.
사용자 정의 공용 기본 URL이 있는 OpenAPI CR의 예:
8.6.4. OpenID Connect 및 OAuth2 구성 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat 3scale API Management에는 OAS(OpenAPI Specification)에 추가 정보가 포함되어 있지 않습니다. 이 정보는 OpenAPI CR(사용자 정의 리소스)에서 제공해야 합니다. 특히 다음과 같습니다.
OpenID Connect 발급자 유형
기본값은
rest이지만 OpenAPI CR에서 재정의할 수 있습니다.OpenID Connect Issuer Endpoint Reference (Secret)
3scale에서는 발행자 URL에 클라이언트 시크릿이 포함되어야 합니다.
flows 오브젝트
보안 스키마가 OAuth2인 경우 OpenAPI 문서에서 흐름을 제공합니다. 그러나 OpenID Connect(OIDC) 보안 체계의 경우 OpenAPI 문서는 흐름을 제공하지 않습니다.
OIDC에만 4개의 흐름 매개변수가 있습니다.
-
standardFlowEnabled -
implicitFlowEnabled -
serviceAccountsEnabled -
directAccessGrantsEnabled.
-
OIDC 발행자 시크릿
- 이전에 발행자 클라이언트를 설정했습니다. RHSSO/keycloak 영역과 클라이언트는 시크릿 예제에서 이를 사용하고 있습니다.
-
issuerEndpoint형식은https://<client-id>:<client-secret>@<host>:<port>/auth/realms/<realm-name>입니다. 형식은3scale 포털/제품 페이지 - AUTHENTICATION SETTINGS - OpenID Connect Issuer에 설명되어 있습니다. -
<client-secret> 값은 Cryostat/Clients/Client
s/ClientID/Credentials/Secret의 발급자 클라이언트에서 가져옵니다.
프로세스
다음 콘텐츠를 사용하여 시크릿 (예:
my-secret.yaml)을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 사용하여 시크릿을 적용합니다.
oc apply -f my-secret.yaml
$ oc apply -f my-secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 콘텐츠를 사용하여 OIDC 및 OAuth2에 대한 OpenAPI CR을 생성합니다(예:
openapi-example.yaml).Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 사용하여 OIDC 및 OAuth2에 대해 OpenAPI CR을 적용합니다.
oc apply -f <openapi-cr-file>.yaml
$ oc apply -f <openapi-cr-file>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- OIDC 필드는 OpenAPI CR에서 선택 사항이며 OpenID Connect에만 적용됩니다.
-
는 issuerEndpoint가 포함된 보안을 참조해야 합니다.issuerEndpointRef
| 필드 | 필수 항목 | 설명 |
|
| 제공되지 않음 |
유효한 값: [ |
|
| 제공되지 않음 |
|
|
| 제공되지 않음 |
|
|
| 제공되지 않음 |
clientID가 포함된 ClientID를 사용한 JSON 웹 토큰(JWT) 클레임. 기본값은 |
|
| 제공되지 않음 |
|
|
| 제공되지 않음 |
흐름 오브젝트: 보안 스키마가 OAuth2인 경우 OpenAPI 문서에서 흐름을 제공합니다. 그러나 OIDC 보안 체계의 경우 OpenAPI 문서는 흐름을 제공하지 않습니다. 이 경우 OpenAPI CR은 이를 제공할 수 있습니다. OIDC에만 4개의 흐름 매개변수가 있습니다. |
|
| 제공되지 않음 | 오류에 대한 사용자 지정 게이트웨이 응답을 지정합니다. GatewayResponseSpec 을 참조하십시오. |
-
OIDC 사양에
issuerEndpointRef또는issuerEndpoint를 정의하지만 두 필드를 모두 정의할 수 있습니다. -
CR에
issuerEndpoint일반 값이 정의된 경우issuerEndpointRef시크릿보다 우선순위로 사용됩니다. issuerEndpoint의 형식은 OpenID 공급자 설정에서 결정됩니다.3scale 관리 포털에서 [ your_product_name] > Integration > Settings 로 이동합니다. Authentication 에서 OpenID Connect Issuer 옵션을 클릭합니다. OpenID Connect 발급자 유형을 확인합니다.
다음은
issuerEndpoint가 일반 값과 시크릿으로 모두 정의된 OpenAPI CR 예입니다. 일반 값이 사용됩니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
OpenAPI CR 사양이 OIDC이지만 OAS의
securitySchemes유형이oauth2인 경우 CR OIDC 인증 흐름 매개변수가 무시되고 제품 OIDC 인증 흐름이 OAS에 정의된 대로oauth2흐름과 일치하도록 설정됩니다.-
OAuth2
authorizationCode가 정의된 경우 StandardFlowEnabled가 적용됩니다. -
OAuth2 암시적가 정의된 경우
가 true입니다.implicitFlowEnabled -
OAuth2
클라이언트 인증정보가 정의된 경우serviceAccountsEnabled가 true OAuth2
암호가 정의된 경우directAccessGrantsEnabled가 true모든 Product OIDC 인증 흐름을 선택할 수 있는 OAS
securitySchemes정의의 예입니다. 참고: OpenAPI CR에 OIDC를 정의합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
OAuth2
추가 리소스
8.6.5. URL에서 OAS 문서를 가져오는 3scale API Management OpenAPI 사용자 정의 리소스 배포 링크 복사링크가 클립보드에 복사되었습니다!
지정한 URL에서 OAS 문서를 가져오는 OpenAPI 사용자 정의 리소스를 배포할 수 있습니다. 그런 다음 이 OAS 문서를 개발자 포털에서 API의 ActiveDocs 기반으로 사용할 수 있습니다.
사전 요구 사항
동일한 네임스페이스에 있는 3scale 인스턴스의 기본 테넌트에 연결되지 않는
사용자 정의 리소스를 생성하는 경우 OpenAPI CR을 포함할 네임스페이스에OpenAPIOpenAPICR이 연결된 테넌트를 식별하는 시크릿이 포함됩니다. 보안 이름은 다음 중 하나입니다.-
threescale-provider-account - 사용자 정의
이 시크릿에는 3scale 인스턴스의 URL과 해당 3scale 인스턴스에서 하나의 테넌트에 액세스할 수 있는 인증 정보가 포함된 토큰이 포함되어 있습니다.
-
프로세스
- OpenShift 계정에서 Operator > 설치된 Operator로 이동합니다.
- 3scale Operator를 클릭합니다.
- YAML 탭을 선택합니다.
OpenAPICR(사용자 정의 리소스)을 생성합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
저장을 클릭합니다. 3scale Operator가
OpenAPICR을 생성하는 데 몇 초가 걸립니다.
검증
-
OpenShift의 3scale 제품 개요 페이지에서 Synced 조건이
True로 표시되는지 확인합니다. - 3scale 계정으로 이동합니다.
-
OAS 문서가 있는지 확인합니다. 위의 예제에서는
openapi1이라는 새 OAS 문서가 표시됩니다.
8.6.6. 추가 리소스 링크 복사링크가 클립보드에 복사되었습니다!
8.7. 3scale API Management ActiveDoc 사용자 정의 리소스 배포 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat 3scale API Management ActiveDocs는 OpenAPI 사양을 준수하는 RESTful 웹 서비스를 정의하는 API 정의 문서를 기반으로 합니다. ActiveDoc CR(사용자 정의 리소스)은 개발자 포털에서 ActiveDocs에 사용할 수 있는 OAS(OpenAPI Specification) 문서를 가져오는 한 가지 방법입니다. OAS는 API에 하나의 특정 프로그래밍 언어를 사용하도록 묶지 않는 표준입니다. 사용자와 컴퓨터는 소스 코드 액세스, 문서 또는 네트워크 트래픽 검사 없이 API 제품의 기능을 더 쉽게 이해할 수 있습니다.
사전 요구 사항
- 3scale 2.16 온-프레미스 인스턴스에 대한 관리자 권한이 있는 사용자 계정.
API를 정의하는 OAS 문서입니다.
- OAS 3.0.2는 ActiveDocs CRD(사용자 정의 리소스 정의)에서 지원되는 유일한 버전입니다.
-
ActiveDocCR이 테넌트에 연결되는 방법을 설명합니다.
8.7.1. 보안에서 OAS 문서를 가져오는 3scale API Management ActiveDoc 사용자 정의 리소스 배포 링크 복사링크가 클립보드에 복사되었습니다!
3scale 백엔드 및 제품을 생성할 수 있도록 ActiveDoc CR(사용자 정의 리소스)을 배포합니다.
Operator는 시크릿의 콘텐츠만 읽습니다. Operator는 시크릿의 필드 이름을 읽지 않습니다. 예를 들어 데이터는 key: value 쌍으로 구성되어 있습니다. 여기서 value 는 파일의 내용을 나타내며 key 는 파일 이름입니다. 이 ActiveDoc CRD 컨텍스트에서 Operator에서 파일 이름을 무시합니다. Operator는 파일의 콘텐츠만 읽습니다.
사전 요구 사항
- 3scale API Management Operator가 사용자 정의 리소스가 연결되는 테넌트를 식별하는 방법을 이해하고 있습니다.
OAS(OpenAPI Specification) 문서가 포함된 시크릿을 정의합니다. 예를 들어 다음 콘텐츠를 사용하여
myoasdoc1.yaml을 생성할 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
프로세스
시크릿을 생성합니다. 예를 들면 다음과 같습니다.
oc create secret generic myoasdoc1 --from-file myoasdoc1.yaml
$ oc create secret generic myoasdoc1 --from-file myoasdoc1.yaml secret/myoasdoc1 createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow ActiveDocCR을 정의합니다. OAS 문서가 포함된 보안에 대한 참조를 지정해야 합니다. 예를 들어myactivedoccr1.yaml파일을 생성할 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 방금 정의한 리소스를 생성합니다. 예를 들면 다음과 같습니다.
oc create -f myactivedoccr1.yaml
$ oc create -f myactivedoccr1.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 지정된 예에서 출력은 다음과 같습니다.
activedoc.capabilities.3scale.net/myactivedoccr1 created
$ activedoc.capabilities.3scale.net/myactivedoccr1 createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
- Red Hat OCP(OpenShift Container Platform) 관리자 계정에 로그인합니다.
- Operators > Installed Operators 로 이동합니다.
- Red Hat Integration - 3scale 을 클릭합니다.
- Active Doc 탭을 클릭합니다.
-
OAS 문서가 있는지 확인합니다. 위의 예제에서는
myactivedoccr1이라는 새 OAS 문서가 표시됩니다.
8.7.2. 3scale API Management OpenAPI 사용자 정의 리소스 정의 기능 링크 복사링크가 클립보드에 복사되었습니다!
ActiveDoc CRD(사용자 정의 리소스 정의)는 개발자를 위한 OpenAPI 문서 형식의 제품 문서에 관련이 있습니다. ActiveDoc CRD 배포 기능에 대한 지식이 있으면 개발자 포털을 위한 ActiveDocs를 생성할 수 있습니다.
ActiveDocCR은 다음 중 하나에서 문서를 읽고 OpenAPI할 수 있습니다.- 시크릿.
-
http또는https형식의 URL
-
선택적으로
productSystemName필드를 사용하여ActiveDocCR을 3scale 제품에 연결할 수 있습니다. 값은 3scale 제품 CR의system_name이어야 합니다. -
게시된필드를 사용하여 3scale에ActiveDoc문서를 게시하거나 숨길 수 있습니다. 기본적으로 이 값은숨겨집니다. -
skipSwaggerValidations필드를 사용하여 OpenAPI 3.0 검증을 건너뛸 수 있습니다. 기본적으로ActiveDocCR의 유효성이 검사됩니다.
8.7.3. URL에서 OAS 문서를 가져오는 3scale API Management ActiveDoc 사용자 정의 리소스 배포 링크 복사링크가 클립보드에 복사되었습니다!
지정한 URL에서 OAS(OpenAPI Specification) 문서를 가져오는 ActiveDoc CR(사용자 정의 리소스)을 배포할 수 있습니다. 그런 다음 이 OAS 문서를 개발자 포털에서 API의 ActiveDocs 기반으로 사용할 수 있습니다.
사전 요구 사항
프로세스
- OpenShift 계정에서 Operator > 설치된 Operator로 이동합니다.
- 3scale Operator를 클릭합니다.
- Active Doc 탭을 클릭합니다.
ActiveDocCR을 생성합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항입니다. 자체 관리 APIcast의 경우
ActiveDocCR에서productionPublicBaseURL및stagingPublicBaseURL필드를 배포의 URL로 설정합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
저장을 클릭합니다. 3scale Operator가
ActiveDocCR을 생성하는 데 몇 초가 걸립니다.
검증
- Red Hat OCP(OpenShift Container Platform) 관리자 계정에 로그인합니다.
- Operators > Installed Operators 로 이동합니다.
- Red Hat Integration 3scale 을 클릭합니다.
- Active Doc 탭을 클릭합니다.
-
OAS 문서가 있는지 확인합니다. 위의 예제에서는
myactivedoccr1이라는 새 OAS 문서가 표시됩니다.
8.7.4. 추가 리소스 링크 복사링크가 클립보드에 복사되었습니다!
8.11. 3scale API Management CustomPolicyDefinition 사용자 정의 리소스 배포 링크 복사링크가 클립보드에 복사되었습니다!
CustomPolicyDefinition CRD(사용자 정의 리소스 정의)를 사용하여 관리 포털에서 3scale 제품에 사용자 정의 정책을 구성할 수 있습니다.
3scale Operator에서 새 CustomPolicyDefinition CR(사용자 정의 리소스)을 찾으면 Operator는 3scale API Management Operator에서 사용자 정의 리소스가 연결된 테넌트를 식별하는 방법에 설명된 대로 CR을 소유한 테넌트를 식별합니다.
사전 요구 사항
- 3scale Operator가 설치되어 있습니다.
- 사용자 정의 정책 파일을 배포할 준비가 되어 있습니다.
- 게이트웨이에 사용자 지정 정책을 이미 삽입했습니다.
프로세스
CustomPolicyDefinitionCR을 정의하고 이를 예를 들어my-apicast-custom-policy-definition.yaml파일에 저장합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow CustomPolicyDefinitionCR을 배포합니다.oc create -f my-apicast-custom-policy-definition.yaml
$ oc create -f my-apicast-custom-policy-definition.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.12. 테넌트 사용자 정의 리소스 배포 링크 복사링크가 클립보드에 복사되었습니다!
테넌트 CR(사용자 정의 리소스)은 공급자 계정 이라고도 합니다.
APIManager CR을 배포할 때 3scale Operator를 사용하여 3scale을 배포합니다. 기본 3scale 설치에는 사용할 준비가 된 기본 테넌트가 포함됩니다. 선택적으로 Tenant CR을 배포하여 다른 테넌트를 만들 수 있습니다.
사전 요구 사항
- 일반 사전 요구 사항
-
새
TenantCR 네임스페이스에create권한이 있는 OpenShift 역할.
프로세스
3scale이 설치된 OpenShift 프로젝트로 이동합니다. 예를 들어 프로젝트 이름이
my-3scale-project인 경우 다음 명령을 실행합니다.oc project my-3scale-project
$ oc project my-3scale-projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow 새 테넌트의 3scale admin 계정의 암호가 포함된 시크릿을 생성합니다.
TenantCR 정의에서passwordCredentialsRef속성을 이 보안 이름으로 설정합니다. 4단계의TenantCR 정의 예에서ADMIN_SECRET은 이 시크릿의 자리 표시자입니다. 다음 명령은 보안 생성의 예를 제공합니다.oc create secret generic ecorp-admin-secret --from-literal=admin_password=<admin password value>
$ oc create secret generic ecorp-admin-secret --from-literal=admin_password=<admin password value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 3scale 마스터 계정 호스트 이름을 가져옵니다. Operator를 사용하여 3scale을 배포할 때 마스터 계정에는 master.$wildcard
Domain}과 함께 고정 URL이 있습니다.3scale이 설치된 네임스페이스에 액세스할 수 있는 경우 다음 명령을 사용하여 마스터 계정 호스트 이름을 가져올 수 있습니다.
oc get routes --field-selector=spec.to.name==system-master -o jsonpath="{.items[].spec.host}"$ oc get routes --field-selector=spec.to.name==system-master -o jsonpath="{.items[].spec.host}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 4단계의
TenantCR 정의 예에서MASTER_HOSTNAME은 이 이름의 자리 표시자입니다.새
TenantCR을 정의하는 파일을 만듭니다.TenantCR 정의에서masterCredentialsRef.name속성을system-seed로 설정합니다. 3scale 마스터 계정 인증 정보, 필요한 경우 액세스 토큰을 사용하여 테넌트 관리 작업을 수행할 수 있습니다.APIManagerCR을 배포하는 동안 Operator는 마스터 계정 인증 정보가 포함된 보안을 생성합니다. 시크릿의 이름은system-seed입니다.3scale이 클러스터 전체 모드에 설치된 경우 3scale이 포함된 네임스페이스와 다른 네임스페이스에 새 테넌트를 배포할 수 있습니다. 이렇게 하려면
masterCredentialsRef.namespace를 3scale 설치가 포함된 네임스페이스로 설정합니다.다음 예제에서는 3scale이 클러스터 전체 모드에 설치되어 있다고 가정합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow TenantCR을 만듭니다. 예를 들어 이전 예제 CR을mytenant.yaml파일에 저장한 경우 다음을 실행합니다.oc create -f mytenant.yaml
$ oc create -f mytenant.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령의 결과는 다음과 같습니다.
-
Operator는
spec.systemMasterUrl특성을 설정하여 3scale 설치에 테넌트를 배포합니다. 3scale Operator는 새 테넌트에 대한 인증 정보가 포함된 보안을 생성합니다. 보안 이름은
tenantSecretRef.name속성에 지정한 값입니다. 이 시크릿에는 새 테넌트의 관리자 URL 및 액세스 토큰이 포함됩니다.참조로, 이는 Operator가 생성하는 보안의 예입니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
이제 새 테넌트에 연결된
Product,Backend,OpenAPI,DeveloperAccount및DeveloperUserCR을 배포할 수 있습니다.
-
Operator는
Tenant CR의 기능 확장
테넌트 CR을 통해 3scale 테넌트에서 다음 선택적 매개변수를 설정할 수 있습니다.
- fromEmail
- supportEmail
- financeSupportEmail
- siteAccessCode
프로세스
TenantCR을 통해 3scale 테넌트의 테넌트 정보 매개변수를 업데이트합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow TenantCR에 변경 사항을 적용합니다.oc apply -f mytenant.yaml
$ oc apply -f mytenant.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
테넌트 CR 삭제
Tenant CR을 사용하여 해당 테넌트를 배포한 경우 관리 포털에서 테넌트를 삭제하지 마십시오. 이 경우 Operator는 삭제하려는 테넌트에 CR을 사용하여 다른 테넌트를 생성합니다.
배포된 Tenant CR을 삭제하려면 리소스 정의가 포함된 파일의 이름을 지정할 수 있습니다. 예를 들면 다음과 같습니다.
oc delete -f mytenant.yaml
$ oc delete -f mytenant.yaml
또는 oc delete 명령을 실행하고 Tenant CR에 이름을 지정하고 테넌트의 네임스페이스도 지정할 수 있습니다. 예를 들면 다음과 같습니다.
oc delete tenant.capabilities.3scale.net mytenant -n mynamespace
$ oc delete tenant.capabilities.3scale.net mytenant -n mynamespace
테넌트를 삭제하면 3scale Operator가 다음을 수행합니다.
- 3scale 설치에서 테넌트를 숨깁니다.
- 테넌트가 소유한 배포된 CR을 삭제합니다.
- 15일 후에 테넌트를 삭제합니다.
테넌트를 삭제한 후에는 복구할 수 없습니다. 테넌트가 소유한 리소스를 백업할 수 있으며 관리 포털에서만 이 작업을 수행할 수 있습니다. 15일 후 3scale이 테넌트를 삭제합니다. 데이터 보호법을 준수하기 위해 일부 데이터는 향후 참조를 위해 유지됩니다.
추가 리소스
8.13. 사용자 정의 리소스를 배포하여 3scale API Management 개발자 관리 링크 복사링크가 클립보드에 복사되었습니다!
3scale 관리자는 CR(사용자 정의 리소스)을 사용하여 개별 개발자 사용자를 그룹화하는 개발자 계정을 배포할 수 있습니다. 이러한 계정을 사용하면 개발자 포털의 3scale 관리 API에 대한 개발자 액세스를 구성하고 관리할 수 있습니다.
테넌트는 원하는 수의 개발자 계정을 포함할 수 있으며 각 개발자 계정은 정확히 하나의 테넌트에 연결됩니다. 개발자 계정은 원하는 수의 개발자 사용자를 포함할 수 있으며 각 개발자 사용자는 정확히 하나의 개발자 계정에 연결됩니다. 테넌트 계획에 따라 생성할 수 있는 개발자 계정 수와 각 개발자 계정에서 그룹화할 수 있는 개발자 사용자 수에 대한 제한이 결정됩니다.
개발자 사용자 정의 리소스를 사용하려면 3scale Operator에 의해 3scale이 설치되어 있어야 합니다. 3scale Operator가 포함된 네임스페이스에만 개발자 사용자 정의 리소스를 배포할 수 있습니다. 개발자 사용자 정의 리소스의 배포는 3scale 관리 포털 또는 3scale 내부 API를 사용하여 개발자를 관리하는 대안입니다.
사용자 정의 리소스를 배포하여 개발자 계정 또는 개발자 사용자를 생성할 때 관리 포털 또는 내부 3scale API를 사용하여 해당 개발자 계정 또는 개발자 사용자를 업데이트할 수 없습니다. 개발자 CR을 배포한 후 관리 포털에 새 개발자 계정 또는 계정 페이지에 새 개발자 사용자가 표시되므로 이를 인식하는 것이 중요합니다. 관리 포털 또는 API를 사용하여 CR과 함께 배포된 개발자 계정 또는 개발자 사용자를 업데이트하려고 하면 3scale Operator가 배포된 CR을 반영하도록 변경 사항을 되돌립니다. 이는 향후 릴리스에서 제거될 것으로 예상되는 제한 사항입니다. 그러나 관리 포털 또는 API를 사용하여 CR을 배포하여 생성한 개발자 계정 또는 개발자 사용자를 삭제할 수 있습니다.
8.13.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- 3scale은 3scale Operator에 의해 설치되었습니다.
-
계정 관리API 범위에서 읽기 및 쓰기 권한이 있는 액세스 토큰으로 3scale에 대한 관리자 권한을 제공합니다.
8.13.2. DeveloperAccount 사용자 정의 리소스를 배포하여 3scale API Management 개발자 계정 관리 링크 복사링크가 클립보드에 복사되었습니다!
3scale Operator를 사용하여 3scale을 설치할 때 DeveloperAccount 및 DeveloperUser CR(사용자 정의 리소스)을 배포할 수 있습니다. 이러한 사용자 정의 리소스를 사용하면 개발자 포털의 3scale 관리 API에 대한 개발자 액세스를 위한 계정을 생성하고 업데이트할 수 있습니다.
새 DeveloperAccount CR을 배포하려면 admin 역할이 있는 사용자에 대해 DeveloperUser CR도 배포해야 합니다. 여기에서 제공되는 절차는 새 DeveloperAccount CR을 배포하는 것입니다. DeveloperAccount CR을 배포한 후 업데이트 또는 삭제하는 절차는 다른 CR과 동일합니다.
3scale Operator가 포함된 네임스페이스에서만 사용자 정의 리소스를 배포할 수 있습니다.
사전 요구 사항
- 3scale API Management Operator가 사용자 정의 리소스가 연결되는 테넌트를 식별하는 방법에 대한 이해.
동일한 네임스페이스에 있는 3scale 인스턴스의 기본 테넌트에 연결되지 않는
CR을 생성하는 경우 DeveloperAccount CR이 포함된 네임스페이스에DeveloperAccountDeveloperAccountCR이 연결된 테넌트를 식별하는 시크릿이 포함됩니다. 보안 이름은 다음 중 하나입니다.-
threescale-provider-account - 사용자 정의
이 시크릿에는 3scale 인스턴스의 URL과 해당 3scale 인스턴스에서 하나의 테넌트에 액세스할 수 있는 인증 정보가 포함된 토큰이 포함되어 있습니다.
-
-
새
DeveloperAccountCR에admin역할을 갖는 하나 이상의 developer 사용자의 사용자 이름, 암호 및 이메일 주소가 있습니다.
프로세스
3scale Operator가 포함된 네임스페이스에서 새 개발자 계정 리소스에
admin역할이 있는 개발자의 사용자 이름과 암호가 포함된 시크릿을 정의하는 리소스 파일을 생성하고 저장합니다. 예를 들어myusername01.yaml파일에는 다음이 포함될 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 시크릿을 생성합니다. 예를 들면 다음과 같습니다.
oc create -f myusername01.yaml
$ oc create -f myusername01.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 지정된 예에서 출력은 다음과 같습니다.
secret/myusername01 created
$ secret/myusername01 createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow admin역할이 있는 개발자의DeveloperUserCR을 정의하는.yaml파일을 생성하고 저장합니다. 이DeveloperUserCR은 3scale Operator에서 새DeveloperAccountCR을 배포하는 데 필요합니다. 예를 들어developeruser01.yaml파일에는 다음이 포함될 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow DeveloperUserCR에서 다음을 수행합니다.-
개발자 계정 이름, 사용자 이름, 이메일은
DeveloperAccount가 포함된 테넌트에서 고유해야 합니다. -
여기에서 지정하는 개발자 계정 이름은 이 절차에 배포하는
DeveloperAccountCR의 이름과 일치해야 합니다. 이DeveloperUserCR을 생성하기 전이나 후에DeveloperAccountCR을 생성하는지 여부는 중요하지 않습니다. -
DeveloperUserCR이 링크하는 테넌트는 지정된DeveloperAccountCR과 동일한 테넌트여야 합니다.
-
개발자 계정 이름, 사용자 이름, 이메일은
방금 정의한 리소스를 생성합니다. 예를 들면 다음과 같습니다.
oc create -f developeruser01.yaml
$ oc create -f developeruser01.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 지정된 예에서 출력은 다음과 같습니다.
developeruser.capabilities.3scale.net/developeruser01 created
$ developeruser.capabilities.3scale.net/developeruser01 createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow DeveloperAccountCR을 정의하는.yaml파일을 생성하고 저장합니다. 이.yaml파일에서spec.OrgName필드는 조직 이름을 지정해야 합니다. 예를 들어developeraccount01.yaml파일에는 다음이 포함될 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 방금 정의한 리소스를 생성합니다. 예를 들면 다음과 같습니다.
oc create -f developeraccount01.yaml
$ oc create -f developeraccount01.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 지정된 예에서 출력은 다음과 같습니다.
developeraccount.capabilities.3scale.net/developeraccount01 created
$ developeraccount.capabilities.3scale.net/developeraccount01 createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 단계
3scale Operator가 새 사용자 정의 리소스를 반영하도록 3scale 구성을 업데이트하는 데 몇 초가 걸립니다. Operator가 사용자 정의 리소스 정보를 성공적으로 전파하는지 확인하려면 DeveloperAccount CR status 필드를 확인하거나 oc wait 명령을 실행합니다. 예를 들면 다음과 같습니다.
oc wait --for=condition=Ready --timeout=30s developeraccount/developeraccount1
$ oc wait --for=condition=Ready --timeout=30s developeraccount/developeraccount1
오류가 발생하는 경우 사용자 정의 리소스의 상태 필드는 오류가 일시적인지 여부를 나타내며 문제를 해결하는 데 도움이 되는 오류 메시지를 제공합니다.
새 개발자 사용자에게 개발자 포털에 로그인할 수 있음을 알립니다. 또한 로그인 자격 증명을 전달해야 할 수도 있습니다.
배포된 DeveloperAccount CR을 다른 사용자 정의 리소스를 업데이트하는 것과 동일한 방식으로 업데이트할 수 있습니다. 예를 들어 업데이트하려는 DeveloperAccount CR을 소유한 테넌트가 포함된 OpenShift 프로젝트에서 다음 명령을 실행하여 devaccount1 CR을 업데이트합니다.
oc edit developeraccount devaccount1
$ oc edit developeraccount devaccount1
8.13.3. DeveloperUser 사용자 정의 리소스를 배포하여 3scale API Management 개발자 사용자 관리 링크 복사링크가 클립보드에 복사되었습니다!
3scale Operator를 사용하여 3scale을 설치할 때 개발자 포털의 3scale 관리 API에 대한 개발자 액세스를 관리하기 위해 DeveloperUser CR(사용자 정의 리소스)을 배포할 수 있습니다. 여기에서 제공되는 절차는 새 DeveloperUser CR을 배포하는 것입니다. DeveloperUser CR을 배포한 후 업데이트 또는 삭제하는 절차는 다른 CR과 동일합니다.
3scale Operator가 포함된 네임스페이스에서만 CR을 배포할 수 있습니다.
사전 요구 사항
- 3scale Operator가 사용자 정의 리소스가 연결되는 테넌트를 식별하는 방법에 대한 이해.
admin역할이 있는 사용자에 대해 하나 이상의 배포된DeveloperUserCR을 포함하는 배포된DeveloperAccountCR이 하나 이상 있습니다. 동일한 네임스페이스에 있는 3scale 인스턴스의 기본 테넌트에 연결되지 않는CR을 생성하는 경우 DeveloperUser CR을 포함할 네임스페이스에DeveloperUserDeveloperUserCR이 연결된 테넌트를 식별하는 시크릿이 포함됩니다. 보안 이름은 다음 중 하나입니다.-
threescale-provider-account - 사용자 정의
이 시크릿에는 3scale 인스턴스의 URL과 해당 3scale 인스턴스에서 하나의 테넌트에 액세스할 수 있는 인증 정보가 포함된 토큰이 포함되어 있습니다.
-
-
새
DeveloperUserCR의 경우 해당 개발자의 사용자 이름, 암호 및 이메일 주소가 있습니다.
프로세스
3scale Operator가 포함된 네임스페이스에서 개발자 사용자의 사용자 이름과 암호가 포함된 보안을 정의하는 리소스 파일을 생성하고 저장합니다. 예를 들어
myusername02.yaml파일에는 다음이 포함될 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 시크릿을 생성합니다. 예를 들면 다음과 같습니다.
oc create -f myusername02.yaml
$ oc create -f myusername02.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 지정된 예에서 출력은 다음과 같습니다.
secret/myusername02 created
$ secret/myusername02 createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow DeveloperUserCR을 정의하는.yaml파일을 생성하고 저장합니다.spec.role필드에서admin또는member를 지정합니다. 예를 들어developeruser02.yaml파일에는 다음이 포함될 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow DeveloperUserCR에서 다음을 수행합니다.-
개발자 사용자 이름(
metadata.name필드에서 지정됨), 사용자 이름 및 이메일은DeveloperAccount가 포함된 사용자가 연결되는 테넌트에서 고유해야 합니다. -
developerAccountRef필드는 배포된DeveloperAccountCR의 이름을 지정해야 합니다. -
DeveloperUserCR이 링크하는 테넌트는 지정된DeveloperAccountCR과 동일한 테넌트여야 합니다.
-
개발자 사용자 이름(
방금 정의한 리소스를 생성합니다. 예를 들면 다음과 같습니다.
oc create -f developefuser02.yaml
$ oc create -f developefuser02.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 지정된 예에서 출력은 다음과 같습니다.
developeruser.capabilities.3scale.net/developeruser02 created
$ developeruser.capabilities.3scale.net/developeruser02 createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 단계
3scale Operator가 새 사용자 정의 리소스를 반영하도록 3scale 구성을 업데이트하는 데 몇 초가 걸립니다. Operator가 사용자 정의 리소스 정보를 성공적으로 전파하는지 확인하려면 DeveloperUser CR status 필드를 확인하거나 oc wait 명령을 실행합니다. 예를 들면 다음과 같습니다.
oc wait --for=condition=Ready --timeout=30s developeruser/developeruser02
$ oc wait --for=condition=Ready --timeout=30s developeruser/developeruser02
오류가 발생하는 경우 사용자 정의 리소스의 상태 필드는 오류가 일시적인지 여부를 나타내며 문제를 해결하는 데 도움이 되는 오류 메시지를 제공합니다.
새 개발자 사용자에게 개발자 포털에 로그인할 수 있음을 알립니다. 또한 로그인 자격 증명을 전달해야 할 수도 있습니다.
배포된 DeveloperUser CR을 다른 사용자 정의 리소스를 업데이트하는 것과 동일한 방식으로 업데이트할 수 있습니다.
8.13.4. DeveloperAccount 또는 DeveloperUser 사용자 정의 리소스 삭제 링크 복사링크가 클립보드에 복사되었습니다!
이를 관리하는 CR(사용자 정의 리소스)을 삭제하여 3scale 개발자 엔터티를 삭제할 수 있습니다. CR을 삭제하면 3scale Operator도 삭제된 DeveloperAccount CR에 연결되는 DeveloperAccount DeveloperUser CR도 삭제합니다.
사용자 정의 리소스에서 정의한 개발자 계정 또는 개발자 사용자를 삭제하는 유일한 방법은 여기에 설명된 절차를 따르는 것입니다. 사용자 정의 리소스로 배포된 개발자 엔터티를 삭제하는 데 관리 포털이나 3scale API를 사용하지 마십시오.
사전 요구 사항
3scale 관리자 권한 또는 삭제하려는 사용자 정의 리소스가 포함된 네임스페이스에 삭제 권한이 있는 OpenShift 역할입니다. 특정 사용자 정의 리소스를 삭제할 수 있는지 확인하려면
oc auth can-i delete명령을 실행합니다. 예를 들어DeveloperAccountCR의 이름이devaccount1인 경우 다음 명령을 실행합니다.oc auth can-i delete developeraccount.capabilities.3scale.net/devaccount1 -n my-namespace
$ oc auth can-i delete developeraccount.capabilities.3scale.net/devaccount1 -n my-namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
삭제할
DeveloperAccount또는DeveloperUserCR은 유효한 테넌트에 대한 링크입니다.
프로세스
사용자 정의 리소스가 연결된 테넌트가 포함된 OpenShift 프로젝트에서
oc delete명령을 실행하여DeveloperAccount또는DeveloperUserCR을 삭제합니다. 예를 들어devaccount1.yaml파일에 정의된DeveloperAccountCR을 배포한 경우 다음 명령을 실행합니다.oc delete -f devaccount1.yaml
$ oc delete -f devaccount1.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 또는
oc delete명령을 실행하고 정의에 지정된 대로 CR의 이름을 지정할 수 있습니다. 예를 들면 다음과 같습니다.oc delete developeraccount.capabilities.3scale.net/devaccount1
$ oc delete developeraccount.capabilities.3scale.net/devaccount1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.14. 3scale API Management Operator 기능의 제한 사항 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat 3scale API Management 2.16에서 3scale Operator에는 기능에 대한 이러한 제한 사항이 포함되어 있습니다.
- 관리 포털에 대한 SSO(Single Sign-On) 인증.
- 개발자 포털에 대한 SSO 인증입니다.
- OAS3를 포함하는 3scale Operator CRD는 3scale 제품 구성의 경우 정보 소스로 참조하지 않습니다.
8.15. 추가 리소스 링크 복사링크가 클립보드에 복사되었습니다!
자세한 내용은 다음 가이드를 참조하십시오.
9장. 3scale API Management 백업 및 복원 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat 3scale API Management 백업 및 복원은 더 이상 사용되지 않으며 더 이상 개발에 중점을 두지 않습니다. 데이터 보호 정보 및 지침은 OpenShift API를 참조하십시오.
이 섹션에서는 3scale 설치 관리자가 다음을 수행하는 데 필요한 정보를 제공합니다.
- 영구 데이터에 대한 백업 절차를 설정합니다.
- 영구 데이터 백업에서 복원을 수행합니다.
하나 이상의 MySQL 데이터베이스에 문제가 있는 경우 3scale을 이전 작동 상태로 올바르게 복원할 수 있습니다.
9.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- 3scale 2.16 인스턴스. 3scale 설치 방법에 대한 자세한 내용은 OpenShift에 3scale API Management 설치를 참조하십시오.
OpenShift 클러스터에서 다음 역할 중 하나가 있는 OpenShift Container Platform 4.x 사용자 계정
- cluster-admin
- admin
- edit
3scale 설치 네임스페이스에 edit 클러스터 역할이 로컬로 바인딩된 사용자는 백업 및 복원 절차를 수행할 수 있습니다.
다음은 영구 데이터에 대한 백업 프로시저를 설정하는 방법에 대한 자세한 내용은 영구 데이터 백업에서 복원을 수행합니다. 하나 이상의 MySQL 데이터베이스로 오류가 발생하는 경우 3scale을 이전 운영 상태로 올바르게 복원할 수 있습니다.
9.2. 영구 볼륨 및 고려 사항 링크 복사링크가 클립보드에 복사되었습니다!
PV(영구 볼륨)
OpenShift의 3scale API Management 배포에서 다음을 수행합니다.
- 기본 인프라에서 클러스터에 제공하는 PV(영구 볼륨)입니다.
- 클러스터 외부의 스토리지 서비스. 동일한 데이터 센터 또는 다른 곳에 있을 수 있습니다.
고려 사항
영구 데이터의 백업 및 복원 절차는 사용 중인 스토리지 유형에 따라 다릅니다. 백업 및 복원을 위해 데이터 일관성을 유지하기 위해 데이터베이스의 기본 PV를 백업하는 것만으로는 충분하지 않습니다. 예를 들어 부분적인 쓰기와 부분 트랜잭션만 캡처하지 마십시오. 대신 데이터베이스의 백업 메커니즘을 사용합니다.
데이터의 일부는 서로 다른 구성 요소 간에 동기화됩니다. 하나의 사본은 데이터 세트에 대한 정보 소스로 간주됩니다. 다른 하나는 로컬로 수정되지는 않지만 신뢰할 수 있는 소스에서 동기화된 사본입니다. 이러한 경우 완료 시 정보 소스를 복원하고 해당 구성 요소에서 동기화된 다른 구성 요소의 복사본을 복사해야 합니다.
9.3. 데이터 세트 사용 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 다양한 영구 저장소의 다양한 데이터 세트, 용도, 사용된 스토리지 유형 및 정보 소스인지에 대해 자세히 설명합니다.
3scale 배포의 전체 상태는 다음 Deployment 오브젝트 및 해당 PV에 저장됩니다.
| 이름 | 설명 |
|---|---|
|
MySQL 데이터베이스 ( | |
| 파일 볼륨 | |
|
Redis 데이터베이스( | |
|
Redis 데이터베이스( |
9.3.1. system-mysql 정의 링크 복사링크가 클립보드에 복사되었습니다!
system-mysql 은 3scale 관리 콘솔에서 사용자, 계정, API, 계획 등에 대한 정보를 저장하는 관계형 데이터베이스입니다.
서비스와 관련된 이 정보의 하위 집합이 백엔드 구성 요소에 동기화되어 backend-redis 에 저장됩니다. system-mysql 은 이 정보를 위한 정보원입니다.
9.3.2. system-storage 정의 링크 복사링크가 클립보드에 복사되었습니다!
system-storage 는 시스템 구성 요소에서 읽고 쓸 파일을 저장합니다.
두 가지 범주로 분류됩니다.
-
런타임 시
시스템구성 요소에서 읽은 구성 파일 - 정적 파일 (예: HTML, CSS, JS )은 개발자 포털을 생성하기 위해 CMS 기능으로 시스템에 업로드
여러 Pod 업로드 및 정적 파일을 읽고 수평으로 확장할 수 있으므로 RWX(ReadWriteMany) PersistentVolume 이 필요합니다.
9.3.3. backend-redis 정의 링크 복사링크가 클립보드에 복사되었습니다!
backend-redis 에는 백엔드 구성 요소에서 사용하는 여러 데이터 세트가 포함되어 있습니다.
-
usage s:
백엔드에 의해 집계된 API 사용 정보입니다. 속도 제한 결정에백엔드및 시스템에서 UI 또는 API를통해 분석 정보를 표시하는 데 사용됩니다. -
config: 내부 API를 통해 시스템에서 동기화되는 서비스, rate-limits 등에 대한 구성 정보입니다.
이 정보 의 출처 는 아니지만System및system-mysql은 다음과 같습니다. - 대기열: 작업자 프로세스에서 실행할 백그라운드 작업의 대기열입니다. 이는 임시이며 처리된 후 삭제됩니다.
9.3.4. system-redis 정의 링크 복사링크가 클립보드에 복사되었습니다!
system-redis 에는 백그라운드에서 작업을 처리할 수 있는 큐가 포함되어 있습니다. 이는 임시이며 처리된 후 삭제됩니다.
9.4. 시스템 데이터베이스 백업 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령은 특정 순서가 없으며 시스템 데이터베이스를 백업하고 보관하기 위해 필요한 대로 사용할 수 있습니다.
9.4.1. system-mysql 백업 링크 복사링크가 클립보드에 복사되었습니다!
MySQL Backup 명령 실행:
oc rsh $(oc get pods -l 'deployment=system-mysql' -o json | jq -r '.items[0].metadata.name') bash -c 'export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}; mysqldump --single-transaction -hsystem-mysql -uroot system' | gzip > system-mysql-backup.gz
$ oc rsh $(oc get pods -l 'deployment=system-mysql' -o json | jq -r '.items[0].metadata.name') bash -c 'export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}; mysqldump --single-transaction -hsystem-mysql -uroot system' | gzip > system-mysql-backup.gz
9.4.2. system-storage 백업 링크 복사링크가 클립보드에 복사되었습니다!
system-storage 파일을 다른 스토리지에 보관합니다.
oc rsync $(oc get pods -l 'deployment=system-app' -o json | jq '.items[0].metadata.name' -r):/opt/system/public/system ./local/dir
$ oc rsync $(oc get pods -l 'deployment=system-app' -o json | jq '.items[0].metadata.name' -r):/opt/system/public/system ./local/dir
9.4.3. backend-redis 백업 링크 복사링크가 클립보드에 복사되었습니다!
redis에서 dump.rdb 파일을 백업합니다.
oc cp $(oc get pods -l 'deployment=backend-redis' -o json | jq '.items[0].metadata.name' -r):/var/lib/redis/data/dump.rdb ./backend-redis-dump.rdb
$ oc cp $(oc get pods -l 'deployment=backend-redis' -o json | jq '.items[0].metadata.name' -r):/var/lib/redis/data/dump.rdb ./backend-redis-dump.rdb
9.4.4. system-redis 백업 링크 복사링크가 클립보드에 복사되었습니다!
redis에서 dump.rdb 파일을 백업합니다.
oc cp $(oc get pods -l 'deployment=system-redis' -o json | jq '.items[0].metadata.name' -r):/var/lib/redis/data/dump.rdb ./system-redis-dump.rdb
$ oc cp $(oc get pods -l 'deployment=system-redis' -o json | jq '.items[0].metadata.name' -r):/var/lib/redis/data/dump.rdb ./system-redis-dump.rdb
9.4.5. zync-database 백업 링크 복사링크가 클립보드에 복사되었습니다!
zync_production 데이터베이스를 백업합니다.
oc rsh $(oc get pods -l 'deployment=zync-database' -o json | jq -r '.items[0].metadata.name') bash -c 'pg_dump zync_production' | gzip > zync-database-backup.gz
$ oc rsh $(oc get pods -l 'deployment=zync-database' -o json | jq -r '.items[0].metadata.name') bash -c 'pg_dump zync_production' | gzip > zync-database-backup.gz
9.4.6. OpenShift 시크릿 및 ConfigMap 백업 링크 복사링크가 클립보드에 복사되었습니다!
다음은 OpenShift 시크릿 및 ConfigMap의 명령 목록입니다.
9.4.6.1. OpenShift 시크릿 링크 복사링크가 클립보드에 복사되었습니다!
9.4.6.2. ConfigMaps 링크 복사링크가 클립보드에 복사되었습니다!
oc get configmaps system-environment -o json > system-environment.json oc get configmaps apicast-environment -o json > apicast-environment.json
$ oc get configmaps system-environment -o json > system-environment.json
$ oc get configmaps apicast-environment -o json > apicast-environment.json
9.5. 시스템 데이터베이스 복원 링크 복사링크가 클립보드에 복사되었습니다!
system-app 과 같은 Pod를 축소하거나 경로를 비활성화하여 레코드 생성을 방지합니다.
다음 명령 및 스니펫 예제에서 ${DEPLOYMENT_NAME} 을 3scale 배포를 생성할 때 정의한 이름으로 교체합니다.
출력에 중괄호 한 쌍 이상이 포함되어 있고 비어 있지 않은지 확인합니다.
프로세스
나중에 확장할 현재 복제본 수를 저장합니다.
SYSTEM_SPEC=`oc get APIManager/${DEPLOYMENT_NAME} -o jsonpath='{.spec.system.appSpec}'`SYSTEM_SPEC=`oc get APIManager/${DEPLOYMENT_NAME} -o jsonpath='{.spec.system.appSpec}'`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 명령의 결과를 확인하고
$SYSTEM_SPEC:의 내용을 확인합니다.echo $SYSTEM_SPEC
echo $SYSTEM_SPECCopy to Clipboard Copied! Toggle word wrap Toggle overflow 복제본 수를
0으로 스케일링하는 다음 명령을 사용하여 APIManager CR을 패치합니다.oc patch APIManager/${DEPLOYMENT_NAME} --type merge -p '{"spec": {"system": {"appSpec": {"replicas": 0}}}}'$ oc patch APIManager/${DEPLOYMENT_NAME} --type merge -p '{"spec": {"system": {"appSpec": {"replicas": 0}}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 또는
system-app을 축소하려면 기존APIManager/${DEPLOMENT_NAME}을 편집하고 다음 예와 같이 시스템 복제본 수를 0으로 설정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 절차에 따라 OpenShift 시크릿 및 시스템 데이터베이스를 복원합니다.
9.5.1. Operator 기반 배포 복원 링크 복사링크가 클립보드에 복사되었습니다!
다음 단계를 사용하여 Operator 기반 배포를 복원합니다.
프로세스
- OpenShift에 3scale API Management Operator를 설치합니다.
APIManager 리소스를 생성하기 전에 보안을 복원합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow APIManager 리소스를 생성하기 전에 ConfigMap을 복원합니다.
oc apply -f system-environment.json oc apply -f apicast-environment.json
$ oc apply -f system-environment.json $ oc apply -f apicast-environment.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow - APIManager CR을 사용하여 Operator와 3scale API Management 를 배포합니다.
9.5.2. system-mysql 복원 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
MySQL 덤프를 system-mysql pod에 복사합니다.
oc cp ./system-mysql-backup.gz $(oc get pods -l 'deployment=system-mysql' -o json | jq '.items[0].metadata.name' -r):/var/lib/mysql
$ oc cp ./system-mysql-backup.gz $(oc get pods -l 'deployment=system-mysql' -o json | jq '.items[0].metadata.name' -r):/var/lib/mysqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 백업 파일의 압축을 풉니다.
oc rsh $(oc get pods -l 'deployment=system-mysql' -o json | jq -r '.items[0].metadata.name') bash -c 'gzip -d ${HOME}/system-mysql-backup.gz'$ oc rsh $(oc get pods -l 'deployment=system-mysql' -o json | jq -r '.items[0].metadata.name') bash -c 'gzip -d ${HOME}/system-mysql-backup.gz'Copy to Clipboard Copied! Toggle word wrap Toggle overflow MySQL DB Backup 파일을 복원합니다.
oc rsh $(oc get pods -l 'deployment=system-mysql' -o json | jq -r '.items[0].metadata.name') bash -c 'export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}; mysql -hsystem-mysql -uroot system < ${HOME}/system-mysql-backup'$ oc rsh $(oc get pods -l 'deployment=system-mysql' -o json | jq -r '.items[0].metadata.name') bash -c 'export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}; mysql -hsystem-mysql -uroot system < ${HOME}/system-mysql-backup'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.5.3. system-storage 복원 링크 복사링크가 클립보드에 복사되었습니다!
백업 파일을 system-storage로 복원합니다.
oc rsync ./local/dir/system/ $(oc get pods -l 'deployment=system-app' -o json | jq '.items[0].metadata.name' -r):/opt/system/public/system
$ oc rsync ./local/dir/system/ $(oc get pods -l 'deployment=system-app' -o json | jq '.items[0].metadata.name' -r):/opt/system/public/system
9.5.4. zync-database 복원 링크 복사링크가 클립보드에 복사되었습니다!
3scale Operator 배포를 위해 zync-database 를 복원하는 지침입니다.
9.5.4.1. Operator 기반 배포 링크 복사링크가 클립보드에 복사되었습니다!
Operator를 사용하여 3scale API Management 배포 (특히 APIManager CR 배포)의 지침에 따라 3scale 인스턴스를 재배포합니다.
프로세스
${DEPLOYMENT_NAME}을 3scale 배포를 생성할 때 정의한 이름으로 교체하여 복제본 수를 저장합니다.ZYNC_SPEC=`oc get APIManager/${DEPLOYMENT_NAME} -o json | jq -r '.spec.zync'`ZYNC_SPEC=`oc get APIManager/${DEPLOYMENT_NAME} -o json | jq -r '.spec.zync'`Copy to Clipboard Copied! Toggle word wrap Toggle overflow zync 배포를 0 Pod로 축소합니다.
oc patch APIManager/${DEPLOYMENT_NAME} --type merge -p '{"spec": {"zync": {"appSpec": {"replicas": 0}, "queSpec": {"replicas": 0}}}}'$ oc patch APIManager/${DEPLOYMENT_NAME} --type merge -p '{"spec": {"zync": {"appSpec": {"replicas": 0}, "queSpec": {"replicas": 0}}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow zync 데이터베이스 덤프를
zync-databasePod에 복사합니다.oc cp ./zync-database-backup.gz $(oc get pods -l 'deployment=zync-database' -o json | jq '.items[0].metadata.name' -r):/var/lib/pgsql/
$ oc cp ./zync-database-backup.gz $(oc get pods -l 'deployment=zync-database' -o json | jq '.items[0].metadata.name' -r):/var/lib/pgsql/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 백업 파일의 압축을 풉니다.
oc rsh $(oc get pods -l 'deployment=zync-database' -o json | jq -r '.items[0].metadata.name') bash -c 'gzip -d ${HOME}/zync-database-backup.gz'$ oc rsh $(oc get pods -l 'deployment=zync-database' -o json | jq -r '.items[0].metadata.name') bash -c 'gzip -d ${HOME}/zync-database-backup.gz'Copy to Clipboard Copied! Toggle word wrap Toggle overflow zync 데이터베이스 백업 파일을 복원합니다.
oc rsh $(oc get pods -l 'deployment=zync-database' -o json | jq -r '.items[0].metadata.name') bash -c 'psql zync_production -f ${HOME}/zync-database-backup'$ oc rsh $(oc get pods -l 'deployment=zync-database' -o json | jq -r '.items[0].metadata.name') bash -c 'psql zync_production -f ${HOME}/zync-database-backup'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 원래 복제본 수로 복원합니다.
oc patch APIManager/${DEPLOYMENT_NAME} --type json -p '[{"op": "replace", "path": "/spec/zync", "value":'"$ZYNC_SPEC"'}]'$ oc patch APIManager/${DEPLOYMENT_NAME} --type json -p '[{"op": "replace", "path": "/spec/zync", "value":'"$ZYNC_SPEC"'}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령의 출력에
replicas키가 포함되어 있지 않은 경우:echo $ZYNC_SPEC
$ echo $ZYNC_SPECCopy to Clipboard Copied! Toggle word wrap Toggle overflow 그런 다음 다음 추가 명령을 실행하여
zync를 확장합니다.oc patch deployment/zync -p '{"spec": {"replicas": 1}}'$ oc patch deployment/zync -p '{"spec": {"replicas": 1}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.5.4.2. backend-redis 및 system-redis를 사용하여 3scale API Management 옵션 복원 링크 복사링크가 클립보드에 복사되었습니다!
3scale을 복원하면 backend-redis 및 system-redis 를 복원합니다. 이러한 구성 요소에는 다음과 같은 기능이 있습니다.
*backend-redis: 3scale의 애플리케이션 인증 및 속도 제한을 지원하는 데이터베이스입니다. 또한 통계 스토리지 및 임시 작업 스토리지에 사용됩니다. *system-redis: 3scale의 백그라운드 작업에 대한 임시 스토리지를 제공하고 system-app pod의 Ruby 프로세스에 대한 메시지 버스로도 사용됩니다.
backend-redis 구성 요소
backend-redis 구성 요소에는 데이터 및 대기열 이라는 두 개의 데이터베이스가 있습니다. 기본 3scale 배포에서 데이터 및 큐 는 Redis 데이터베이스에 배포되지만 서로 다른 논리 데이터베이스 인덱스 /0 및 /1 에서 배포됩니다. 데이터 데이터베이스를 복원하면 문제 없이 실행되지만 큐 데이터베이스를 복원하면 중복 작업이 발생할 수 있습니다.
작업 복제와 관련하여 3scale에서 백엔드 작업자는 백그라운드 작업을 밀리초 단위로 처리합니다. backend-redis 가 마지막 데이터베이스 스냅샷 후 30초 후에 실패하고 복원하려고 하면 백엔드에 중복을 방지하기 위해 시스템이 없으므로 30초 동안 발생한 백그라운드 작업이 두 번 수행됩니다.
이 시나리오에서는 /0 데이터베이스 인덱스에 다른 위치에 저장되지 않은 데이터가 포함되어 있으므로 백업을 복원해야 합니다. /0 데이터베이스 인덱스를 복원하면 다른 인덱스 없이 저장할 수 없으므로 /1 데이터베이스 인덱스도 복원해야 합니다. 서로 다른 인덱스에서 하나의 데이터베이스가 아닌 다른 서버에서 데이터베이스를 분리하도록 선택하면 큐의 크기가 약 0이므로 백업을 복원하지 않고 몇 가지 백그라운드 작업이 손실되는 것이 좋습니다. 이는 3scale Hosted 설정의 경우 둘 다에 대해 다른 백업 및 복원 전략을 적용해야 합니다.
'system-redis' 구성 요소
3scale 시스템 백그라운드 작업의 대부분은 멱등입니다. 즉, 동일한 요청은 실행하는 횟수에 관계없이 동일한 결과를 반환합니다.
다음은 시스템의 백그라운드 작업에서 처리하는 이벤트 예제 목록입니다.
- 계획 시험 만료에 대한 알림 작업, 신용 카드 만료 정보, 활성화 알림, 계획 변경, 송장 상태 변경, PDF 보고서
- 인보이스 및 과금과 같은 청구.
- 복잡한 오브젝트 삭제.
- 백엔드 동기화 작업.
- 예를 들어 indexation 작업(예: searchd)
- Sanitization 작업(예: 송장 ID)
- 감사 제거, 사용자 세션, 만료된 토큰, 로그 항목, 비활성 계정 일시 중단과 같은 janitorial 작업.
- 트래픽 업데이트.
- 프록시 구성 변경 모니터링 및 프록시 배포
- 배경 등록 작업,
- SSO(Single Sign-On) 동기화, 경로 생성과 같은 zync 작업.
위의 작업 목록을 복원하는 경우 3scale 시스템은 복원된 각 작업의 상태를 유지 관리합니다. 복원이 완료된 후 시스템의 무결성을 확인하는 것이 중요합니다.
9.5.5. 백엔드와 시스템 간의 정보 일관성 보장 링크 복사링크가 클립보드에 복사되었습니다!
backend-redis 를 복원한 후 시스템에서 구성 정보를 동기화해야 합니다. 백엔드 의 정보가 정보 소스인 시스템의 정보와 일치하도록 해야 합니다.
9.5.5.1. backend-redis의 배포 구성 관리 링크 복사링크가 클립보드에 복사되었습니다!
이러한 단계는 backend-redis 의 인스턴스를 실행하기 위한 것입니다.
프로세스
redis-configconfigmap을 편집합니다.oc edit configmap redis-config
$ oc edit configmap redis-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow redis-configconfigmap에서 192.0.2. 명령을 주석 처리하십시오.#save 900 1 #save 300 10 #save 60 10000
#save 900 1 #save 300 10 #save 60 10000Copy to Clipboard Copied! Toggle word wrap Toggle overflow redis-configconfigmap에서appendonly를 no 로 설정합니다.appendonly no
appendonly noCopy to Clipboard Copied! Toggle word wrap Toggle overflow backend-redis를 다시 배포하여 새 구성을 로드합니다.oc rollout restart deployment/backend-redis
$ oc rollout restart deployment/backend-redisCopy to Clipboard Copied! Toggle word wrap Toggle overflow 롤아웃 상태를 확인하여 완료되었는지 확인합니다.
oc rollout status deployment/backend-redis
$ oc rollout status deployment/backend-redisCopy to Clipboard Copied! Toggle word wrap Toggle overflow dump.rdb파일의 이름을 변경합니다.oc rsh $(oc get pods -l 'deployment=backend-redis' -o json | jq '.items[0].metadata.name' -r) bash -c 'mv ${HOME}/data/dump.rdb ${HOME}/data/dump.rdb-old'$ oc rsh $(oc get pods -l 'deployment=backend-redis' -o json | jq '.items[0].metadata.name' -r) bash -c 'mv ${HOME}/data/dump.rdb ${HOME}/data/dump.rdb-old'Copy to Clipboard Copied! Toggle word wrap Toggle overflow appendonly.aof파일의 이름을 변경합니다.oc rsh $(oc get pods -l 'deployment=backend-redis' -o json | jq '.items[0].metadata.name' -r) bash -c 'mv ${HOME}/data/appendonly.aof ${HOME}/data/appendonly.aof-old'$ oc rsh $(oc get pods -l 'deployment=backend-redis' -o json | jq '.items[0].metadata.name' -r) bash -c 'mv ${HOME}/data/appendonly.aof ${HOME}/data/appendonly.aof-old'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 백업 파일을 POD로 이동합니다.
oc cp ./backend-redis-dump.rdb $(oc get pods -l 'deployment=backend-redis' -o json | jq '.items[0].metadata.name' -r):/var/lib/redis/data/dump.rdb
$ oc cp ./backend-redis-dump.rdb $(oc get pods -l 'deployment=backend-redis' -o json | jq '.items[0].metadata.name' -r):/var/lib/redis/data/dump.rdbCopy to Clipboard Copied! Toggle word wrap Toggle overflow backend-redis를 다시 배포하여 백업을 로드합니다.oc rollout restart deployment/backend-redis
$ oc rollout restart deployment/backend-redisCopy to Clipboard Copied! Toggle word wrap Toggle overflow 롤아웃 상태를 확인하여 완료되었는지 확인합니다.
oc rollout status deployment/backend-redis
$ oc rollout status deployment/backend-redisCopy to Clipboard Copied! Toggle word wrap Toggle overflow appendonly파일을 생성합니다.oc rsh $(oc get pods -l 'deployment=backend-redis' -o json | jq '.items[0].metadata.name' -r) bash -c 'redis-cli BGREWRITEAOF'
$ oc rsh $(oc get pods -l 'deployment=backend-redis' -o json | jq '.items[0].metadata.name' -r) bash -c 'redis-cli BGREWRITEAOF'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 잠시 후 AOF 재작성이 완료되었는지 확인합니다.
oc rsh $(oc get pods -l 'deployment=backend-redis' -o json | jq '.items[0].metadata.name' -r) bash -c 'redis-cli info' | grep aof_rewrite_in_progress
$ oc rsh $(oc get pods -l 'deployment=backend-redis' -o json | jq '.items[0].metadata.name' -r) bash -c 'redis-cli info' | grep aof_rewrite_in_progressCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
aof_rewrite_in_progress = 1이지만 실행이 진행 중입니다. -
aof_rewrite_in_progress = 0까지 주기적으로 확인합니다. 0은 실행이 완료되었음을 나타냅니다.
-
redis-configconfigmap을 편집합니다.oc edit configmap redis-config
$ oc edit configmap redis-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow redis-configconfigmap에서 192.0.2. 명령 주석 처리를 해제합니다.save 900 1 save 300 10 save 60 10000
save 900 1 save 300 10 save 60 10000Copy to Clipboard Copied! Toggle word wrap Toggle overflow redis-configconfigmap에서appendonly를 yes 로 설정합니다.appendonly yes
appendonly yesCopy to Clipboard Copied! Toggle word wrap Toggle overflow backend-redis를 다시 배포하여 기본 구성을 다시 로드합니다.oc rollout restart deployment/backend-redis
$ oc rollout restart deployment/backend-redisCopy to Clipboard Copied! Toggle word wrap Toggle overflow 롤아웃 상태를 확인하여 완료되었는지 확인합니다.
oc rollout status deployment/backend-redis
$ oc rollout status deployment/backend-redisCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.5.5.2. system-redis의 배포 구성 관리 링크 복사링크가 클립보드에 복사되었습니다!
이러한 단계는 system-redis 의 인스턴스를 실행하기 위한 것입니다.
프로세스
redis-configconfigmap을 편집합니다.oc edit configmap redis-config
$ oc edit configmap redis-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow redis-configconfigmap에서 192.0.2. 명령을 주석 처리하십시오.#save 900 1 #save 300 10 #save 60 10000
#save 900 1 #save 300 10 #save 60 10000Copy to Clipboard Copied! Toggle word wrap Toggle overflow redis-configconfigmap에서appendonly를 no 로 설정합니다.appendonly no
appendonly noCopy to Clipboard Copied! Toggle word wrap Toggle overflow system-redis를 다시 배포하여 새 구성을 로드합니다.oc rollout restart deployment/system-redis
$ oc rollout restart deployment/system-redisCopy to Clipboard Copied! Toggle word wrap Toggle overflow 롤아웃 상태를 확인하여 완료되었는지 확인합니다.
oc rollout status deployment/system-redis
$ oc rollout status deployment/system-redisCopy to Clipboard Copied! Toggle word wrap Toggle overflow dump.rdb파일의 이름을 변경합니다.oc rsh $(oc get pods -l 'deployment=system-redis' -o json | jq '.items[0].metadata.name' -r) bash -c 'mv ${HOME}/data/dump.rdb ${HOME}/data/dump.rdb-old'$ oc rsh $(oc get pods -l 'deployment=system-redis' -o json | jq '.items[0].metadata.name' -r) bash -c 'mv ${HOME}/data/dump.rdb ${HOME}/data/dump.rdb-old'Copy to Clipboard Copied! Toggle word wrap Toggle overflow appendonly.aof파일의 이름을 변경합니다.oc rsh $(oc get pods -l 'deployment=system-redis' -o json | jq '.items[0].metadata.name' -r) bash -c 'mv ${HOME}/data/appendonly.aof ${HOME}/data/appendonly.aof-old'$ oc rsh $(oc get pods -l 'deployment=system-redis' -o json | jq '.items[0].metadata.name' -r) bash -c 'mv ${HOME}/data/appendonly.aof ${HOME}/data/appendonly.aof-old'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 백업파일을 POD로 이동합니다.oc cp ./system-redis-dump.rdb $(oc get pods -l 'deployment=system-redis' -o json | jq '.items[0].metadata.name' -r):/var/lib/redis/data/dump.rdb
$ oc cp ./system-redis-dump.rdb $(oc get pods -l 'deployment=system-redis' -o json | jq '.items[0].metadata.name' -r):/var/lib/redis/data/dump.rdbCopy to Clipboard Copied! Toggle word wrap Toggle overflow 백업을 로드하도록
system-redis를 재배포합니다.oc rollout restart deployment/system-redis
$ oc rollout restart deployment/system-redisCopy to Clipboard Copied! Toggle word wrap Toggle overflow 롤아웃 상태를 확인하여 완료되었는지 확인합니다.
oc rollout status deployment/system-redis
$ oc rollout status deployment/system-redisCopy to Clipboard Copied! Toggle word wrap Toggle overflow appendonly파일을 생성합니다.oc rsh $(oc get pods -l 'deployment=system-redis' -o json | jq '.items[0].metadata.name' -r) bash -c 'redis-cli BGREWRITEAOF'
$ oc rsh $(oc get pods -l 'deployment=system-redis' -o json | jq '.items[0].metadata.name' -r) bash -c 'redis-cli BGREWRITEAOF'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 잠시 후 AOF 재작성이 완료되었는지 확인합니다.
oc rsh $(oc get pods -l 'deployment=system-redis' -o json | jq '.items[0].metadata.name' -r) bash -c 'redis-cli info' | grep aof_rewrite_in_progress
$ oc rsh $(oc get pods -l 'deployment=system-redis' -o json | jq '.items[0].metadata.name' -r) bash -c 'redis-cli info' | grep aof_rewrite_in_progressCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
aof_rewrite_in_progress = 1이지만 실행이 진행 중입니다. -
aof_rewrite_in_progress = 0까지 주기적으로 확인합니다. 0은 실행이 완료되었음을 나타냅니다.
-
redis-configconfigmap을 편집합니다.oc edit configmap redis-config
$ oc edit configmap redis-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow redis-configconfigmap에서 192.0.2. 명령 주석 처리를 해제합니다.save 900 1 save 300 10 save 60 10000
save 900 1 save 300 10 save 60 10000Copy to Clipboard Copied! Toggle word wrap Toggle overflow redis-configconfigmap에서appendonly를 yes 로 설정합니다.appendonly yes
appendonly yesCopy to Clipboard Copied! Toggle word wrap Toggle overflow system-redis를 다시 배포하여 기본 구성을 다시 로드합니다.oc rollout restart deployment/system-redis
$ oc rollout restart deployment/system-redisCopy to Clipboard Copied! Toggle word wrap Toggle overflow 롤아웃 상태를 확인하여 완료되었는지 확인합니다.
oc rollout status deployment/system-redis
$ oc rollout status deployment/system-redisCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.5.6. 백엔드 작업자 복원 링크 복사링크가 클립보드에 복사되었습니다!
이러한 단계는 backend-worker 를 복원하기 위한 것입니다.
프로세스
backend-worker의 최신 버전으로 복원 :oc rollout restart deployment/backend-worker
$ oc rollout restart deployment/backend-workerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 롤아웃 상태를 확인하여 완료되었는지 확인합니다.
oc rollout status deployment/backend-worker
$ oc rollout status deployment/backend-workerCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.5.7. system-app 복원 링크 복사링크가 클립보드에 복사되었습니다!
이 단계는 system-app 을 복원하기 위한 것입니다.
프로세스
system-app을 확장하려면 기존APIManager/${DEPLOYMENT_NAME}을 편집하고.spec.system.appSpec.replicas를 원래 복제본 수로 다시 변경하거나 다음 명령을 실행하여 이전에 저장된 사양을 적용합니다.oc patch APIManager/${DEPLOYMENT_NAME} --type json -p '[{"op": "replace", "path": "/spec/system/appSpec", "value":'"$SYSTEM_SPEC"'}]'$ oc patch APIManager/${DEPLOYMENT_NAME} --type json -p '[{"op": "replace", "path": "/spec/system/appSpec", "value":'"$SYSTEM_SPEC"'}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령의 출력에
replicas키가 포함되어 있지 않은 경우:echo $SYSTEM_SPEC
$ echo $SYSTEM_SPECCopy to Clipboard Copied! Toggle word wrap Toggle overflow 그런 다음 다음 추가 명령을 실행하여
system-app을 확장합니다.oc patch deployment/system-app -p '{"spec": {"replicas": 1}}'$ oc patch deployment/system-app -p '{"spec": {"replicas": 1}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
최신 버전의
system-app으로 복원 :oc rollout restart deployment/system-app
$ oc rollout restart deployment/system-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 롤아웃 상태를 확인하여 완료되었는지 확인합니다.
oc rollout status deployment/system-app
$ oc rollout status deployment/system-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.5.8. system-sidekiq 복원 링크 복사링크가 클립보드에 복사되었습니다!
이러한 단계는 system-sidekiq 를 복원하기 위한 것입니다.
프로세스
최신 버전의
system-sidekiq로 복원하십시오.oc rollout restart deployment/system-sidekiq
$ oc rollout restart deployment/system-sidekiqCopy to Clipboard Copied! Toggle word wrap Toggle overflow 롤아웃 상태를 확인하여 완료되었는지 확인합니다.
oc rollout status deployment/system-sidekiq
$ oc rollout status deployment/system-sidekiqCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.5.8.1. system-searchd 복원 링크 복사링크가 클립보드에 복사되었습니다!
이러한 단계는 system-searchd 를 복원하기 위한 것입니다.
프로세스
system-searchd의 최신 버전으로 복원 :oc rollout restart deployment/system-searchd
$ oc rollout restart deployment/system-searchdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 롤아웃 상태를 확인하여 완료되었는지 확인합니다.
oc rollout status deployment/system-searchd
$ oc rollout status deployment/system-searchdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.5.8.2. zync에서 관리하는 OpenShift 경로 복원 링크 복사링크가 클립보드에 복사되었습니다!
zync에서 누락된 OpenShift 경로를 다시 생성합니다.
oc rsh $(oc get pods -l 'deployment=system-sidekiq' -o json | jq '.items[0].metadata.name' -r) bash -c 'bundle exec rake zync:resync:domains'
$ oc rsh $(oc get pods -l 'deployment=system-sidekiq' -o json | jq '.items[0].metadata.name' -r) bash -c 'bundle exec rake zync:resync:domains'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10장. 3scale API Management를 위한 reCAPTCHA 구성 링크 복사링크가 클립보드에 복사되었습니다!
이 문서에서는 스팸으로부터 보호하기 위해 Red Hat 3scale API Management 온-프레미스에 대한 reCAPTCHA를 구성하는 방법을 설명합니다.
사전 요구 사항
- 지원되는 OpenShift 버전에 설치되어 구성된 3scale 온-프레미스 인스턴스입니다.
- reCAPTCHA v2의 사이트 키와 시크릿 키를 가져옵니다. 새 사이트 등록 웹 페이지를 참조하십시오.
- 도메인 이름 검증을 사용하려면 개발자 포털 도메인을 허용 목록에 추가합니다.
3scale에 대한 reCAPTCHA를 구성하려면 다음 절차에 설명된 단계를 수행합니다.
10.1. 3scale API Management에서 스팸 보호를 위한 reCAPTCHA 구성 링크 복사링크가 클립보드에 복사되었습니다!
스팸 보호를 위해 reCAPTCHA를 구성하려면 reCAPTCHA가 포함된 시크릿 파일을 패치하는 두 가지 옵션이 있습니다. 이러한 옵션은 OCP(OpenShift Container Platform) 사용자 인터페이스 또는 CLI(명령줄 인터페이스)에 있습니다.
프로세스
- OCP 4.x: 프로젝트로 이동합니다. [ your_project_name] > 워크로드 > 시크릿.
system-recaptcha시크릿 파일을 편집합니다.reCAPTHCA 서비스의
PRIVATE_KEY및PUBLIC_KEY는 base64 형식 인코딩이어야 합니다. 키를 base64 인코딩으로 수동으로 변환합니다.
CLI reCAPTCHA 옵션에는 base64 형식 인코딩이 필요하지 않습니다.
CLI: 다음 명령을 입력합니다.
oc patch secret/system-recaptcha -p '{"stringData": {"PUBLIC_KEY": "public-key-from-service", "PRIVATE_KEY": "private-key-from-service"}}'$ oc patch secret/system-recaptcha -p '{"stringData": {"PUBLIC_KEY": "public-key-from-service", "PRIVATE_KEY": "private-key-from-service"}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
post-procedure 단계
- 위의 옵션 중 하나를 완료한 후 시스템 Pod를 재배포합니다.
3scale 관리 포털에서 서명되지 않은 사용자에 대해 스팸 보호를 설정합니다.
- Audience > Developer Portal > Spam Protection 으로 이동합니다.
다음 옵션 중 하나를 선택합니다.
Always
reCAPTCHA는 로그인하지 않은 사용자에게 폼이 표시될 때 항상 표시됩니다.
의심스럽지 않음
reCAPTCHA는 자동화된 검사가 가능한 스패머를 탐지하는 경우에만 표시됩니다.
Never
스팸 보호를 비활성화합니다.
system-app 이 재배포되면 개발자 포털에서 스팸 보호를 사용하는 페이지에 reCAPTCHA I'm a robot 확인란이 표시됩니다.
추가 리소스
- 자세한 내용은 ReCAPTCHA 홈 페이지, 가이드 및 지원을 참조하십시오.
11장. 3scale API Management WebAssembly 모듈 링크 복사링크가 클립보드에 복사되었습니다!
3scale-wasm-auth 모듈은 Service Mesh에 연결하고 Red Hat 3scale API Management로 들어오는 요청을 인증할 수 있는 WebAssembly 모듈입니다. 서비스 메시 기능을 확장하고 마이크로 서비스에 대한 인증, 분석 및 청구 기능을 포함한 전체 API 관리 기능을 제공합니다.
서비스 메시는 트래픽 관리, 서비스 검색, 로드 밸런싱 및 보안과 같은 기능을 갖춘 인프라 계층에 중점을 둡니다. API 관리는 API 생성, 게시 및 관리에 중점을 둡니다.
서비스 메시와 3scale을 함께 사용하면 마이크로서비스 및 API의 안정성, 확장성, 보안 및 성능을 향상시킬 수 있습니다.
3scale-wasm-auth 모듈은 Red Hat OpenShift Service Mesh 2.1.0 이상과 3scale 2.11 이상에서 실행됩니다.
사전 요구 사항
- 관리자 권한이 있는 3scale 계정입니다.
Service Mesh 2.4 이상 설치
- Service Mesh 2.3은 현재 OSSM-3647 로 인해 작동하지 않습니다.
- Service Mesh 2.1 및 2.2 의 경우 3scale API Management WebAssembly 모듈 사용을 참조하십시오.
서비스 메시 내에서 실행되는 애플리케이션입니다.
- Bookinfo 예제 애플리케이션을 사용합니다.
OCP(OpenShift Container Platform)의 클러스터 관리자는 Was mPlugin 사용자 정의 리소스를 통해 3scale에 HTTP 요청을 승인하도록 3scale-wasm-auth 모듈을 구성할 수 있습니다. 그런 다음 서비스 메시는 모듈을 사이드카에 삽입하여 호스트 서비스를 노출하고 모듈을 사용하여 프록시 요청을 처리할 수 있습니다.
3scale 관점에서 3 scale-wasm-auth 모듈은 게이트웨이 역할을 하며 Service Mesh와 통합할 때 APIcast를 대체합니다. 즉, 일부 APIcast 기능, 특히 정책 및 스테이징 및 프로덕션 환경을 사용할 수 없습니다.
11.1. 서비스 메시에 Bookinfo 애플리케이션 배포 링크 복사링크가 클립보드에 복사되었습니다!
서비스 메시의 Bookinfo 애플리케이션 예제를 사용하여 3scale로 서비스 메시 구성 절차를 확인할 수 있습니다.
프로세스
Bookinfo 애플리케이션을 배포합니다.
- Bookinfo 예제 애플리케이션을 참조하십시오.
애플리케이션을 사용할 수 있는지 확인합니다.
export GATEWAY_URL=$(oc -n istio-system get route istio-ingressgateway -o jsonpath='{.spec.host}') curl -I "http://$GATEWAY_URL/productpage"$ export GATEWAY_URL=$(oc -n istio-system get route istio-ingressgateway -o jsonpath='{.spec.host}') $ curl -I "http://$GATEWAY_URL/productpage" HTTP/1.1 200 OKCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.2. 3scale API Management에서 제품 생성 링크 복사링크가 클립보드에 복사되었습니다!
제품은 backend라는 여러 내부 API를 리디렉션하거나 사용할 수 있는 고객용 API입니다. Service Mesh에서 3scale을 사용하는 경우 백엔드가 사용되지 않습니다. 제품과 개인 기본 URL 간의 링크가 메시에 생성됩니다. 따라서 제품만 있으면 됩니다.
프로세스
- 새 제품, 애플리케이션 계획 및 애플리케이션을 생성합니다. API 호출을 테스트하기 위한 새 제품 생성 을 참조하십시오.
배포를 Istio 로 변경합니다.
- [ your_product_name] > Integration > Settings 로 이동합니다.
- 배포를 Istio 로 변경합니다.
- 제품 업데이트를 클릭하여 구성을 업데이트합니다.
구성을 승격합니다.
- [ your_product_name] > Integration > Configuration 으로 이동합니다.
- 구성 업데이트를 클릭합니다.
11.3. 서비스 메시를 사용하여 3scale API Management 연결 링크 복사링크가 클립보드에 복사되었습니다!
service-mesh/istio-system 네임스페이스 또는 info 네임스페이스에서 ServiceEntry CR(사용자 정의 리소스) 및 DestinationRule CR을 생성합니다. ServiceMeshControlPlane이 포함된 네임스페이스에 있어야 합니다.
서비스 메시에서 3scale에 연결하려면 ServiceEntry CR과 DestinationRule CR을 통해 테넌트 및 백엔드 URL을 모두 외부 서비스로 구성해야 합니다. 이를 통해 3scale-wasm-auth 모듈이 모두 요청 권한 부여를 처리하는 백엔드와 제품 구성을 가져오는 시스템에 액세스할 수 있습니다.
11.3.1. Service Mesh에 3scale API Management URL 추가 링크 복사링크가 클립보드에 복사되었습니다!
ServiceEntry 는 서비스 메시 내에서 서비스에 대한 요청을 허용하고 DestinationRule 은 3scale 서비스에 대한 보안 연결을 구성하기 위해 필요합니다.
11.3.1.1. Service Mesh에 테넌트 URL 추가 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
시스템 테넌트 URL을 수집합니다.
- 제품을 생성하는 데 사용한 3scale 관리 포털의 URL입니다.
시스템에 대한
ServiceEntry를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 시스템의
DestinationRule을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.4. 서비스 메시에 백엔드 URL 추가 링크 복사링크가 클립보드에 복사되었습니다!
3scale 백엔드 URL을 서비스 메시 설정에 통합하면 마이크로 서비스와 3scale 백엔드 간에 보안 통신 채널을 설정할 수 있습니다. 통합을 사용하면 서비스 메시 환경에서 API를 관리하기 위한 인증, 분석 및 청구 기능을 구현할 수 있습니다. 백엔드는 노출된 경로와 OpenShift 서비스를 사용하여 내부적으로 액세스할 수 있습니다.
11.4.1. Service Mesh의 다른 클러스터에서 3scale API Management 사용 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
백엔드 URL을 수집합니다.
-
3scale Hosted의 경우 백엔드 URL은
su1.3scale.net입니다. 3scale 온-프레미스의 경우 다음 명령을 사용하여 URL을 가져옵니다.
oc get -n <3scale_namespace> route backend --template="{{.spec.host}}"$ oc get -n <3scale_namespace> route backend --template="{{.spec.host}}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
3scale Hosted의 경우 백엔드 URL은
백엔드에 대한
ServiceEntry를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 백엔드에 대한
DestinationRule을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.5. Service Mesh와 동일한 클러스터에서 3scale API Management 사용 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차는 서비스 메시에 백엔드 URL을 추가하는 대신 사용됩니다.
3scale-wasm-auth 모듈이 3scale에 대한 요청을 승인하도록 하려면 모듈에서 3scale 서비스에 액세스할 수 있어야 합니다. HTTPS 프로토콜을 사용하도록 외부 ServiceEntry 오브젝트 및 해당 DestinationRule 오브젝트를 적용하여 Red Hat OpenShift Service Mesh 내에서 이 작업을 수행할 수 있습니다.
CR(사용자 정의 리소스)은 서비스 관리 API 및 계정 관리 API의 백엔드 및 시스템 구성 요소에 대해 서비스 메시 내에서 3scale로 보안 액세스를 위한 서비스 항목 및 대상 규칙을 설정합니다. Service Management API는 각 요청의 권한 부여 상태에 대한 쿼리를 수신합니다. 계정 관리 API는 서비스에 대한 API 관리 구성 설정을 제공합니다.
프로세스
백엔드용
ServiceEntry생성:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 백엔드용
DestinationRule을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.6. WasmPlugin 사용자 정의 리소스 생성 링크 복사링크가 클립보드에 복사되었습니다!
서비스 메시는 WasmPlugin 이라는 사이드카 프록시에 Proxy-WASM 확장을 지정하고 적용하는 CRD(사용자 정의 리소스 정의)를 제공합니다. 서비스 메시는 3scale을 사용한 HTTP API 관리가 필요한 워크로드 세트에 CR(사용자 정의 리소스)을 적용합니다.
프로세스
- 이 모듈을 적용할 Service Mesh 배포에서 OCP(OpenShift Container Platform) 네임스페이스(예: info 프로젝트)를 식별합니다.
registry.redhat.io 인증 정보를 사용하여 풀 시크릿을 가져옵니다.
-
WasmPlugin과 동일한 네임스페이스에 새 풀 시크릿 리소스를 생성합니다.
-
모듈이 적용할 애플리케이션 집합을
식별하는 선택기와 함께 3scale-wasm-auth모듈이 배포된 네임스페이스를 선언해야 합니다. 다음 예제는threescale-wasm-auth모듈에 대한 CR의 YAML 형식입니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
spec.pluginConfig필드는 애플리케이션에 따라 다릅니다. 기타 모든 필드는 이 사용자 정의 리소스의 여러 인스턴스에서 유지됩니다. -
특히
WasmPluginspec.pluginConfig는 쿼리 문자열에 제공된user_key인증으로 구성됩니다. 설명:
name
3scale 내에서
WasmPlugin의 고유 이름 또는 식별자를 지정합니다.네임스페이스
워크로드의 네임스페이스입니다.
imagePullSecret
2단계에서 생성한 풀 시크릿의 이름입니다.
선택기
워크로드 레이블 선택기입니다. info 프로젝트의 productpage를 사용합니다.
backend-port
사용 중인 3scale에 따라 다릅니다. Service Mesh에 3scale URL 추가를 참조하십시오. 예를 들어 내부 3scale은 포트 80을 사용하고 외부 3scale은 포트 443을 사용합니다.
backend-host 및 system-host
서비스 메시에 3scale URL 추가에 사용한 것과 동일한 호스트를 사용합니다.
system-url 및 backend-url
해당 호스트를 사용하고 프로토콜을 추가합니다. 예를 들면
https://<system-host>입니다.access-token
시스템 테넌트에 토큰에 액세스합니다.
product_id
사용하려는 제품의 ID입니다. 여러 제품을 사용하려면 services 섹션에서 여러 제품을 정의합니다.
spec.pluginConfig및 나머지 사용자 정의 리소스에 모듈 구성이 있으면oc apply명령을 사용하여 적용합니다.oc apply -f threescale-wasm-auth-info.yaml
$ oc apply -f threescale-wasm-auth-info.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
11.6.1. 3scale API Management WasmPlugin 인증 옵션 링크 복사링크가 클립보드에 복사되었습니다!
다음은 3scale 사용자 키(App id/App 키) 인증에 대한 구성의 예입니다.
사용자 키
앱 ID 및 앱 키
OIDC
WasmPlugin 자체 외에도 OpenID Connect(OIDC)가 작동하려면 RequestAuthentication 이라는 추가 사용자 지정 리소스도 필요합니다. RequestAuthentication 을 적용하면 JWT 토큰을 검증하기 위해 기본 플러그인으로 Envoy 를 구성합니다. 프록시는 모듈을 실행하기 전에 모든 항목을 검증하므로 실패하는 모든 요청은 3scale WebAssembly 모듈로 만들지 않습니다.
설명
-
<URL>: keycloak로 구성된 경우 인증 구성을 위한 keycloak OIDC 공급자의 메타데이터 끝점을 지정하는 데 사용되는 URL 및 OIDC 인스턴스의 URL입니다.
-
<
realm_name> : OIDC에서 사용되는 영역의 이름입니다.
추가 리소스
11.7. 구성된 API 테스트 링크 복사링크가 클립보드에 복사되었습니다!
애플리케이션을 호출할 때 인증 검사를 수행하여 API 구성의 효과를 확인할 수 있습니다. 인증 메커니즘을 철저히 테스트하면 인증된 요청만 처리되도록 하여 애플리케이션의 보안 및 무결성을 유지할 수 있습니다.
프로세스
WasmPlugin이 적용된 상태에서 Bookinfo 애플리케이션을 호출합니다. 인증을 포함하지 않았으므로 거부해야 합니다.export GATEWAY_URL=$(oc -n istio-system get route istio-ingressgateway -o jsonpath='{.spec.host}') curl -I "http://$GATEWAY_URL/productpage"$ export GATEWAY_URL=$(oc -n istio-system get route istio-ingressgateway -o jsonpath='{.spec.host}') $ curl -I "http://$GATEWAY_URL/productpage" HTTP/1.1 403Copy to Clipboard Copied! Toggle word wrap Toggle overflow 인증을 위해 사용자 키를 검색합니다.
- [ your_product_name] > Applications > Listings 로 이동합니다.
- 애플리케이션을 선택합니다.
- 인증 > 사용자 키를 찾습니다.
user key 를 사용하여 호출을 다시 시도합니다.
curl -I "http://$GATEWAY_URL/productpage?user_key=$USER_KEY"
$ curl -I "http://$GATEWAY_URL/productpage?user_key=$USER_KEY" HTTP/1.1 200 OKCopy to Clipboard Copied! Toggle word wrap Toggle overflow 조회가 메트릭에 등록되어 있는지 확인합니다.
- [ your_product_name] > Analytics > Traffic 로 이동합니다.
- 등록된 호출이 표시되어야 합니다.
11.8. 3scale API Management WebAssembly 모듈 구성 링크 복사링크가 클립보드에 복사되었습니다!
WasmPlugin 사용자 정의 리소스 사양은 Proxy-WASM 모듈에서 읽을 수 있는 구성을 제공합니다.
사양은 호스트에 포함되어 Proxy-WASM 모듈에서 읽습니다. 일반적으로 구성은 모듈이 구문 분석되도록 JSON 파일 형식입니다. 그러나 WasmPlugin 리소스는 사양 값을 YAML로 해석하고 모듈의 사용을 위해 JSON으로 변환할 수 있습니다.
독립 실행형 모드에서 Proxy-WASM 모듈을 사용하는 경우 JSON 형식을 사용하여 구성을 작성해야 합니다. JSON 형식을 사용하면 host 구성 파일(예: Envoy ) 내에서 이스케이프 및 인용을 사용하는 것을 의미합니다. WasmPlugin 리소스와 함께 WebAssembly 모듈을 사용하는 경우 구성은 YAML 형식으로 되어 있습니다. 이 경우 잘못된 구성은 모듈이 사이드카의 로깅 스트림에 대한 JSON 표현을 기반으로 진단을 표시하도록 강제 적용합니다.
EnvoyFilter CR(사용자 정의 리소스)은 지원되는 API는 아니지만 일부 3scale Istio 어댑터 또는 Service Mesh 릴리스에서 사용할 수 있습니다. EnvoyFilter CR을 사용하는 것은 권장되지 않습니다. EnvoyFilter CR 대신 WasmPlugin API를 사용합니다. EnvoyFilter CR을 사용해야 하는 경우 사양을 JSON 형식으로 지정해야 합니다.
11.8.1. 3scale API Management WebAssembly 모듈 구성 링크 복사링크가 클립보드에 복사되었습니다!
3scale WebAssembly 모듈 구성의 아키텍처는 3scale 계정 및 권한 부여 서비스 및 처리할 서비스 목록에 따라 다릅니다.
사전 요구 사항
사전 요구 사항은 모든 경우에서 최소 필수 필드 세트입니다.
-
3scale 계정 및 권한 부여 서비스의 경우
backend-listenerURL입니다. - 처리할 서비스 목록: 서비스 ID와 하나 이상의 인증 정보에서 방법 및 찾을 위치를 찾습니다.
-
userkey,appid와appkey및 OpenID Connect(OIDC) 패턴을 처리하는 예를 찾을 수 있습니다. -
WebAssembly 모듈은 정적 구성에 지정한 설정을 사용합니다. 예를 들어, 모듈에 매핑 규칙 구성을 추가하는 경우 3scale 관리 포털에 이러한 매핑 규칙이 없는 경우에도 항상 적용됩니다. 나머지
WasmPlugin리소스는spec.pluginConfigYAML 항목에 있습니다.
11.8.2. 3scale API Management WebAssembly 모듈 api 오브젝트 링크 복사링크가 클립보드에 복사되었습니다!
3scale WebAssembly 모듈의 api 최상위 문자열은 모듈에서 사용할 구성 버전을 정의합니다.
api 오브젝트의 존재하지 않거나 지원되지 않는 버전은 3scale WebAssembly 모듈을 작동하지 않게 렌더링합니다.
api 최상위 수준 문자열 예
api 항목은 구성에 대한 나머지 값을 정의합니다. 유일하게 허용되는 값은 v1 입니다. 현재 구성과의 호환성을 중단하거나 v1 을 사용하는 모듈에서 처리할 수 없는 논리가 필요한 새 설정에는 다른 값이 필요합니다.
11.8.3. 3scale API Management WebAssembly 모듈 시스템 오브젝트 링크 복사링크가 클립보드에 복사되었습니다!
system 최상위 오브젝트는 특정 계정에 대한 3scale 계정 관리 API에 액세스하는 방법을 지정합니다. upstream 필드는 오브젝트에서 가장 중요한 부분입니다. 시스템 오브젝트는 선택 사항이지만 3scale WebAssembly 모듈에 대한 완전히 정적 구성을 제공하지 않는 것이 좋습니다. 후자는 3scale의 시스템 구성 요소에 대한 연결을 제공하지 않으려면 옵션입니다.
system 오브젝트 외에 정적 구성 오브젝트를 제공하는 경우 정적 개체가 항상 우선합니다.
| 이름 | 설명 | 필수 항목 |
|---|---|---|
|
| 현재 다른 위치에서 참조되지 않은 3scale 서비스의 식별자입니다. | 선택 사항 |
|
|
연결할 네트워크 호스트에 대한 세부 정보입니다. | 제공됨 |
|
| 읽기 권한이 있는 3scale 개인 액세스 토큰입니다. | 제공됨 |
|
| 새 변경 사항을 가져오기 전에 이 호스트에서 검색된 구성을 유효한 것으로 간주하는 최소 시간(초)입니다. 기본값은 600초(10분)입니다. 참고: 최대 크기는 없지만 모듈은 이 TTL이 경과한 후 적절한 시간 내에 구성을 가져옵니다. | 선택 사항 |
11.8.4. 3scale API Management WebAssembly 모듈 업스트림 오브젝트 링크 복사링크가 클립보드에 복사되었습니다!
upstream 오브젝트는 프록시가 호출을 수행할 수 있는 외부 호스트를 설명합니다.
| 이름 | 설명 | 필수 항목 |
|---|---|---|
|
|
| 제공됨 |
|
| 설명된 서비스에 액세스하기 위한 전체 URL입니다. 스키마에 의해 제한되지 않는 한 TCP 포트를 포함해야 합니다. | 제공됨 |
|
| 응답 시간을 초과하여 이 서비스에 대한 연결이 오류로 간주되도록 시간 제한 시간(밀리초)입니다. 기본값은 1000초입니다. | 선택 사항 |
11.8.5. 3scale API Management WebAssembly 모듈 백엔드 오브젝트 링크 복사링크가 클립보드에 복사되었습니다!
backend 최상위 오브젝트는 HTTP 요청을 승인하고 보고하기 위해 3scale Service Management API에 액세스하는 방법을 지정합니다. 이 서비스는 3scale의 백엔드 구성 요소에서 제공합니다.
| 이름 | 설명 | 필수 항목 |
|---|---|---|
|
| 현재 다른 위치에서 참조되지 않은 3scale 백엔드의 식별자입니다. | 선택 사항 |
|
| 연결할 네트워크 호스트에 대한 세부 정보입니다. 이는 알려진 3scale 계정 관리 API 호스트, 시스템을 참조해야 합니다. | 제공됨 가장 중요하고 필요한 필드입니다. |
11.8.6. 3scale API Management WebAssembly 모듈 서비스 오브젝트 링크 복사링크가 클립보드에 복사되었습니다!
services 최상위 오브젝트는 module의 이 특정 인스턴스에서 처리하는 서비스 ID를 지정합니다.
계정에 여러 서비스가 있으므로 처리되는 서비스를 지정해야 합니다. 나머지 구성에서는 서비스 구성 방법에 따라 달라집니다.
services 필드는 필수입니다. 유용한 서비스를 하나 이상 포함해야 하는 배열입니다.
services 배열의 각 요소는 3scale 서비스를 나타냅니다.
| 이름 | 설명 | 필수 항목 |
|---|---|---|
|
| 현재 다른 위치에서 참조되지 않은 이 3scale 서비스의 식별자입니다. | 제공됨 |
|
|
이
| 선택 사항 |
|
| 일치하는 URL 의 권한을 나타내는 문자열 배열입니다. 이러한 문자열은 별표(*), 더하기 기호(+) 및 물음표(?)를 지원하는 글러 패턴을 허용합니다. | 제공됨 |
|
| 찾을 자격 증명 종류와 위치를 정의하는 오브젝트입니다. | 제공됨 |
|
| 매핑 규칙 및 3scale 메서드를 나타내는 오브젝트 배열입니다. | 선택 사항 |
11.8.7. 3scale API Management WebAssembly 모듈 인증 정보 오브젝트 링크 복사링크가 클립보드에 복사되었습니다!
credentials 오브젝트는 service 오브젝트의 구성 요소입니다. credentials 는 조회할 인증 정보와 이 작업을 수행하는 단계를 지정합니다.
모든 필드는 선택 사항이지만 하나 이상의 user_key 또는 app_id 를 지정해야 합니다. 각 인증 정보를 지정하는 순서는 모듈에 의해 미리 설정되므로 관련이 없습니다. 각 인증 정보 인스턴스 하나만 지정합니다.
| 이름 | 설명 | 필수 항목 |
|---|---|---|
|
| 3scale 사용자 키를 정의하는 조회 쿼리의 배열입니다. 사용자 키는 일반적으로 API 키라고 합니다. | 선택 사항 |
|
|
3scale 애플리케이션 ID를 정의하는 조회 쿼리의 배열입니다. 애플리케이션 ID는 3scale에서 제공하거나 Red Hat Single Sign-On,Red Hat build of Keycloak 또는 OpenID Connect (OIDC)와 같은 ID 공급자를 사용하여 제공됩니다. 여기에 지정된 조회 쿼리의 해상도가 성공하고 두 개의 값으로 확인되면 | 선택 사항 |
|
|
3scale 애플리케이션 키를 정의하는 조회 쿼리의 배열입니다. 확인된 | 선택 사항 |
11.8.8. 3scale API Management WebAssembly 모듈 조회 쿼리 링크 복사링크가 클립보드에 복사되었습니다!
lookup query 오브젝트는 credentials 오브젝트의 필드 중 하나에 포함됩니다. 지정된 인증 정보 필드를 찾아서 처리하는 방법을 지정합니다. 평가되면 성공적인 해결 방법은 하나 이상의 값이 발견되었음을 의미합니다. 실패한 해결 방법은 값을 찾을 수 없음을 의미합니다.
lookup queries 의 배열은 단락 또는 관계를 설명합니다. 쿼리 중 하나를 성공적으로 해결하면 나머지 쿼리의 평가를 중지하고 값 또는 값을 지정된 인증 정보 유형에 할당합니다. 배열의 각 쿼리는 서로 독립적입니다.
lookup query 는 여러 소스 유형 중 하나일 수 있는 소스 오브젝트인 단일 필드로 구성됩니다. 다음 예제를 참조하십시오.
source 오브젝트는 credentials 오브젝트 필드 내에 있는 소스 배열의 일부로 존재합니다. source-type이라고 하는 오브젝트 필드 이름은 다음 중 하나입니다.
-
header: 조회 쿼리는 HTTP 요청 헤더를 입력으로 수신합니다. -
QUERY_STRING:lookup query는 URL 쿼리 문자열 매개변수를 입력으로 수신합니다. -
filter:lookup query는 필터 메타데이터를 입력으로 수신합니다.
모든 source-type 오브젝트에는 다음 두 필드가 있습니다.
| 이름 | 설명 | 필수 항목 |
|---|---|---|
|
|
각 문자열 배열은 입력 데이터에 있는 항목을 참조하는 | 제공됨 |
|
|
| 선택 사항 |
|
|
데이터를 조회하는 데 사용되는 메타데이터의 경로를 표시합니다. 그러나 | 선택 사항 |
key 입력 데이터와 일치하면 나머지 키가 평가되지 않고 소스 확인 알고리즘이 지정된 operations (ops)을 실행하도록 건너뜁니다. ops 를 지정하지 않으면 일치하는 key 의 결과 값이 반환됩니다.
Operations은 첫 번째 단계에서 key를 조회한 후 입력에 대한 특정 조건 및 변환을 지정하는 방법을 제공합니다. 속성을 변환, 디코딩 및 증명해야 할 때 operations을 사용하지만 모든 요구 사항과 Turing-completeness 가 부족한 성숙한 언어를 제공하지는 않습니다.
스택은 operations 출력을 저장했습니다. 평가되면 인증 정보가 사용하는 값 수에 따라 스택 하단에 값 또는 값을 할당하여 lookup query 가 완료됩니다.
11.8.9. 3scale WebAssembly 모듈 작업 오브젝트 링크 복사링크가 클립보드에 복사되었습니다!
특정 source type에 속하는 ops 배열의 각 요소는 값에 변환을 적용하거나 테스트를 수행하는 operation 오브젝트입니다. 이러한 오브젝트에 사용할 필드 이름은 operation 자체의 이름이며 모든 값 operation에 대한 매개변수입니다. 이는 필드 및 값이 포함된 매핑, 목록 또는 문자열과 같은 구조 개체일 수 있습니다.
대부분의 operation은 하나 이상의 입력에 참여하고 하나 이상의 출력을 생성합니다. 입력을 사용하거나 출력을 생성할 때 해당 스택은 값 스택에서 작동합니다. 작업에서 사용하는 각 값은 값 스택에서 채워지고 처음에 모든 source 일치 항목으로 채워집니다. 해당 리소스에서 출력한 값은 스택으로 푸시됩니다. 다른 operations에서는 특정 속성을 나타내는 것 이외의 출력을 사용하거나 생성하지 않지만 값 스택을 검사합니다.
확인이 완료되면 다음 단계에서 선택한 값(예: app_id,app_key 또는 user_key )은 스택의 하단 값에서 가져옵니다.
다음과 같은 몇 가지 operations 범주가 있습니다.
디코딩
이러한 변환은 다른 형식을 가져오도록 디코딩하여 입력 값을 변환합니다.
string
이러한 값은 문자열 값을 입력으로 사용하고 변환 및 검사를 수행합니다.
stack
이러한 값은 입력에서 값 집합을 가져와서 스택에서 여러 스택 변환 및 특정 위치를 선택합니다.
확인
이러한 어설션은 부작용 없는 방식으로 일련의 작업에 대한 속성을 제공합니다.
control
이러한 작업은 평가 흐름을 수정할 수 있는 작업을 수행합니다.
형식
이러한 구문 분석에서는 입력 값의 형식별 구조를 구문 분석하고 해당 값의 값을 조회합니다.
모든 작업은 이름 식별자에 의해 문자열로 지정됩니다.
11.8.10. 3scale API Management WebAssembly 모듈 mapping_rules 오브젝트 링크 복사링크가 클립보드에 복사되었습니다!
mapping_rules 오브젝트는 service 오브젝트의 일부입니다. REST 경로 패턴 및 관련 3scale 메트릭 세트를 지정하고 패턴이 일치할 때 사용할 증가 수를 지정합니다.
system 최상위 오브젝트에 동적 구성이 제공되지 않은 경우 값이 필요합니다. 오브젝트가 system 최상위 항목 외에 제공되는 경우 mapping_rules 오브젝트가 먼저 평가됩니다.
mapping_rules 는 배열 오브젝트입니다. 해당 배열의 각 요소는 mapping_rule 개체입니다. 들어오는 요청에 대한 평가 일치 매핑 규칙은 APIManager 에게 권한 부여 및 보고를 위한 3scale methods 세트를 제공합니다. 여러 일치 규칙이 동일한 methods 를 참조하는 경우 3scale로 호출할 때 deltas 의 합계가 요약됩니다. 예를 들어, 두 개의 규칙이 deltas 1과 3을 사용하여 Hits 메서드를 두 번 늘리면 3scale에 보고하는 Hits의 단일 메서드 항목의 delta는 4입니다.
11.8.11. 3scale API Management WebAssembly 모듈 mapping_rule 오브젝트 링크 복사링크가 클립보드에 복사되었습니다!
mapping_rule 오브젝트는 mapping_rules 오브젝트의 배열의 일부입니다.
mapping_rule 오브젝트 필드는 다음 정보를 지정합니다.
- 일치시킬 HTTP 요청 방법입니다.
- 경로와 일치하는 패턴입니다.
- 보고할 양과 함께 보고하는 3scale 방법입니다. 필드를 지정하는 순서에 따라 평가 순서가 결정됩니다.
| 이름 | 설명 | 필수 항목 |
|---|---|---|
|
| 동사라고도 하는 HTTP 요청 메서드를 나타내는 문자열을 지정합니다. 허용되는 값은 허용되는 HTTP 메서드 이름 중 하나와 대소문자를 구분하지 않습니다. 특수 값은 모든 메서드와 일치합니다. | 제공됨 |
|
|
HTTP 요청의 URI 경로 구성 요소와 일치하는 패턴입니다. 이 패턴은 3scale에서 설명한 것과 동일한 구문을 따릅니다. | 제공됨 |
|
|
다음 필수 필드를 사용하여
| 제공됨 |
|
| 이 규칙의 성공적인 일치 여부를 통해 더 많은 매핑 규칙 평가를 중지해야 하는지 여부입니다. |
선택적 부울입니다. 기본값은 |
다음 예제는 3scale의 메서드 간 기존 계층 구조와 독립적입니다. 즉 3scale 측에서 실행되는 모든 것은 이에 영향을 미치지 않습니다. 예를 들어 Hits 지표는 모두 상위일 수 있으므로 권한 있는 요청에서 보고된 모든 메서드 합계로 인해 4 조회를 저장하고 3scale Authrep API 엔드포인트를 호출합니다.
아래 예제에서는 모든 규칙과 일치하는 경로 /products/1/sold 에 대한 GET 요청을 사용합니다.
mapping_rules GET 요청 예
모든 usages는 다음과 같이 사용 데이터를 사용하여 모듈이 3scale에 수행하는 요청에 추가됩니다.
- 히트: 1
- 제품: 2
- 영업: 1
11.9. 인증 정보 사용 사례에 대한 3scale API Management WebAssembly 모듈 예 링크 복사링크가 클립보드에 복사되었습니다!
구성 단계를 적용하는 데 대부분의 시간을 할애하여 서비스에 대한 요청의 인증 정보를 가져옵니다.
다음은 특정 사용 사례에 맞게 조정하도록 수정할 수 있는 credentials 예제입니다.
자체 lookup queries 를 사용하여 여러 소스 오브젝트를 지정할 때 모두 결합할 수 있지만 둘 중 하나가 성공적으로 해결될 때까지 순서대로 평가됩니다.
11.9.1. 쿼리 문자열 매개변수의 API 키(user_key) 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 쿼리 문자열 매개변수 또는 동일한 이름의 헤더에서 user_key 를 조회합니다.
11.9.2. 애플리케이션 ID 및 키 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 쿼리 또는 헤더에서 app_key 및 app_id 자격 증명을 조회합니다.
11.9.3. 인증 헤더 링크 복사링크가 클립보드에 복사되었습니다!
요청에는 authorization 헤더에 app_id 및 app_key 가 포함됩니다. 끝에 출력되는 하나 이상의 값이 있는 경우 app_key 를 할당할 수 있습니다.
해결 방법은 끝에 하나 또는 두 개의 출력이 있는 경우 app_key 를 할당합니다.
authorization 헤더는 권한 부여 유형이 포함된 값을 지정하고 해당 값은 Base64 로 인코딩됩니다. 즉, 값을 공백 문자로 분할하고 두 번째 출력을 가져온 다음 콜론(:)을 구분 기호로 사용하여 다시 분할할 수 있습니다. 예를 들어 app_id:app_key 형식을 사용하는 경우 헤더는 credential에 대한 다음 예와 유사합니다.
aladdin:opensesame: Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
aladdin:opensesame: Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
다음 예와 같이 소문자 헤더 필드 이름을 사용해야 합니다.
이전 예제 사용 사례에서는 헤더에서 authorization을 확인합니다.
-
문자열 값을 사용하여 공백으로 분할하여
credential유형 및credential자체의 두 개 이상의 값을 생성하는지 확인한 다음credential-유형을 삭제합니다. 그런 다음 필요한 데이터를 포함하는 두 번째 값을 디코딩하고 콜론(:) 문자를 사용하여 첫 번째
app_id,app_key를 포함한 작업 스택을 사용하여 분할합니다.-
권한 부여 헤더에
app_key가 없으면 해당 특정 소스가 확인됩니다. 예를 들어 이 경우 키가app_key인 헤더가 있습니다.
-
권한 부여 헤더에
-
credentials정보에 추가 조건을 추가하려면app_id가aladdin또는admin인 경우Basic권한 부여를 허용하거나app_id가 길이가 8자 이상입니다. app_key는 다음 예와 같이 값을 포함해야 하며 최소 64자 이상이어야 합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
authorization헤더 값을 선택한 후 유형을 맨 위에 배치하도록 스택을 리버스하여Basiccredential-type이 제공됩니다. -
그 위에 glob match를 실행합니다. 유효성을 검증하고 인증 정보가 디코딩되고 분할되면 스택 하단에서
app_id를 가져오고 상단에app_key가 발생할 수 있습니다. test실행: 스택에 두 개의 값이 있는 경우, 이는app_key를 인수했음을 의미합니다.-
app_id및app_key를 포함하여 문자열 길이가 1에서 63 사이인지 확인합니다. 키 길이가 0인 경우 키를 삭제하고 키가 없는 것처럼 계속합니다.app_id만 있고app_key가 없는 경우 누락된 다른 분기는 성공적인 테스트 및 평가가 계속됨을 나타냅니다.
-
마지막 작업인 assert 는 부작용을 스택에 추가하지 않음을 나타냅니다. 그런 다음 스택을 수정할 수 있습니다.
맨 위에
app_id를 갖도록 스택을 리버스합니다.-
app_key가 있는지 여부에 관계없이 스택을 리버스하면app_id가 맨 위에 있습니다.
-
테스트 전반에서 스택의 내용을 보존하려면
and를 사용합니다.그런 다음 다음 옵션 중 하나를 사용합니다.
-
app_id의 문자열 길이가 8인지 확인합니다. -
app_id가aladdin또는admin과 일치하는지 확인합니다.
-
11.9.4. OpenID Connect (OIDC) 사용 사례 링크 복사링크가 클립보드에 복사되었습니다!
Service Mesh 및 3scale Istio 어댑터의 경우 다음 예에 표시된 대로 RequestAuthentication 을 배포하여 자체 워크로드 데이터 및 jwtRules 를 채워야 합니다.
RequestAuthentication 을 적용하면 JWT 토큰을 검증하기 위해 기본 플러그인 으로 Envoy 를 구성합니다. 프록시는 모듈을 실행하기 전에 모든 항목을 검증하므로 실패하는 모든 요청은 3scale WebAssembly 모듈로 만들지 않습니다.
JWT 토큰이 검증되면 프록시는 해당 콘텐츠를 내부 메타데이터 오브젝트에 저장하고, 해당 키는 플러그인의 특정 구성에 따라 달라지는 항목을 저장합니다. 이 사용 사례는 알 수 없는 키 이름을 포함하는 단일 항목을 사용하여 구조 오브젝트를 조회할 수 있는 기능을 제공합니다.
OIDC의 3scale app_id 는 OAuth client_id 와 일치합니다. 이는 JWT 토큰의 azp 또는 aud 필드에 있습니다.
Envoy의 기본 JWT 인증 필터에서 app_id 필드를 가져오려면 다음 예제를 참조하십시오.
이 예제에서는 filter 소스 유형을 사용하여 Envoy-별 JWT 인증 네이티브 플러그인에서 오브젝트의 필터 메타데이터를 찾도록 모듈에 지시합니다. 이 플러그인에는 단일 항목이 있고 사전 구성된 이름이 있는 구조 오브젝트의 일부로 JWT 토큰이 포함됩니다. 단일 항목에만 액세스하도록 지정하려면 0 을 사용합니다.
결과 값은 다음 두 필드를 해결할 구조입니다.
-
azp:app_id가 있는 값입니다. -
AUD:이 정보를 찾을 수 있는 값입니다.
이 작업을 수행하면 할당에 대해 하나의 값만 유지됩니다.
11.9.5. 헤더에서 JWT 토큰 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
일부 설정에는 JWT 토큰에 대한 검증 프로세스가 있을 수 있습니다. 여기서 검증된 토큰이 JSON 형식의 헤더를 통해 이 모듈에 도달합니다.
app_id 를 가져오려면 다음 예제를 참조하십시오.
11.10. 3scale API Management WebAssembly 모듈 최소 작업 구성 링크 복사링크가 클립보드에 복사되었습니다!
다음은 3scale WebAssembly 모듈의 최소 작업 구성 예입니다. 이 파일을 복사하여 붙여넣고 편집하여 고유한 구성으로 작업할 수 있습니다.
12장. API 인프라 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
이 가이드에서는 API 인프라의 문제를 식별하고 해결하는 데 도움이 되는 것을 목표로 합니다.
API 인프라는 길고 복잡한 주제입니다. 그러나 최소한 인프라에는 세 가지 이동 부분이 있습니다.
- API 게이트웨이
- 3scale
- API
이러한 세 가지 요소 중 하나에 오류가 발생하면 API 소비자가 API에 액세스할 수 없습니다. 그러나 오류를 발생시킨 구성 요소를 찾기가 어렵습니다. 이 가이드에서는 문제를 식별하기 위해 인프라 문제를 해결할 수 있는 몇 가지 팁을 제공합니다.
다음 섹션을 사용하여 발생할 수 있는 일반적인 문제를 식별하고 수정합니다.
12.1. 일반적인 통합 문제 링크 복사링크가 클립보드에 복사되었습니다!
3scale과의 통합과 관련된 몇 가지 일반적인 문제를 가리킬 수 있는 몇 가지 증거가 있습니다. 이는 API 프로젝트 시작, 인프라 설정 또는 이미 프로덕션 단계에 있는지에 따라 달라집니다.
12.1.1. 통합 문제 링크 복사링크가 클립보드에 복사되었습니다!
다음 섹션에서는 3scale과의 통합 초기 단계에서 APIcast 오류 로그에 표시될 수 있는 몇 가지 일반적인 문제를 간략하게 설명합니다. 시작 시 APIcast Hosted를 사용하기 전에 자체 관리 APIcast를 실행합니다.
12.1.1.1. APIcast 호스팅 링크 복사링크가 클립보드에 복사되었습니다!
Service Integration 화면에서 API를 APIcast Hosted와 처음 통합할 때 페이지에 표시되는 다음 오류 중 일부가 표시되거나 테스트 호출에 반환되어 성공적인 통합을 확인할 수 있습니다.
테스트 요청에 실패했습니다: 실행이 만료됨공용 인터넷에서 API에 연결할 수 있는지 확인합니다. APIcast Hosted는 프라이빗 API와 함께 사용할 수 없습니다. API를 APIcast Hosted와 통합할 수 있도록 공개하지 않으려면 APIcast Hosted와 API 간에 개인 시크릿을 설정하여 API 게이트웨이에서 가져오지 않는 호출을 거부할 수 있습니다.
허용되는 형식은
protocol://address(:port)입니다.API 개인 기본 URL 끝에 있는 모든 경로를 제거합니다. "mapping rules" 패턴 또는 API 테스트 GET 요청의 시작 부분에 추가할 수 있습니다.
HTTP 코드 XXX로 테스트 요청에 실패했습니다.-
405: 끝점이 GET 요청을 수락하는지 확인합니다. APIcast는 통합을 테스트하기 위한 GET 요청만 지원합니다. -
403: 인증 매개변수가 누락됨: API에 이미 일부 인증이 있는 경우 APIcast는 테스트 요청을 수행할 수 없습니다. -
403: 인증에 실패했습니다. 3scale로 생성한 첫 번째 서비스가 아닌 경우 인증정보를 사용하여 애플리케이션을 생성했는지 확인하여 테스트 요청을 수행합니다. 통합할 첫 번째 서비스인 경우 등록 시 생성한 테스트 계정 또는 애플리케이션을 삭제하지 않았는지 확인하십시오.
-
12.1.1.2. APIcast 자체 관리 링크 복사링크가 클립보드에 복사되었습니다!
APIcast 자체 관리와의 통합을 성공적으로 테스트한 후 API 게이트웨이를 직접 호스팅할 수 있습니다. 다음은 자체 관리 게이트웨이를 처음 설치하고 이를 통해 API를 호출할 때 발생할 수 있는 몇 가지 오류입니다.
업스트림에 연결하는 동안 업스트림 시간 초과(연결 시간 초과)자체 관리 게이트웨이가 3scale에 도달하지 못하도록 API 게이트웨이와 공용 인터넷 사이에 방화벽 또는 프록시가 없는지 확인합니다.
서비스 목록을 가져올 수 없음: 잘못된 상태: 403 (Forbidden)2018/06/04 08:04:49 [emerg] 14#14: [lua] configuration_loader.lua:134: init(): failed to load configuration, exiting (code 1) 2018/06/04 08:04:49 [warn] 22#22: *2 [lua] remote_v2.lua:163: call(): failed to get list of services: invalid status: 403 (Forbidden) url: https://example-admin.3scale.net/admin/api/services.json , context: ngx.timer ERROR: /opt/app-root/src/src/apicast/configuration_loader.lua:57: missing configuration
2018/06/04 08:04:49 [emerg] 14#14: [lua] configuration_loader.lua:134: init(): failed to load configuration, exiting (code 1) 2018/06/04 08:04:49 [warn] 22#22: *2 [lua] remote_v2.lua:163: call(): failed to get list of services: invalid status: 403 (Forbidden) url: https://example-admin.3scale.net/admin/api/services.json , context: ngx.timer ERROR: /opt/app-root/src/src/apicast/configuration_loader.lua:57: missing configurationCopy to Clipboard Copied! Toggle word wrap Toggle overflow THREESCALE_PORTAL_ENDOINT값에서 사용한 액세스 토큰이 올바르고 계정 관리 API 범위가 있는지 확인합니다.을 사용하여 확인합니다.curl-v "https://example-admin.3scale.net/admin/api/services.json?access_token=<YOUR_ACCESS_TOKEN>"JSON 본문이 포함된 200 응답을 반환해야 합니다. 오류 상태 코드를 반환하는 경우 응답 본문에서 세부 정보를 확인합니다.
호스트 apicast.example.com에 대한 서비스를 찾을 수 없음2018/06/04 11:06:15 [warn] 23#23: *495 [lua] find_service.lua:24: find_service(): service not found for host apicast.example.com, client: 172.17.0.1, server: _, request: "GET / HTTP/1.1", host: "apicast.example.com"
2018/06/04 11:06:15 [warn] 23#23: *495 [lua] find_service.lua:24: find_service(): service not found for host apicast.example.com, client: 172.17.0.1, server: _, request: "GET / HTTP/1.1", host: "apicast.example.com"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 오류는 Public Base URL이 제대로 구성되지 않았음을 나타냅니다. 구성된 Public Base URL이 자체 관리 APIcast 요청에 사용하는 것과 동일한지 확인해야 합니다. 올바른 공용 기본 URL을 구성한 후 다음을 수행합니다.
-
"production"으로 APIcast가 구성되었는지 확인합니다(
THREESCALE_DEPLOYMENT_ENV변수로 재정의하지 않는 경우 독립 실행형 APIcast의 기본 구성). 구성을 프로덕션으로 승격해야 합니다. -
APICAST_CONFIGURATION_CACHE및APICAST_CONFIGURATION_LOADER환경 변수를 사용하여 구성 자동 로드를 구성하지 않은 경우 APIcast를 다시 시작합니다.
-
"production"으로 APIcast가 구성되었는지 확인합니다(
다음은 잘못된 APIcast 자체 관리 통합을 가리킬 수 있는 몇 가지 다른 증상입니다.
- API 호출이 일치하지 않는 매핑 규칙: API 에서 메서드와 실제 URL 끝점 간의 매핑을 정의한 방식에 따라 메서드가 일치하지 않거나 요청당 한 번 이상 증가되는 경우가 있음을 알 수 있습니다. 이 문제를 해결하려면 3scale 디버그 헤더 를 사용하여 API를 테스트하십시오. 그러면 API 호출과 일치하는 모든 메서드 목록이 반환됩니다.
- 인증 매개변수를 찾을 수 없음: 서비스 통합 화면에 지정된 대로 매개변수를 올바른 위치로 전송했는지 확인합니다. 자격 증명을 헤더로 보내지 않으면 인증 정보를 다른 모든 HTTP 메서드의 GET 요청 및 본문 매개변수에 대한 쿼리 매개변수로 보내야 합니다. 3scale 디버그 헤더를 사용하여 API 게이트웨이에서 요청에서 읽을 수 있는 인증 정보를 다시 확인합니다.
12.1.2. 프로덕션 문제 링크 복사링크가 클립보드에 복사되었습니다!
설정을 완전히 테스트한 후 잠시 동안 API 게이트웨이에서 발생하는 문제가 발생하지 않는 경우가 많습니다. 그러나 라이브 프로덕션 환경에서 발생할 수 있는 몇 가지 문제는 다음과 같습니다.
12.1.2.1. 가용성 문제 링크 복사링크가 클립보드에 복사되었습니다!
가용성 문제는 일반적으로 nginx error.log의 업스트림 시간 초과 오류로 표시됩니다. 예를 들면 다음과 같습니다.
upstream timed out (110: Connection timed out) while connecting to upstream, client: X.X.X.X, server: api.example.com, request: "GET /RESOURCE?CREDENTIALS HTTP/1.1", upstream: "http://Y.Y.Y.Y:80/RESOURCE?CREDENTIALS", host: "api.example.com"
upstream timed out (110: Connection timed out) while connecting to upstream, client: X.X.X.X, server: api.example.com, request: "GET /RESOURCE?CREDENTIALS HTTP/1.1", upstream: "http://Y.Y.Y.Y:80/RESOURCE?CREDENTIALS", host: "api.example.com"
간헐적인 3scale 가용성 문제가 발생하는 경우 다음과 같은 이유가 있을 수 있습니다.
더 이상 사용되지 않는 이전 3scale IP로 확인 중입니다.
API 게이트웨이 구성 파일의 최신 버전은 3scale을 변수로 정의하여 매번 IP 확인을 강제 적용합니다. 빠른 수정을 위해 NGINX 인스턴스를 다시 로드합니다. 장기 수정의 경우 업스트림 블록에서 3scale 백엔드를 정의하는 대신 각 server 블록 내에서 변수로 정의합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이를 언급할 때:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 허용 목록에서 일부 3scale IP가 누락되어 있습니다. 다음은 3scale이 확인하는 현재 IP 목록입니다.
- 75.101.142.93
- 174.129.235.69
- 184.73.197.122
- 50.16.225.117
- 54.83.62.94
- 54.83.62.186
- 54.83.63.187
54.235.143.255
위의 문제는 3scale 가용성에 대한 문제를 나타냅니다. 그러나 API가 AWS ELB 뒤에 있는 경우 API 게이트웨이에서 API 가용성과 유사한 문제가 발생할 수 있습니다. 이는 NGINX가 기본적으로 시작 시 DNS 확인을 수행한 다음 IP 주소를 캐시하기 때문입니다. 그러나 ELB는 고정 IP 주소를 확인하지 않으며 자주 변경될 수 있습니다. ELB가 다른 IP로 변경될 때마다 NGINX에 연결할 수 없습니다.
이에 대한 솔루션은 런타임 DNS 확인을 강제 적용하기 위한 위의 수정 사항과 유사합니다.
-
http섹션의 상단에 이 행을 추가하여 Google DNS와 같은 특정 DNS 확인자를 설정합니다.resolver 8.8.8.8.8.4.4;. -
API 기본 URL을
server섹션 상단에 있는 변수로 설정합니다.set $api_base "http://api.example.com:80"; -
location /section에서proxy_pass행을 찾아서proxy_pass $api_base로 바꿉니다.
-
12.1.3. 배포 후 문제 링크 복사링크가 클립보드에 복사되었습니다!
새 엔드포인트 추가와 같은 API를 변경하는 경우 API 게이트웨이의 새 구성 파일 세트를 다운로드하기 전에 새 메서드 및 URL 매핑을 추가해야 합니다.
3scale에서 다운로드한 구성을 수정할 때 가장 일반적인 문제는 Lua의 코드 오류이며 다음과 같은 500 - 내부 서버 오류가 발생합니다.
nginx error.log에서 다음과 같은 원인을 알 수 있습니다.
access.log에서 다음과 같이 표시됩니다.
127.0.0.1 - - [04/Feb/2016:11:22:25 +0100] "GET / HTTP/1.1" 500 199 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3"
127.0.0.1 - - [04/Feb/2016:11:22:25 +0100] "GET / HTTP/1.1" 500 199 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3"
위의 섹션에서는 3scale 이동의 모든 단계에서 발생할 수 있는 가장 일반적인 잘 알려진 문제에 대한 개요를 제공합니다.
이러한 모든 항목이 확인되었으며 여전히 문제에 대한 원인 및 솔루션을 찾을 수 없는 경우 API 요청 문제 식별 에 대한 자세한 섹션으로 진행해야 합니다. API에서 시작하고 실패 지점을 식별할 수 있도록 클라이언트로 다시 작업합니다.
12.2. API 인프라 문제 처리 링크 복사링크가 클립보드에 복사되었습니다!
이 API 게이트웨이, 3scale 또는 API인지 여부에 관계없이 서버에 연결할 때 오류가 발생하는 경우 다음 문제 해결 단계가 첫 번째 호출 포트여야 합니다.
12.2.1. 연결할 수 있습니까? 링크 복사링크가 클립보드에 복사되었습니다!
telnet을 사용하여 기본 TCP/IP 연결 telnet api.example.com 443을 확인합니다.
- 성공
telnet echo-api.3scale.net 80 Trying 52.21.167.109... Connected to tf-lb-i2t5pgt2cfdnbdfh2c6qqoartm-829217110.us-east-1.elb.amazonaws.com. Escape character is '^]'. Connection closed by foreign host.
telnet echo-api.3scale.net 80
Trying 52.21.167.109...
Connected to tf-lb-i2t5pgt2cfdnbdfh2c6qqoartm-829217110.us-east-1.elb.amazonaws.com.
Escape character is '^]'.
Connection closed by foreign host.
- 실패
telnet su1.3scale.net 443 Trying 174.129.235.69... telnet: Unable to connect to remote host: Connection timed out
telnet su1.3scale.net 443
Trying 174.129.235.69...
telnet: Unable to connect to remote host: Connection timed out
12.2.2. 서버 연결 문제 링크 복사링크가 클립보드에 복사되었습니다!
서로 다른 네트워크 위치, 장치 및 방향에서 동일한 서버에 연결을 시도합니다. 예를 들어 클라이언트가 API에 연결할 수 없는 경우 API 게이트웨이와 같은 액세스 권한이 있어야 하는 시스템에서 API에 연결을 시도합니다.
시도된 연결 중 하나라도 성공하면 실제 서버의 문제를 배제하고 네트워크 문제 해결에 집중하여 문제가 발생할 가능성이 큽니다.
12.2.3. DNS 문제입니까? 링크 복사링크가 클립보드에 복사되었습니다!
호스트 이름 대신 IP 주소를 사용하여 서버에 연결을 시도합니다(예: telnet apis.io 80대신 telnet 94.125.104.17 80 ).
이렇게 하면 DNS의 문제가 배제됩니다.
호스트가 확인할 수 있는 여러 IP가 있다고 의심되는 경우 를 사용하여 서버의 IP 주소를 가져올 수 있습니다.
dig 3scale su1.3 scale.net과 같이 dig
Nb: 일부 호스트는 'dig any'를 차단합니다
12.2.4. SSL 문제입니까? 링크 복사링크가 클립보드에 복사되었습니다!
OpenSSL을 사용하여 테스트할 수 있습니다.
쉘 프롬프트
openssl s_client -connect su1.3scale.net:443과 같은 호스트 또는 IP에 대한 보안 연결출력:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSLv3 지원 (3scale에서 지원하지 않음)
openssl s_client -ssl3 -connect su.3scale.net:443출력 결과
자세한 내용은 OpenSSL 도움말 페이지를 참조하십시오.
12.3. API 요청 문제 확인 링크 복사링크가 클립보드에 복사되었습니다!
API에 대한 요청이 있을 수 있는 위치를 확인하려면 다음 검사를 수행합니다.
12.3.1. API 링크 복사링크가 클립보드에 복사되었습니다!
API가 up이고 요청에 응답하는지 확인하려면 API에 직접 동일한 요청을 수행합니다(API 게이트웨이를 통과하지 않음). API 게이트웨이를 통과하는 요청과 동일한 매개변수 및 헤더를 보내고 있는지 확인해야 합니다. 실패하는 정확한 요청이 확실하지 않은 경우 API 게이트웨이와 API 간 트래픽을 캡처합니다.
호출이 성공하면 API에 대한 문제를 제외할 수 있습니다. 그렇지 않으면 API의 문제를 추가로 해결해야 합니다.
12.3.2. API 게이트웨이 > API 링크 복사링크가 클립보드에 복사되었습니다!
API 게이트웨이와 API 간의 네트워크 문제를 제외하려면 API 게이트웨이 서버에서 앞에 있는 직접 API를 통해 직접 API 게이트웨이 서버와 동일한 호출을 수행합니다.
호출이 성공하면 API 게이트웨이 자체의 문제 해결으로 이동할 수 있습니다.
12.3.3. API 게이트웨이 링크 복사링크가 클립보드에 복사되었습니다!
API 게이트웨이가 올바르게 작동하는지 확인하는 여러 단계가 있습니다.
12.3.3.1. API 게이트웨이가 실행 중입니까? 링크 복사링크가 클립보드에 복사되었습니다!
게이트웨이가 실행 중인 시스템에 로그인합니다. 이 오류가 발생하면 게이트웨이 서버가 다운되었을 수 있습니다.
로그인한 후 NGINX 프로세스가 실행 중인지 확인합니다. 이를 위해 ps ax | grep nginx 또는 htop 를 실행합니다.
목록에 nginx 마스터 프로세스 및 NGINX가 실행됩니다.
nginx 작업자 프로세스가 표시되면
12.3.3.2. 게이트웨이 로그에 오류가 있습니까? 링크 복사링크가 클립보드에 복사되었습니다!
다음은 게이트웨이 로그에 표시될 수 있는 몇 가지 일반적인 오류입니다(예: error.log).
API 게이트웨이가 API에 연결할 수 없음
upstream timed out (110: Connection timed out) while connecting to upstream, client: X.X.X.X, server: api.example.com, request: "GET /RESOURCE?CREDENTIALS HTTP/1.1", upstream: "http://Y.Y.Y.Y:80/RESOURCE?CREDENTIALS", host: "api.example.com"
upstream timed out (110: Connection timed out) while connecting to upstream, client: X.X.X.X, server: api.example.com, request: "GET /RESOURCE?CREDENTIALS HTTP/1.1", upstream: "http://Y.Y.Y.Y:80/RESOURCE?CREDENTIALS", host: "api.example.com"Copy to Clipboard Copied! Toggle word wrap Toggle overflow API 게이트웨이 3scale에 연결할 수 없음
2015/11/20 11:33:51 [error] 3578#0: *1 upstream timed out (110: Connection timed out) while connecting to upstream, client: 127.0.0.1, server: , request: "GET /api/activities.json?user_key=USER_KEY HTTP/1.1", subrequest: "/threescale_authrep", upstream: "https://54.83.62.186:443/transactions/authrep.xml?provider_key=YOUR_PROVIDER_KEY&service_id=SERVICE_ID&usage[hits]=1&user_key=USER_KEY&log%5Bcode%5D=", host: "localhost"
2015/11/20 11:33:51 [error] 3578#0: *1 upstream timed out (110: Connection timed out) while connecting to upstream, client: 127.0.0.1, server: , request: "GET /api/activities.json?user_key=USER_KEY HTTP/1.1", subrequest: "/threescale_authrep", upstream: "https://54.83.62.186:443/transactions/authrep.xml?provider_key=YOUR_PROVIDER_KEY&service_id=SERVICE_ID&usage[hits]=1&user_key=USER_KEY&log%5Bcode%5D=", host: "localhost"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.3.4. API 게이트웨이 > 3scale API Management 링크 복사링크가 클립보드에 복사되었습니다!
API 게이트웨이가 올바르게 실행 중인지 확인한 후 다음 단계는 API 게이트웨이와 3scale 간의 연결 문제를 해결하는 것입니다.
12.3.4.1. API 게이트웨이가 3scale API Management에 도달할 수 있습니까? 링크 복사링크가 클립보드에 복사되었습니다!
NGINX를 API 게이트웨이로 사용하는 경우 게이트웨이가 3scale에 연결할 수 없는 경우 nginx 오류 로그에 다음 메시지가 표시됩니다.
2015/11/20 11:33:51 [error] 3578#0: *1 upstream timed out (110: Connection timed out) while connecting to upstream, client: 127.0.0.1, server: , request: "GET /api/activities.json?user_key=USER_KEY HTTP/1.1", subrequest: "/threescale_authrep", upstream: "https://54.83.62.186:443/transactions/authrep.xml?provider_key=YOUR_PROVIDER_KEY&service_id=SERVICE_ID&usage[hits]=1&user_key=USER_KEY&log%5Bcode%5D=", host: "localhost"
2015/11/20 11:33:51 [error] 3578#0: *1 upstream timed out (110: Connection timed out) while connecting to upstream, client: 127.0.0.1, server: , request: "GET /api/activities.json?user_key=USER_KEY HTTP/1.1", subrequest: "/threescale_authrep", upstream: "https://54.83.62.186:443/transactions/authrep.xml?provider_key=YOUR_PROVIDER_KEY&service_id=SERVICE_ID&usage[hits]=1&user_key=USER_KEY&log%5Bcode%5D=", host: "localhost"
여기에서 업스트림 값을 확인합니다. 이 IP는 3scale 제품이 확인하는 IP 중 하나에 해당합니다. 이는 3scale에 도달하는 데 문제가 있음을 의미합니다. 역방향 DNS 조회를 수행하여 nslookup 을 호출하여 도메인의 IP를 확인할 수 있습니다.
예를 들어 API 게이트웨이가 3scale에 연결할 수 없기 때문에 3scale이 다운된 것은 아닙니다. 이에 대한 가장 일반적인 이유 중 하나는 방화벽 규칙으로 인해 API 게이트웨이가 3scale에 연결되지 않는 것입니다.
게이트웨이와 3scale 간에 연결이 시간 초과될 수 있는 네트워크 문제가 있을 수 있습니다. 이 경우 일반 연결 문제를 해결하는 단계를 수행하여 문제가 있는 위치를 식별해야 합니다.
네트워킹 문제를 제외하려면 traceroute 또는 MTR을 사용하여 라우팅 및 패킷 전송을 확인합니다. 3scale 및 API 게이트웨이에 연결하고 출력을 비교할 수 있는 머신에서 동일한 명령을 실행할 수도 있습니다.
또한 API 게이트웨이와 3scale 간에 전송되는 트래픽을 보려면 3scale 제품(su1.3scale.net)에 HTTP 끝점을 사용하도록 일시적으로 전환할 때 tcpdump를 사용할 수 있습니다.
12.3.4.2. 3scale API Management 주소를 올바르게 확인하는 API 게이트웨이가 올바르게 수행됩니까? 링크 복사링크가 클립보드에 복사되었습니다!
nginx.conf에 resolver 지시문이 추가되었는지 확인합니다.
예를 들어 nginx.conf에서 다음을 수행합니다.
Google DNS (8.8.8 및 8.8.4.4)를 선호하는 DNS로 대체할 수 있습니다.
API 게이트웨이에서 DNS 확인을 확인하려면 지정된 확인자 IP에서 다음과 같이 nslookup을 호출합니다.
nslookup su1.3scale.net 8.8.8.8 ;; connection timed out; no servers could be reached
nslookup su1.3scale.net 8.8.8.8
;; connection timed out; no servers could be reached
위 예제에서는 Google DNS에 연결할 수 없는 경우 반환된 응답을 보여줍니다. 이 경우 확인자 IP를 업데이트해야 합니다. nginx error.log에도 다음 경고가 표시될 수 있습니다.
2016/05/09 14:15:15 [alert] 9391#0: send() failed (1: Operation not permitted) while resolving, resolver: 8.8.8.8:53
2016/05/09 14:15:15 [alert] 9391#0: send() failed (1: Operation not permitted) while resolving, resolver: 8.8.8.8:53
마지막으로 dig any su1.3scale.net 을 실행하여 3scale Service Management API에서 현재 작업 중인 IP 주소를 확인합니다. 이는 3scale에서 사용할 수 있는 IP 주소의 전체 범위가 아닙니다. 일부는 용량상의 이유로 교체 및 해제 될 수 있습니다. 또한 향후 3scale 서비스에 대한 도메인 이름을 추가할 수 있습니다. 이를 위해 통합 중에 제공된 특정 주소에 대해 항상 테스트해야 합니다(해당하는 경우).
12.3.4.3. API 게이트웨이가 3scale API Management를 올바르게 호출합니까? 링크 복사링크가 클립보드에 복사되었습니다!
문제 해결을 위해 API 게이트웨이가 3scale에 요청하는 경우 nginx.conf 의 3scale authrep 위치(API 키 및 App\_id 인증 모드의 경우/threescale_authrep )에 다음 스니펫을 추가할 수 있습니다.
X-3scale-debug 헤더 가 전송될 때 nginx error.log에 다음의 추가 로깅이 추가됩니다(예: curl -v -H 'X-3scale-debug: Cryostat_PROVIDER_KEY' -X GET "https://726e3b99.ngrok.com/api/contacts.json?access_token=7c6f24f5").
이렇게 하면 다음 로그 항목이 생성됩니다.
첫 번째 항목(2016/05/05 14:24:33 [] 7238#0: *57 [lua] body_filter_by_lua:7:)은 3scale로 전송된 요청 헤더를 출력합니다. 이 경우 Host, User-Agent, Accept, X-Forwarded-Proto 및 X-Forwarded-For.
두 번째 항목(2016/05/05 14:24:33 [] 7238#0: *57 [lua] body_filter_by_lua:8:: )은 3scale의 응답을 출력합니다. < error code="access_token_invalid">access_token "7c6f24f5"는 유효하지 않습니다.
둘 다 원래 요청(GET /api/contacts.access_token_token=7c6f24f5) 및 하위 요청 위치(/threescale_authrep)와 업스트림 요청(upstream: "https://54.83.62.94:443/transactions/threescale_authrep.xml?provider_key=REDACTED&service_id=REDACTED&usage[hits]=1&access_token=7c6f24f5".)을 출력합니다. 이 마지막 값을 사용하면 어떤 3scale IP가 해결되었는지와 3scale에 대한 정확한 요청을 확인할 수 있습니다.
12.3.5. 3scale API Management 링크 복사링크가 클립보드에 복사되었습니다!
12.3.5.1. 3scale API Management에서 오류를 반환합니까? 링크 복사링크가 클립보드에 복사되었습니다!
3scale을 사용할 수도 있지만 API 게이트웨이로 오류를 반환하여 API로 이동하는 호출을 방지할 수 있습니다. 3scale에서 직접 권한 부여 호출을 수행하고 응답을 확인합니다. 오류가 발생하면 #troubleshooting-api-error-codes[오류 코드] 섹션을 확인하여 문제가 무엇인지 확인합니다.
12.3.5.2. 3scale API Management 디버그 헤더 사용 링크 복사링크가 클립보드에 복사되었습니다!
X-3scale-debug 헤더를 사용하여 API를 호출하여 3scale 디버그 헤더를 켤 수도 있습니다.
curl -v -X GET "https://api.example.com/endpoint?user_key" X-3scale-debug: YOUR_SERVICE_TOKEN
그러면 API 응답이 포함된 다음 헤더가 반환됩니다.
X-3scale-matched-rules: /, /api/contacts.json < X-3scale-credentials: access_token=TOKEN_VALUE < X-3scale-usage: usage[hits]=2 < X-3scale-hostname: HOSTNAME_VALUE
X-3scale-matched-rules: /, /api/contacts.json
< X-3scale-credentials: access_token=TOKEN_VALUE
< X-3scale-usage: usage[hits]=2
< X-3scale-hostname: HOSTNAME_VALUE
12.3.5.3. 통합 오류 확인 링크 복사링크가 클립보드에 복사되었습니다!
관리 포털에서 통합 오류를 확인하여 3scale로 트래픽을 보고하는 문제를 확인할 수도 있습니다. https://YOUR_DOMAIN-admin.3scale.net/apiconfig/errors을 참조하십시오.
통합 오류의 이유 중 하나는 server 블록에서 사용할 수 없는 underscores_in_headers 지시문을 사용하여 헤더에서 인증 정보를 보내는 것입니다.
12.3.6. 클라이언트 API 게이트웨이 링크 복사링크가 클립보드에 복사되었습니다!
12.3.6.1. 공용 인터넷에서 API 게이트웨이에 연결할 수 있습니까? 링크 복사링크가 클립보드에 복사되었습니다!
브라우저를 게이트웨이 서버의 IP 주소(또는 도메인 이름)로 전달해 보십시오. 이 작업이 실패하면 관련 포트에서 방화벽을 열 수 있는지 확인합니다.
12.3.6.2. 클라이언트에서 API 게이트웨이에 연결할 수 있습니까? 링크 복사링크가 클립보드에 복사되었습니다!
가능한 경우 이전에 설명한 방법(telnet, curl 등) 중 하나를 사용하여 클라이언트에서 API 게이트웨이에 연결을 시도합니다. 연결에 실패하면 문제가 둘 사이의 네트워크에 있습니다.
그렇지 않으면 클라이언트의 문제 해결으로 API를 호출해야 합니다.
12.3.7. 클라이언트 링크 복사링크가 클립보드에 복사되었습니다!
12.3.7.1. 다른 클라이언트를 사용하여 동일한 호출을 테스트합니다. 링크 복사링크가 클립보드에 복사되었습니다!
요청이 예상된 결과를 반환하지 않으면 다른 HTTP 클라이언트로 테스트합니다. 예를 들어 Java HTTP 클라이언트를 사용하여 API를 호출하고 cURL을 사용하여 잘못된 내용이 표시되는 경우입니다.
클라이언트와 게이트웨이 간에 프록시를 통해 API를 호출하여 클라이언트에서 보내는 정확한 매개변수와 헤더를 캡처할 수도 있습니다.
12.3.7.2. 클라이언트에서 보낸 트래픽 검사 링크 복사링크가 클립보드에 복사되었습니다!
Wireshark와 같은 도구를 사용하여 클라이언트가 수행하는 요청을 확인합니다. 그러면 클라이언트가 API를 호출하는지 여부와 요청의 세부 정보를 확인할 수 있습니다.
12.4. ActiveDocs 문제 링크 복사링크가 클립보드에 복사되었습니다!
ActiveDocs를 통과할 때 명령줄에서 API를 호출할 때 작동하는 경우가 있습니다.
ActiveDocs 호출이 작동하도록 하기 위해, 당사는 당사의 프록시를 통해 이러한 호출을 보냅니다. 이 프록시는 예상되지 않은 경우 API에 문제가 발생할 수 있는 특정 헤더를 추가합니다. 이 경우 다음 단계를 수행합니다.
12.4.1. petstore.swagger.io 사용 링크 복사링크가 클립보드에 복사되었습니다!
swagger는 petstore.swagger.io에서 호스팅되는 swagger-ui를 제공하며 최신 버전의 swagger-ui를 통해 제공되는 Swagger 사양 및 API를 테스트할 수 있습니다. swagger-ui와 ActiveDocs가 모두 동일한 방식으로 실패하는 경우 ActiveDocs 또는 ActiveDocs 프록시의 문제를 배제하고 자체 사양에서 문제 해결에 중점을 둘 수 있습니다. 또는 swagger-ui 현재 버전의 swagger-ui와 관련된 알려진 문제에 대해 swagger-ui GitHub 리포지터리를 확인할 수 있습니다.
12.4.2. 방화벽에서 ActiveDocs 프록시의 연결을 허용하는지 확인합니다. 링크 복사링크가 클립보드에 복사되었습니다!
API를 사용하는 클라이언트의 IP 주소를 허용 목록에 추가하지 않는 것이 좋습니다. ActiveDocs 프록시는 고가용성을 위해 유동 IP 주소를 사용하며 현재 이러한 IP 변경 사항을 알리는 메커니즘이 없습니다.
12.4.3. 잘못된 인증 정보를 사용하여 API 호출 링크 복사링크가 클립보드에 복사되었습니다!
ActiveDocs 프록시가 올바르게 작동하는지 확인하는 한 가지 방법은 잘못된 인증 정보를 사용하여 API를 호출하는 것입니다. 이렇게 하면 ActiveDocs 프록시 및 API 게이트웨이 둘 다의 문제를 확인하거나 제외할 수 있습니다.
API 호출에서 403 코드를 다시 가져오는 경우(또는 잘못된 인증 정보에 대해 게이트웨이에서 구성한 코드에서) 호출이 게이트웨이에 도달했기 때문에 API에 문제가 발생합니다.
12.4.4. 호출 비교 링크 복사링크가 클립보드에 복사되었습니다!
ActiveDocs와 ActiveDocs 외부에서 만든 호출 간의 헤더와 매개 변수의 차이점을 확인하려면 온프레미스 또는 Runscope와 같은 서비스를 통해 호출을 실행합니다. 이를 통해 API로 보내기 전에 HTTP 호출을 검사하고 비교할 수 있습니다. 그런 다음 문제가 발생할 수 있는 요청에서 잠재적인 헤더 및/또는 매개변수를 식별할 수 있습니다.
12.5. NGINX에 로그인 링크 복사링크가 클립보드에 복사되었습니다!
이에 대한 포괄적인 안내서는 NGINX 로깅 및 모니터링 문서를 참조하십시오.
12.5.1. 디버깅 로그 활성화 링크 복사링크가 클립보드에 복사되었습니다!
디버깅 로그 활성화에 대한 자세한 내용은 NGINX 디버깅 로그 설명서 를 참조하십시오.
12.6. 3scale 오류 코드 링크 복사링크가 클립보드에 복사되었습니다!
3scale Service Management API 끝점에서 반환된 오류 코드를 두 번 확인하려면 다음 단계를 수행하여 3scale API 문서 페이지를 참조하십시오.
- 관리 포털의 오른쪽 상단에 있는 물음표(?) 아이콘을 클릭합니다.
- 3scale API 문서 를 선택합니다.
다음은 3scale에서 반환된 목록 HTTP 응답 코드와 해당 코드가 반환되는 조건입니다.
400: 잘못된 요청입니다. 그 이유는 다음과 같습니다.
- 잘못된 인코딩
- 페이로드가 너무 큽니다
-
콘텐츠 유형이 잘못되었습니다(POST 호출의 경우).
Content-Type헤더의 유효한 값은application/x-www-form-urlencoded,multipart/form-data또는 empty header입니다.
403:
- 인증 정보가 유효하지 않음
- GET 요청에 대해 3scale로 본문 데이터 전송
- 404: 애플리케이션, 메트릭 등과 같이 참조되는 존재하지 않는 엔티티입니다.
409:
- 사용량 제한 초과
- 애플리케이션이 활성 상태가 아닙니다
-
애플리케이션 키가 유효하지 않거나 누락됨(
app_id/app_key인증 방법의 경우) - referrer가 허용되거나 누락되지 않습니다 (참조 필터가 활성화되고 필요한 경우)
- 422: 필수 매개변수가 누락됨
이러한 오류 응답의 대부분은 머신에서 읽을 수 있는 오류 카테고리와 사람이 읽을 수 있는 설명이 포함된 XML 본문도 포함됩니다.
표준 API 게이트웨이 구성을 사용하는 경우 3scale에서 제공하는 200과 다른 반환 코드는 다음 코드 중 하나를 사용하여 클라이언트에 대한 응답을 얻을 수 있습니다.
- 403
- 404