공유 VPC 네트워크 사용

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

Apigee Edge 문서 보기

이 문서에서는 공유 Virtual Private Cloud(VPC) 호스트를 구성하고 여기에 별도의 Apigee 및 백엔드 대상 서비스 프로젝트를 연결하는 방법을 설명합니다. 공유 VPC 네트워크를 사용하면 Google Cloud로 중앙 집중식 네트워킹 인프라를 구현할 수 있습니다. 호스트 프로젝트에서 단일 VPC 네트워크를 사용하여 여러 서비스 프로젝트의 리소스를 연결할 수 있습니다.

공유 VPC 이점

Google 관리 VPC에서 실행되는 Apigee 런타임은 사용자가 소유한 VPC와 피어링됩니다. 다음 다이어그램과 같이 이 토폴로지에서 Apigee 런타임 엔드포인트는 VPC 네트워크와 통신할 수 있습니다.

다른 프로젝트의 VPC에서 내부 백엔드가 있는 공유 VPC

Apigee 아키텍처 개요도 참조하세요.

대다수의 시나리오에서 VPC 네트워크는 단일 Google Cloud 프로젝트에 속하므로 위에 설명된 토폴로지는 매우 간단하며 여러 조직에서 리소스 계층의 권장사항을 따르고 여러 프로젝트로 인프라를 분리하려고 합니다. 네트워크 토폴로지에서 이전과 마찬가지로 Apigee 테넌트 프로젝트를 VPC 네트워크에 피어링했지만 내부 백엔드가 다른 프로젝트의 VPC에 있다고 가정해 보겠습니다. 다음 다이어그램이 표시됩니다.

다른 프로젝트의 VPC에서 내부 백엔드가 있는 공유 VPC

다이어그램과 같이 Apigee VPC를 백엔드 VPC에 피어링하면 Apigee VPC 네트워크에서 백엔드에 연결할 수 있으며, 반대의 경우도 마찬가지입니다. 네트워크 피어링이 대칭적이기 때문입니다. 하지만 Apigee 테넌트 프로젝트는 VPC 피어링 문서에 설명된 대로 전환되지 않으므로 Apigee VPC하고만 통신할 수 있습니다. 작동하도록 Apigee VPC에 추가 프록시를 배포하여 트래픽을 피어링 링크에서 백엔드 VPC로 전달할 수 있습니다. 하지만 이 방법을 사용하면 운영 오버헤드와 유지보수가 추가됩니다.

공유 VPC는 위에서 설명한 문제에 대한 해결책을 제공합니다. 공유 VPC를 사용하면 Apigee 런타임과 추가 네트워킹 구성요소 없이 동일한 조직의 다른 Google Cloud 프로젝트에 있는 백엔드 간의 연결을 설정할 수 있습니다.

Apigee로 공유 VPC 구성

이 섹션에서는 Apigee VPC 서비스 프로젝트를 공유 VPC 호스트에 연결하는 방법을 설명합니다. 호스트 프로젝트에 정의된 서브넷은 서비스 프로젝트와 공유됩니다. 이후 섹션에서는 두 번째 VPC 서비스 프로젝트에 배포된 백엔드 서비스의 두 번째 서브넷을 만드는 방법을 설명합니다. 다음 다이어그램에서는 결과 아키텍처를 보여줍니다.

공유 VPC 아키텍처 개요

Apigee에서는 필수 토폴로지 생성을 간소화하는 프로비저닝 스크립트를 제공합니다. 이 섹션의 단계를 수행하여 프로비저닝 스크립트를 다운로드하고 사용하여 공유 VPC로 Apigee를 설정합니다.

기본 요건

  1. 공유 VPC 개요에 설명된 개념을 검토합니다. 호스트 프로젝트서비스 프로젝트의 개념을 이해하는 것이 중요합니다.
  2. 공유 VPC에 구성할 수 있는 새 Google Cloud 프로젝트를 만듭니다. 이 프로젝트가 호스트 프로젝트입니다. 프로젝트 만들기 및 관리를 참조하세요.
  3. 공유 VPC 프로비저닝의 단계를 수행하여 프로젝트를 공유 VPC로 프로비저닝합니다. 공유 VPC에 호스트 프로젝트를 사용 설정하려면 조직 관리자이거나 적절한 관리 Identity and Access Management(IAM) 역할을 부여받아야 합니다.
  4. 두 번째 Google Cloud 프로젝트를 만듭니다. 이 프로젝트는 서비스 프로젝트입니다. 나중에 호스트 프로젝트에 연결합니다.

스크립트 다운로드

Apigee에서는 필수 토폴로지 생성을 간소화하는 프로비저닝 스크립트를 제공합니다. GitHub에서 스크립트를 가져와야 합니다.

  1. 스크립트가 포함된 GitHub 프로젝트를 클론합니다.
    git clone https://github.com/apigee/devrel.git
  2. 프로젝트의 다음 디렉터리로 이동합니다.
    cd devrel/tools/apigee-x-trial-provision
  3. 다음 환경 변수를 설정합니다.
    export HOST_PROJECT=HOST_PROJECT_ID
    export SERVICE_PROJECT=SERVICE_PROJECT_ID

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

    • HOST_PROJECT_ID는 기본 요건 중 하나로 만든 공유 VPC 호스트 프로젝트의 프로젝트 ID입니다.
    • SERVICE_PROJECT_ID는 기본 요건에 따라 만든 Google Cloud 서비스 프로젝트의 프로젝트 ID입니다.

호스트 프로젝트 구성

  1. 다음 환경 변수를 설정합니다.
  2. export NETWORK=YOUR_SHARED_VPC
    export SUBNET=YOUR_SHARED_SUBNET
    export PEERING_CIDR=CIDR_BLOCK

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

    • YOUR_SHARED_VPC은 공유 VPC 네트워크 이름입니다.
    • YOUR_SHARED_SUBNET은 공유 VPC 서브넷 이름입니다.
    • CIDR_BLOCK은 Apigee VPC의 CIDR 블록입니다. 예를 들면 10.111.0.0/23입니다.
  3. Apigee VPC 피어링과 방화벽을 구성하려면 다음 옵션을 사용하여 스크립트를 실행합니다.
    ./apigee-x-trial-provision.sh \
        -p $HOST_PROJECT --shared-vpc-host-config --peering-cidr $PEERING_CIDR

    이 스크립트는 호스트 프로젝트를 구성합니다. 출력은 다음과 비슷하게 표시됩니다. 여기서 NETWORKSUBNET은 호스트 프로젝트의 정규화된 경로를 나타냅니다.

    export NETWORK=projects/$HOST_PROJECT/global/networks/$NETWORK
    export SUBNET=projects/$HOST_PROJECT/regions/us-west1/subnetworks/$SUBNET
  4. 출력에서 반환된 변수를 내보냅니다.

서비스 프로젝트 구성

이 단계에서는 서비스 프로젝트를 구성합니다. 스크립트가 완료되면 프로비저닝을 테스트하는 데 사용할 수 있는 샘플 API 프록시를 Apigee 환경에 만들고 배포합니다.

  1. apigee-x-trial-provision.sh 스크립트를 다시 한 번 실행하여 공유 네트워크 설정으로 서비스 프로젝트를 프로비저닝합니다.
    ./apigee-x-trial-provision.sh \
        -p $SERVICE_PROJECT

    이 스크립트는 Apigee 환경에 샘플 프록시를 만들고 STDOUT에 curl 명령어를 출력하여 프로비저닝을 테스트하도록 호출할 수 있습니다.

  2. 테스트 API 프록시를 호출합니다. 예를 들면 다음과 같습니다.
    curl -v https://10-111-111-111.nip.io/hello-world

백엔드 서비스에 다른 서비스 프로젝트 구성

Google Cloud 인프라를 여러 프로젝트로 분리하는 것이 좋습니다. Google Cloud 시작 영역의 리소스 계층 구조 결정을 참조하세요. 이 섹션에서는 별도의 서비스 프로젝트에서 백엔드 서비스를 배포하고 공유 VPC 호스트에 연결하는 방법을 설명합니다. Apigee 서비스 프로젝트와 백엔드 서비스 프로젝트 모두 공유 VPC 호스트에 연결되어 있으므로 Apigee는 백엔드 서비스를 API 프록시 대상으로 사용할 수 있습니다.

기본 요건

이 단계를 수행하려면 공유 VPC 설정의 설명대로 공유 VPC가 이미 설정되어 백엔드 서비스 프로젝트와 공유되었다고 가정합니다.

서비스 프로젝트 구성

이 섹션에서는 다른 공유 VPC 서브넷에서 백엔드 서비스를 테스트하고 호스트 프로젝트에 두 번째 서브넷을 만든 후 비공개 RFC1918 IP 주소를 Apigee API 프록시의 대상 URL로 사용합니다.

  1. 백엔드 서비스 프로젝트 내에서 다음 명령어를 실행하여 사용 가능한 모든 공유 서브넷을 확인합니다.
    gcloud compute networks subnets list-usable --project $HOST_PROJECT  --format yaml
    

    출력 예시:

    ipCidrRange: 10.0.0.0/20
    network: https://www.googleapis.com/compute/v1/projects/my-svpc-hub/global/networks/hub-vpc
    subnetwork: https://www.googleapis.com/compute/v1/projects/my-svpc-hub/regions/europe-west1/subnetworks/sub1
    
  2. 다음 환경 변수를 만듭니다.
    BACKEND_SERVICE_PROJECT=PROJECT_ID
    SHARED_VPC_SUBNET=SUBNET
    

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

    • PROJECT_ID는 백엔드 서비스에 만든 서비스 프로젝트의 이름입니다.
    • SUBNET은 위 명령어의 서브네트워크 출력 중 하나입니다.
  3. 테스트 목적으로 프로젝트에서 백엔드 httpbin 서비스를 만들려면 다음 명령어를 사용합니다.
    gcloud compute --project=$BACKEND_SERVICE_PROJECT instances create-with-container httpbin \
      --machine-type=e2-small --subnet=$SHARED_VPC_SUBNET \
      --image-project=cos-cloud --image-family=cos-stable --boot-disk-size=10GB \
      --container-image=kennethreitz/httpbin --container-restart-policy=always --tags http-server
    
  4. API 프록시 만들기의 단계를 수행하여 Apigee API 프록시를 만들고 배포합니다.
  5. 대상 서비스가 실행되는 가상 머신(VM)의 내부 IP 주소를 가져옵니다. 다음 단계에서 이 IP를 사용하여 테스트 API 프록시를 호출합니다.
    gcloud compute instances list --filter=name=httpbin
  6. 구성을 테스트하려면 프록시를 호출합니다. 이전 단계에서 가져온 VM의 내부 IP 주소를 사용합니다. 다음 예시에서는 프록시 기본 경로 /myproxy 이름을 지정했다고 가정합니다. 예를 들면 다음과 같습니다.
    curl -v https://INTERNAL_IP/myproxy

    이 API 호출은 Hello, Guest!를 반환합니다.