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

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

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

목표

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

비용

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

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

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

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

시작하기 전에

  1. 이 시리즈의 이전 튜토리얼 두 개를 완료합니다.
  2. 서비스 소비자 리소스에 사용할 프로젝트를 만들거나 선택합니다. 이 프로젝트를 CONSUMER_PROJECT라고 합니다.
    1. In the Google Cloud console, go to the project selector page.

      Go to project selector

    2. Select or create a Google Cloud project.

      Roles required to select or create a project

      • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
      • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
  3. Enable the Compute Engine API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  4. Make sure that you have the following role or roles on the project: Compute Engine > Compute Network Admin, Compute Engine > Compute Instance Admin

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      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을 생성한 게시된 서비스와 동일한 리전으로 바꿉니다.

방화벽 규칙 구성

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

콘솔

  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. allow-ssh 네트워크 태그를 사용해 VM으로 가는 SSH 연결을 허용하는 fw-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)를 모두 삭제합니다.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

다음 단계