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

이 페이지는 Apigee에 적용되지만 Apigee Hybrid에는 적용되지 않습니다.

Apigee Edge 문서 보기

이 문서에서는 VPC 피어링 없이 명령줄에서 Apigee 평가 조직을 설치하고 구성하는 방법을 설명합니다. 평가 조직은 60일 후 만료되며 다음 제한사항이 적용될 수 있습니다. 평가 및 유료 조직 비교도 참조하세요.

제한사항

이 문서에서 설명하는 비VPC 피어링 설치 옵션에는 몇 가지 제한사항이 있습니다.

비VPC 피어링에서 지원되거나 지원되지 않는 기능과 네트워킹 방식의 전체 목록은 네트워킹 옵션을 선택하는 방법을 참조하세요.

단계 요약

프로비저닝 단계는 다음과 같습니다.

  • 1단계: 환경 변수 정의: gcloud를 설정하고 환경 변수를 정의합니다. Google Cloud CLI는 인증, 로컬 구성, 개발자 워크플로, Google Cloud API와의 상호작용을 관리합니다.
  • 2단계: API 사용 설정: Apigee를 사용하려면 여러 Google Cloud API를 사용 설정해야 합니다.
  • 3단계: 조직 만들기: Apigee 조직(조직이라고도 함)은 Apigee의 최상위 컨테이너입니다. 여기에는 모든 환경 및 환경 그룹, 사용자, API 프록시, 관련 리소스가 포함됩니다.
  • 4단계: 라우팅 구성: API에 대한 외부 액세스 또는 내부 전용 액세스를 허용합니다.
  • 5단계: 샘플 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_LOCATIONANALYTICS_REGION은 둘 다 같은 리전일 수 있지만 반드시 동일할 필요는 없습니다. 그러나 동일하면 성능상 이점이 있을 수 있습니다.

  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 \
      cloudkms.googleapis.com --project=$PROJECT_ID
  2. (선택사항) 작업을 확인하려면 services list 명령어를 사용하여 사용 설정된 모든 API를 표시합니다.

    gcloud services list

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

3단계: 조직 만들기

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

  1. provisionOrganization API로 새 평가 조직 만들기:
     suppresswarning="true">curl "https://apigee.googleapis.com/v1/projects/$PROJECT_ID:provisionOrganization"  \
      -H "$AUTH" \
      -X POST \
      -H "Content-Type:application/json" \
      -d '{
        "analyticsRegion":"'"$ANALYTICS_REGION"'",
        "runtimeLocation":"'"$RUNTIME_LOCATION"'",
        "disableVpcPeering":"true",
      }'

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

    • -d: 요청의 데이터 페이로드를 정의합니다. 이 페이로드에는 다음이 포함되어야 합니다.
      • ANALYTICS_REGION: 분석 데이터가 저장되는 물리적 위치입니다.

      • RUNTIME_LOCATION: Apigee 인스턴스가 있는 물리적 위치입니다.

      • disableVpcPeering: 이 프로비저닝 흐름에서는 VPC 피어링을 사용하지 않으므로 이 플래그를 true로 설정해야 합니다. 기본값: false
  2. Apigee는 LRO를 시작하여 평가 조직을 만듭니다. 이 작업은 완료하는 데 최대 40분이 걸립니다.

  3. 생성 요청의 상태를 확인하려면 다음 예시와 같이 Apigee List organizations APIGET 요청을 보내면 됩니다.
    curl -H "$AUTH" "https://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"
    }
    }

    성공하면 응답 객체에 "state": "ACTIVE"가 표시되고 다음 단계로 이동할 수 있습니다.

4단계: 라우팅 구성

이 단계에서는 클라이언트 애플리케이션이 Apigee와 통신하는 방법을 구성합니다. 클라이언트-Apigee 트래픽을 '상위' 트래픽이라고도 합니다. 상위 구성 옵션은 다음과 같습니다.

액세스 유형 구성 및 배포 프로세스 설명
내부로 PSC

Private Service Connect(PSC)를 사용하여 모든 Google Cloud 프로젝트의 API 프록시에 대한 내부 액세스만 허용합니다.

PSC를 사용하면 서비스 제작자(Apigee)와 서비스 소비자(피어링된 VPC 프로젝트 또는 사용자가 제어하는 하나 이상의 클라우드 프로젝트) 간의 비공개 연결을 사용 설정할 수 있습니다. 이 방법을 사용하면 요청이 서비스 엔드포인트 또는 리전 내부 부하 분산기를 통해 서비스 연결이라는 단일 연결 지점으로 전달됩니다. 이 구성을 사용하면 내부 클라이언트가 네트워크가 사용 설정된 모든 머신에서 Apigee API 프록시 요청을 보낼 수 있습니다.

외부로 PSC

Private Service Connect(PSC)를 사용하여 API 프록시에 대한 외부 액세스를 허용합니다.

Private Service Connect(PSC)를 사용하여 서비스 제작자(Apigee)와 서비스 소비자(피어링된 VPC 프로젝트 또는 제어하는 하나 이상의 다른 Cloud 프로젝트) 간의 비공개 연결을 사용 설정합니다. 이 방법을 사용하면 요청이 전역 외부 부하 분산기나 리전 외부 부하 분산기를 통해 서비스 연결이라는 단일 연결 지점으로 전달됩니다. 이 구성을 사용하면 네트워크가 사용 설정된 모든 머신에서 Apigee API 프록시 요청을 보낼 수 있습니다.

이러한 각 라우팅 방식은 아래의 안내 탭에 나와 있습니다.

내부 라우팅(PSC)

이 섹션에서는 Private Service Connect(PSC)를 사용하여 모든 Google Cloud 프로젝트의 API 프록시에 대한 내부 액세스만 허용하는 방법을 설명합니다.

PSC로 내부 액세스를 구성하는 옵션은 다음과 같습니다.

선택한 옵션에 따라 아래 탭을 선택하고 다음 단계를 따르세요.

서비스 엔드포인트

서비스 연결을 위한 PSC 서비스 엔드포인트 만들기

  1. Apigee 인스턴스에서 서비스 연결을 가져옵니다.
    curl -i -X GET -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"

    다음 샘플 출력에서 serviceAttachment 값은 굵게 표시됩니다.

    {
      "instances": [
        {
          "name": "us-west1",
          "location": "us-west1",
          "createdAt": "1645731488019",
          "lastModifiedAt": "1646504754219",
          "diskEncryptionKeyName": "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek",
          "state": "ACTIVE",
          "runtimeVersion": "1-7-0-20220228-190814",
          "consumerAcceptList": [
            "my-project"
          ],
          "serviceAttachment": "projects/bfac74a67a320c43a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw1"
        }
      ]
    }
  2. Private Service Connect 엔드포인트 만들기에 설명된 대로 이전 단계의 인스턴스 응답 본문에서 얻은 서비스 연결을 가리키는 PSC 서비스 엔드포인트를 만듭니다.
  3. 서비스 엔드포인트 IP 주소를 기록해 둡니다. 나중에 API 프록시를 호출하여 설정을 테스트할 때 IP 주소가 필요합니다. (예: 10.138.0.2)

Apigee 프로비저닝이 완료되었습니다. 샘플 프록시 배포로 이동합니다.

내부 리전 LB

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 또는 다른 항목에서 공유하고 사용할 수 있습니다. 서브넷이 지정되지 않은 경우 네트워크 엔드포인트는 네트워크 엔드포인트 그룹이 생성된 리전의 모든 서브네트워크에 속할 수 있습니다.
  • 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) 만들기

    1. 이전에 만든 인스턴스에서 서비스 연결을 가져옵니다.
      curl -i -X GET -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"

      다음 샘플 출력에서 serviceAttachment 값은 굵게 표시됩니다.

      {
      "instances": [
        {
          "name": "us-west1",
          "location": "us-west1",
          "createdAt": "1645731488019",
          "lastModifiedAt": "1646504754219",
          "diskEncryptionKeyName": "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek",
          "state": "ACTIVE",
          "runtimeVersion": "1-7-0-20220228-190814",
          "consumerAcceptList": [
            "my-project"
          ],
          "serviceAttachment": "projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7"
        }
      ]
      }
    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 \
      --project=$PROJECT_ID
      

    8d단계: 리전 내부 부하 분산기 구성

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

    4. 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: 네트워크 엔드포인트 그룹의 이름입니다.
    5. HTTPS 대상 프록시에서 사용할 SSL 인증서 리소스가 있어야 합니다.

      자체 관리형 SSL 인증서 리소스를 만들려면 이 명령어를 사용합니다. 자체 관리형 SSL 인증서를 만들려면 로컬 비공개 키 파일과 로컬 인증서 파일이 필요합니다. 이러한 파일을 만들어야 하는 경우 자체 관리형 SSL 인증서 사용 1단계를 참조하세요.

      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 형식 비공개 키 파일의 경로입니다.
    6. 부하 분산기의 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: 부하 분산기의 기본 백엔드 서비스 이름입니다. 요청된 호스트 이름과 일치하는 호스트 규칙이 없는 경우 기본값이 사용됩니다.
    7. 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: 인증서 리소스의 이름입니다.
    8. 전달 규칙을 만듭니다.
      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

      다음을 바꿉니다.

      • FWD_RULE: 전달 규칙의 이름입니다.
      • ADDRESS_NAME: 전달 규칙에 사용하도록 예약한 IP 주소 리소스입니다.
      • PROXY_NAME: 대상 HTTPS 프록시의 이름입니다.

    Apigee 프로비저닝이 완료되었습니다. 샘플 프록시 배포로 이동합니다.

    외부 라우팅(PSC)

    이 섹션에서는 Apigee 및 제어하는 VPC 사이의 통신을 허용하도록 Private Service Connect(PSC)를 사용하여 외부 라우팅을 구성하는 방법을 설명합니다. 외부 클라이언트에서 Apigee 런타임 인스턴스로 요청을 보내려면 먼저 이 작업을 수행해야 합니다.

    8b단계: NEG 만들기 및 부하 분산기 구성

    전역 또는 리전 부하 분산기를 만들 수 있습니다.

    전역 외부 LB

    전역 외부 HTTP(S) 부하 분산기(부하 분산 스키마를 EXTERNAL_MANAGED로 설정)를 구성합니다.

    Private Service Connect NEG는 리전별이지만 이 구성의 다른 모든 부하 분산 구성요소는 전역적입니다.

    1. 환경 변수 정의에서 환경 변수를 설정했는지 확인합니다.
    2. 이전에 만든 인스턴스에서 서비스 연결을 가져옵니다.
      curl -i -X GET -H "$AUTH" \
            "https://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"
              }
            ]
          }
    3. 이전 단계의 인스턴스 응답 본문에서 얻은 서비스 연결을 가리키는 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
          

      다음을 바꿉니다.

      • NETWORK_NAME: (선택사항) NEG가 생성되는 네트워크의 이름입니다. 이 매개변수를 생략하면 default 프로젝트 네트워크가 사용됩니다.
      • SUBNET_NAME: 제작자에 대한 비공개 연결에 사용되는 서브넷의 이름입니다. 서브넷 크기는 작을 수 있습니다. PSC NEG에는 서브넷에서 하나의 IP만 있으면 됩니다. Apigee의 경우 리전당 하나의 PSC NEG만 필요합니다. 서브넷은 VM 또는 다른 항목에서 공유하고 사용할 수 있습니다. 서브넷이 지정되지 않은 경우 네트워크 엔드포인트는 네트워크 엔드포인트 그룹이 생성된 리전의 모든 서브네트워크에 속할 수 있습니다.
      • PROJECT_ID Apigee 조직과 이미 연결된 Cloud 프로젝트 또는 Apigee 런타임 인스턴스 생성consumerAcceptlist에 포함된 Cloud 프로젝트입니다.
    4. 부하 분산기의 전역 외부 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
    5. NEG의 백엔드 서비스를 만듭니다.
      gcloud compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTPS \
        --global --project=$PROJECT_ID
    6. BACKEND_SERVICE_NAME을 백엔드 서비스 이름으로 바꿉니다.

    7. 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: 네트워크 엔드포인트 그룹의 리전입니다.
    8. 부하 분산기의 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: 부하 분산기의 기본 백엔드 서비스 이름입니다. 요청된 호스트 이름과 일치하는 호스트 규칙이 없는 경우 기본값이 사용됩니다.
    9. 대상 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: 인증서 리소스의 이름입니다.
    10. 전달 규칙을 만듭니다.
      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 프로비저닝이 완료되었습니다. 샘플 프록시 배포로 이동합니다.

    리전 외부 LB

    리전 외부 HTTP(S) 부하 분산기를 구성합니다. 외부 HTTP(S) 부하 분산기 개요도 참조하세요.

    1. 환경 변수 정의에서 변수를 설정해야 합니다.
    2. 프록시 전용 서브넷 만들기:
      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을 서브넷이 생성되는 네트워크의 이름으로 바꿉니다. 이 매개변수를 생략하면 기본 프로젝트 네트워크가 사용됩니다.
    3. 이전에 만든 인스턴스에서 서비스 연결을 가져옵니다.
      curl -i -X GET -H "$AUTH" \
              "https://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"
                }
              ]
            }
    4. 네트워크 엔드포인트 그룹 만들기
      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입니다.
    5. NEG의 백엔드 서비스를 만듭니다.
      gcloud compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTPS \
        --region=$RUNTIME_LOCATION  \
        --project=$PROJECT_ID
    6. BACKEND_SERVICE_NAME을 백엔드 서비스 이름으로 바꿉니다.

    7. 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: 네트워크 엔드포인트 그룹의 이름입니다.
    8. 부하 분산기의 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: 부하 분산기의 기본 백엔드 서비스 이름입니다. 요청된 호스트 이름과 일치하는 호스트 규칙이 없는 경우 기본값이 사용됩니다.
    9. 대상 HTTPS 프록시를 만듭니다.

      HTTPS 대상 프록시에서 사용할 SSL 인증서 리소스가 있어야 합니다.

      자체 관리형 SSL 인증서 리소스를 만들려면 이 명령어를 사용합니다. 자체 관리형 SSL 인증서를 만들려면 로컬 비공개 키 파일과 로컬 인증서 파일이 필요합니다. 이러한 파일을 만들어야 하는 경우 자체 관리형 SSL 인증서 사용 1단계를 참조하세요.

      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 형식 비공개 키 파일의 경로입니다.
    10. 자동으로 생성된 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"'"]
            }'
    11. 환경 그룹 작업의 상태를 확인합니다.
      curl -H "$AUTH" \
            "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/eval-group/attachments"
          
    12. 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: 인증서 리소스의 이름입니다.
    13. 부하 분산기의 리전 외부 주소를 예약합니다. 네트워크 등급은 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
    14. 전달 규칙을 만듭니다.
      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 프로비저닝이 완료되었습니다. 샘플 API 프록시 호출로 이동합니다.

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

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

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

    5단계에서 서비스 엔드포인트 옵션과 함께 내부 라우팅을 선택한 경우 내부 전용 액세스로 API 프록시 호출의 단계를 따르세요.

    외부 라우팅으로 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)" --region=$RUNTIME_LOCATION \
            --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)" --region=$RUNTIME_LOCATION \
                    --project=$PROJECT_ID

      도메인 구성을 확인할 수 없으면 다음 명령어를 사용하여 프록시 호출을 시도해 봅니다.

      curl  -H Host:DOMAIN --resolve \
        DOMAIN:443:EXTERNAL_IP_ADDRESS  \
        https://DOMAIN:443/hello-world -k

    다음: API 프록시 빌드 및 배포에 대한 자세한 내용은 첫 번째 API 프록시 빌드 개요를 참조하세요.