이 페이지는 Apigee 에 적용되지만 Apigee Hybrid 에는 적용되지 않습니다.
Apigee Edge 문서 보기
이 문서에서는 VPC 피어링으로 명령줄에서 Apigee를 설치하고 구성하는 방법을 설명합니다. 이 단계는 데이터 상주 사용 설정 여부에 관계없이 유료 조직의 구독 가격 책정 모델과 사용한 만큼만 지불 가격 책정 모델 모두에 적용됩니다.
단계 요약
프로비저닝 단계는 다음과 같습니다.
1단계: 환경 변수 정의
gcloud
를 설정하고 이후 단계에서 사용할 환경 변수를 정의합니다.
시작하기 전에 에 나열된 설정 요구사항을 완료했는지 확인합니다.
Cloud SDK가 설치되어 있어야 합니다. 이를 설치하려면 Cloud SDK 설치 를 참조하세요.
gcloud CLI 초기화 의 설명대로 Cloud SDK를 초기화하거나 기본 요건 에서 만든 Google Cloud 프로젝트가 gcloud
의 기본 프로젝트인지 확인합니다.
명령어 터미널에서 다음 환경 변수를 정의합니다.
필요한 조직 유형에 해당하는 탭(데이터 상주 없음 또는 데이터 상주 )을 선택합니다.
팁: 필요한 경우 쉽게 복원할 수 있도록 환경 변수를 텍스트 파일에 저장합니다.
데이터 상주 없음
AUTH ="$(gcloud auth print-access-token)"
PROJECT_ID ="YOUR_PROJECT_ID "
PROJECT_NUMBER =$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
RUNTIME_LOCATION ="YOUR_RUNTIME_LOCATION "
ANALYTICS_REGION ="YOUR_ANALYTICS_REGION "
BILLING_TYPE ="YOUR_BILLING_TYPE "
참고 : 조직 정책에 리소스 위치 제약조건 이 적용된 Google Cloud 프로젝트 내에서 새 Apigee 조직을 프로비저닝하는 경우 위치 제약조건이 global
로 설정되어 있는지 확인합니다. Apigee 제어 영역은 기본적으로 전역 항목이므로 global
이외의 제약조건이 적용되면 프로비저닝이 실패합니다. 자세한 내용은 데이터 상주 소개 를 참조하세요.
각 항목의 의미는 다음과 같습니다.
AUTH 는 Bearer 토큰이 있는 Authentication
헤더를 정의합니다.
Apigee API를 호출할 때 이 헤더를 사용합니다. 토큰은 일정 시간 후 만료됩니다. 만료 후에는 동일 명령어를 사용해서 다시 생성할 수 있습니다. 자세한 내용은 print-access-token 명령어 의 참조 페이지를 확인하세요.
PROJECT_ID 는 기본 요건 의 일부로 만든 Cloud 프로젝트 ID입니다.
PROJECT_NUMBER 는 기본 요건 의 일부로 만든 Cloud 프로젝트 번호입니다.
RUNTIME_LOCATION 은 나중에 만들 Apigee 인스턴스가 있는 물리적 위치입니다. 사용 가능한 런타임 위치 목록은 Apigee 위치 를 참조하세요.
참고: RUNTIME_LOCATION
의 경우 영역 이름이 아닌 리전 이름을 사용해야 합니다. 예를 들어 us-west1
은 리전 이름이고 us-west1-a
는 리전 내 영역입니다.
리전 또는 영역 식별 도 참조하세요.
ANALYTICS_REGION 은 Apigee 분석 데이터가 저장되는 물리적 위치입니다. 사용 가능한 Apigee API 분석 리전 목록은 Apigee 위치 를 참조하세요.
RUNTIME_LOCATION 과 ANALYTICS_REGION 은 둘 다 같은 리전일 수 있지만 반드시 동일할 필요는 없습니다.
BILLING_TYPE 은 만드는 조직의 결제 유형입니다. 유효한 값은 다음과 같습니다.
데이터 상주
AUTH ="$(gcloud auth print-access-token)"
PROJECT_ID ="YOUR_PROJECT_ID "
PROJECT_NUMBER =$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
RUNTIME_LOCATION ="YOUR_RUNTIME_LOCATION "
CONTROL_PLANE_LOCATION ="YOUR_CONTROL_PLANE_LOCATION "
CONSUMER_DATA_REGION ="YOUR_CONSUMER_DATA_REGION "
BILLING_TYPE ="YOUR_BILLING_TYPE "
중요: 데이터 상주를 사용할 때 제어 영역 위치는 포함 리전입니다. 다른 모든 리전은 제어 영역 위치 내에 있어야 합니다. 제어 영역 위치가 us
인 경우 소비자 데이터 리전과 런타임 위치도 us
내에 있어야 합니다.
예를 들어 us-west1
은 허용되지만 europe-west1
은 허용되지 않습니다.
각 항목의 의미는 다음과 같습니다.
(선택사항) 방금 설정한 값을 에코하여 작업을 확인합니다. 명령어에 변수를 사용하려면 변수 이름 앞에 달러 기호($ )를 추가합니다.
데이터 상주 없음
echo $AUTH
echo $PROJECT_ID
echo $PROJECT_NUMBER
echo $RUNTIME_LOCATION
echo $ANALYTICS_REGION
echo $BILLING_TYPE
echo
명령어에 대한 응답은 다음과 같이 표시됩니다.
YOUR_TOKEN
my-cloud-project
1234567890
us-west1
us-west1
SUBSCRIPTION
데이터 상주
echo $AUTH
echo $PROJECT_ID
echo $PROJECT_NUMBER
echo $RUNTIME_LOCATION
echo $CONTROL_PLANE_LOCATION
echo $CONSUMER_DATA_REGION
echo $BILLING_TYPE
echo
명령어에 대한 응답은 다음과 같이 표시됩니다.
YOUR_TOKEN
my-cloud-project
1234567890
us-west1
us
us-west1
SUBSCRIPTION
2단계: API 사용 설정
이 태스크에 필요한 권한
이 태스크를 완료하는 데 필요한 권한이 포함된 사전 정의된 역할을 Apigee 프로비저닝 도구에 제공하거나 필요한 최소 권한을 제공하는 보다 세분화된 권한을 부여할 수 있습니다. 사전 정의된 역할 과 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를 포함한 사용 설정된 모든 서비스가 응답으로 표시됩니다.
3단계: Apigee 서비스 에이전트 만들기
경고: 서비스 계정 은 Apigee에서 런타임 인스턴스를 프로비저닝하는 데 필요한 특수 계정입니다. 서비스 계정을 삭제하면 런타임 인스턴스를 사용할 수 없게 됩니다.
Apigee 서비스 ID 를 만듭니다.
gcloud beta services identity create --service=apigee.googleapis.com \
--project=$PROJECT_ID
에이전트가 성공적으로 생성되었는지 확인합니다. 응답에 에이전트 이름이 service-PROJECT_NUMBER @gcp-sa-apigee.iam.gserviceaccount.com
형식으로 표시됩니다.
예를 들면 다음과 같습니다.
Service identity created: service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com
4단계: 서비스 네트워킹 구성
이 단계에서는 IP 주소 범위 쌍(/22 및 /28 CIDR 범위)을 Apigee에 할당하고 네트워크와 Apigee 네트워크 간에 VPC 피어링을 수행합니다. 각 Apigee 인스턴스에는 /22 및 /28의 중첩되지 않는 CIDR 범위가 필요합니다. Apigee 런타임 영역에는 이 CIDR 범위 내의 IP 주소가 할당됩니다. 따라서 이 범위는 Apigee에 예약되어야 하며 VPC 네트워크의 다른 애플리케이션에서 사용하면 안 됩니다. 자세한 내용 및 중요한 고려사항은 피어링 범위 이해 를 참조하세요.
지금 만드는 것은 Apigee 인스턴스 1개 에 충분한 네트워크 IP 범위입니다. 추가 Apigee 인스턴스를 만들려면 각 인스턴스에 대해 이 단계를 반복해야 합니다. 인스턴스 간에 범위를 공유할 수 없습니다. Apigee를 여러 리전으로 확장 도 참조하세요.
중요: 이미 servicenetworking.googleapis.com
과 피어링 범위 및 비공개 연결이 설정되었으며, 사용자의 범위가 /22
및 /28
CIDR 범위를 더 처리할 수 있을 정도로 큰 경우, 이 단계를 건너뛰어도 됩니다. Apigee에서 필요한 CIDR 블록을 만들어 줍니다. 이 단계는 /22
및 /28
블록을 생성할 공간을 아직 만들지 않았거나, 현재는 존재하지 않는 특정 /22
및 /28
을 사용하고자 하는 경우에만 필요합니다.
이 태스크에 필요한 권한
이 태스크를 완료하는 데 필요한 권한이 포함된 사전 정의된 역할을 Apigee 프로비저닝 도구에 제공하거나 필요한 최소 권한을 제공하는 보다 세분화된 권한을 부여할 수 있습니다. 사전 정의된 역할 과 서비스 네트워킹 권한 을 참조하세요.
다음 환경 변수를 만듭니다.
RANGE_NAME =YOUR_RANGE_NAME
NETWORK_NAME =YOUR_NETWORK_NAME
각 항목의 의미는 다음과 같습니다.
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
를 사용하면 IP 주소 범위를 필요에 따라 지정할 수 있습니다. 예를 들어 CIDR 블록 192.168.0.0/22
를 할당하려면 주소에 192.168.0.0
을 지정하고 프리픽스 길이에 22
를 지정합니다. IP 할당 만들기 도 참조하세요.
--addresses
매개변수를 제공하지 않으면 gcloud에서 사용 가능한 IP 주소 범위를 선택합니다.
성공하면 gcloud
가 다음과 같이 응답합니다.
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_NAME /global/addresses/google-svcs].
IP 주소 범위를 만든 후 주소는 해제할 때까지 프로젝트에 연결됩니다.
CIDR 길이가 /22인 네트워크 IP 범위가 생성되었는지 확인합니다.
gcloud compute addresses list --global --project=$PROJECT_ID
gcloud compute addresses describe $RANGE_NAME --global --project=$PROJECT_ID
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
를 사용하면 IP 주소 범위를 필요에 따라 지정할 수 있습니다. 예를 들어 CIDR 블록 192.168.0.0/28
를 할당하려면 주소에 192.168.0.0
을 지정하고 프리픽스 길이에 28
를 지정합니다. IP 할당 만들기 도 참조하세요.
--addresses
매개변수를 제공하지 않으면 gcloud에서 사용 가능한 IP 주소 범위를 선택합니다.
CIDR 길이가 /28인 네트워크 IP 범위가 생성되었는지 확인합니다.
gcloud compute addresses list --global --project=$PROJECT_ID
gcloud compute addresses describe google-managed-services-support-1 --global \
--project=$PROJECT_ID
다음 명령어를 사용하여 네트워크에 서비스를 연결합니다.
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_ID 는 LRO 의 UUID입니다.
Operation "operations/OPERATION_ID " finished successfully.
Apigee가 네트워크와 Google 서비스 간의 연결을 만듭니다. 특히 Apigee는 VPC 피어링을 통해 프로젝트를 Service Networking API에 연결합니다. 또한 Apigee는 IP 주소도 프로젝트에 연결합니다.
몇 분 후 VPC 피어링이 성공했는지 확인합니다.
gcloud services vpc-peerings list \
--network=$NETWORK_NAME \
--service=servicenetworking.googleapis.com \
--project=$PROJECT_ID
5단계: 조직 만들기
이 태스크에 필요한 권한
이 작업을 완료하는 데 필요한 권한이 포함된 사전 정의된 역할을 Apigee 프로비저닝 도구에 제공하거나 필요한 최소 권한을 제공하는 보다 세분화된 권한을 부여할 수 있습니다. 다음을 참조하세요.
조직을 만들려면 먼저 런타임 데이터베이스 암호화 키링과 키를 만들고(1단계 참조), 데이터 상주 를 사용하는 경우 제어 영역 암호화 키링과 키를 만들어야 합니다(2단계 참조). 이러한 Cloud KMS 키는 런타임 및 제어 영역 위치 전반에서 저장되고 복제되는 데이터를 암호화합니다. Apigee는 이러한 항목을 사용하여 KVM, 캐시, 데이터베이스에 저장되어 있는 클라이언트 보안 비밀번호와 같은 애플리케이션 데이터를 암호화합니다. 자세한 내용은 Apigee 암호화 키 정보 를 참조하세요.
런타임 데이터베이스 암호화 키링과 키를 만듭니다.
런타임 데이터베이스 암호화 키링과 키의 위치에 대한 환경 변수를 정의합니다. 이렇게 하면 애플리케이션 키링 및 키를 만들 때 일관성을 유지하고 문서에서 더 쉽게 따를 수 있습니다.
값은 런타임 데이터베이스 암호화 키링과 키가 저장되는 물리적 위치입니다.
단일 리전
단일 리전 구성 (단일 리전에 인스턴스가 하나만 있는 경우): 지원되는 KMS 리전 위치 에서 선택합니다.
예를 들면 다음과 같습니다.
RUNTIMEDBKEY_LOCATION ="us-west1"
이 값은 $RUNTIME_LOCATION (리전이라고도 함)과 같을 수 있지만 반드시 그럴 필요는 없습니다. 그러나 동일하면 성능상 이점이 있을 수 있습니다.
멀티 리전
멀티 리전 구성: 지원되는 멀티 리전 위치 (예: us
또는 europe
) 또는 이중 리전 위치 에서 선택합니다.
예를 들면 다음과 같습니다.
RUNTIMEDBKEY_LOCATION ="us"
미국에서의 멀티 리전 구성을 갖고 있으면 가능한 경우 us
를 사용자 위치로 사용합니다. 그렇지 않은 경우 nam4
를 사용하세요.
데이터베이스 키링 및 키 이름의 환경 변수를 정의합니다.
키링의 이름은 조직에서 고유해야 합니다. 두 번째 또는 후속 리전을 만드는 경우 이름은 다른 키링의 이름과 동일할 수 없습니다.
RUNTIMEDB_KEY_RING_NAME =YOUR_DB_KEY_RING_NAME
RUNTIMEDB_KEY_NAME =YOUR_DB_KEY_NAME
(선택사항) 방금 설정한 값을 에코하여 작업을 확인합니다. 명령어에 변수를 사용하려면 변수 이름 앞에 달러 기호($ )를 추가합니다.
echo $RUNTIMEDBKEY_LOCATION
echo $RUNTIMEDB_KEY_RING_NAME
echo $RUNTIMEDB_KEY_NAME
새 키링을 만듭니다.
gcloud kms keyrings create $RUNTIMEDB_KEY_RING_NAME \
--location $RUNTIMEDBKEY_LOCATION --project $PROJECT_ID
Apigee 런타임 데이터베이스 암호화 키의 위치는 Cloud HSM 및 Cloud EKM 을 지원하는 모든 Cloud KMS 위치를 지원합니다.
키를 만듭니다.
gcloud kms keys create $RUNTIMEDB_KEY_NAME \
--keyring $RUNTIMEDB_KEY_RING_NAME \
--location $RUNTIMEDBKEY_LOCATION \
--purpose "encryption" \
--project $PROJECT_ID
이 명령어는 키링을 만들어 지정된 키링에 추가합니다.
키 ID를 가져옵니다.
gcloud kms keys list \
--location=$RUNTIMEDBKEY_LOCATION \
--keyring=$RUNTIMEDB_KEY_RING_NAME \
--project=$PROJECT_ID
키 ID에는 다음 문법(파일 경로와 유사)이 포함됩니다.
projects/PROJECT_ID /locations/RUNTIMEDBKEY_LOCATION /keyRings/RUNTIMEDB_KEY_RING_NAME /cryptoKeys/RUNTIMEDB_KEY_NAME
키 ID를 환경 변수에 입력합니다. 이후 명령어에서 이 변수를 사용하게 됩니다.
RUNTIMEDB_KEY_ID =YOUR_RUNTIMEDB_KEY_ID
Apigee 서비스 에이전트가 새 키를 사용할 수 있는 액세스 권한을 부여합니다.
gcloud kms keys add-iam-policy-binding $RUNTIMEDB_KEY_NAME \
--location $RUNTIMEDBKEY_LOCATION \
--keyring $RUNTIMEDB_KEY_RING_NAME \
--member serviceAccount:service-$PROJECT_NUMBER @gcp-sa-apigee.iam.gserviceaccount.com \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--project $PROJECT_ID
이 명령어는 키를 Apigee 서비스 에이전트에 결합합니다.
이 요청이 완료되면 gcloud
는 다음과 비슷한 응답을 보냅니다.
Updated IAM policy for key [runtime].
bindings:
- members:
- serviceAccount:service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com
role: roles/cloudkms.cryptoKeyEncrypterDecrypter
etag: BwWqgEuCuwk=
version: 1
다음과 같은 오류가 표시되는 경우:
INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.
서비스 계정 이메일 주소에 있는 프로젝트 이름이 아닌 프로젝트 번호 를 사용했는지 확인합니다.
데이터 상주 를 사용하는 경우 제어 영역 암호화 키링과 키를 만듭니다. 데이터 상주를 사용하지 않는 경우 3단계 로 이동합니다.
참고 : 이 단계는 컨트롤 플레인 호스팅 관할권으로 us (multiple regions in us)
또는 eu (multiple regions in European Union)
를 선택한 경우에만 필요합니다. 다른 리전을 선택한 경우 3단계 로 이동합니다.
다음 단계를 수행하여 제어 영역 암호화 키링 및 키를 만듭니다.
제어 영역 데이터베이스 암호화 키링과 키의 위치에 대한 환경 변수를 정의합니다.
CONTROL_PLANE_LOCATION =YOUR_CONTROL_PLANE_LOCATION
CONSUMER_DATA_REGION =YOUR_CONSUMER_DATA_REGION
각 항목의 의미는 다음과 같습니다.
CONTROL_PLANE_LOCATION 은 Apigee 제어 영역 데이터가 저장되는 물리적 위치입니다.
사용 가능한 제어 영역 위치 목록은 Apigee 위치 를 참조하세요.
CONSUMER_DATA_REGION 은 제어 영역 리전의 하위 리전입니다. CONTROL_PLANE_LOCATION 및 CONSUMER_DATA_REGION을 모두 지정해야 합니다.
사용 가능한 소비자 데이터 리전 목록은 Apigee 위치 를 참조하세요.
제어 영역 데이터베이스 키링과 키 이름에 대한 환경 변수를 정의합니다.
키링의 이름은 조직에서 고유해야 합니다.
CONTROL_PLANE_KEY_RING_NAME =YOUR_CONTROL_PLANE_KEY_RING_NAME
CONTROL_PLANE_KEY_NAME =YOUR_CONTROL_PLANE_KEY_NAME
CONSUMER_DATA_KEY_RING_NAME =YOUR_CONSUMER_DATA_KEY_RING_NAME
CONSUMER_DATA_KEY_NAME =YOUR_CONSUMER_DATA_REGION_KEY_NAME
각 항목의 의미는 다음과 같습니다.
CONTROL_PLANE_KEY_RING_NAME 은 제어 영역 암호화 키링 을 식별하는 데 사용할 키링의 이름입니다.
CONTROL_PLANE_KEY_NAME 은 제어 영역 암호화 키 를 식별하는 데 사용할 키의 이름입니다.
CONSUMER_DATA_KEY_RING_NAME 은 소비자 데이터 리전 암호화 키링 을 식별하는 데 사용할 키링의 이름입니다.
CONSUMER_DATA_KEY_NAME 은 소비자 데이터 리전 암호화 키 를 식별하는 데 사용할 키의 이름입니다.
새 키링을 만듭니다.
gcloud kms keyrings create $CONTROL_PLANE_KEY_RING_NAME \
--location $CONTROL_PLANE_LOCATION \
--project $PROJECT_ID
gcloud kms keyrings create $CONSUMER_DATA_KEY_RING_NAME \
--location $CONSUMER_DATA_REGION \
--project $PROJECT_ID
키를 만듭니다.
gcloud kms keys create $CONTROL_PLANE_KEY_NAME \
--keyring $CONTROL_PLANE_KEY_RING_NAME \
--location $CONTROL_PLANE_LOCATION \
--purpose "encryption" \
--project $PROJECT_ID
gcloud kms keys create $CONSUMER_DATA_KEY_NAME \
--keyring $CONSUMER_DATA_KEY_RING_NAME \
--location $CONSUMER_DATA_REGION \
--purpose "encryption" \
--project $PROJECT_ID
이 명령어는 키링을 만들어 지정된 키링에 추가합니다.
키 ID를 가져옵니다.
gcloud kms keys list \
--location=$CONTROL_PLANE_LOCATION \
--keyring=$CONTROL_PLANE_KEY_RING_NAME \
--project=$PROJECT_ID
gcloud kms keys list \
--location=$CONSUMER_DATA_REGION \
--keyring=$CONSUMER_DATA_KEY_RING_NAME \
--project=$PROJECT_ID
키 ID에는 다음 문법(파일 경로와 유사)이 포함됩니다.
projects/PROJECT_ID /locations/CONTROL_PLANE_LOCATION /keyRings/CONTROL_PLANE_KEY_RING_NAME /cryptoKeys/CONTROL_PLANE_KEY_NAME
projects/PROJECT_ID /locations/CONSUMER_DATA_REGION /keyRings/CONSUMER_DATA_KEY_RING_NAME /cryptoKeys/CONSUMER_DATA_KEY_NAME
키 ID를 환경 변수에 입력합니다. 이후 명령어에서 이 변수를 사용하게 됩니다.
CONTROL_PLANE_KEY_ID =YOUR_CONTROL_PLANE_KEY_ID
CONSUMER_DATA_KEY_ID =YOUR_CONSUMER_DATA_KEY_ID
Apigee 서비스 에이전트가 새 키를 사용할 수 있는 액세스 권한을 부여합니다.
gcloud kms keys add-iam-policy-binding $CONTROL_PLANE_KEY_NAME \
--location $CONTROL_PLANE_LOCATION \
--keyring $CONTROL_PLANE_KEY_RING_NAME \
--member "serviceAccount:service-$PROJECT_NUMBER @gcp-sa-apigee.iam.gserviceaccount.com" \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--project $PROJECT_ID
gcloud kms keys add-iam-policy-binding $CONSUMER_DATA_KEY_NAME \
--location $CONSUMER_DATA_REGION \
--keyring $CONSUMER_DATA_KEY_RING_NAME \
--member "serviceAccount:service-$PROJECT_NUMBER @gcp-sa-apigee.iam.gserviceaccount.com" \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--project $PROJECT_ID
이 명령어는 키를 Apigee 서비스 에이전트에 결합합니다. 이 요청이 완료되면 gcloud에서 다음과 같이 응답합니다.
Updated IAM policy for key [ runtime ] .
bindings :
- members :
- serviceAccount : service - 1234567890 @gcp - sa - apigee . iam.gserviceaccount.com
role : roles / cloudkms . cryptoKeyEncrypterDecrypter
etag : BwWqgEuCuwk =
version : 1
다음과 같은 오류가 표시되는 경우:
INVALID_ARGUMENT : Role roles / cloudkms . cryptokms . cryptoKeyEncrypterDecrypter is not supported for this resource .
서비스 계정 이메일 주소에 있는 프로젝트 이름이 아닌 프로젝트 번호를 사용했는지 확인합니다.
참조: CMEK 문제 해결
Apigee organizations API 에 다음 요청을 전송하여 조직을 만듭니다.
데이터 상주 없음
curl "https://apigee.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID " \
-H "Authorization: Bearer $AUTH " \
-X POST \
-H "Content-Type:application/json" \
-d '{
"name":"'"$PROJECT_ID "'",
"analyticsRegion":"'"$ANALYTICS_REGION "'",
"runtimeType":"CLOUD",
"billingType":"'"$BILLING_TYPE "'",
"authorizedNetwork":"'"$NETWORK_NAME "'",
"runtimeDatabaseEncryptionKeyName":"'"$RUNTIMEDB_KEY_ID "'"
}'
각 항목의 의미는 다음과 같습니다.
-d
: 요청의 데이터 페이로드를 정의합니다. 이 페이로드에는 다음이 포함되어야 합니다.
데이터 상주
API를 사용하여 조직을 만듭니다 .
curl "https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID " \
-H "Authorization: Bearer $AUTH " \
-X POST \
-H "Content-Type:application/json" \
-d '{
"name":"'"$PROJECT_ID "'",
"runtimeType":"CLOUD",
"billingType":"'"$BILLING_TYPE "'",
"controlPlaneEncryptionKeyName":"'"$CONTROL_PLANE_KEY_ID "'",
"apiConsumerDataLocation":"'"$CONSUMER_DATA_REGION "'",
"apiConsumerDataEncryptionKeyName":"'"$CONSUMER_DATA_KEY_ID "'",
"authorizedNetwork":"'"$NETWORK_NAME "'",
"runtimeDatabaseEncryptionKeyName":"'"$RUNTIMEDB_KEY_ID "'"
}'
각 항목의 의미는 다음과 같습니다.
-d
: 요청의 데이터 페이로드를 정의합니다. 이 페이로드에는 다음이 포함되어야 합니다.
name
: 새 조직의 식별자입니다. 프로젝트 ID와 동일한 이름이어야 합니다.
runtimeType
: 이 값을 CLOUD
로 설정합니다.
billingType
: 만든 조직의 결제 유형을 지정합니다.
controlPlaneEncryptionKeyName
: 제어 영역 키 ID입니다.
apiConsumerDataLocation
: 내부 리소스에서 사용할 하위 리전도 지정해야 합니다. 지원되는 값은 데이터 상주 리전 을 참조하세요.
apiConsumerDataEncryptionKeyName
: 소비자 데이터 리전 키 ID입니다.
authorizedNetwork
: 서비스 네트워킹 구성 에서 지정한 피어링 네트워크를 식별합니다.
runtimeDatabaseEncryptionKeyName
: 이전 단계에서 만든 애플리케이션 암호화 키의 ID입니다. ID는 파일 경로와 같이 구성되어 있습니다. 예를 들면 다음과 같습니다.
projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key
이 명령어를 실행하면 Apigee가 장기 실행 작업 을 시작합니다. 이 작업을 완료하는 데 몇 분 정도 걸릴 수 있습니다.
오류가 발생하면 데이터 페이로드의 변수 값에 따옴표를 사용했는지 확인합니다. 다음 예시와 같이 $PROJECT_ID 변수를 큰따옴표-작은따옴표-큰따옴표로 묶어야 합니다.
"'"$PROJECT_ID "'"
요청 값에 일반 문자열(환경 변수 아님)을 사용하는 경우 다음 예시와 같이 작은따옴표로 묶은 페이로드 문자열 안에 큰따옴표로 묶을 수 있습니다.
'{ "name":"my-gcp-project", ... }'
잠시만 기다려 주세요.
생성 요청의 상태를 확인하려면 다음 예시와 같이 Apigee List organizations API 로 GET
요청을 보내면 됩니다.
데이터 상주 없음
curl -H "Authorization: Bearer $AUTH " "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID "
데이터 상주
curl -H "Authorization: Bearer $AUTH " "https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID "
이 응답이 표시되면 조직 만들기가 아직 완료되지 않은 것입니다.
{
"error": {
"code": 403,
"message": "Permission denied on resource \"organizations/apigee-docs-m\" (or it may not exist)",
"status": "PERMISSION_DENIED"
}
}
Apigee가 새 조직을 성공적으로 만들면 다음과 비슷한 응답이 수신됩니다.
데이터 상주 없음
{
"name": "my-cloud-project",
"createdAt": "1592586495539",
"lastModifiedAt": "1592586495539",
"environments": [],
"properties": {
"property": [
{
"name": "features.hybrid.enabled",
"value": "true"
},
{
"name": "features.mart.connect.enabled",
"value": "true"
}
]
},
"analyticsRegion": "us-west1",
"runtimeType": "CLOUD",
"subscriptionType": "PAID",
"caCertificate": "YOUR_CERTIFICATE ",
"authorizedNetwork": "my-network",
"projectId": "my-cloud-project"
}
데이터 상주
{
"name": "my-cloud-project",
"createdAt": "1681412783749",
"lastModifiedAt": "1681412783749",
"environments": [
"test-env"
],
"properties": {
"property": [
{
"name": "features.mart.connect.enabled",
"value": "true"
},
{
"name": "features.hybrid.enabled",
"value": "true"
}
]
},
"authorizedNetwork": "default",
"runtimeType": "CLOUD",
"subscriptionType": "PAID",
"caCertificate": "YOUR_CERTIFICATE ",
"runtimeDatabaseEncryptionKeyName": "projects/my-cloud-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-key-name",
"projectId": "my-cloud-project",
"state": "ACTIVE",
"billingType": "PAYG",
"addonsConfig": {
"advancedApiOpsConfig": {},
"integrationConfig": {},
"monetizationConfig": {},
"connectorsPlatformConfig": {}
},
"apiConsumerDataEncryptionKeyName": "projects/my-cloud-project/locations/us-central1/keyRings/my-key-ring/cryptoKeys/my-key-name",
"controlPlaneEncryptionKeyName": "projects/my-cloud-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-key-name",
"apiConsumerDataLocation": "us-central1",
"apigeeProjectId": "i0c2a37e80f9850ab-tp"
}
Apigee가 HTTP 오류 응답을 반환하는 경우 Apigee 조직 만들기 를 참조하세요.
런타임 인스턴스는 Apigee 프로젝트 및 관련 서비스가 저장된 위치입니다. 이 위치는 서비스에 대한 사용자 대상 엔드포인트를 제공합니다. 새 런타임 인스턴스를 만들려면 다음 안내를 따르세요.
환경을 만들어 명령줄의 런타임에 연결하려면 다음 절차를 따르세요.
이 단계에서는 클라이언트 애플리케이션이 Apigee와 통신하는 방법을 구성합니다. 클라이언트-Apigee 트래픽을 '상위' 트래픽이라고도 합니다. 상위 구성 옵션은 다음과 같습니다.
사용할 구성 옵션으로 이동하고 해당 옵션에 대한 단계를 수행합니다.
이러한 각 라우팅 방식은 아래의 안내에 나와 있습니다.
내부 라우팅(VPC)
내부 클라이언트에서 Apigee로 트래픽을 라우팅하기 위해 TLS 종료를 사용할지 여부를 선택할 수 있습니다.
TLS 옵션: TLS가 사용 설정된 내부 클라이언트에서 API 프록시를 호출하려면 다음 두 가지 중에서 선택할 수 있습니다.
(옵션 1) 내부 부하 분산기(ILB)를 구성합니다.
프로젝트에서 관리형 인스턴스 그룹(MIG)을 만듭니다. MIG를 만들려면 외부 라우팅(MIG) 탭에서 8a , 8b , 8c 단계를 따르세요.
내부 HTTPS(S) 부하 분산기 (ILB)를 생성 및 구성하고 VM 인스턴스 그룹 백엔드로 내부 HTTP(S) 설정 에 설명된 대로, 생성된 MIG를 ILB의 백엔드 서비스에 연결합니다. ILB 구성을 사용하면 ILB와 함께 사용되는 CA 인증서를 완전히 제어할 수 있습니다.
설정을 테스트하려면 내부 전용 액세스로 API 프록시 호출 로 이동하세요.
(옵션 2) Apigee 인스턴스의 내부의 정규화된 기본 도메인 이름과 내부 부하 분산기 IP를 사용합니다. 이 사례는 테스트 목적으로만 권장되며 프로덕션 환경에서는 권장되지 않습니다. 이 경우 Apigee에서 만든 자체 서명 인증서가 Apigee의 내부 부하 분산기와 함께 사용되며 변경할 수 없습니다. 내부 전용 액세스로 API 프록시 호출 을 참조하세요.
비TLS 옵: TLS 종료를 사용 설정할 필요가 없으면 클라이언트가 TLS를 사용 중지하는 API 프록시를 호출할 수 있습니다. 예를 들어 cURL로 -k
옵션을 사용하면 TLS를 사용 중지할 수 있습니다. 내부 전용 액세스로 API 프록시 호출 을 참조하세요.
외부 라우팅(MIG)
이 섹션에서는 관리형 인스턴스 그룹 (MIG)을 사용하여 전역 부하 분산기의 백엔드 서비스에서 Apigee로 API 트래픽을 전송하는 API 프록시에 대한 외부 액세스를 허용하는 라우팅을 구성하는 방법을 설명합니다. 외부 클라이언트에서 Apigee 런타임 인스턴스로 요청을 보내려면 먼저 이 작업을 수행해야 합니다.
이 태스크에 필요한 권한
이 태스크를 완료하는 데 필요한 권한이 포함된 사전 정의된 역할을 Apigee 프로비저닝 도구에 제공하거나 필요한 최소 권한을 제공하는 보다 세분화된 권한을 부여할 수 있습니다.
사전 정의된 역할 과 액세스 라우팅 권한 을 참조하세요.
참고: 멀티 리전 설정의 경우 반드시 여기에 설명된 명령줄 단계를 사용해야 합니다. 프로비저닝 UI는 전역 부하 분산기에 MIG를 1개만 추가할 수 있습니다. MIG는 전역이 아니라 리전입니다. 따라서 멀티 리전의 경우 리전마다 1개의 MIG를 만들어 전역 부하 분산기의 백엔드 서비스에 추가해야 합니다.
일반적인 과정은 다음과 같습니다.
8a단계: VPC 네트워크의 서브넷에 비공개 Google 액세스 사용 설정
8b단계: 환경 변수 설정
8c단계: 관리형 인스턴스 그룹 만들기
8d단계: 부하 분산기에 대한 SSL 인증서 및 키 만들기
8e단계: 전역 부하 분산기 만들기
8f단계: 예약된 IP 주소 가져오기 및 방화벽 규칙 만들기
다음 섹션에서 각 단계를 설명합니다.
8a단계: VPC 네트워크의 서브넷에 비공개 Google 액세스 사용 설정
VPC 네트워크의 서브넷에 비공개 Google 액세스 를 사용 설정하려면 비공개 Google 액세스 사용 설정 에 나와 있는 단계를 따르세요.
참고: 멀티 리전 설정을 수행하는 경우 각 리전마다 이 단계를 한 번씩 수행해야 합니다.
8b단계: 환경 변수 설정
멀티 리전 : 멀티 리전 설정에는 각 리전에 대해 개별 MIG가 필요합니다. 멀티 리전을 구성하는 경우 각 리전에 대해 8b단계 및 8c단계를 반복하여 각 리전에 대해 적절한 변수로 바꿉니다.
이 섹션의 절차에서는 환경 변수를 사용하여 반복적으로 사용되는 문자열을 참조합니다. 계속하기 전에 이를 설정하는 것이 좋습니다.
MIG_NAME =apigee-mig-MIG_NAME # You can choose a different name if you like
VPC_NAME =default # If you are using a shared VPC , use the shared VPC name
VPC_SUBNET =default # Private Google Access must be enabled for this subnet
REGION =RUNTIME_REGION # The same region as your Apigee runtime instance
APIGEE_ENDPOINT =APIGEE_INSTANCE_IP
# See the tip below for details on getting this IP address value
나머지 프로세스에서는 이러한 변수를 여러 번 사용합니다. 여러 리전을 구성하려면 각 리전별 값으로 변수를 만듭니다.
팁: 올바른 Apigee 인스턴스 IP 주소를 가져오려면 다음 예시와 같이 Instances API 를 사용합니다.
데이터 상주 없음:
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
데이터 상주:
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
Apigee가 인스턴스에 대한 세부정보를 사용하여 응답합니다. 예를 들면 다음과 같습니다.
{
"instances": [
{
"name": "my-runtime-instance",
"location": "us-west1",
"host": "10.16.0.2",
"port": "443"
},
...
]
}
$APIGEE_ENDPOINT 환경 변수에 할당할 수 있는 인스턴스 IP 주소는 host
필드의 값입니다. 이 예시에서 값은 10.16.0.2
입니다.
멀티 리전 설치에서 API 호출은 각 리전 위치의 인스턴스 세부정보를 반환합니다. 이 경우 다음 섹션 의 단계를 따라 각 위치에 대해 별도의 관리형 인스턴스 그룹(MIG)을 만들어야 합니다.
8c단계: 관리형 인스턴스 그룹 만들기
멀티 리전 : 멀티 리전 설정에는 각 리전에 대해 개별 MIG가 필요합니다. 멀티 리전을 구성하는 경우 각 리전에 대해 8b단계 및 8c단계를 반복하여 각 리전에 대해 적절한 변수로 바꿉니다.
이 단계에서는 관리형 인스턴스 그룹(MIG)을 만들고 구성합니다. 이후 단계에서는 전역 부하 분산기에 연결된 백엔드 서비스에 MIG를 추가합니다. MIG는 전역 부하 분산기의 백엔드 서비스에서 Apigee로 API 트래픽을 전송하는 데 필요합니다.
MIG를 만들려면 다음 안내를 따르세요.
다음 명령어를 실행하여 인스턴스 템플릿 을 만듭니다.
gcloud compute instance-templates create $MIG_NAME \
--project $PROJECT_ID \
--region $REGION \
--network $VPC_NAME \
--subnet $VPC_SUBNET \
--tags=https-server,apigee-mig-proxy,gke-apigee-proxy \
--machine-type e2-medium --image-family debian-12 \
--image-project debian-cloud --boot-disk-size 20GB \
--no-address \
--metadata ENDPOINT=$APIGEE_ENDPOINT ,startup-script-url=gs://apigee-5g-saas/apigee-envoy-proxy-release/latest/conf/startup-script.sh
이 명령어에서 볼 수 있듯이 머신은 e2-medium
유형입니다. 이러한 머신은 Debian 12를 실행하며 20GB의 디스크를 보유하고 있습니다. startup-script.sh
스크립트는 MIG가 부하 분산기에서 Apigee 인스턴스로 인바운드 트래픽을 라우팅하도록 MIG를 구성합니다.
다음 명령어를 실행하여 관리형 인스턴스 그룹 을 만듭니다.
gcloud compute instance-groups managed create $MIG_NAME \
--project $PROJECT_ID --base-instance-name apigee-mig \
--size 2 --template $MIG_NAME --region $REGION
다음 명령어를 실행하여 그룹의 자동 확장 을 구성합니다.
참고: e2-medium 인스턴스가 있는 리전 MIG는 최대 6Gbps를 지원할 수 있습니다. 요구사항에 비해 처리량이 충분하지 않다면 VM 크기 및 복제본 수를 늘려 보세요.
gcloud compute instance-groups managed set-autoscaling $MIG_NAME \
--project $PROJECT_ID --region $REGION --max-num-replicas 3 \
--target-cpu-utilization 0.75 --cool-down-period 90
다음 명령어를 실행하여 이름이 지정된 포트를 정의합니다.
gcloud compute instance-groups managed set-named-ports $MIG_NAME \
--project $PROJECT_ID --region $REGION --named-ports https:443
8d단계: 부하 분산기에 대한 SSL 인증서 및 키 만들기
단일 리전 또는 멀티 리전 등 어디에 설치하든 상관없이 사용자 인증 정보를 한 번만 만들면 됩니다. 이후 단계에서 이러한 사용자 인증 정보를 부하 분산기의 대상 HTTPS 프록시와 연결하게 됩니다.
다음을 사용하여 사용자 인증 정보를 만들 수 있습니다.
Google Cloud 부하 분산기의 SSL 인증서 만들기 및 사용에 대한 자세한 내용은 SSL 인증서 및 SSL 인증서 개요 를 참조하세요.
다음 예시에서는 Google 관리 SSL 인증서를 만듭니다.
다음 환경 변수를 만듭니다.
CERTIFICATE_NAME =YOUR_CERT_NAME
DOMAIN_HOSTNAME =YOUR_DOMAIN_HOSTNAME
DOMAIN_HOSTNAME
을 등록한 유효한 도메인 호스트 이름으로 설정합니다. 이후 단계에서 부하 분산기의 IP 주소를 가져오고 이 주소를 가리키도록 도메인 A 레코드를 업데이트하게 됩니다. 예를 들어 도메인 호스트 이름은 foo.example.com
과 같습니다.
gcloud compute ssl-certificates create 명령어를 실행합니다.
gcloud compute ssl-certificates create $CERTIFICATE_NAME \
--domains=$DOMAIN_HOSTNAME \
--project $PROJECT_ID \
--global
인증서를 프로비저닝하려면 최대 1시간까지 걸릴 수 있습니다. 프로비저닝 상태를 확인하려면 다음 명령어를 실행합니다.
gcloud compute ssl-certificates describe $CERTIFICATE_NAME \
--global \
--format="get(name,managed.status, managed.Status)"
참고: 모두 동일한 부하 분산기 IP 주소를 가리키는 환경 그룹 호스트 이름에 DNS A 레코드를 여러 개 만들 수 있습니다.
8e단계: 전역 부하 분산기 만들기
상태 점검 을 만듭니다.
gcloud compute health-checks create https HEALTH_CHECK_NAME \
--project $PROJECT_ID --port 443 --global \
--request-path /healthz/ingress
이 상태 확인을 사용하여 백엔드 서비스가 실행 중인지 확인합니다. 특정 프록시에 대해 고급 상태 확인을 구성하려면 상태 확인 수행 을 참조하세요.
참고: 상태 점검을 만드는 중에 다음 오류가 발생하는 경우 다음 절차를 따르세요.
ERROR: unrecognized arguments: --global,
gcloud components update
명령어를 사용하여 gcloud
를 업데이트해 보세요.
백엔드 서비스 를 만듭니다.
gcloud compute backend-services create PROXY_BACKEND_NAME \
--project $PROJECT_ID \
--protocol HTTPS \
--health-checks HEALTH_CHECK_NAME \
--port-name https \
--timeout 302s \
--connection-draining-timeout 300s \
--global
참고: Apigee 엔드포인트 속성 참조 에 설명된 대로 Apigee의 인그레스(내부 부하 분산기)는 기본적으로 300초로 제한됩니다. 부하 분산기의 백엔드 서비스 제한 시간을 302초로 설정하면 장기 실행 트랜잭션이 있는 경우 백엔드 서비스 명령어가 Apigee 내에서 완전히 완료될 수 있습니다. 이 값을 60초와 같이 낮게 설정하면 요청이 완료되기 전에 부하 분산기의 시간이 초과되어 502개의 응답이 발생할 수 있습니다.
다음 명령어를 사용하여 백엔드 서비스에 MIG를 추가합니다.
멀티 리전: 멀티 리전 설정의 경우 각 리전에 대해 별도의 MIG를 만들어야 합니다. 이 단계를 반복하여 각 MIG를 백엔드 서비스에 추가합니다. 리전마다 적절한 REGION
및 MIG_NAME
변수를 대체해야 합니다.
gcloud compute backend-services add-backend PROXY_BACKEND_NAME \
--project $PROJECT_ID --instance-group $MIG_NAME \
--instance-group-region $REGION \
--balancing-mode UTILIZATION --max-utilization 0.8 --global
다음 명령어를 사용하여 부하 분산 URL 지도 를 만듭니다.
gcloud compute url-maps create MIG_PROXY_MAP_NAME \
--project $PROJECT_ID --default-service PROXY_BACKEND_NAME
다음 명령어를 사용하여 부하 분산 대상 HTTPS 프록시 를 만듭니다.
gcloud compute target-https-proxies create MIG_HTTPS_PROXY_NAME \
--project $PROJECT_ID --url-map MIG_PROXY_MAP_NAME \
--ssl-certificates $CERTIFICATE_NAME
8f단계: 예약된 IP 주소 가져오기 및 방화벽 규칙 만들기
부하 분산기에 IP 주소를 할당한 다음 부하 분산기가 MIG에 액세스하도록 허용하는 규칙을 만들어야 합니다. 이 단계는 단일 리전에 설치하든 멀티 리전에 설치하든 한 번만 실행하면 됩니다.
부하 분산기의 IP 주소를 예약 합니다.
gcloud compute addresses create ADDRESSES_NAME \
--project $PROJECT_ID \
--ip-version=IPV4 \
--global
다음 명령어를 사용하여 전역 전달 규칙 을 만듭니다.
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
--project $PROJECT_ID --address ADDRESSES_NAME --global \
--target-https-proxy MIG_HTTPS_PROXY_NAME --ports 443
다음 명령어를 실행하여 예약된 IP 주소를 가져옵니다.
gcloud compute addresses describe ADDRESSES_NAME \
--project $PROJECT_ID --format="get(address)" --global
중요 단계: DNS 레코드가 관리되는 사이트, DNS 호스트, ISP로 이동하고 도메인의 DNS 레코드가 Google Cloud 부하 분산기의 IP 주소로 확인되는지 확인합니다. 이 주소는 마지막 단계에서 반환된 IP 값입니다. 자세한 내용은 부하 분산기의 IP 주소를 가리키도록 DNS A 및 AAAA 레코드 업데이트 를 참조하세요.
다음 명령어를 사용하여 부하 분산기가 MIG에 액세스할 수 있도록 허용하는 방화벽 규칙을 만듭니다.
gcloud compute firewall-rules create FIREWALL_RULE_NAME \
--description "Allow incoming from GLB on TCP port 443 to Apigee Proxy" \
--project $PROJECT_ID --network $VPC_NAME --allow=tcp:443 \
--source-ranges=130.211.0.0/22,35.191.0.0/16 --target-tags=gke-apigee-proxy
IP 주소 범위 130.211.0.0/22
및 35.191.0.0/16
은 Google 부하 분산의 소스 IP 주소 범위입니다. 이 방화벽 규칙을 사용하면 Google Cloud Load Balancing이 MIG에 상태 확인을 요청할 수 있습니다.
Apigee 프로비저닝이 완료되었습니다. 샘플 프록시 배포 로 이동합니다.
내부 라우팅(PSC)
이 섹션에서는 Private Service Connect (PSC)를 사용하여 모든 Google Cloud 프로젝트의 API 프록시에 대한 내부 액세스만 허용하는 방법을 설명합니다.
PSC로 내부 액세스를 구성하는 두 가지 옵션은 다음과 같습니다.
선택한 옵션에 따라 아래 탭을 선택하고 다음 단계를 따르세요.
서비스 엔드포인트
이 태스크에 필요한 권한
이 작업을 완료하는 데 필요한 권한이 포함된 사전 정의된 역할을 Apigee 프로비저닝 도구에 제공하거나 필요한 최소 권한을 제공하는 보다 세분화된 권한을 부여할 수 있습니다.
사전 정의된 역할 과 액세스 라우팅 권한 을 참조하세요.
서비스 연결을 위한 PSC 서비스 엔드포인트 만들기
이전에 만든 인스턴스에서 서비스 연결을 가져옵니다.
데이터 상주 없음
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
데이터 상주
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
다음 샘플 출력에서 serviceAttachment
값은 굵게 표시됩니다.
{
"instances" : [
{
"name" : "us-west1" ,
"location" : "us-west1" ,
"host" : "10.82.192.2" ,
"port" : "443" ,
"createdAt" : "1645731488019" ,
"lastModifiedAt" : "1646504754219" ,
"diskEncryptionKeyName" : "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek" ,
"state" : "ACTIVE" ,
"peeringCidrRange" : "SLASH_22" ,
"runtimeVersion" : "1-7-0-20220228-190814" ,
"ipRange" : "10.82.192.0/22,10.82.196.0/28" ,
"consumerAcceptList" : [
"875609189304"
],
"serviceAttachment" : "projects/bfac74a67a320c43a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw1 "
}
]
}
참고: Apigee 조직을 만드는 데 사용한 프로젝트의 ID는 항상 consumerAcceptList
목록에 표시됩니다. 위에 표시된 예시 출력에서는 목록에 하나의 프로젝트만 표시됩니다.
Private Service Connect 엔드포인트 만들기 에 설명된 대로 이전 단계의 인스턴스 응답 본문에서 얻은 서비스 연결을 가리키는 PSC 서비스 엔드포인트를 만듭니다.
설정을 테스트하려면 내부 전용 액세스로 API 프록시 호출 을 참조하세요.
내부 리전 LB
이 태스크에 필요한 권한
이 태스크를 완료하는 데 필요한 권한이 포함된 사전 정의된 역할을 Apigee 프로비저닝 도구에 제공하거나 필요한 최소 권한을 제공하는 보다 세분화된 권한을 부여할 수 있습니다.
사전 정의된 역할 과 액세스 라우팅 권한 을 참조하세요.
제한사항: PSC 구성에는 다음 제한사항이 있습니다.
이 구성에서는 전역 외부 HTTP(S) 부하 분산기(기본) 가 지원되지 않습니다.
여러 PSC NEG가 있는 장애 조치의 경우 활성 상태 확인이 지원되지 않습니다. 대신 이상점 감지 를 사용하세요.
제한사항은 PSC를 통해 Apigee 인스턴스에 연결할 수 있는 Google Cloud 프로젝트 수와 프로젝트당 보유할 수 있는 PSC NEG 연결 수에 적용됩니다. 자세한 내용은 Private Service Connect(PSC) 한도 를 참조하세요.
Google Cloud 프로젝트가 consumerAcceptList
에서 삭제되어도 삭제된 프로젝트의 기존 PSC NEG는 계속 작동합니다. 하지만 모든 새 NEG는 거부됩니다. consumerAcceptList
에서 연결된 프로젝트를 삭제할 경우 기존 NEG를 삭제해야 합니다.
또는 Apigee 인스턴스를 다시 만들어 Apigee 프로젝트에 서비스 연결을 다시 생성할 수 있습니다.
8a단계: 환경 변수 설정
이 섹션의 절차에서는 환경 변수를 사용하여 반복적으로 사용되는 문자열을 참조합니다. 환경 변수 정의 에서 변수를 설정해야 합니다.
또한 다음 환경 변수를 설정합니다.
팁: 필요한 경우 쉽게 복원할 수 있도록 환경 변수를 텍스트 파일에 저장합니다.
NEG_NAME=YOUR_NEG_NAME "
TARGET_SERVICE=YOUR_TARGET_SERVICE "
NETWORK_NAME=YOUR_NETWORK_NAME "
SUBNET_NAME=YOUR_SUBNET_NAME "
각 항목의 의미는 다음과 같습니다.
NEG_NAME : 네트워크 엔드포인트 그룹의 이름입니다.
TARGET_SERVICE : 연결할 서비스 연결입니다. 예를 들면 projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7
입니다.
NETWORK_NAME : (선택사항) NEG가 생성되는 네트워크의 이름입니다. 이 매개변수를 생략하면 default
프로젝트 네트워크가 사용됩니다.
SUBNET_NAME : 제작자에 대한 비공개 연결에 사용되는 서브넷의 이름입니다.
서브넷 크기는 작을 수 있습니다. PSC NEG에는 서브넷에서 하나의 IP만 있으면 됩니다.
Apigee의 경우 리전당 하나의 PSC NEG만 필요합니다. 서브넷은 VM 또는 다른 항목에서 공유하고 사용할 수 있습니다.
서브넷이 지정되지 않은 경우 네트워크 엔드포인트는 네트워크 엔드포인트 그룹이 생성된 리전의 모든 서브네트워크에 속할 수 있습니다.
참고: --network
매개변수를 지정하면 --subnet
도 지정해야 합니다.
8b단계: 프록시 전용 서브넷 만들기
gcloud compute networks subnets create testproxyonlysubnet \
--purpose=REGIONAL_MANAGED_PROXY --role=ACTIVE --region=$RUNTIME_REGION --network=$NETWORK_NAME \
--range=100.0.0.0/24 --project=$PROJECT_ID
8c단계: 네트워크 엔드포인트 그룹(NEG) 만들기
이전에 만든 인스턴스에서 서비스 연결을 가져옵니다.
데이터 상주 없음
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
데이터 상주
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
다음 샘플 출력에서 serviceAttachment
값은 굵게 표시됩니다.
{
"instances" : [
{
"name" : "us-west1" ,
"location" : "us-west1" ,
"host" : "10.82.192.2" ,
"port" : "443" ,
"createdAt" : "1645731488019" ,
"lastModifiedAt" : "1646504754219" ,
"diskEncryptionKeyName" : "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek" ,
"state" : "ACTIVE" ,
"peeringCidrRange" : "SLASH_22" ,
"runtimeVersion" : "1-7-0-20220228-190814" ,
"ipRange" : "10.82.192.0/22,10.82.196.0/28" ,
"consumerAcceptList" : [
"875609189304"
],
"serviceAttachment" : "projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7 "
}
]
}
참고: Apigee 조직을 만드는 데 사용한 프로젝트의 ID는 항상 consumerAcceptList
목록에 표시됩니다. 위에 표시된 예시 출력에서는 목록에 하나의 프로젝트만 표시됩니다.
이전 단계의 인스턴스 응답 본문에서 얻은 서비스 연결을 가리키는 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 \
--project=$PROJECT_ID
$PROJECT_ID 는 Apigee 조직과 이미 연결된 Cloud 프로젝트 또는 Apigee 런타임 인스턴스 생성 시 consumerAcceptlist
에 포함된 Cloud 프로젝트입니다.
8d단계: 리전 내부 부하 분산기 구성
부하 분산기의 내부 IPv4 주소를 예약합니다.
gcloud compute addresses create ADDRESS_NAME \
--ip-version=IPV4 --subnet=$SUBNET_NAME \
--region=$RUNTIME_LOCATION --project=$PROJECT_ID
ADDRESS_NAME 를 IP 주소 리소스의 이름으로 바꿉니다
다음 명령어를 실행하여 예약된 IP 주소를 확인합니다.
gcloud compute addresses describe ADDRESS_NAME \
--format="get(address)" --region=$RUNTIME_LOCATION --project=$PROJECT_ID
NEG의 백엔드 서비스를 만듭니다.
gcloud compute backend-services create BACKEND_SERVICE_NAME \
--load-balancing-scheme=INTERNAL_MANAGED \
--protocol=HTTPS \
--region=$RUNTIME_REGION \
--project=$PROJECT_ID
BACKEND_SERVICE_NAME 을 백엔드 서비스 이름으로 바꿉니다.
NEG를 백엔드 서비스에 추가합니다.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
--network-endpoint-group=$NEG_NAME \
--region=$RUNTIME_LOCATION \
--project=$PROJECT_ID
다음을 바꿉니다.
NEG_NAME : 네트워크 엔드포인트 그룹의 이름입니다.
BACKEND_SERVICE_NAME 을 백엔드 서비스 이름으로 바꿉니다.
HTTPS 부하 분산기를 만들려면 HTTPS 대상 프록시에서 사용할 SSL 인증서 리소스 가 있어야 합니다.
자체 관리형 SSL 인증서 리소스를 만들려면 이 명령어를 사용합니다. 자체 관리형 SSL 인증서를 만들려면 로컬 비공개 키 파일과 로컬 인증서 파일이 필요합니다. 이러한 파일을 만들어야 하는 경우 자체 관리형 SSL 인증서 사용 1단계 를 참조하세요.
참고: 내부 리전 부하 분산기에서는 Google 관리형 인증서가 지원되지 않습니다.
gcloud compute ssl-certificates create CERTIFICATE \
--certificate LB_CERT \
--private-key LB_PRIVATE_KEY
--region=$RUNTIME_LOCATION --project=$PROJECT_ID
다음을 바꿉니다.
CERTIFICATE : 인증서의 이름입니다.
LB_CERT : 자체 관리형 인증서에 대한 PEM 형식 인증서의 경로입니다.
LB_PRIVATE_KEY : 자체 관리형 인증서에 대한 PEM 형식 비공개 키 파일의 경로입니다.
부하 분산기의 URL 맵을 만듭니다.
URL 맵은 기본 백엔드 서비스를 참조해야 합니다. 방금 만든 백엔드 서비스를 기본값으로 설정합니다.
gcloud compute url-maps create URL_MAP_NAME \
--default-service=DEFAULT_BACKEND_SERVICE_NAME \
--region=$RUNTIME_REGION \
--project=$PROJECT_ID
다음을 바꿉니다.
URL_MAP_NAME : URL 맵의 이름입니다.
DEFAULT_BACKEND_SERVICE_NAME : 부하 분산기의 기본 백엔드 서비스 이름입니다.
요청된 호스트 이름과 일치하는 호스트 규칙이 없는 경우 기본값이 사용됩니다.
SSL 인증서 리소스를 사용하여 대상 HTTPS 프록시를 만듭니다.
gcloud compute target-https-proxies create PROXY_NAME \
--url-map=URL_MAP_NAME \
--ssl-certificates=CERTIFICATE \
--region=$RUNTIME_LOCATION --project=$PROJECT_ID
다음을 바꿉니다.
PROXY_NAME : 대상 HTTPS 프록시의 이름입니다.
URL_MAP_NAME : URL 맵의 이름입니다.
CERTIFICATE : 인증서 리소스의 이름입니다.
전달 규칙을 만듭니다.
gcloud compute forwarding-rules create FWD_RULE \
--load-balancing-scheme=INTERNAL_MANAGED \
--address=ADDRESS_NAME \
--target-https-proxy=PROXY_NAME \
--ports=443 \
--target-https-proxy-region=$RUNTIME_REGION \
--region=$RUNTIME_REGION \
--project=$PROJECT_ID \
--network=$NETWORK_NAME \
--subnet=$SUBNET_NAME
다음을 바꿉니다.
FWD_RULE : 전달 규칙의 이름입니다.
ADDRESS_NAME : 전달 규칙에 사용하도록 예약한 IP 주소 리소스입니다.
PROXY_NAME : 대상 HTTPS 프록시의 이름입니다.
NETWORK_NAME : (선택사항) NEG가 생성되는 네트워크의 이름입니다. 이 매개변수를 생략하면 default
프로젝트 네트워크가 사용됩니다.
SUBNET_NAME : 제작자에 대한 비공개 연결에 사용되는 서브넷의 이름입니다.
참고: --network
매개변수를 지정하면 --subnet
도 지정해야 합니다.
Apigee 프로비저닝이 완료되었습니다. 샘플 프록시 배포 로 이동합니다.
외부 라우팅(PSC)
이 섹션에서는 Apigee 및 제어하는 VPC 사이의 통신을 허용하도록 Private Service Connect (PSC)를 사용하여 외부 라우팅을 구성하는 방법을 설명합니다. 외부 클라이언트에서 Apigee 런타임 인스턴스로 요청을 보내려면 먼저 이 작업을 수행해야 합니다.
이 태스크에 필요한 권한
이 태스크를 완료하는 데 필요한 권한이 포함된 사전 정의된 역할을 Apigee 프로비저닝 도구에 제공하거나 필요한 최소 권한을 제공하는 보다 세분화된 권한을 부여할 수 있습니다.
사전 정의된 역할 과 액세스 라우팅 권한 을 참조하세요.
제한사항: PSC 구성에는 다음 제한사항이 있습니다.
이 구성에서는 전역 외부 HTTP(S) 부하 분산기(기본) 가 지원되지 않습니다.
여러 PSC NEG가 있는 장애 조치의 경우 활성 상태 확인이 지원되지 않습니다. 대신 이상점 감지 를 사용하세요.
제한사항은 PSC를 통해 Apigee 인스턴스에 연결할 수 있는 Google Cloud 프로젝트 수와 프로젝트당 보유할 수 있는 PSC NEG 연결 수에 적용됩니다. 자세한 내용은 Private Service Connect(PSC) 한도 를 참조하세요.
Google Cloud 프로젝트가 consumerAcceptList
에서 삭제되어도 삭제된 프로젝트의 기존 PSC NEG는 계속 작동합니다. 하지만 모든 새 NEG는 거부됩니다. consumerAcceptList
에서 연결된 프로젝트를 삭제할 경우 기존 NEG를 삭제해야 합니다.
또는 Apigee 인스턴스를 다시 만들어 Apigee 프로젝트에 서비스 연결을 다시 생성할 수 있습니다.
8b단계: NEG 만들기 및 부하 분산기 구성
전역 또는 리전 부하 분산기를 만들 수 있습니다.
전역 외부 LB
전역 외부 HTTP(S) 부하 분산기 (부하 분산 스키마를 EXTERNAL_MANAGED
로 설정)를 구성합니다.
Private Service Connect NEG는 리전별이지만 이 구성의 다른 모든 부하 분산 구성요소는 전역적입니다.
환경 변수 정의 에서 환경 변수를 설정했는지 확인합니다.
이전에 만든 인스턴스에서 서비스 연결을 가져옵니다.
데이터 상주 없음
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
데이터 상주
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
다음 샘플 출력에서 serviceAttachment
값은 굵게 표시됩니다.
{
"instances" : [
{
"name" : "us-west1" ,
"location" : "us-west1" ,
"host" : "10.82.192.2" ,
"port" : "443" ,
"createdAt" : "1645731488019" ,
"lastModifiedAt" : "1646504754219" ,
"diskEncryptionKeyName" : "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek" ,
"state" : "ACTIVE" ,
"peeringCidrRange" : "SLASH_22" ,
"runtimeVersion" : "1-7-0-20220228-190814" ,
"ipRange" : "10.82.192.0/22,10.82.196.0/28" ,
"consumerAcceptList" : [
"875609189304"
],
"serviceAttachment" : "projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7 "
}
]
}
참고: Apigee 조직을 만드는 데 사용한 프로젝트의 ID는 항상 consumerAcceptList
목록에 표시됩니다. 위에 표시된 예시 출력에서는 목록에 하나의 프로젝트만 표시됩니다.
이전 단계의 인스턴스 응답 본문에서 얻은 서비스 연결을 가리키는 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
입니다.
NETWORK_NAME : (선택사항) NEG가 생성되는 네트워크의 이름입니다. 이 매개변수를 생략하면 default
프로젝트 네트워크가 사용됩니다.
SUBNET_NAME : 제작자에 대한 비공개 연결에 사용되는 서브넷의 이름입니다.
서브넷 크기는 작을 수 있습니다. PSC NEG에는 서브넷에서 하나의 IP만 있으면 됩니다.
Apigee의 경우 리전당 하나의 PSC NEG만 필요합니다. 서브넷은 VM 또는 다른 항목에서 공유하고 사용할 수 있습니다.
서브넷이 지정되지 않은 경우 네트워크 엔드포인트는 네트워크 엔드포인트 그룹이 생성된 리전의 모든 서브네트워크에 속할 수 있습니다.
참고: --network
매개변수를 지정하면 --subnet
도 지정해야 합니다.
$PROJECT_ID 는 Apigee 조직과 이미 연결된 Cloud 프로젝트 또는 Apigee 런타임 인스턴스 생성 시 consumerAcceptlist
에 포함된 Cloud 프로젝트입니다.
프로젝트 ID를 포함할 환경 변수를 아직 만들지 않은 경우 다음 명령어 중 대부분에서 사용되므로 지금 만듭니다.
부하 분산기의 전역 외부 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
BACKEND_SERVICE_NAME 을 백엔드 서비스 이름으로 바꿉니다.
NEG를 백엔드 서비스에 추가합니다.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
--network-endpoint-group=NEG_NAME \
--network-endpoint-group-region=REGION \
--global --project=$PROJECT_ID
다음을 바꿉니다.
BACKEND_SERVICE_NAME : 백엔드 서비스의 이름입니다.
NEG_NAME : 네트워크 엔드포인트 그룹의 이름입니다.
REGION : 네트워크 엔드포인트 그룹의 리전입니다.
부하 분산기의 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 프록시를 만듭니다.
HTTPS 부하 분산기를 만들려면 HTTPS 대상 프록시에서 사용할 SSL 인증서 리소스 가 있어야 합니다. Google 관리형 SSL 인증서 또는 자체 관리형 SSL 인증서를 사용하여 SSL 인증서 리소스를 만들 수 있습니다. Google Cloud는 이러한 인증서를 자동으로 가져오고 관리하며 갱신하므로 Google 관리형 인증서를 사용하는 것이 좋습니다.
Google 관리형 인증서를 만들려면 도메인이 있어야 합니다 .
이 명령어를 사용하여 Google 관리형 SSL 인증서 리소스를 만듭니다.
gcloud compute ssl-certificates create CERTIFICATE \
--domains DOMAIN --project=$PROJECT_ID
다음을 바꿉니다.
CERTIFICATE : 인증서의 이름입니다.
DOMAIN : 부하 분산기의 도메인 이름입니다.
자체 관리형 SSL 인증서 리소스를 만들려면 이 명령어를 사용합니다. 자체 관리형 SSL 인증서를 만들려면 로컬 비공개 키 파일과 로컬 인증서 파일이 필요합니다. 이러한 파일을 만들어야 하는 경우 자체 관리형 SSL 인증서 사용 1단계 를 참조하세요.
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 형식 비공개 키 파일의 경로입니다.
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 프록시의 이름입니다.
리전 외부 LB
리전 외부 HTTP(S) 부하 분산기를 구성합니다. 외부 HTTP(S) 부하 분산기 개요 도 참조하세요.
환경 변수 정의 에서 변수를 설정해야 합니다.
프록시 전용 서브넷 만들기:
gcloud compute networks subnets create SUBNET_NAME \
--purpose=REGIONAL_MANAGED_PROXY --role=ACTIVE \
--region=$RUNTIME_LOCATION --network=NETWORK_NAME \
--range=100.0.0.0/24 --project=$PROJECT_ID
다음을 바꿉니다.
SUBNET_NAME : 서브넷의 이름입니다.
(선택사항) NETWORK_NAME 을 서브넷이 생성되는 네트워크의 이름으로 바꿉니다. 이 매개변수를 생략하면 기본 프로젝트 네트워크가 사용됩니다.
이전에 만든 인스턴스에서 서비스 연결을 가져옵니다.
데이터 상주 없음
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
데이터 상주
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
다음 샘플 출력에서 serviceAttachment
값은 굵게 표시됩니다.
{
"instances" : [
{
"name" : "us-west1" ,
"location" : "us-west1" ,
"host" : "10.82.192.2" ,
"port" : "443" ,
"createdAt" : "1645731488019" ,
"lastModifiedAt" : "1646504754219" ,
"diskEncryptionKeyName" : "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek" ,
"state" : "ACTIVE" ,
"peeringCidrRange" : "SLASH_22" ,
"runtimeVersion" : "1-7-0-20220228-190814" ,
"ipRange" : "10.82.192.0/22,10.82.196.0/28" ,
"consumerAcceptList" : [
"875609189304"
],
"serviceAttachment" : "projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7 "
}
]
}
참고: Apigee 조직을 만드는 데 사용한 프로젝트의 ID는 항상 consumerAcceptList
목록에 표시됩니다. 위에 표시된 예시 출력에서는 목록에 하나의 프로젝트만 표시됩니다.
네트워크 엔드포인트 그룹 만들기
gcloud compute network-endpoint-groups create NEG_NAME \
--network-endpoint-type=private-service-connect \
--psc-target-service=TARGET_SERVICE \
--region=$RUNTIME_LOCATION --project=$PROJECT_ID
다음을 바꿉니다.
NEG_NAME : 네트워크 엔드포인트 그룹의 이름입니다.
TARGET_SERVICE : 연결할 서비스 연결의 이름입니다.
예를 들면 projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7
입니다.
NEG의 백엔드 서비스를 만듭니다.
gcloud compute backend-services create BACKEND_SERVICE_NAME \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTPS \
--region=$RUNTIME_LOCATION \
--project=$PROJECT_ID
BACKEND_SERVICE_NAME 을 백엔드 서비스 이름으로 바꿉니다.
NEG를 백엔드 서비스에 추가합니다.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
--network-endpoint-group=NEG_NAME \
--region=$RUNTIME_LOCATION \
--project=$PROJECT_ID
다음을 바꿉니다.
BACKEND_SERVICE_NAME : 백엔드 서비스의 이름입니다.
NEG_NAME : 네트워크 엔드포인트 그룹의 이름입니다.
부하 분산기의 URL 맵을 만듭니다.
URL 맵은 기본 백엔드 서비스를 참조해야 합니다. 방금 만든 백엔드 서비스를 기본값으로 설정합니다.
gcloud compute url-maps create URL_MAP_NAME \
--default-service=DEFAULT_BACKEND_SERVICE_NAME \
--region=$RUNTIME_LOCATION \
--project=$PROJECT_ID
다음을 바꿉니다.
URL_MAP_NAME : URL 맵의 이름입니다.
DEFAULT_BACKEND_SERVICE_NAME : 부하 분산기의 기본 백엔드 서비스 이름입니다.
요청된 호스트 이름과 일치하는 호스트 규칙이 없는 경우 기본값이 사용됩니다.
대상 HTTPS 프록시를 만듭니다.
HTTPS 부하 분산기를 만들려면 HTTPS 대상 프록시에서 사용할 SSL 인증서 리소스 가 있어야 합니다.
자체 관리형 SSL 인증서 리소스를 만들려면 이 명령어를 사용합니다. 자체 관리형 SSL 인증서를 만들려면 로컬 비공개 키 파일과 로컬 인증서 파일이 필요합니다. 이러한 파일을 만들어야 하는 경우 자체 관리형 SSL 인증서 사용 1단계 를 참조하세요.
참고: 내부 리전 부하 분산기에서는 Google 관리형 인증서가 지원되지 않습니다.
gcloud compute ssl-certificates create CERTIFICATE \
--certificate LB_CERT \
--private-key LB_PRIVATE_KEY --region=$RUNTIME_LOCATION \
--project=$PROJECT_ID
다음을 바꿉니다.
CERTIFICATE : 인증서의 이름입니다.
LB_CERT : 자체 관리형 인증서에 대한 PEM 형식 인증서의 경로입니다.
LB_PRIVATE_KEY : 자체 관리형 인증서에 대한 PEM 형식 비공개 키 파일의 경로입니다.
SSL 인증서 리소스를 사용하여 대상 HTTPS 프록시를 만듭니다.
gcloud compute target-https-proxies create PROXY_NAME \
--url-map=URL_MAP_NAME --region=$RUNTIME_LOCATION \
--ssl-certificates=CERTIFICATE --project=$PROJECT_ID
다음을 바꿉니다.
PROXY_NAME : 대상 HTTPS 프록시의 이름입니다.
URL_MAP_NAME : URL 맵의 이름입니다.
CERTIFICATE : 인증서 리소스의 이름입니다.
부하 분산기의 리전 외부 주소를 예약합니다. 네트워크 등급은 STANDARD
로 설정해야 합니다.
gcloud compute addresses create ADDRESS_NAME \
--region=$RUNTIME_LOCATION --network-tier=STANDARD \
--project=$PROJECT_ID
ADDRESS_NAME 를 IP 주소 리소스의 이름으로 바꿉니다
다음 명령어를 실행하여 예약된 IP 주소를 확인합니다.
gcloud compute addresses describe ADDRESS_NAME \
--format="get(address)" --region=$RUNTIME_LOCATION \
--project=$PROJECT_ID
전달 규칙을 만듭니다.
gcloud compute forwarding-rules create FWD_RULE \
--load-balancing-scheme=EXTERNAL_MANAGED \
--network-tier=STANDARD \
--address=ADDRESS_NAME \
--target-https-proxy=PROXY_NAME \
--ports=443 --region=$RUNTIME_LOCATION \
--target-https-proxy-region=$RUNTIME_LOCATION --project=$PROJECT_ID
다음을 바꿉니다.
FWD_RULE : 전달 규칙의 이름입니다.
ADDRESS_NAME : 전달 규칙에 사용하도록 예약한 IP 주소 리소스입니다.
PROXY_NAME : 대상 HTTPS 프록시의 이름입니다.
Apigee 프로비저닝이 완료되었습니다. 샘플 프록시 배포 로 이동합니다.
9단계: 샘플 프록시 배포
이 태스크에 필요한 권한
프록시를 만들고 배포하려면 최소한의 권한 집합이 필요합니다. Apigee 조직 관리자 역할이 있으면 이 작업을 완료할 수 있습니다. 사용 가능한 다른 역할은 Apigee 역할 을 참조하세요.
GitHub에서 샘플 프록시 를 다운로드합니다. 프록시 대상은 일반적으로 사용되는 공개 요청 및 응답 서비스인 httpbin.org 서비스입니다.
Apigee apis
API를 사용하여 API 프록시 번들을 런타임에 업로드합니다.
데이터 상주 없음
curl -i -X POST -H "Authorization: Bearer $AUTH " \
-H "Content-Type:multipart/form-data" \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/apis?name=httpbin&action=import" \
-F 'file=@PATH_TO_ZIP_FILE /httpbin_rev1_2020_02_02.zip'
데이터 상주
curl -i -X POST -H "Authorization: Bearer $AUTH " \
-H "Content-Type:multipart/form-data" \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID/apis?name=httpbin&action=import" \
-F 'file=@PATH_TO_ZIP_FILE /httpbin_rev1_2020_02_02.zip'
여기서 PATH_TO_ZIP_FILE 은 다운로드한 ZIP 파일이 포함된 디렉터리의 경로입니다.
이전에 만든 환경에 API 프록시를 배포 합니다.
데이터 상주 없음
curl -i -H "Authorization: Bearer $AUTH " -X POST \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments/$ENVIRONMENT_NAME /apis/httpbin/revisions/1/deployments"
데이터 상주
curl -i -H "Authorization: Bearer $AUTH " -X POST \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments/$ENVIRONMENT_NAME /apis/httpbin/revisions/1/deployments"
이 API 호출로 배포가 성공적으로 완료되었는지 확인합니다.
데이터 상주 없음
curl -i -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments/$ENVIRONMENT_NAME /apis/httpbin/revisions/1/deployments"
데이터 상주
curl -i -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments/$ENVIRONMENT_NAME /apis/httpbin/revisions/1/deployments"
API 프록시를 호출합니다.
다음 명령어를 실행하여 모든 네트워크가 사용 설정된 머신에서 API 프록시에 요청을 보냅니다.
curl -i -H "Host: ENV_GROUP_HOSTNAME " \
"https://ENV_GROUP_HOSTNAME /httpbin/headers"
필요한 경우 이 API를 사용해서 ENV_GROUP_HOSTNAME 값을 가져올 수 있습니다.
데이터 상주 없음
curl -i -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups"
데이터 상주
curl -i -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups"
CONNECT_CR_SRVR_HELLO:sslv3 alert handshake failure
와 비슷한 오류가 발생하면 이전에 만든 SSL 인증서가 프로비저닝되었는지 확인합니다.
이 명령어를 사용하여 프로비저닝 상태 를 확인합니다. 인증서가 프로비저닝되었으면 상태가 ACTIVE
입니다.
gcloud compute ssl-certificates describe CERTIFICATE \
--global \
--format="get(name,managed.status, managed.Status)"
성공하면 샘플 API 프록시가 다음과 비슷한 응답을 반환합니다.
{
"headers": {
"Accept": "*/*",
"Grpc-Trace-Bin": "AAD/8WC/I4AUSrMEch0E9yj+AYck1x9afwckAgA",
"Host": "httpbin.org",
"Traceparent": "00-fff160bf2380144ab304721d04f728fe-8724d71f5a7f0724-00",
"User-Agent": "curl/7.77.0",
"X-Amzn-Trace-Id": "Root=1-61d785ef-7613aa8a7fde7a910441fab9",
"X-B3-Sampled": "0",
"X-B3-Spanid": "8724d71f5a7f0724",
"X-B3-Traceid": "fff160bf2380144ab304721d04f728fe",
"X-Cloud-Trace-Context": "fff160bf2380144ab304721d04f728fe/9738144823944087332;o=0",
"X-Envoy-Attempt-Count": "1"
}
}
추가 문제 해결 정보를 포함하여 프록시 배포에 대한 자세한 내용은 API 프록시 배포 를 참조하세요.