다른 VPC 네트워크에서 서비스에 액세스

이 튜토리얼에서는 서비스 소비자인 사용자가 Private Service Connect 엔드포인트를 만들어 게시된 서비스에 액세스하는 방법을 설명합니다. 엔드포인트에 요청을 보내면 Private Service Connect에서 해당 요청을 게시된 서비스로 전달합니다.

이 튜토리얼은 클라우드 설계자, 네트워크 설계자, 네트워크 관리자, IT 관리자를 대상으로 합니다.

목표

  • 서비스 소비자 리소스의 네트워킹 구성
  • 엔드포인트 만들기
  • 엔드포인트 액세스 테스트

비용

이 문서에서는 비용이 청구될 수 있는 구성요소를 사용합니다 Google Cloud.

프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.

Google Cloud 신규 사용자는 무료 체험판을 사용할 수 있습니다.

이 문서에 설명된 태스크를 완료했으면 만든 리소스를 삭제하여 청구가 계속되는 것을 방지할 수 있습니다. 자세한 내용은 삭제를 참조하세요.

시작하기 전에

  1. 이 시리즈의 이전 두 튜토리얼을 완료합니다.
  2. 서비스 소비자 리소스에 사용할 프로젝트를 만들거나 선택합니다. 이 프로젝트를 CONSUMER_PROJECT라고 합니다.
    1. 콘솔에서 프로젝트 선택기 페이지로 이동합니다. Google Cloud

      프로젝트 선택기로 이동

    2. 프로젝트를 선택하거나 만듭니다. Google Cloud

      프로젝트를 선택하거나 만드는 데 필요한 역할

      • 프로젝트 선택: 프로젝트를 선택하는 데 특정 IAM 역할이 필요하지 않습니다. 역할이 부여된 프로젝트를 선택할 수 있습니다.
      • 프로젝트 만들기: 프로젝트를 만들려면 resourcemanager.projects.create 권한이 포함된 프로젝트 생성자 역할 (roles/resourcemanager.projectCreator)이 필요합니다. 역할 부여 방법 알아보기.
  3. Compute Engine API를 사용 설정합니다.

    API 사용 설정에 필요한 역할

    API를 사용 설정하려면 serviceusage.services.enable 권한이 포함된 서비스 사용량 관리자 IAM 역할(roles/serviceusage.serviceUsageAdmin)이 필요합니다. 역할 부여 방법 알아보기

    API 사용 설정하기

  4. 프로젝트에 Compute Engine > Compute 네트워크 관리자, Compute Engine > Compute 인스턴스 관리자 역할이 있는지 확인합니다.

    역할 확인

    1. Google Cloud 콘솔에서 IAM 페이지로 이동합니다.

      IAM으로 이동
    2. 프로젝트를 선택합니다.
    3. 주 구성원 열에서 나 또는 내가 속한 그룹을 식별하는 모든 행을 찾습니다. 내가 속한 그룹을 알아보려면 관리자에게 문의하세요.

    4. 나를 지정하거나 포함하는 모든 행에서 역할 열을 확인하여 역할 목록에 필요한 역할이 포함되어 있는지 확인합니다.

    역할 부여

    1. Google Cloud 콘솔에서 IAM 페이지로 이동합니다.

      IAM으로 이동
    2. 프로젝트를 선택합니다.
    3. 액세스 권한 부여를 클릭합니다.
    4. 새 주 구성원 필드에 사용자 식별자를 입력합니다. 일반적으로 Google 계정의 이메일 주소입니다.

    5. 역할 선택을 클릭한 후 역할을 검색합니다.
    6. 역할을 추가로 부여하려면 다른 역할 추가 를 클릭하고 각 역할을 추가합니다.
    7. 저장 을 클릭합니다.

네트워킹 구성

다음 섹션에서는 엔드포인트를 호스팅할 네트워크 및 서브넷을 만드는 방법과 엔드포인트를 테스트하는 데 사용되는 클라이언트 VM에 대한 SSH 액세스를 허용하는 방화벽 규칙을 만드는 방법을 설명합니다.

네트워크 및 서브넷 만들기

서비스 소비자 네트워크 및 서브넷을 만들려면 다음 단계를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. VPC 네트워크 만들기를 클릭합니다.

  3. 이름consumer-network를 입력합니다.

  4. **서브넷 생성 모드** 에 **커스텀** 을 선택합니다.

  5. 새 서브넷 섹션에 다음 정보를 입력합니다.

    1. 이름consumer-subnet을 입력합니다.
    2. 리전에서 만든 게시된 서비스와 동일한 리전을 선택합니다.
    3. IP 스택 유형IPv4 (단일 스택)를 선택합니다.
    4. IPv4 범위192.168.10.0/24를 입력합니다.
    5. 완료 를 클릭합니다.
  6. 만들기를 클릭합니다.

gcloud

  1. 커스텀 모드 VPC 네트워크를 만듭니다.

    gcloud compute networks create consumer-network --subnet-mode=custom
    
  2. consumer-network 네트워크에서 서브넷을 만듭니다.

    gcloud compute networks subnets create consumer-subnet \
        --network=consumer-network \
        --range=192.168.10.0/24 \
        --region=REGION
    

    REGION을 만든 게시된 서비스와 동일한 리전으로 바꿉니다.

방화벽 규칙 구성

fw-allow-ssh이라는 방화벽 규칙을 만들어 0.0.0.0/0의 SSH 트래픽이 allow-ssh 네트워크 태그가 있는 VM에 도달하도록 합니다.

콘솔

  1. Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.

    방화벽 정책으로 이동

  2. 수신 SSH 연결을 허용하려면 방화벽 규칙 만들기 를 클릭하고 다음 설정을 사용합니다.

    • 이름fw-allow-ssh를 입력합니다.
    • 네트워크에서 consumer-network를 선택합니다.
    • 우선순위1000을 입력합니다.
    • 트래픽 방향으로 수신을 선택합니다.
    • **일치 시 작업** 으로 **허용** 을 선택합니다.
    • **대상** 으로 **지정된 대상 태그** 를 선택합니다.
    • 대상 태그allow-ssh를 입력합니다.
    • **소스 필터** 에 대해 **IPv4 범위** 를 선택합니다.
    • 소스 IPv4 범위0.0.0.0/0을 입력합니다.
    • **프로토콜 및 포트** 에서 **지정된 프로토콜 및 포트** 를 선택하고 **TCP** 체크박스를 선택합니다. 포트22를 입력합니다.
  3. 만들기 를 클릭합니다.

gcloud

  1. fw-allow-ssh 방화벽 규칙을 만들어 네트워크 태그가 있는 VM으로의 SSH 연결을 허용합니다.allow-ssh

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=consumer-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=0.0.0.0/0 \
        --target-tags=allow-ssh \
        --rules=tcp:22
    

엔드포인트 만들기

만든 게시된 서비스를 가리키는 엔드포인트를 만듭니다.

콘솔

  1. Google Cloud 콘솔에서 Private Service Connect 페이지로 이동합니다.

    Private Service Connect로 이동

  2. 연결된 엔드포인트 탭을 클릭합니다.

  3. 엔드포인트 연결을 클릭합니다.

  4. 대상에서 게시된 서비스를 선택합니다.

  5. 대상 서비스projects/PRODUCER_PROJECT/regions/REGION/serviceAttachments/published-service를 입력합니다.

    PRODUCER_PROJECT를 게시된 서비스의 프로젝트 ID로 바꿉니다. REGION을 게시된 서비스의 리전으로 바꿉니다.

  6. 엔드포인트 이름ep-1을 입력합니다.

  7. 네트워크에서 consumer-network를 선택합니다.

  8. 서브네트워크consumer-subnet을 선택합니다.

  9. IP 주소 드롭다운 메뉴를 클릭하고 IP 주소 만들기 를 선택합니다.

    1. 이름ep-ip-1을 입력합니다.
    2. 고정 IP 주소에서 직접 선택을 선택합니다.
    3. 커스텀 IP 주소192.168.10.5를 입력합니다.
    4. 예약 을 클릭합니다.
  10. 엔드포인트 추가를 클릭합니다.

gcloud

  1. 엔드포인트에 할당할 내부 IP 주소를 예약합니다.

    gcloud compute addresses create ep-ip-1 \
        --region=REGION \
        --subnet=consumer-subnet \
        --addresses=192.168.10.5
    

    REGION을 만든 게시된 서비스와 동일한 리전으로 바꿉니다.

  2. 엔드포인트를 서비스 제작자의 서비스 연결에 연결하도록 전달 규칙을 만듭니다.

    gcloud compute forwarding-rules create ep-1 \
        --region=REGION \
        --network=consumer-network \
        --address=ep-ip-1 \
        --target-service-attachment=projects/PRODUCER_PROJECT/regions/REGION/serviceAttachments/published-service
    

    다음을 바꿉니다.

    • PRODUCER_PROJECT: 서비스 프로듀서 프로젝트의 프로젝트 ID

    • REGION: 서비스 연결의 리전

엔드포인트 액세스 테스트

엔드포인트와 게시된 서비스가 작동하는지 테스트하려면 테스트 VM을 만들고 VM에서 엔드포인트로 요청을 보냅니다.

테스트용 클라이언트 VM 만들기

엔드포인트와 동일한 리전에 클라이언트 VM을 만듭니다.

콘솔

  1. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  2. 인스턴스 만들기를 클릭합니다.

  3. 이름consumer-test을 입력합니다.

  4. 리전에서 백엔드 VM과 동일한 리전을 선택합니다.

  5. 영역에서 해당 리전의 영역을 선택합니다.

  6. 네트워킹 을 클릭하고 다음 필드를 구성합니다.

    1. 네트워크 태그allow-ssh를 입력합니다.
    2. 네트워크 인터페이스에 다음을 선택합니다.
      • 네트워크에서 consumer-network를 선택합니다.
      • 서브넷으로 consumer-subnet을 선택합니다.
  7. 만들기 를 클릭합니다.

gcloud

gcloud compute instances create consumer-test \
    --zone=ZONE \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=consumer-subnet

ZONE을 백엔드 VM과 동일한 리전에 있는 영역으로 바꿉니다.

연결 테스트

이 테스트에서는 클라이언트 VM에서 엔드포인트에 연결합니다. 예상되는 동작은 트래픽이 부하 분산기의 백엔드 VM에 분산되는 것입니다.

  1. 클라이언트 VM 인스턴스에 연결합니다.
    gcloud compute ssh consumer-test --zone=ZONE
    
    ZONE을 클라이언트 VM의 영역으로 바꿉니다.
  2. curl을 사용하여 엔드포인트에 대한 웹 요청을 만들어 IP 주소에 연결합니다. 다른 백엔드 VM에서 응답을 볼 수 있도록 요청을 반복합니다. 응답을 생성하는 VM의 이름은 각 백엔드 VM에 있는 /var/www/html/index.html의 콘텐츠에 따라 HTML 응답에 텍스트로 표시됩니다. 예를 들어 예상되는 응답은 Page served from: vm-1Page served from: vm-2와 같습니다.
    curl -s http://192.168.10.5
    

정리

이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하고 개별 리소스를 삭제하세요.

프로젝트 삭제

프로듀서 프로젝트 (PRODUCER_PROJECT)와 소비자 프로젝트 (CONSUMER_PROJECT)를 모두 삭제합니다.

    프로젝트를 삭제합니다. Google Cloud

    gcloud projects delete PROJECT_ID

다음 단계