공유 VPC 네트워크에서 App Engine 가변형 환경 사용

App Engine 가변형 환경에서 서비스 인스턴스를 배포할 네트워크를 지정할 수 있습니다. 이 페이지에서는 공유 VPC 네트워크에서 App Engine 가변형 환경을 사용하도록 프로젝트를 구성하는 방법을 보여줍니다.

공유 VPC 네트워크의 설정에 관한 자세한 내용은 공유 VPC 프로비저닝을 참조하세요.

공유 VPC를 사용하여 App Engine 가변형 환경 설정

공유 VPC 네트워크에 App Engine 가변형 환경 인스턴스를 배포하는 과정은 다음 3단계로 이루어집니다.

  1. 공유 VPC 네트워크에서 App Engine 가변형 환경 트래픽을 허용하는 방화벽 규칙 만들기

  2. 공유 VPC 서비스 프로젝트의 서비스 계정에 적절한 권한 부여

  3. 공유 VPC 네트워크를 사용할 수 있도록 App Engine 서비스 구성

Google Cloud CLI를 사용하는 경우 본 가이드를 따르기 전에 다음 명령어를 실행하여 최신 버전으로 업데이트합니다.

gcloud components update

공유 VPC 네트워크에 대한 트래픽 허용

공유 VPC 관리자는 공유 VPC 네트워크의 App Engine 가변형 환경에 대한 트래픽을 허용하기 위해 공유 VPC 호스트 프로젝트에 방화벽 규칙을 만들어야 합니다. 방화벽 규칙은 가변형 환경 인스턴스에 대한 트래픽 전달 및 상태 확인 트래픽을 허용합니다.

방화벽 규칙에는 다음과 같은 속성이 있어야 합니다.

  • 네트워크: 공유 VPC 네트워크의 이름
  • 트래픽 방향: 인그레스
  • 일치 시 작업: 허용
  • 대상: 지정된 대상 태그
  • 대상 태그: aef-instance
  • 소스 필터: IP 범위
  • 소스 IP 범위: 35.191.0.0/16, 130.211.0.0/22
  • 프로토콜 및 포트: 지정된 프로토콜 및 포트
    • tcp: 8443, 10402

공유 VPC 관리자는 Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 방화벽 규칙을 만들 수 있습니다.

콘솔

Google Cloud Console을 사용하여 방화벽 규칙을 만들려면 다음 안내를 따르세요.

  1. 방화벽 규칙 생성 페이지로 이동합니다.

    방화벽 규칙 만들기

  2. 이름설명 필드에 방화벽 규칙의 이름과 설명을 입력합니다.

  3. 위에 지정된 대로 필요한 속성을 채웁니다.

  4. 만들기를 클릭합니다.

gcloud

Google Cloud CLI를 사용하여 방화벽 규칙을 만들려면 다음 명령어를 실행합니다.

gcloud compute firewall-rules create NETWORK_NAME-flex-firewall \
--project HOST_PROJECT_ID \
--network NETWORK_NAME \
--allow tcp:10402,tcp:8443 \
--target-tags aef-instance \
--source-ranges 35.191.0.0/16,130.211.0.0/22 \
--description 'Allows traffic to App Engine flexible environment'

각 매개변수는 다음과 같습니다.

  • NETWORK_NAME은 공유 VPC 네트워크 이름입니다.
  • HOST_PROJECT_ID는 공유 VPC 호스트 프로젝트의 Cloud 프로젝트 ID입니다.

권한 설정

공유 VPC 관리자는 서비스 프로젝트가 App Engine 가변형 환경 인스턴스를 네트워크에 배포할 수 있도록 다음과 같은 2가지 서비스 계정에 Compute 네트워크 사용자 역할을 부여해야 합니다.

  • Google API 서비스 에이전트(PROJECT_NUM@cloudservices.gserviceaccount.com)
  • App Engine 가변형 환경 서비스 에이전트(service-PROJECT_NUM@gae-api-prod.google.com.iam.gserviceaccount.com)

콘솔

Google Cloud 콘솔을 사용하여 권한을 설정하려면 다음 안내를 따르세요.

  1. 서비스 프로젝트의 IAM 설정 페이지로 이동하고 프로젝트 번호를 기록합니다.

    IAM 설정으로 이동

  2. 호스트 프로젝트의 IAM 페이지로 이동합니다.

    IAM으로 이동

  3. 추가를 클릭합니다.

  4. 새 구성원 필드에 다음 이메일 주소를 쉼표로 구분하여 입력합니다. PROJECT_NUM을 1단계에서 가져온 프로젝트 번호로 바꿉니다.

    • PROJECT_NUM@cloudservices.gserviceaccount.com
    • service-PROJECT_NUM@gae-api-prod.google.com.iam.gserviceaccount.com
  5. 역할 선택 드롭다운에서 Compute Engine > Compute 네트워크 사용자를 선택합니다.

  6. 저장을 클릭합니다.

gcloud

  1. App Engine 앱이 배포된 서비스 프로젝트의 프로젝트 번호를 가져옵니다. 다음 명령어를 실행하고 SERVICE_PROJECT_ID를 서비스 프로젝트의 프로젝트 ID로 바꿉니다.

    export SERVICE_PROJECT_NUM=$(gcloud projects describe SERVICE_PROJECT_ID --format="value(projectNumber)")
    
  2. 호스트 프로젝트에서 서비스 프로젝트의 Google API 서비스 에이전트에 compute.networkUser 역할을 부여합니다.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --member=serviceAccount:$SERVICE_PROJECT_NUM@cloudservices.gserviceaccount.com \
    --role=roles/compute.networkUser
    

    여기서 HOST_PROJECT_ID는 공유 VPC 호스트 프로젝트의 Cloud 프로젝트 ID입니다.

  3. 호스트 프로젝트에서 서비스 프로젝트의 App Engine 가변형 환경 서비스 에이전트에 compute.networkUser 역할을 부여합니다.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --member=serviceAccount:service-$SERVICE_PROJECT_NUM@gae-api-prod.google.com.iam.gserviceaccount.com \
    --role=roles/compute.networkUser
    

서비스 구성 및 배포

방화벽 규칙과 적절한 권한을 설정한 후에는 새로운 서비스 또는 기존 App Engine 가변형 환경 서비스를 공유 VPC 네트워크에 배포할 수 있습니다.

  1. app.yaml 파일에서 네트워크 설정 name 필드를 사용하여 공유 VPC 네트워크의 정규화된 이름을 지정합니다.

    network:
      name: projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME
    

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

    • HOST_PROJECT_ID는 공유 VPC 호스트 프로젝트의 Cloud 프로젝트 ID입니다.
    • NETWORK_NAME은 공유 VPC 네트워크 이름입니다.

    서비스를 SUBNETWORK_NAME이라는 서브네트워크의 일부로 구성하려면 subnetwork_name 필드도 설정합니다.

    network:
      name: projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME
      subnetwork_name: SUBNETWORK_NAME
    
  2. 서비스를 배포합니다.

    gcloud app deploy
    

구성 확인

App Engine 가변형 환경 서비스가 공유 VPC 네트워크에서 실행 중인지 확인하려면 Google Cloud console의 App Engine 버전 페이지에서 버전 구성을 확인합니다.

  1. App Engine 버전 페이지로 이동합니다.

    App Engine 버전으로 이동

  2. 오른쪽의 구성 열에서 원하는 버전의 보기를 클릭합니다.

  3. 구성의 네트워크 이름이 공유 VPC 네트워크 이름인지 확인합니다.