서비스 서브넷을 피어링에서 Private Service Connect로 이전

이 문서에서는 서비스 프로듀서가 피어링 기반 서비스를 Private Service Connect로 이전하고 서비스에 액세스하는 데 사용되는 IP 주소를 보존하는 방법을 설명합니다. 이 이전 프로세스를 실행하려면 지정된 서브넷에 연결된 모든 리소스를 동시에 이전해야 합니다.

이전 프로세스는 서비스 제작자가 시작하지만 제작자와 소비자 모두가 완료하는 작업이 포함됩니다. Google 관리 서비스는 서비스 에이전트를 사용하여 소비자를 대신하여 작업을 실행할 수 있습니다. 이전에는 생산자와 소비자 모두의 다운타임과 가격 변경이 수반됩니다.

각 서비스 제작자는 Private Service Connect로 이전할지 여부와 시기를 결정합니다. 서비스 제작자가 VPC 네트워크 피어링에서 Private Service Connect로 이전하는지 확인하려면 서비스 문서를 확인하거나 서비스 제작자에게 문의하세요.

시작하기 전에

Private Service Connect를 사용하여 서비스 배포

새 VPC 네트워크를 만들고 네트워크에 서비스 리소스를 배포한 후 Private Service Connect를 통해 서비스를 게시합니다.

서비스의 부하 분산기를 만들 때는 이전에 부하 분산기에서 사용한 IP 주소와 다른 IP 주소를 사용합니다. 나중에 엔드포인트를 만들 때 원래 IP 주소가 필요합니다.

서비스를 게시할 때 서비스 연결을 만듭니다. 나중에 엔드포인트를 만들 때도 서비스 연결 URI가 필요합니다.

피어링 기반 서비스 종료

피어링 기반 서비스를 종료하려면 프로듀서 서브넷을 삭제하기 전에 서비스의 IP 주소 범위를 예약할 내부 범위를 만들어야 합니다.

내부 범위 만들기

프로듀서 서브넷을 삭제하기 전에 서브넷의 IP 주소 범위가 프로듀서 네트워크 또는 소비자 네트워크의 다른 서브넷에서 재사용되지 않도록 내부 범위를 만듭니다.

이 내부 범위에 대한 자세한 내용은 이전의 내부 범위를 참고하세요.

gcloud

internal-ranges create 명령어를 사용합니다.

gcloud network-connectivity internal-ranges create RANGE_NAME \
    --project=PRODUCER_PROJECT_ID \
    --ip-cidr-range=CIDR_RANGE \
    --network=PRODUCER_NETWORK_NAME \
    --usage=FOR_MIGRATION \
    --migration-source=PRODUCER_SUBNET_URI \
    --migration-target=CONSUMER_SUBNET_URI

다음을 바꿉니다.

  • RANGE_NAME: 새 내부 범위의 이름입니다.
  • PRODUCER_PROJECT_ID: 프로듀서 프로젝트의 ID입니다.
  • CIDR_RANGE: 새 내부 범위에 할당할 CIDR 범위입니다.
  • PRODUCER_NETWORK_NAME: 내부 범위를 만들 네트워크의 이름입니다.
  • PRODUCER_SUBNET_URI: 서비스의 부하 분산기가 포함된 제작자 서브넷의 URI입니다.
  • CONSUMER_SUBNET_URI: 의도한 소비자 서브넷의 URI입니다. 이 명령어를 실행할 때 이 서브넷은 존재하지 않습니다.

피어링 프로듀서 서브넷 삭제

서브넷을 삭제하려면 먼저 프로듀서 서브넷의 모든 리소스(예: 가상 머신(VM) 인스턴스, 전달 규칙, 인스턴스 그룹, 상태 점검, 예약된 IP 주소)를 삭제해야 합니다. 리소스를 삭제한 후 서브넷을 삭제할 수 있습니다.

소비자 리소스 만들기

서비스 소비자와 협력하여 VPC 네트워크에 다음 리소스를 만듭니다. 리소스는 수동으로 만들거나 Google 관리 서비스의 경우 서비스 에이전트를 통해 자동화할 수 있습니다.

피어 이전 서브넷 만들기

소비자의 VPC 네트워크에 피어 이전 서브넷을 만들어 Private Service Connect 엔드포인트의 IP 주소를 제공합니다. 서브넷의 목적은 PEER_MIGRATION이며, 이로 인해 서브넷이 Private Service Connect 엔드포인트 이외의 리소스에 사용되지 않습니다.

자세한 내용은 피어 이전 서브넷을 참고하세요.

gcloud

networks subnets create 명령어를 사용합니다.

gcloud compute networks subnets create CONSUMER_SUBNET \
    --purpose=PEER_MIGRATION \
    --project=CONSUMER_PROJECT \
    --network=CONSUMER_NETWORK \
    --range=CIDR_RANGE \
    --region=REGION

다음을 바꿉니다.

  • CONSUMER_SUBNET: 소비자 서브넷의 이름
  • CONSUMER_PROJECT: 소비자 프로젝트의 ID
  • CONSUMER_NETWORK: 소비자 네트워크의 이름
  • CIDR_RANGE: 새 서브넷에 할당할 CIDR 범위입니다. 이 범위는 내부 범위의 CIDR 범위와 일치해야 합니다.
  • REGION: 서브넷을 만들 리전입니다.

Private Service Connect 엔드포인트 만들기

소비자의 피어 이전 서브넷에 Private Service Connect 엔드포인트를 만듭니다. 소비자가 엔드포인트를 만들려면 서비스 연결 URI가 필요합니다.

gcloud

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

    addresses create 명령어를 사용합니다.

    gcloud compute addresses create ENDPOINT_ADDRESS_NAME \
        --project=CONSUMER_PROJECT \
        --region=REGION \
        --address=ENDPOINT_ADDRESS \
        --subnet=CONSUMER_SUBNET
    

    다음을 바꿉니다.

    • ENDPOINT_ADDRESS_NAME: IP 주소 리소스의 이름
    • CONSUMER_PROJECT: 소비자 프로젝트의 ID
    • REGION: IP 주소를 만들 리전
    • ENDPOINT_ADDRESS: IP 주소 리소스에 할당할 IP 주소입니다. 이 주소는 서비스의 부하 분산기에서 사용된 IP 주소와 동일해야 합니다.
    • CONSUMER_SUBNET: 소비자 서브넷의 이름
  2. 엔드포인트를 만듭니다.

    forwarding-rules create 명령어를 사용합니다.

    gcloud compute forwarding-rules create ENDPOINT \
        --region=REGION \
        --network=CONSUMER_NETWORK \
        --address=ENDPOINT_ADDRESS \
        --target-service-attachment=SERVICE_ATTACHMENT_URI
    

    다음을 바꿉니다.

    • ENDPOINT: 엔드포인트의 이름
    • REGION: 엔드포인트를 만들 리전
    • CONSUMER_NETWORK: 소비자 네트워크의 이름
    • ENDPOINT_ADDRESS: 엔드포인트에 할당할 예약된 IP 주소입니다. IP 주소를 직접 지정하거나 IP 주소 리소스 이름을 사용할 수 있습니다.
    • SERVICE_ATTACHMENT_URI: 서비스 연결의 URI

프로듀서의 내부 범위 삭제

소비자 이전 서브넷이 생성된 후에는 내부 범위가 더 이상 필요하지 않으며 삭제할 수 있습니다.

gcloud

internal-ranges delete 명령어를 사용합니다.

gcloud network-connectivity internal-ranges delete RANGE_NAME \
    --project=PRODUCER_PROJECT_ID

다음을 바꿉니다.

  • RANGE_NAME: 내부 범위의 이름입니다.
  • PRODUCER_PROJECT_ID: 프로듀서 프로젝트의 ID입니다.

엔드포인트가 작동하는지 확인

소비자에게 엔드포인트를 통해 서비스에 연결할 수 있는지 확인해 달라고 요청합니다.

엔드포인트가 작동하지 않고 문제 해결 단계로 문제를 해결할 수 없는 경우 이전 작업을 롤백할 수 있습니다.

이전 완료

엔드포인트가 예상대로 작동하면 소비자의 피어 이전 서브넷을 일반 서브넷으로 업데이트하여 이전을 완료할 수 있습니다.

소비자의 피어 이전 서브넷 업데이트

소비자의 피어 이전 서브넷을 일반 서브넷으로 업데이트하면 소비자가 모든 유형의 리소스에 서브넷을 사용할 수 있습니다.

gcloud

networks subnets create 명령어를 사용합니다.

gcloud compute networks subnets update CONSUMER_SUBNET \
    --purpose=PRIVATE \
    --region=REGION \
    --project=CONSUMER_PROJECT

다음을 바꿉니다.

  • CONSUMER_SUBNET: 소비자 서브넷의 이름
  • REGION: 소비자 서브넷의 리전입니다.
  • CONSUMER_PROJECT: 소비자 프로젝트의 ID

피어링 연결 삭제

피어링 연결이 더 이상 필요하지 않으면 소비자와 생산자 모두의 피어링 구성을 삭제합니다.

이전 롤백

소비자 서브넷이 아직 일반 서브넷으로 업데이트되지 않은 경우에만 이전을 롤백할 수 있습니다. 롤백하면 VPC 네트워크 피어링을 통해 서비스를 사용할 수 있습니다.

  1. 내부 범위가 여전히 존재하는 경우 제작자 프로젝트에서 내부 범위를 삭제합니다.
  2. 소비자 프로젝트에서 내부 범위를 만듭니다. 롤백할 때 이전 소스는 소비자 서브넷이고 이전 대상은 생산자 서브넷입니다.

    gcloud network-connectivity internal-ranges create RANGE_NAME \
        --project=CONSUMER_PROJECT \
        --ip-cidr-range=CIDR_RANGE \
        --network=CONSUMER_NETWORK \
        --usage=FOR_MIGRATION \
        --migration-source=CONSUMER_SUBNET_URI \
        --migration-target=PRODUCER_SUBNET_URI
    
  3. 소비자의 Private Service Connect 엔드포인트를 삭제합니다.

  4. 소비자의 IP 주소 리소스를 삭제합니다.

  5. 동일한 이름과 CIDR 범위를 사용하여 프로듀서의 서브넷을 다시 만듭니다. 서브넷 목적을 PRIVATE로 설정합니다.

  6. 프로듀서의 하위 네트워크에서 서비스를 제공하는 데 필요한 리소스를 다시 만듭니다.

  7. 소비자는 피어링 연결을 통해 서비스에 액세스할 수 있는지 확인합니다.