VPC 피어링 없이 유료 조직 프로비저닝

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

Apigee Edge 문서 보기

이 문서에서는 VPC 피어링 없이 명령줄에서 Apigee를 설치하고 구성하는 방법을 설명합니다. 이 단계는 데이터 상주의 사용 설정 여부와 관계없이 유료 조직의 구독 및 사용한 만큼만 지불 가격 책정 모델에 모두 적용됩니다.

프로비저닝 옵션도 참조하세요.

제한사항

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

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

단계 요약

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

1단계: 환경 변수 정의

gcloud를 설정하고 이후 단계에서 사용할 환경 변수를 정의합니다.

  1. 시작하기 전에에 나열된 설정 요구사항을 완료했는지 확인합니다.
  2. Cloud SDK가 설치되어 있어야 합니다. 이를 설치하려면 Cloud SDK 설치를 참조하세요.
  3. gcloud CLI 초기화의 설명대로 Cloud SDK를 초기화하거나 기본 요건에서 만든 Google Cloud 프로젝트가 gcloud의 기본 프로젝트인지 확인합니다.
  4. 명령어 터미널에서 다음 환경 변수를 정의합니다. 필요한 조직 유형에 해당하는 탭(데이터 상주 없음 또는 데이터 상주)을 선택합니다.

    데이터 상주 없음

    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"

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

    • AUTH는 Bearer 토큰이 있는 Authentication 헤더를 정의합니다. Apigee API를 호출할 때 이 헤더를 사용합니다. 토큰은 일정 시간 후 만료됩니다. 만료 후에는 동일 명령어를 사용해서 다시 생성할 수 있습니다. 자세한 내용은 print-access-token 명령어의 참조 페이지를 확인하세요.
    • PROJECT_ID기본 요건의 일부로 만든 Cloud 프로젝트 ID입니다.
    • PROJECT_NUMBER기본 요건의 일부로 만든 Cloud 프로젝트 번호입니다.
    • RUNTIME_LOCATION은 나중에 만들 Apigee 인스턴스가 있는 물리적 위치입니다. 사용 가능한 런타임 위치 목록은 Apigee 위치를 참조하세요.

    • ANALYTICS_REGION은 Apigee 분석 데이터가 저장되는 물리적 위치입니다. 사용 가능한 Apigee API 분석 리전 목록은 Apigee 위치를 참조하세요.

      RUNTIME_LOCATIONANALYTICS_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"

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

    • AUTH는 Bearer 토큰이 있는 Authentication 헤더를 정의합니다. Apigee API를 호출할 때 이 헤더를 사용합니다. 토큰은 일정 시간 후 만료됩니다. 만료 후에는 동일 명령어를 사용해서 다시 생성할 수 있습니다. 자세한 내용은 print-access-token 명령어의 참조 페이지를 확인하세요.
    • PROJECT_ID기본 요건의 일부로 만든 Cloud 프로젝트 ID입니다.
    • PROJECT_NUMBER기본 요건의 일부로 만든 Cloud 프로젝트 번호입니다.
    • RUNTIME_LOCATION은 나중에 만들 Apigee 인스턴스가 있는 물리적 위치입니다. 사용 가능한 런타임 위치 목록은 Apigee 위치를 참조하세요.

      런타임 위치는 컨트롤 플레인 위치 내에 있어야 합니다.
    • CONTROL_PLANE_LOCATION은 Apigee 컨트롤 플레인 데이터가 저장되는 물리적 위치입니다. 사용 가능한 컨트롤 플레인 위치 목록은 Apigee 위치를 참조하세요.
    • CONSUMER_DATA_REGION은 컨트롤 플레인 리전의 하위 리전입니다. CONTROL_PLANE_LOCATION 및 CONSUMER_DATA_REGION을 모두 지정해야 합니다. 사용 가능한 소비자 데이터 리전 목록은 Apigee 위치를 참조하세요.
    • BILLING_TYPE은 만드는 조직의 결제 유형입니다. 유효한 값은 다음과 같습니다.

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

    데이터 상주 없음

    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 사용 설정

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

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

    gcloud services list

    방금 사용 설정한 API를 포함한 사용 설정된 모든 서비스가 응답으로 표시됩니다.

3단계: Apigee 서비스 에이전트 만들기

  1. Apigee 서비스 ID를 만듭니다.

    gcloud beta services identity create --service=apigee.googleapis.com \
      --project=$PROJECT_ID
  2. 에이전트가 성공적으로 생성되었는지 확인합니다. 응답에 에이전트 이름이 service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com 형식으로 표시됩니다. 예를 들면 다음과 같습니다.

    Service identity created: service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com

4단계: 조직 만들기

조직을 만들려면 먼저 런타임 데이터베이스 암호화 키링과 키를 만들고(1단계 참조), 데이터 상주를 사용하는 경우 컨트롤 플레인 암호화 키링과 키를 만들어야 합니다(2단계 참조). 이러한 Cloud KMS 키는 런타임 및 컨트롤 플레인 위치 전반에서 저장되고 복제되는 데이터를 암호화합니다. Apigee는 이러한 항목을 사용하여 KVM, 캐시, 데이터베이스에 저장되어 있는 클라이언트 보안 비밀번호와 같은 애플리케이션 데이터를 암호화합니다. 자세한 내용은 Apigee 암호화 키 정보를 참조하세요.

  1. 런타임 데이터베이스 암호화 키링과 키를 만듭니다.

    1. 런타임 데이터베이스 암호화 키링과 키의 위치에 대한 환경 변수를 정의합니다. 이렇게 하면 애플리케이션 키링 및 키를 만들 때 일관성을 유지하고 문서에서 더 쉽게 따를 수 있습니다.

      값은 런타임 데이터베이스 암호화 키링과 키가 저장되는 물리적 위치입니다.

      단일 리전

      단일 리전 구성(단일 리전에 인스턴스가 하나만 있는 경우): 지원되는 KMS 리전 위치에서 선택합니다.

      예를 들면 다음과 같습니다.

      RUNTIMEDBKEY_LOCATION="us-west1"

      이 값은 $RUNTIME_LOCATION(리전이라고도 함)과 같을 수 있지만 반드시 그럴 필요는 없습니다. 그러나 동일하면 성능상 이점이 있을 수 있습니다.

      멀티 리전

      멀티 리전 구성: 지원되는 멀티 리전 위치(예: us 또는 europe) 또는 이중 리전 위치에서 선택합니다.

      예를 들면 다음과 같습니다.

      RUNTIMEDBKEY_LOCATION="us"

      미국에서의 멀티 리전 구성을 갖고 있으면 가능한 경우 us를 사용자 위치로 사용합니다. 그렇지 않은 경우 nam4를 사용하세요.

    2. 데이터베이스 키링 및 키 이름의 환경 변수를 정의합니다.

      키링의 이름은 조직에서 고유해야 합니다. 두 번째 또는 후속 리전을 만드는 경우 이름은 다른 키링의 이름과 동일할 수 없습니다.

      RUNTIMEDB_KEY_RING_NAME=YOUR_DB_KEY_RING_NAME
      RUNTIMEDB_KEY_NAME=YOUR_DB_KEY_NAME
    3. (선택사항) 방금 설정한 값을 에코하여 작업을 확인합니다. 명령어에 변수를 사용하려면 변수 이름 앞에 달러 기호($)를 추가합니다.
      echo $RUNTIMEDBKEY_LOCATION
      echo $RUNTIMEDB_KEY_RING_NAME
      echo $RUNTIMEDB_KEY_NAME
    4. 새 키링을 만듭니다.
      gcloud kms keyrings create $RUNTIMEDB_KEY_RING_NAME \
        --location $RUNTIMEDBKEY_LOCATION --project $PROJECT_ID

      Apigee 런타임 데이터베이스 암호화 키의 위치는 Cloud HSMCloud EKM을 지원하는 모든 Cloud KMS 위치를 지원합니다.

    5. 키를 만듭니다.

      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
    6. 키 ID를 환경 변수에 입력합니다. 이후 명령어에서 이 변수를 사용하게 됩니다.

      RUNTIMEDB_KEY_ID=YOUR_RUNTIMEDB_KEY_ID
    7. 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.

      서비스 계정 이메일 주소에 있는 프로젝트 이름이 아닌 프로젝트 번호를 사용했는지 확인합니다.

  2. 데이터 상주를 사용하는 경우 컨트롤 플레인 암호화 키링과 키를 만듭니다. 데이터 상주를 사용하지 않는 경우 3단계로 이동합니다.
  3. 다음 단계를 수행하여 컨트롤 플레인 암호화 키링 및 키를 만듭니다.

    1. 컨트롤 플레인 데이터베이스 암호화 키링과 키의 위치에 대한 환경 변수를 정의합니다.
      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 위치를 참조하세요.
    2. 컨트롤 플레인 데이터베이스 키링과 키 이름에 대한 환경 변수를 정의합니다.

      키링의 이름은 조직에서 고유해야 합니다.

      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은 소비자 데이터 리전 암호화 키를 식별하는 데 사용할 키의 이름입니다.
    3. 새 키링을 만듭니다.
      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
    4. 키를 만듭니다.
      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
    5. 키 ID를 환경 변수에 입력합니다. 이후 명령어에서 이 변수를 사용하게 됩니다.
      CONTROL_PLANE_KEY_ID=YOUR_CONTROL_PLANE_KEY_ID
      
      CONSUMER_DATA_KEY_ID=YOUR_CONSUMER_DATA_KEY_ID
    6. 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 문제 해결

  4. 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"'",
        "disableVpcPeering":"true",
        "runtimeDatabaseEncryptionKeyName":"'"$RUNTIMEDB_KEY_ID"'"
      }'

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

    • -d: 요청의 데이터 페이로드를 정의합니다. 이 페이로드에는 다음이 포함되어야 합니다.
      • name: 새 조직의 식별자입니다. 프로젝트 ID와 동일한 이름이어야 합니다.

      • analyticsRegion: 분석 데이터가 저장되는 물리적 위치입니다.

      • runtimeType: 이 값을 CLOUD로 설정합니다.
      • billingType: 만든 조직의 결제 유형을 지정합니다.
      • disableVpcPeering: VPC 피어링을 사용하지 않으려면 true로 설정합니다. 기본값: false
      • runtimeDatabaseEncryptionKeyName: 이전 단계에서 만든 애플리케이션 암호화 키의 ID입니다. ID는 파일 경로와 같이 구성되어 있습니다. 예를 들면 다음과 같습니다.
        projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key

    데이터 상주

    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"'",
        "disableVpcPeering":"true",
        "runtimeDatabaseEncryptionKeyName":"'"$RUNTIMEDB_KEY_ID"'"
      }'

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

    -d: 요청의 데이터 페이로드를 정의합니다. 이 페이로드에는 다음이 포함되어야 합니다.

    • name: 새 조직의 식별자입니다. 프로젝트 ID와 동일한 이름이어야 합니다.
    • runtimeType: 이 값을 CLOUD로 설정합니다.
    • billingType: 만든 조직의 결제 유형을 지정합니다.
    • controlPlaneEncryptionKeyName: 컨트롤 플레인 키 ID입니다.
    • apiConsumerDataLocation: 내부 리소스에서 사용할 하위 리전도 지정해야 합니다. 지원되는 값은 데이터 상주 리전을 참조하세요.
    • apiConsumerDataEncryptionKeyName: 소비자 데이터 리전 키 ID입니다.
    • disableVpcPeering: VPC 피어링을 사용하지 않으려면 true로 설정합니다. 기본값: false
    • 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", ... }'
  5. 잠시만 기다려 주세요.
  6. 생성 요청의 상태를 확인하려면 다음 예시와 같이 Apigee List organizations APIGET 요청을 보내면 됩니다.

    데이터 상주 없음

    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"
      }
    }

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

    Apigee가 HTTP 오류 응답을 반환하는 경우 Apigee 조직 만들기를 참조하세요.

5단계: 런타임 인스턴스 만들기

런타임 인스턴스는 Apigee 프로젝트 및 관련 서비스가 저장된 위치입니다. 이 위치는 서비스에 대한 사용자 대상 엔드포인트를 제공합니다. 새 런타임 인스턴스를 만들려면 다음 안내를 따르세요.

  1. Apigee에서 조직 생성을 완료했는지 확인합니다. Apigee 조직 만들기에서 새 조직을 만들도록 요청을 제출했지만 계속하기 전에 작업을 완료해야 합니다.

    이렇게 하려면 다음 요청을 Organizations API로 전송하세요.

    데이터 상주 없음

    curl -i -H "Authorization: Bearer $AUTH" \
        "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID"

    데이터 상주

    curl -i -H "Authorization: Bearer $AUTH" \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID"

    조직이 존재하고 조직을 볼 수 있는 적절한 권한이 있는 경우 Apigee가 이에 대한 세부 정보로 응답합니다. Apigee가 오류로 응답하면 몇 분 정도 기다린 후 요청을 다시 보냅니다.

  2. 데이터베이스의 암호화 키를 만든 이전 작업과 비슷하게 이제 서버 측에서 데이터를 암호화하는 데 사용되는 Cloud KMS 키를 만들어야 합니다. 시작하려면 다음 환경 변수를 정의합니다.
    INSTANCE_NAME=YOUR_INSTANCE_NAME
    RUNTIME_LOCATION=YOUR_RUNTIME_LOCATION
    DISK_KEY_RING_NAME=YOUR_DISK_KEY_RING_NAME
    DISK_KEY_NAME=YOUR_DISK_KEY_NAME
  3. 각 항목의 의미는 다음과 같습니다.

    • INSTANCE_NAME: 새 인스턴스의 이름입니다. 예를 들면 my-runtime-instance입니다. 이름은 소문자로 시작해야 하며 최대 32자(영문 기준)이고 소문자, 숫자, 하이픈만 포함할 수 있습니다. 하이픈으로 시작하거나 끝날 수 없으며 2자(영문 기준) 이상이어야 합니다.
    • RUNTIME_LOCATION은 클러스터가 호스팅되는 물리적 위치입니다. 유효한 값은 Compute Engine에서 허용하는 위치입니다. 사용 가능한 리전 및 영역을 참조하세요. 이 예시에서는 us-west1를 사용합니다.
    • DISK_KEY_RING_NAME은 디스크 암호화 키링의 이름입니다.
    • DISK_KEY_NAME은 디스크 암호화 키의 이름입니다.
  4. 디스크 암호화 키를 만듭니다.
    1. 새 디스크 키링을 만듭니다.
      gcloud kms keyrings create $DISK_KEY_RING_NAME \
        --location $RUNTIME_LOCATION \
        --project $PROJECT_ID

      디스크 키링이 인스턴스와 동일한 위치로 설정되어야 합니다. 각 인스턴스와 키링에 고유한 위치가 있어야 합니다.

    2. 새 디스크 키를 만듭니다.
      gcloud kms keys create $DISK_KEY_NAME \
        --keyring $DISK_KEY_RING_NAME \
        --location $RUNTIME_LOCATION \
        --purpose "encryption" \
        --project $PROJECT_ID

      키 경로로 해당 키를 참조할 수 있습니다. 다음 명령어를 사용하여 키 경로를 가져올 수 있습니다.

      gcloud kms keys list \
        --location=$RUNTIME_LOCATION \
        --keyring=$DISK_KEY_RING_NAME \
        --project=$PROJECT_ID

      키 경로는 다음과 같습니다.

      projects/PROJECT_ID/locations/RUNTIME_LOCATION/keyRings/my-disk-key-ring/cryptoKeys/my-disk-key
    3. 키 경로를 환경 변수에 입력합니다. 이후 명령어에서 이 변수를 사용하게 됩니다.

      DISK_KEY_ID=YOUR_DISK_KEY_ID

      예: DISK_KEY_ID=projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key

    4. Apigee 서비스 에이전트가 새 키를 사용할 수 있는 액세스 권한을 부여합니다.

      gcloud kms keys add-iam-policy-binding $DISK_KEY_NAME \
        --location $RUNTIME_LOCATION \
        --keyring $DISK_KEY_RING_NAME \
        --member serviceAccount:service-$PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
        --project $PROJECT_ID

      이 명령어는 키를 Apigee 서비스 에이전트에 결합합니다.

    자세한 내용은 Apigee 암호화 키 정보를 참조하세요.

  5. Apigee Instances APIPOST 요청을 전송하여 프로젝트의 새 런타임 인스턴스를 만듭니다.

    데이터 상주 없음

    curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances" \
      -X POST -H "Authorization: Bearer $AUTH" \
      -H "Content-Type:application/json" \
      -d '{
        "name":"'"$INSTANCE_NAME"'",
        "location":"'"$RUNTIME_LOCATION"'",
        "diskEncryptionKeyName":"'"$DISK_KEY_ID"'",
        "consumerAcceptList":["'"$PROJECT_ID"'"]
      }'

    데이터 상주

    curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances" \
      -X POST -H "Authorization: Bearer $AUTH" \
      -H "Content-Type:application/json" \
      -d '{
        "name":"'"$INSTANCE_NAME"'",
        "location":"'"$RUNTIME_LOCATION"'",
        "diskEncryptionKeyName":"'"$DISK_KEY_ID"'",
        "consumerAcceptList":["'"$PROJECT_ID"'"]
      }'

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

    • consumerAcceptList (선택사항) Apigee VPC의 서비스 연결에 비공개로 연결할 수 있는 Google Cloud 프로젝트 ID 목록을 지정합니다. 서비스 연결은 Google Cloud Private Service Connect와 사용되는 항목이며, 서비스 프로듀서(이 경우 Apigee)가 소비자(이 경우 하나 이상의 Cloud 프로젝트)에게 서비스를 노출할 수 있도록 합니다. 기본적으로 Apigee 조직과 이미 연결된 Cloud 프로젝트를 사용합니다. 예를 들면 다음과 같습니다. "consumerAcceptList": ["project1", "project2", "project3"]

      인스턴스 UI에서 허용되는 프로젝트 목록을 설정하고 변경할 수도 있습니다. 자세한 내용은 인스턴스 관리를 참조하세요.

    Apigee가 새 Kubernetes 클러스터를 만들어 실행하고 해당 클러스터에 Apigee 리소스를 설치하며 부하 분산을 설정해야 하므로 이 요청을 완료하는 데는 최대 20분이 소요될 수 있습니다.

    Apigee에서 오류가 반환되면 새 인스턴스 만들기를 참조하세요.

  6. 런타임 인스턴스 생성 요청의 상태를 확인하려면 다음 명령어를 실행합니다. 활성 상태이면 다음 단계로 넘어갈 수 있습니다.

    데이터 상주 없음

    curl -i -X GET -H "Authorization: Bearer $AUTH" \
        "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances/$INSTANCE_NAME"

    데이터 상주

    curl -i -X GET -H "Authorization: Bearer $AUTH" \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances/$INSTANCE_NAME"

6단계: 환경 만들기

환경을 만들어 명령줄의 런타임에 연결하려면 다음 절차를 따르세요.

  1. 이 섹션에 사용할 환경 변수를 정의합니다. 만드는 특정 환경 변수는 구독 또는 사용한 만큼만 지불 조직에 대한 환경을 만드는지 여부에 따라 다릅니다.

    구독

    구독 환경의 경우 다음 변수를 만듭니다.

    ENVIRONMENT_NAME="YOUR_ENV_NAME"
    ENV_GROUP_NAME="YOUR_ENV_GROUP_NAME"
    ENV_GROUP_HOSTNAME="YOUR_ENV_GROUP_HOSTNAME"

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

    • ENVIRONMENT_NAME은 문자열 이름입니다. 예를 들면 test입니다.
    • ENV_GROUP_NAME은 문자열 이름입니다. 예를 들면 test-group입니다.
    • ENV_GROUP_HOSTNAME은 유효한 도메인 호스트 이름입니다. 예를 들면 foo.example.com입니다.

    사용한 만큼만 지불

    사용한 만큼만 지불 환경의 경우 다음 변수를 만듭니다.

    ENVIRONMENT_NAME="YOUR_ENV_NAME"
    ENVIRONMENT_TYPE="YOUR_ENV_TYPE"
    ENV_GROUP_NAME="YOUR_ENV_GROUP_NAME"
    ENV_GROUP_HOSTNAME="YOUR_ENV_GROUP_HOSTNAME"

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

    • ENVIRONMENT_NAME은 문자열 이름입니다. 예를 들면 test입니다.
    • ENVIRONMENT_TYPE은 이 환경의 환경 유형이며 BASE, INTERMEDIATE 또는 COMPREHENSIVE 값 중 하나를 지정해야 하는 사용한 만큼만 지불 사용자에게만 해당됩니다. 다른 사용자는 환경 유형을 생략해야 합니다.
    • ENV_GROUP_NAME은 문자열 이름입니다. 예를 들면 test-group입니다.
    • ENV_GROUP_HOSTNAME은 유효한 도메인 호스트 이름입니다. 예를 들면 foo.example.com입니다.
  2. Environments API로 새 환경 만들기. 사용하는 특정 명령어는 구독 또는 사용한 만큼만 지불 조직에 대한 환경을 만드는지 여부에 따라 다릅니다.

    구독

    새 구독 환경의 경우 다음 명령어를 사용합니다.

    데이터 상주 없음

    curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments" \
        -H "Authorization: Bearer $AUTH" \
        -X POST \
        -H "Content-Type:application/json" \
        -d '{
          "name":"'"$ENVIRONMENT_NAME"'"
      }'

    데이터 상주

    curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments" \
        -H "Authorization: Bearer $AUTH" \
        -X POST \
        -H "Content-Type:application/json" \
        -d '{
          "name":"'"$ENVIRONMENT_NAME"'"
      }'

    Apigee에서 새 환경을 만듭니다.

    사용한 만큼만 지불

    사용한 만큼만 지불 환경의 경우 다음 명령어를 사용합니다.

    데이터 상주 없음

    curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments" \
        -H "Authorization: Bearer $AUTH" \
        -X POST \
        -H "Content-Type:application/json" \
        -d '{
          "name":"'"$ENVIRONMENT_NAME"'",
          "type":"'"$ENVIRONMENT_TYPE"'"
      }'

    데이터 상주

    curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments" \
        -H "Authorization: Bearer $AUTH" \
        -X POST \
        -H "Content-Type:application/json" \
        -d '{
          "name":"'"$ENVIRONMENT_NAME"'",
          "type":"'"$ENVIRONMENT_TYPE"'"
      }'

    Apigee에서 새 환경을 만듭니다.

  3. 계속하기 전에 Environments API를 호출하여 Apigee가 새 환경 만들기를 완료했는지 확인합니다.

    데이터 상주 없음

    curl -i -H "Authorization: Bearer $AUTH" \
        "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments"

    데이터 상주

    curl -i -H "Authorization: Bearer $AUTH" \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments"

    Apigee는 사용 가능한 환경 목록으로 응답합니다. 예를 들어 환경 이름이 test인 경우 Apigee는 다음과 같이 응답합니다.

    [
      "test"
    ]
  4. 런타임 인스턴스에 새 환경을 연결합니다.

    데이터 상주 없음

    curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances/$INSTANCE_NAME/attachments" \
        -X POST -H "Authorization: Bearer $AUTH" \
        -H "content-type:application/json" \
        -d '{
          "environment":"'"$ENVIRONMENT_NAME"'"
        }'

    데이터 상주

    curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances/$INSTANCE_NAME/attachments" \
        -X POST -H "Authorization: Bearer $AUTH" \
        -H "content-type:application/json" \
        -d '{
          "environment":"'"$ENVIRONMENT_NAME"'"
        }'

    이 작업을 완료하는 데 몇 분 정도 걸릴 수 있습니다. 연결이 완료되었는지 확인하려면 다음 명령어를 실행합니다.

    데이터 상주 없음

    curl -i -H "Authorization: Bearer $AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances/$INSTANCE_NAME/attachments"

    데이터 상주

    curl -i -H "Authorization: Bearer $AUTH" \
      "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances/$INSTANCE_NAME/attachments"

    다음과 같은 출력이 표시되면 다음 단계로 넘어가도 됩니다.

    {
      "attachments": [
        {
          "name": "ed628782-c893-4095-b71c-f4731805290a",
          "environment": "test",
          "createdAt": "1641604447542"
        }
      ]
    }
  5. 다음 명령어를 사용하여 새 환경 그룹을 만듭니다. 자세한 내용은 환경 및 환경 그룹 정보를 참조하세요.

    데이터 상주 없음

    curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups" \
        -H "Authorization: Bearer $AUTH" \
        -X POST \
        -H "Content-Type:application/json" \
        -d '{
          "name": "'"$ENV_GROUP_NAME"'",
          "hostnames":["'"$ENV_GROUP_HOSTNAME"'"]
      }'

    데이터 상주

    curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups" \
        -H "Authorization: Bearer $AUTH" \
        -X POST \
        -H "Content-Type:application/json" \
        -d '{
          "name": "'"$ENV_GROUP_NAME"'",
          "hostnames":["'"$ENV_GROUP_HOSTNAME"'"]
      }'
  6. 작업이 완료될 때까지 기다립니다. 다음과 같은 요청을 사용하여 새 그룹의 상태를 확인할 수 있습니다.

    데이터 상주 없음

    curl -i -H "Authorization: Bearer $AUTH" \
        "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/$ENV_GROUP_NAME"

    데이터 상주

    curl -i -H "Authorization: Bearer $AUTH" \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/$ENV_GROUP_NAME"
  7. 다음 명령어를 사용하여 새 환경을 새 환경 그룹에 연결합니다.

    데이터 상주 없음

    curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/$ENV_GROUP_NAME/attachments" \
        -X POST \
        -H "Authorization: Bearer $AUTH" \
        -H "content-type:application/json" \
        -d '{
          "environment":"'"$ENVIRONMENT_NAME"'"
      }'

    데이터 상주

    curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/$ENV_GROUP_NAME/attachments" \
        -X POST \
        -H "Authorization: Bearer $AUTH" \
        -H "content-type:application/json" \
        -d '{
          "environment":"'"$ENVIRONMENT_NAME"'"
      }'
  8. 작업 상태를 확인하려면 이 API를 호출합니다.

    데이터 상주 없음

    curl -H "Authorization: Bearer $AUTH" \
        "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/$ENV_GROUP_NAME/attachments"

    데이터 상주

    curl -H "Authorization: Bearer $AUTH" \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/$ENV_GROUP_NAME/attachments"

7단계: 라우팅 구성

이 단계에서는 클라이언트 애플리케이션이 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. 이전에 만든 인스턴스에서 서비스 연결을 가져옵니다.

    데이터 상주 없음

    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",
          "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. 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 "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",
          "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
    

    $PROJECT_ID는 Apigee 조직과 이미 연결된 Cloud 프로젝트 또는 Apigee 런타임 인스턴스 생성consumerAcceptlist에 포함된 Cloud 프로젝트입니다.

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

    다음을 바꿉니다.

    • NEG_NAME: 네트워크 엔드포인트 그룹의 이름입니다.
    • BACKEND_SERVICE_NAME을 백엔드 서비스 이름으로 바꿉니다.
  5. 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 형식 비공개 키 파일의 경로입니다.
  6. 부하 분산기의 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: 부하 분산기의 기본 백엔드 서비스 이름입니다. 요청된 호스트 이름과 일치하는 호스트 규칙이 없는 경우 기본값이 사용됩니다.
  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 \
    --network=$NETWORK_NAME \
    --subnet=$SUBNET_NAME
    

    다음을 바꿉니다.

    • FWD_RULE: 전달 규칙의 이름입니다.
    • ADDRESS_NAME: 전달 규칙에 사용하도록 예약한 IP 주소 리소스입니다.
    • PROXY_NAME: 대상 HTTPS 프록시의 이름입니다.
    • NETWORK_NAME: (선택사항) NEG가 생성되는 네트워크의 이름입니다. 이 매개변수를 생략하면 default 프로젝트 네트워크가 사용됩니다.
    • SUBNET_NAME: 제작자에 대한 비공개 연결에 사용되는 서브넷의 이름입니다.
  9. 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 "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"
        }
      ]
    }
  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
    

    다음을 바꿉니다.

    • 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 또는 다른 항목에서 공유하고 사용할 수 있습니다. 서브넷이 지정되지 않은 경우 네트워크 엔드포인트는 네트워크 엔드포인트 그룹이 생성된 리전의 모든 서브네트워크에 속할 수 있습니다.
    • $PROJECT_ID는 Apigee 조직과 이미 연결된 Cloud 프로젝트 또는 Apigee 런타임 인스턴스 생성consumerAcceptlist에 포함된 Cloud 프로젝트입니다. 프로젝트 ID를 포함할 환경 변수를 아직 만들지 않은 경우 다음 명령어 중 대부분에서 사용되므로 지금 만듭니다.
  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 부하 분산기를 만들려면 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 프록시의 이름입니다.

리전 외부 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 "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"
        }
      ]
    }
  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 부하 분산기를 만들려면 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 형식 비공개 키 파일의 경로입니다.

    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: 인증서 리소스의 이름입니다.
  10. 부하 분산기의 리전 외부 주소를 예약합니다. 네트워크 등급은 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
  11. 전달 규칙을 만듭니다.
    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 프로비저닝이 완료되었습니다. 샘플 프록시 배포로 이동합니다.

8단계: 샘플 프록시 배포

  1. GitHub에서 샘플 프록시를 다운로드합니다. 프록시 대상은 일반적으로 사용되는 공개 요청 및 응답 서비스인 httpbin.org 서비스입니다.
  2. 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 파일이 포함된 디렉터리의 경로입니다.

  3. 이전에 만든 환경에 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"
  4. 이 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"
  5. 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 프록시 배포를 참조하세요.