VPC 피어링으로 평가 조직 프로비저닝

이 페이지는 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를 설정하고 이후 단계에서 사용할 환경 변수를 정의합니다.

  1. 기본 요건에 나열된 요구사항을 완료했는지 확인합니다.
  2. gcloud CLI가 설치되어 있어야 합니다. 설치해야 하면 gcloud CLI 설치를 참조하세요.
  3. gcloud CLI 초기화의 설명대로 gcloud CLI를 초기화하거나 CLI가 이미 초기화되었다면 기본 요건에서 만든 Google Cloud 프로젝트가 gcloud의 기본 프로젝트인지 확인합니다.
  4. 다음 환경 변수를 정의합니다.
    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_LOCATIONRUNTIME_LOCATION은 둘 다 같은 리전일 수 있지만 반드시 동일할 필요는 없습니다. 그러나 동일하면 성능상 이점이 있을 수 있습니다.

  5. (선택사항) 방금 설정한 값을 에코하여 작업을 확인합니다. 명령어에 변수를 사용하려면 변수 이름 앞에 달러 기호($)를 추가합니다.
    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 사용 설정

  1. Apigee를 사용하려면 Google Cloud API를 여러 개 사용 설정해야 합니다. 이를 사용 설정하려면 다음 services enable 명령어를 실행합니다.

    gcloud services enable apigee.googleapis.com \
      servicenetworking.googleapis.com compute.googleapis.com \
      cloudkms.googleapis.com --project=$PROJECT_ID
  2. (선택사항) 작업을 확인하려면 services list 명령어를 사용하여 사용 설정된 모든 API를 표시합니다.

    gcloud services list

    응답에는 방금 사용 설정한 API(Apigee, 서비스 네트워킹, Cloud KMS, Compute Engine)를 포함한 사용 설정된 모든 서비스가 표시됩니다.

3단계: 서비스 네트워킹 구성

  1. 다음 환경 변수를 만듭니다.
    RANGE_NAME=YOUR_RANGE_NAME
    NETWORK_NAME=YOUR_NETWORK_NAME
    

    각 항목의 의미는 다음과 같습니다.

    • RANGE_NAME는 만들려는 IP 주소 범위의 이름입니다. 범위 이름을 원하는 대로 지정할 수 있습니다. 예를 들면 google-svcs입니다.
    • NETWORK_NAME는 주소를 예약할 네트워크 리소스의 이름입니다. Google에서는 새 프로젝트마다 기본 네트워크(default)를 만들 수 있으므로 이를 사용할 수 있습니다. 하지만 테스트 용도 이외에는 기본 네트워크를 사용하지 않는 것이 좋습니다.
  2. 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 주소 범위를 만든 후 주소는 해제할 때까지 프로젝트에 연결됩니다.

  3. 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에서 사용 가능한 주소 범위를 선택합니다.

  4. 다음 명령어를 사용하여 네트워크에 서비스를 연결합니다.
    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_IDLRO(장기 실행 작업)의 UUID입니다.

    Apigee가 네트워크와 Google 서비스 간의 연결을 만듭니다. 특히 Apigee는 VPC 피어링을 통해 프로젝트를 Service Networking API에 연결합니다. 또한 Apigee는 IP 주소도 프로젝트에 연결합니다.

4단계: 조직 만들기

조직은 Apigee의 최상위 컨테이너입니다. 여기에는 모든 API 프록시 및 관련 리소스가 포함됩니다. 자세한 내용은 조직 이해를 참조하세요.

  1. 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입니다.

  2. provision 명령어를 실행하면 Google에서 LRO를 시작하여 평가 조직을 만듭니다. 이 작업이 완료되는 데 최대 40분이 걸립니다. 이 기간 동안 gcloud에는 다음이 표시됩니다.

    Provisioning organization...

    평가 조직 및 연결된 런타임 인스턴스가 생성되면 gcloud에서 다음과 같이 응답합니다.

    Provisioning organization...done.
  3. 다음 명령어를 실행하는 경우

    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) 만들기

  1. 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"
        }
      ]
    }
  2. 이전 단계의 인스턴스 응답 본문에서 얻은 서비스 연결을 가리키는 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는 리전별이지만 이 구성의 다른 모든 부하 분산 구성요소는 전역적입니다.

  1. 부하 분산기의 전역 외부 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
  2. NEG의 백엔드 서비스를 만듭니다.
    gcloud compute backend-services create BACKEND_SERVICE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --protocol=HTTPS \
      --global --project=$PROJECT_ID
  3. BACKEND_SERVICE_NAME을 백엔드 서비스 이름으로 바꿉니다.

  4. 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: 네트워크 엔드포인트 그룹의 이름입니다.
  5. 부하 분산기의 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: 부하 분산기의 기본 백엔드 서비스 이름입니다. 요청된 호스트 이름과 일치하는 호스트 규칙이 없는 경우 기본값이 사용됩니다.
  6. 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 형식 비공개 키 파일의 경로입니다.
  7. 인증서를 프로비저닝하려면 최대 1시간까지 걸릴 수 있습니다. 프로비저닝 상태를 확인하려면 다음 명령어를 실행합니다.

    gcloud compute ssl-certificates describe CERTIFICATE \
       --global \
       --format="get(name,managed.status, managed.Status)"
  8. 자동으로 생성된 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"'"]
      }'
  9. 환경 그룹 작업의 상태를 확인합니다.
    curl -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/eval-group/attachments"
    
  10. 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: 인증서 리소스의 이름입니다.
  11. 전달 규칙을 만듭니다.
    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 프록시의 이름입니다.

Apigee 프로비저닝이 완료되었습니다.

6단계: 샘플 API 프록시 호출

프로비저닝 중에 hello-world라는 API 프록시가 생성되고 배포되었습니다. 이 단계에서는 프록시를 호출하여 새 평가 조직을 테스트합니다.

내부 라우팅으로 프록시 호출

5단계에서 내부 라우팅 옵션을 선택한 경우 내부 전용 액세스로 API 프록시 호출의 단계를 수행합니다.

외부 라우팅으로 프록시 호출

5단계에서 외부 라우팅 옵션을 선택한 경우 이 섹션의 단계를 수행합니다.

  1. 도메인의 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 주소에 매핑합니다.
  2. hello-world 프록시가 배포되었는지 확인합니다.
    curl -i -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/eval/apis/hello-world/revisions/1/deployments"
  3. API 프록시를 호출합니다.

    다음 명령어를 실행하여 모든 네트워크가 사용 설정된 머신에서 API 프록시에 요청을 보냅니다.

    curl -i -H "Host: DOMAIN" \
      https://DOMAIN/hello-world

    여기서 DOMAIN5단계: 라우팅 구성의 설명대로 인증서에 넣고 환경 그룹에 추가한 도메인입니다. 필요한 경우 이 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 프록시 빌드 개요를 참조하세요.