이 페이지는 Apigee에 적용되지만 Apigee Hybrid에는 적용되지 않습니다.
Apigee Edge 문서 보기
단계 요약
이 문서에서는 명령줄에서 Apigee 평가 조직(또는 평가 조직)을 설치하고 구성하는 방법을 설명합니다. 평가 조직은 60일 후 만료되며 다음 제한사항이 적용될 수 있습니다. 평가 및 유료 조직 비교도 참조하세요.
프로비저닝 단계는 다음과 같습니다.
- 1단계: 환경 변수 정의:
gcloud
를 설정하고 환경 변수를 정의합니다. Google Cloud CLI는 인증, 로컬 구성, 개발자 워크플로, Google Cloud API와의 상호작용을 관리합니다. - 2단계: API 사용 설정: Apigee를 사용하려면 여러 Google Cloud API를 사용 설정해야 합니다.
- 3단계: 서비스 네트워킹 구성: 서비스 네트워킹은 네트워크와 Apigee 간의 비공개 연결 설정(VPC 네트워크 피어링 사용)을 자동화합니다.
- 4단계: 조직 만들기: Apigee 조직(조직이라고도 함)은 Apigee의 최상위 컨테이너입니다. 여기에는 모든 환경 및 환경 그룹, 사용자, API 프록시, 관련 리소스가 포함됩니다.
- 5단계: 라우팅 구성: API에 대한 외부 액세스 또는 내부 전용 액세스를 허용합니다.
- 6단계: 샘플 API 프록시 호출: API 프록시를 배포하고 호출하여 프로비저닝을 테스트합니다.
1단계: 환경 변수 정의
gcloud
를 설정하고 이후 단계에서 사용할 환경 변수를 정의합니다.
- 기본 요건에 나열된 요구사항을 완료했는지 확인합니다.
- gcloud CLI가 설치되어 있어야 합니다. 설치해야 하면 gcloud CLI 설치를 참조하세요.
- gcloud CLI 초기화의 설명대로 gcloud CLI를 초기화하거나 CLI가 이미 초기화되었다면 기본 요건에서 만든 Google Cloud 프로젝트가 gcloud의 기본 프로젝트인지 확인합니다.
- 다음 환경 변수를 정의합니다.
AUTH="Authorization: Bearer $(gcloud auth print-access-token)"
PROJECT_ID="YOUR_PROJECT_ID"
RUNTIME_LOCATION="YOUR_RUNTIME_LOCATION"
ANALYTICS_REGION="YOUR_ANALYTICS_REGION"
각 항목의 의미는 다음과 같습니다.
- AUTH는 Bearer 토큰이 있는
Authentication
헤더를 정의합니다. Apigee API를 호출할 때 이 헤더를 사용합니다. 토큰은 일정 시간 후 만료됩니다. 만료 후에는 동일 명령어를 사용해서 다시 생성할 수 있습니다. 자세한 내용은 print-access-token 명령어의 참조 페이지를 확인하세요. - PROJECT_ID는 기본 요건의 일부로 만든 Cloud 프로젝트 ID입니다.
RUNTIME_LOCATION은 Apigee 인스턴스가 있는 물리적 위치입니다. 사용 가능한 런타임 위치 목록은 Apigee 위치를 참조하세요.
-
ANALYTICS_REGION은 Apigee 애널리틱스 데이터가 저장되는 물리적 위치입니다. 사용 가능한 Apigee API 애널리틱스 리전 목록은 Apigee 위치를 참조하세요.
RUNTIME_LOCATION과 RUNTIME_LOCATION은 둘 다 같은 리전일 수 있지만 반드시 동일할 필요는 없습니다. 그러나 동일하면 성능상 이점이 있을 수 있습니다.
- AUTH는 Bearer 토큰이 있는
- (선택사항) 방금 설정한 값을 에코하여 작업을 확인합니다. 명령어에 변수를 사용하려면 변수 이름 앞에 달러 기호($)를 추가합니다.
echo $AUTH
echo $PROJECT_ID
echo $RUNTIME_LOCATION
echo $ANALYTICS_REGION
echo
명령어에 대한 응답은 다음과 같이 표시됩니다.Authorization: Bearer ya29.a123456678940B63hPSAMPLEsampleKKYVsample0f3pWDWZDuH2-hENkNa TvgZ1PD977TMvv6edBQPJezdHw040880Ol_LoD5ZDkt-i-knizia_KhA9L20sSvztL81-SAMPLE42ELPMASk2_ 1CxN my-cloud-project us-west1 us-west1
2단계: API 사용 설정
-
Apigee를 사용하려면 Google Cloud API를 여러 개 사용 설정해야 합니다. 이를 사용 설정하려면 다음
services enable
명령어를 실행합니다.gcloud services enable apigee.googleapis.com \ servicenetworking.googleapis.com compute.googleapis.com \ cloudkms.googleapis.com --project=$PROJECT_ID
(선택사항) 작업을 확인하려면
services list
명령어를 사용하여 사용 설정된 모든 API를 표시합니다.gcloud services list
응답에는 방금 사용 설정한 API(Apigee, 서비스 네트워킹, Cloud KMS, Compute Engine)를 포함한 사용 설정된 모든 서비스가 표시됩니다.
3단계: 서비스 네트워킹 구성
- 다음 환경 변수를 만듭니다.
RANGE_NAME=YOUR_RANGE_NAME
NETWORK_NAME=YOUR_NETWORK_NAME
각 항목의 의미는 다음과 같습니다.
RANGE_NAME
는 만들려는 IP 주소 범위의 이름입니다. 범위 이름을 원하는 대로 지정할 수 있습니다. 예를 들면google-svcs
입니다.NETWORK_NAME
는 주소를 예약할 네트워크 리소스의 이름입니다. Google에서는 새 프로젝트마다 기본 네트워크(default
)를 만들 수 있으므로 이를 사용할 수 있습니다. 하지만 테스트 용도 이외에는 기본 네트워크를 사용하지 않는 것이 좋습니다.
- CIDR 길이가 /22인 IP 범위를 만듭니다.
gcloud compute addresses create $RANGE_NAME \ --global \ --prefix-length=22 \ --description="Peering range for Apigee services" \ --network=$NETWORK_NAME \ --purpose=VPC_PEERING \ --addresses=OPTIONAL_ADDRESSES \ --project=$PROJECT_ID
여기서
--addresses
를 사용하면 프리픽스 길이/22
에 주소 IP를 하나 이상 선택적으로 지정할 수 있습니다. 예를 들어 CIDR 블록192.168.0.0/22
을 할당하려면 주소에192.168.0.0
을 지정하고 프리픽스 길이에22
를 지정합니다. IP 할당 만들기도 참조하세요.--addresses
매개변수를 제공하지 않으면 gcloud에서 사용 가능한 주소 범위를 선택합니다.성공하면
gcloud
가 다음과 같이 응답합니다.Created [https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/addresses/google-svcs].
IP 주소 범위를 만든 후 주소는 해제할 때까지 프로젝트에 연결됩니다.
- CIDR 길이가 /28인 보조 IP 범위를 만듭니다. 이 범위는 Apigee에서 문제 해결 목적으로 사용되며 맞춤설정 또는 변경할 수 없습니다.
gcloud compute addresses create google-managed-services-support-1 \ --global \ --prefix-length=28 \ --description="Peering range for supporting Apigee services" \ --network=$NETWORK_NAME \ --purpose=VPC_PEERING \ --addresses=OPTIONAL_ADDRESSES \ --project=$PROJECT_ID
여기서
--addresses
를 사용하면 프리픽스 길이/28
에 주소 IP를 하나 이상 선택적으로 지정할 수 있습니다. 예를 들어 CIDR 블록192.168.0.0/28
을 할당하려면 주소에192.168.0.0
을 지정하고 프리픽스 길이에28
를 지정합니다. IP 할당 만들기도 참조하세요.--addresses
매개변수를 제공하지 않으면 gcloud에서 사용 가능한 주소 범위를 선택합니다. - 다음 명령어를 사용하여 네트워크에 서비스를 연결합니다.
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --network=$NETWORK_NAME \ --ranges=$RANGE_NAME,google-managed-services-support-1 \ --project=$PROJECT_ID
이 작업을 완료하는 데 몇 분 정도 걸릴 수 있습니다. 성공하면
gcloud
가 다음과 같이 응답합니다.Operation "operations/OPERATION_ID" finished successfully.
여기서 OPERATION_ID는 LRO(장기 실행 작업)의 UUID입니다.
Apigee가 네트워크와 Google 서비스 간의 연결을 만듭니다. 특히 Apigee는 VPC 피어링을 통해 프로젝트를 Service Networking API에 연결합니다. 또한 Apigee는 IP 주소도 프로젝트에 연결합니다.
4단계: 조직 만들기
조직은 Apigee의 최상위 컨테이너입니다. 여기에는 모든 API 프록시 및 관련 리소스가 포함됩니다. 자세한 내용은 조직 이해를 참조하세요.
- gcloud alpha organizations 명령어를 사용하여 새 평가 조직을 만듭니다.
gcloud alpha apigee organizations provision \ --runtime-location=$RUNTIME_LOCATION \ --analytics-region=$ANALYTICS_REGION \ --authorized-network=$NETWORK_NAME \ --project=$PROJECT_ID
여기서
--authorized-network
는 커스텀 피어링 네트워크의 이름입니다. 예를 들면default
입니다. -
provision
명령어를 실행하면 Google에서 LRO를 시작하여 평가 조직을 만듭니다. 이 작업이 완료되는 데 최대 40분이 걸립니다. 이 기간 동안gcloud
에는 다음이 표시됩니다.Provisioning organization...
평가 조직 및 연결된 런타임 인스턴스가 생성되면
gcloud
에서 다음과 같이 응답합니다.Provisioning organization...done.
-
다음 명령어를 실행하는 경우
gcloud alpha apigee operations list --organization=$PROJECT_ID
모든 UUID가
FINISHED
상태이어야 합니다. 예를 들면 다음과 같습니다.UUID ORGANIZATION STATE 00bab06f-c60c-41a5-4242-7SAMPLE7f my-org FINISHED 429790a7-3151-4642-4343-7SAMPLE7f my-org FINISHED d00a92a9-9b83-4642-4343-7SAMPLE7f my-org FINISHED f48a00ff-7daa-4c4a-4444-7SAMPLE7f my-org FINISHED
5단계: 라우팅 구성
외부 액세스 또는 내부 전용 액세스 허용 여부를 결정합니다.
액세스 유형 | 구성 및 배포 프로세스 설명 |
---|---|
내부 |
API 프록시에 대한 내부 액세스만 허용합니다. 네트워크 내부에 새 VM을 만들고 연결해야 합니다. 새 VM에서 Apigee API 프록시에 요청을 보낼 수 있습니다. |
외부 |
API 프록시에 대한 외부 액세스를 허용합니다. Private Service Connect(PSC)를 사용하여 서비스 프로듀서(Apigee)와 서비스 소비자(피어링된 VPC 프로젝트 또는 제어하는 하나 이상의 다른 Cloud 프로젝트) 간의 비공개 연결을 사용 설정합니다. 이 방법을 사용하면 요청이 전역 외부 부하 분산기를 통해 서비스 연결이라는 단일 연결 지점으로 전달됩니다. 이 구성을 사용하면 네트워크가 사용 설정된 모든 머신에서 Apigee API 프록시 요청을 보낼 수 있습니다. |
이러한 각 라우팅 방식은 아래의 안내 탭에 나와 있습니다.
내부 라우팅
명령줄을 사용하여 내부 액세스 전용 API 프록시를 설정하는 경우 이 단계를 수행할 작업이 없습니다. API 프록시에 요청을 보내는 6단계: 샘플 API 프록시 호출로 건너뛸 수 있습니다.
외부 라우팅
이 섹션에서는 Apigee 및 제어하는 VPC 사이의 통신을 허용하도록 Private Service Connect(PSC)를 사용하여 외부 라우팅을 구성하는 방법을 설명합니다. 외부 클라이언트에서 Apigee 런타임 인스턴스로 요청을 보내려면 먼저 이 작업을 수행해야 합니다.
외부 구성 단계는 다음과 같습니다.
5a단계: 네트워크 엔드포인트 그룹 (NEG) 만들기
5b단계: 부하 분산기 구성
다음 섹션에서 각 단계를 설명합니다.
5a단계: 네트워크 엔드포인트 그룹(NEG) 만들기
- Apigee 인스턴스의 서비스 연결을 가져옵니다.
curl -i -X GET -H "$AUTH" \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"
다음 샘플 출력에서
serviceAttachment
값은 굵게 표시됩니다.{ "instances": [ { "name": "eval-instance", "location": "us-west1", "host": "10.72.100.2", "port": "443", "createdAt": "1657832463500", "lastModifiedAt": "1657833920670", "state": "ACTIVE", "peeringCidrRange": "SLASH_22", "runtimeVersion": "1-8-0-apigee-18", "ipRange": "10.74.100.0/28,10.74.100.16/28", "consumerAcceptList": [ "apigee-eval-test" ], "serviceAttachment": "projects/s8da1b0111eb33765-tp/regions/us-west1/serviceAttachments/apigee-us-west1-icza" } ] }
이전 단계의 인스턴스 응답 본문에서 얻은 서비스 연결을 가리키는 Private Service Connect 네트워크 엔드포인트 그룹(NEG)을 만듭니다.
gcloud compute network-endpoint-groups create NEG_NAME \ --network-endpoint-type=private-service-connect \ --psc-target-service=TARGET_SERVICE \ --region=$RUNTIME_LOCATION \ --network=$NETWORK_NAME \ --subnet=SUBNET_NAME \ --project=$PROJECT_ID
다음을 바꿉니다.
- NEG_NAME: 네트워크 엔드포인트 그룹의 이름입니다.
- TARGET_SERVICE: 연결할 서비스 연결입니다. 예를 들면
projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7
입니다. - SUBNET_NAME: 제작자에 대한 비공개 연결에 사용되는 서브넷의 이름입니다. 서브넷 크기는 작을 수 있습니다. PSC NEG에는 서브넷에서 하나의 IP만 있으면 됩니다. Apigee의 경우 리전당 하나의 PSC NEG만 필요합니다. 서브넷은 VM 또는 다른 항목에서 공유하고 사용할 수 있습니다. 서브넷이 지정되지 않은 경우 네트워크 엔드포인트는 네트워크 엔드포인트 그룹이 생성된 리전의 모든 서브네트워크에 속할 수 있습니다.
5b단계: 부하 분산기 구성
전역 외부 HTTP(S) 부하 분산기(부하 분산 스키마를 EXTERNAL_MANAGED
로 설정)를 구성합니다.
Private Service Connect NEG는 리전별이지만 이 구성의 다른 모든 부하 분산 구성요소는 전역적입니다.
- 부하 분산기의 전역 외부 IPv4 주소를 예약합니다.
gcloud compute addresses create ADDRESS_NAME \ --ip-version=IPV4 --global --project=$PROJECT_ID
ADDRESS_NAME를 IP 주소 리소스의 이름으로 바꿉니다
다음 명령어를 실행하여 예약된 IP 주소를 확인합니다.
gcloud compute addresses describe ADDRESS_NAME \ --format="get(address)" --global --project=$PROJECT_ID
- NEG의 백엔드 서비스를 만듭니다.
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --global --project=$PROJECT_ID
- NEG에 백엔드 서비스를 추가합니다.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --network-endpoint-group=NEG_NAME \ --network-endpoint-group-region=$RUNTIME_LOCATION \ --global --project=$PROJECT_ID
다음을 바꿉니다.
- BACKEND_SERVICE_NAME: 백엔드 서비스의 이름입니다.
- NEG_NAME: 네트워크 엔드포인트 그룹의 이름입니다.
부하 분산기의 URL 맵을 만듭니다.
URL 맵은 기본 백엔드 서비스를 참조해야 합니다. 방금 만든 백엔드 서비스를 기본값으로 설정합니다.
gcloud compute url-maps create URL_MAP_NAME \ --default-service=DEFAULT_BACKEND_SERVICE_NAME \ --global --project=$PROJECT_ID
다음을 바꿉니다.
- URL_MAP_NAME: URL 맵의 이름입니다.
- DEFAULT_BACKEND_SERVICE_NAME: 부하 분산기의 기본 백엔드 서비스 이름입니다. 요청된 호스트 이름과 일치하는 호스트 규칙이 없는 경우 기본값이 사용됩니다.
HTTPS 대상 프록시의 SSL 인증서를 만듭니다.
HTTPS 부하 분산기를 만들려면 HTTPS 대상 프록시에서 사용할 SSL 인증서 리소스가 있어야 합니다. Google 관리형 SSL 인증서 또는 자체 관리형 SSL 인증서를 사용하여 SSL 인증서 리소스를 만들 수 있습니다.
이 명령어를 사용하여 Google 관리형 SSL 인증서 리소스를 만듭니다.
gcloud compute ssl-certificates create CERTIFICATE \ --domains DOMAIN --project=$PROJECT_ID
다음을 바꿉니다.
- CERTIFICATE: 인증서의 이름입니다.
- DOMAIN: 외부 부하 분산기에 사용할 도메인 이름입니다.
자체 관리형 SSL 인증서를 만들려면 로컬 비공개 키 파일과 로컬 인증서 파일이 필요합니다. 이러한 파일을 만들어야 하는 경우 자체 관리형 SSL 인증서 사용을 참조하세요.
gcloud compute ssl-certificates create CERTIFICATE \ --certificate LB_CERT \ --private-key LB_PRIVATE_KEY --project=$PROJECT_ID
다음을 바꿉니다.
- CERTIFICATE: 인증서의 이름입니다.
- LB_CERT: 자체 관리형 인증서에 대한 PEM 형식 인증서의 경로입니다.
- LB_PRIVATE_KEY: 자체 관리형 인증서에 대한 PEM 형식 비공개 키 파일의 경로입니다.
-
인증서를 프로비저닝하려면 최대 1시간까지 걸릴 수 있습니다. 프로비저닝 상태를 확인하려면 다음 명령어를 실행합니다.
gcloud compute ssl-certificates describe CERTIFICATE \ --global \ --format="get(name,managed.status, managed.Status)"
- 자동으로 생성된 Apigee 환경 그룹에 도메인을 추가합니다. 환경 그룹 이름은
eval-group
입니다.curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/eval-group" \ -H "$AUTH" \ -X PATCH \ -H "Content-Type:application/json" \ -d '{ "hostnames":["'"DOMAIN"'"] }'
- 환경 그룹 작업의 상태를 확인합니다.
curl -H "$AUTH" \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/eval-group/attachments"
-
SSL 인증서 리소스를 사용하여 대상 HTTPS 프록시를 만듭니다.
gcloud compute target-https-proxies create PROXY_NAME \ --url-map=URL_MAP_NAME \ --ssl-certificates=CERTIFICATE --project=$PROJECT_ID
다음을 바꿉니다.
- PROXY_NAME: 대상 HTTPS 프록시의 이름입니다.
- URL_MAP_NAME: URL 맵의 이름입니다.
- CERTIFICATE: 인증서 리소스의 이름입니다.
- 전달 규칙을 만듭니다.
gcloud compute forwarding-rules create FWD_RULE \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=ADDRESS_NAME \ --target-https-proxy=PROXY_NAME \ --ports=443 \ --global --project=$PROJECT_ID
다음을 바꿉니다.
- FWD_RULE: 전달 규칙의 이름입니다.
- ADDRESS_NAME: 전달 규칙에 사용하도록 예약한 IP 주소 리소스입니다.
- PROXY_NAME: 대상 HTTPS 프록시의 이름입니다.
BACKEND_SERVICE_NAME을 백엔드 서비스 이름으로 바꿉니다.
Apigee 프로비저닝이 완료되었습니다.
6단계: 샘플 API 프록시 호출
프로비저닝 중에 hello-world
라는 API 프록시가 생성되고 배포되었습니다. 이 단계에서는 프록시를 호출하여 새 평가 조직을 테스트합니다.
내부 라우팅으로 프록시 호출
5단계에서 내부 라우팅 옵션을 선택한 경우 내부 전용 액세스로 API 프록시 호출의 단계를 수행합니다.
외부 라우팅으로 프록시 호출
5단계에서 외부 라우팅 옵션을 선택한 경우 이 섹션의 단계를 수행합니다.
- 도메인의 DNS 항목을 설정합니다. 이 태스크를 수행하는 다음과 같은 두 가지 방법이 있습니다.
- 등록기관에서 도메인을 가리키는 A 레코드를 만듭니다. 예를 들어 도메인이
sales.example.com
이고 IP가 10.23.0.2이면sales.example.com
의 레코드로10.23.0.2
주소를 가리킵니다.다음 명령어를 실행하여 예약된 IP 주소를 확인합니다.
gcloud compute addresses describe ADDRESS_NAME \ --format="get(address)" --global --project=$PROJECT_ID
- Google Cloud DNS를 사용하여 URL을 IP 주소에 매핑합니다.
- 등록기관에서 도메인을 가리키는 A 레코드를 만듭니다. 예를 들어 도메인이
hello-world
프록시가 배포되었는지 확인합니다.curl -i -H "$AUTH" \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/eval/apis/hello-world/revisions/1/deployments"
- API 프록시를 호출합니다.
다음 명령어를 실행하여 모든 네트워크가 사용 설정된 머신에서 API 프록시에 요청을 보냅니다.
curl -i -H "Host: DOMAIN" \ https://DOMAIN/hello-world
여기서 DOMAIN은 5단계: 라우팅 구성의 설명대로 인증서에 넣고 환경 그룹에 추가한 도메인입니다. 필요한 경우 이 API를 사용하여 환경 그룹에서
DOMAIN
값을 가져올 수 있습니다.curl -i -H "$AUTH" \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups"
성공하면 샘플 API 프록시에서 응답을 반환합니다.
Hello, Guest!
문제해결 팁:
핸드셰이크 오류가 표시되면 SSL 인증서 상태를 확인합니다. 자체 관리형 인증서 및 Google 관리형 인증서 문제 해결에 대한 자세한 내용은 SSL 인증서 문제 해결을 참조하세요.
등록된 도메인에 5단계에서 만든 전역 외부 IPv4 주소의 IP 주소를 가리키는 A 레코드가 있는지 확인합니다. 다음 명령어를 실행하여 예약된 IP 주소를 확인합니다.
gcloud compute addresses describe ADDRESS_NAME \ --format="get(address)" --global --project=$PROJECT_ID
도메인 구성을 확인할 수 없으면 다음 명령어를 사용하여 프록시 호출을 시도해 봅니다.
curl -H Host:DOMAIN --resolve \ DOMAIN:443:EXTERNAL_IP_ADDRESS \ https://DOMAIN:443/hello-world -k
다음: API 프록시 빌드 및 배포에 대한 자세한 내용은 첫 번째 API 프록시 빌드 개요를 참조하세요.