이 페이지는 Apigee에 적용되지만 Apigee Hybrid에는 적용되지 않습니다.
Apigee Edge 문서 보기
이 문서에서는 내부 네트워크에서 실행되는 클라이언트에서 API 프록시를 호출하는 방법을 설명합니다. 다음 단계는 Apigee가 내부 네트워크 라우팅을 사용하도록 프로비저닝된 경우 설정을 테스트하는 데 유용합니다. Apigee가 다음 네트워크 라우팅 구성으로 프로비저닝됐으면 이 문서의 단계를 수행할 수 있습니다.
프로비저닝 옵션 | 네트워킹 옵션 | 프로비저닝 단계 |
---|---|---|
유료 구독 | VPC 피어링 사용 | 내부 라우팅(VPC) 내부 라우팅(PSC) |
Pay-as-you-go | VPC 피어링 사용 | 내부 라우팅(VPC) 내부 라우팅(PSC) |
평가 | VPC 피어링 사용 | 라우팅 구성(내부) |
평가 | VPC 피어링 미사용 | 내부 라우팅(PSC) |
네트워킹 옵션도 참조하세요.
시작하기 전에
다음과 같은 사전 설정 단계를 수행하세요.
- 아직 Cloud SDK를 초기화하지 않았으면 gcloud CLI 초기화 설명대로 초기화하거나 기본 요건에서 만든 Google Cloud 프로젝트가
gcloud
의 기본 프로젝트인지 확인합니다. -
다음 로컬 환경 변수를 정의합니다.
export PROJECT_ID=YOUR_PROJECT_ID
export AUTH="Authorization: Bearer $(gcloud auth print-access-token)"
export SUBNET=NETWORK_NAME
export INSTANCE_NAME=INSTANCE_NAME
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
각 항목의 의미는 다음과 같습니다.
PROJECT_ID
는 기본 요건의 일부로 만든 Cloud 프로젝트 ID입니다.AUTH
는 Bearer 토큰이 있는Authentication
헤더를 정의합니다. Apigee API를 호출할 때 이 헤더를 사용합니다. 토큰은 일정 시간 후 만료됩니다. 만료 후에는 동일 명령어를 사용해서 다시 생성할 수 있습니다. 자세한 내용은 print-access-token 명령어의 참조 페이지를 확인하세요.SUBNET
은 프로비저닝 중에 지정한 서브넷입니다. 예를 들면default
입니다.INSTANCE_NAME
: 새 인스턴스의 이름입니다. 예를 들면my-runtime-instance
입니다. 이름은 소문자로 시작해야 하며 최대 32자(영문 기준)이고 소문자, 숫자, 하이픈만 포함할 수 있습니다. 하이픈으로 시작하거나 끝날 수 없으며 2자(영문 기준) 이상이어야 합니다.PROJECT_NUMBER
는 기본 요건의 일부로 만든 Cloud 프로젝트 번호입니다. 이 예시에서는gcloud
명령어를 실행하여 프로젝트 번호를 가져옵니다.
- Apigee 인스턴스에서
location
속성의 값을 가져옵니다. 이 값은 인스턴스가 위치한 리전입니다(예:us-west1
).curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances
- 인스턴스 리전 내에서 영역을 선택하고 변수에 영역 이름을 입력합니다.
영역은 인스턴스 내에 있어야 합니다. 예를 들면 다음과 같습니다.
export VM_ZONE="us-west1-b"
인스턴스 리전 내에서 영역을 식별하는 데 도움이 필요할 경우 이
gcloud
명령어를 사용하면 구성된 런타임 리전의 영역 이름을 반환합니다. 예를 들면 다음과 같습니다.VM_ZONE=$(gcloud compute zones list | grep "us-west1" | head -n 1 | awk '{print $1}')
VM 만들기 및 API 프록시 호출
이제 gcloud beta compute 명령어를 사용하여 VPC 네트워크 내에 새 VM을 만듭니다. VM은 내부 부하 분산기 IP로 요청을 보낼 수 있는 다리 역할을 합니다. VM이 설정된 후에 배포된 API 프록시를 호출할 수 있습니다.
-
다음 예시에서는 몇 가지 일반적인 옵션으로 새 VM을 만들고 이전에 정의한 환경 변수를 입력으로 사용합니다.
gcloud beta compute --project=$PROJECT_ID \ instances create $INSTANCE_NAME \ --zone=$VM_ZONE \ --machine-type=e2-micro \ --subnet=$SUBNET \ --network-tier=PREMIUM \ --no-restart-on-failure \ --maintenance-policy=TERMINATE \ --preemptible \ --service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --tags=http-server,https-server \ --image=debian-12-bookworm-v20240701 \ --image-project=debian-cloud \ --boot-disk-size=10GB \ --boot-disk-type=pd-standard \ --boot-disk-device-name=$INSTANCE_NAME \ --no-shielded-secure-boot \ --shielded-vtpm \ --shielded-integrity-monitoring \ --reservation-affinity=any
-
방금 생성한 새 VM에 대한 보안 연결을 엽니다.
gcloud compute ssh $INSTANCE_NAME --zone=$VM_ZONE --project=$PROJECT_ID
- VM 셸에서
jq
유틸리티를 설치합니다. 후속 단계에서 사용됩니다.sudo apt-get update -y
sudo apt-get install -y jq
- VM 셸에서 API 프록시 요청을 쉽게 복사하고 붙여넣기할 수 있도록 다음과 같은 환경 변수를 만듭니다.
export AUTH="Authorization: Bearer $(gcloud auth print-access-token)"
export PROJECT_ID=YOUR_PROJECT_ID
export ENV_GROUP_HOSTNAME=$(curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups -s | jq -r '.environmentGroups[0].hostnames[0]')
- 변수가 올바르게 설정되었는지 확인합니다.
echo $AUTH
echo $PROJECT_ID
echo $ENV_GROUP_HOSTNAME
- API 프록시를 호출합니다. Apigee 프로비저닝 중에 라우팅을 구성한 방법에 해당하는 옵션을 선택합니다.
VPC 피어링을 사용하는 설치 옵션
- (TLS 옵션 #1) 내부 라우팅(VPC)에 설명된 대로 프로젝트에서 내부 부하 분산기(ILB)를 구성한 경우 해당 ILB의 IP를 사용하여 프록시를 호출합니다.
이 옵션에서는 사용자가 제어하고 내부 부하 분산기를 만들 때 생성된 CA 인증서를 사용합니다.
- VM 인스턴스 그룹 백엔드로 내부 HTTP(S) 부하 분산 설정에 설명된 대로 프로젝트에서 ILB의 IP를 가져옵니다.
- API 프록시를 호출합니다.
curl -H "Host: $ENV_GROUP_HOSTNAME" \ https://INTERNAL_LOAD_BALANCER_IP/PROXY_BASEPATH
- (TLS 옵션 2) Apigee 프로젝트의 내부 부하 분산기로 확인되는 정규화된 기본 도메인 이름을 사용합니다. 이 옵션의 경우 TLS는 내부적으로 생성된 Apigee 자체 서명 인증서를 통해 사용됩니다. 이러한 인증서를 제어할 수 없습니다.
- Apigee 프로젝트에서 내부 부하 분산기의 IP를 가져옵니다.
export INTERNAL_LOAD_BALANCER_IP=$(curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances -s | jq -r '.instances[0].host')
- 다음 명령어를 사용하여 조직을 만드는 동안 생성된 CA 인증서를 가져옵니다.
curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID | jq -r .caCertificate | base64 -d > cacert.crt
- 요청을 배포된 API 프록시에 보냅니다. 여기서
example.$PROJECT_ID.apigee.internal
은 내부 부하 분산기로 확인되는 내부의 정규화된 기본 도메인 이름입니다.curl -is -H "Host: $ENV_GROUP_HOSTNAME" \ https://example.$PROJECT_ID.apigee.internal/PROXY_BASEPATH \ --cacert cacert.crt \ --resolve example.$PROJECT_ID.apigee.internal:443:$INTERNAL_LOAD_BALANCER_IP
- Apigee 프로젝트에서 내부 부하 분산기의 IP를 가져옵니다.
- (TLS가 아닌 옵션) TLS가 필요하지 않으면
curl
명령어에서-k
플래그를 사용하여 TLS를 중지합니다. 그러면 SSL 문제를 방지할 수 있습니다.- Apigee 프로젝트에서 내부 부하 분산기의 IP를 가져옵니다.
export INTERNAL_LOAD_BALANCER_IP=$(curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances -s | jq -r '.instances[0].host')
- API 프록시를 호출합니다.
curl -i -k \ -H "Host: $ENV_GROUP_HOSTNAME" \ https://$INTERNAL_LOAD_BALANCER_IP/PROXY_BASEPATH
- Apigee 프로젝트에서 내부 부하 분산기의 IP를 가져옵니다.
- (서비스 엔드포인트 옵션) PSC로 유료 또는 평가 조직을 프로비저닝하고 서비스 엔드포인트 라우팅 옵션을 선택한 경우:
- 서비스 엔드포인트 IP를 가져옵니다. 엔드포인트 IP를 조회해야 하는 경우 엔드포인트 나열을 참조하세요.
- API 프록시를 호출합니다.
curl -i -k \ -H "Host: $ENV_GROUP_HOSTNAME" \ https://SERVICE_ENDPOINT_IP/PROXY_BASEPATH
예를 들면 다음과 같습니다.
curl -H "Host: $ENV_GROUP_HOSTNAME" https://10.138.0.2/helloworld -k
비VPC 피어링을 사용하지 않는 설치 옵션
- (서비스 엔드포인트 옵션) PSC로 유료 또는 평가 조직을 프로비저닝하고 서비스 엔드포인트 라우팅 옵션을 선택한 경우:
- 서비스 엔드포인트 IP를 가져옵니다. 엔드포인트 IP를 조회해야 하는 경우 엔드포인트 나열을 참조하세요.
- API 프록시를 호출합니다.
curl -i -k \ -H "Host: $ENV_GROUP_HOSTNAME" \ https://SERVICE_ENDPOINT_IP/PROXY_BASEPATH
예를 들면 다음과 같습니다.
curl -H "Host: $ENV_GROUP_HOSTNAME" https://10.138.0.2/helloworld -k
이 프로세스 중에 오류가 발생하면 명령어에 사용하려고 만든 모든 환경 변수에 유효한 값이 있는지 확인하세요. 문제 해결도 참조하세요.
다음 단계
배포할 수 있는 프록시를 생성하거나 Apigee의 기능(예: 트래픽 급증 방지 또는 요청/응답 흐름의 세부정보 보기)을 소개하는 Apigee 튜토리얼을 둘러보세요.
(고급) 이를 프로덕션 설정으로 전환할 계획이라면 새 클러스터 및 관련 클라우드 서비스 주변에 보안 경계를 구성할 수 있습니다. VPC 서비스 제어를 사용하면 됩니다.
- (TLS 옵션 #1) 내부 라우팅(VPC)에 설명된 대로 프로젝트에서 내부 부하 분산기(ILB)를 구성한 경우 해당 ILB의 IP를 사용하여 프록시를 호출합니다.
이 옵션에서는 사용자가 제어하고 내부 부하 분산기를 만들 때 생성된 CA 인증서를 사용합니다.