Private Service Connect를 사용하여 서비스 게시

서비스 제작자는 Private Service Connect로 VPC 네트워크에서 내부 IP 주소를 사용하여 서비스를 게시할 수 있습니다. 게시된 서비스는 소비자 VPC 네트워크의 내부 IP 주소를 사용하여 서비스 소비자에 액세스할 수 있습니다.

이 가이드에서는 Private Service Connect를 사용하여 서비스를 게시하는 방법을 설명합니다. 서비스를 게시하려면 다음 안내를 따르세요.

Private Service Connect는 게시된 서비스에 연결하는 두 가지 방법을 제공합니다.

이러한 엔드포인트 유형에는 약간 다른 프로듀서 구성이 필요합니다. 자세한 내용은 기능 및 호환성을 참조하세요.

역할

다음 IAM 역할은 이 가이드의 작업을 수행하는 데 필요한 권한을 제공합니다.

시작하기 전에

  • 제한사항을 포함한 게시 서비스에 관한 정보는 게시된 서비스 정보를 참고하세요.

  • 모든 프로젝트에서 액세스할지 또는 서비스에 액세스할 수 있는 프로젝트를 제어할지 결정합니다.

  • 이 서비스가 엔드포인트, 백엔드 또는 둘 다를 지원할지 결정합니다. 엔드포인트 및 백엔드에 대한 자세한 내용은 Private Service Connect 유형을 참조하세요.

    서비스 구성 요구사항에 대한 자세한 내용은 기능 및 호환성을 참조하세요.

  • 서비스 소비자 엔드포인트의 DNS 구성을 자동화하는 서비스의 도메인 이름을 구성할지 결정하세요. 도메인 이름을 구성하는 경우 서비스를 게시하는 동일한 IAM 주 구성원이 Google Search Console에서 도메인에 대한 소유자 권한이 있는지 확인해야 합니다. 도메인 이름을 구성했지만 도메인을 소유하지 않으면 서비스 게시가 실패합니다. 소유권을 확인하려면 Google Search Console로 이동합니다.

    서비스 연결에 지정하는 도메인 이름은 확인하는 도메인의 하위 도메인일 수 있습니다. 예를 들어 example.com을 확인한 후 도메인 이름이 us-west1.p.example.com인 서비스 연결을 만들 수 있습니다.

지원되는 부하 분산기 만들기

서비스를 호스팅하려면 서비스 프로듀서 VPC 네트워크에서 다음 부하 분산기 중 하나를 만듭니다.

각 부하 분산기 유형에 지원되는 구성에 대한 자세한 내용은 기능 및 호환성을 참조하세요.

각 서비스 연결을 단일 부하 분산기의 전달 규칙과 연결할 수 있습니다. 여러 서비스 연결을 동일한 전달 규칙과 연결할 수 없습니다.

부하 분산기 전달 규칙의 IP 버전(IPv4 또는 IPv6)은 게시된 서비스에 연결할 수 있는 소비자에 영향을 줍니다. 자세한 내용은 IP 버전 변환을 참조하세요.

리전 내부 프록시 네트워크 부하 분산기의 경우 백엔드는 Google Cloud, 다른 클라우드, 온프레미스 환경 또는 이러한 위치의 조합에 있을 수 있습니다.

Google Kubernetes Engine의 내부 패스 스루 네트워크 부하 분산기에서 호스팅되는 서비스를 게시할 수도 있습니다. 부하 분산기와 서비스 연결 구성을 포함한 이 구성은 GKE 문서의 Private Service Connect로 내부 패스 스루 네트워크 부하 분산기 만들기에 설명되어 있습니다.

Private Service Connect의 서브넷 만들기

Private Service Connect에서 사용할 전용 서브넷을 하나 이상 만듭니다. Google Cloud 콘솔을 사용하여 서비스를 게시하는 경우 해당 절차 중에 서브넷을 만들 수 있습니다.

기존 서비스에서 더 많은 IP 주소를 사용할 수 있도록 하려면 게시된 서비스에서 서브넷 추가 또는 삭제를 참조하세요.

공유 VPC 호스트 프로젝트에 Private Service Connect 서브넷을 만들 수도 있습니다.

서비스의 부하 분산기와 동일한 리전에 서브넷을 만듭니다.

일반 서브넷을 Private Service Connect 서브넷으로 변환할 수 없습니다.

IPv6 트래픽을 제공하는 서비스를 게시하려면 이중 스택 서브넷을 사용해야 합니다.

콘솔

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

    VPC 네트워크로 이동

  2. VPC 네트워크의 이름을 클릭하여 VPC 네트워크 세부정보 페이지를 표시합니다.

  3. 서브넷을 클릭합니다.

  4. 서브넷 추가를 클릭합니다. 패널이 나타나면 다음을 수행합니다.

    1. 이름을 입력합니다.
    2. 리전을 선택합니다.
    3. 용도 섹션에서 Private Service Connect를 선택합니다.
    4. IP 스택 유형을 선택합니다.
    5. IPv4 범위를 입력합니다. 예를 들면 10.10.10.0/24입니다.
    6. 추가를 클릭합니다.

gcloud

gcloud compute networks subnets create SUBNET_NAME \
    --network=NETWORK_NAME \
    --region=REGION \
    --stack-type=STACK_TYPE \
    --range=SUBNET_RANGE \
    --purpose=PRIVATE_SERVICE_CONNECT

다음을 바꿉니다.

  • SUBNET_NAME: 서브넷에 할당할 이름

  • NETWORK_NAME: 새 서브넷의 VPC 이름

  • REGION: 새 서브넷의 리전. 게시하는 서비스와 동일한 리전이어야 합니다.

  • STACK_TYPE: 서브넷의 스택 유형으로 IPV4_ONLY 또는 IPV4_IPV6일 수 있습니다. 기본값은 IPV4_ONLY입니다.

  • SUBNET_RANGE: 서브넷에 사용할 IPv4 주소 범위입니다(예: 10.10.10.0/24).

API

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks

{
  "ipCidrRange": "SUBNET_RANGE",
  "name": "SUBNET_NAME",
  "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
  "purpose": "PRIVATE_SERVICE_CONNECT",
  "stackType": "STACK_TYPE"
}

다음을 바꿉니다.

  • PROJECT_ID: 서브넷의 프로젝트

  • REGION: 새 서브넷의 리전. 게시하는 서비스와 동일한 리전이어야 합니다.

  • SUBNET_RANGE: 서브넷에 사용할 IPv4 주소 범위입니다. 예를 들면 10.10.10.0/24입니다.

  • SUBNET_NAME: 서브넷에 할당할 이름

  • NETWORK_NAME: 새 서브넷의 VPC 네트워크 이름

  • STACK_TYPE: 서브넷의 스택 유형으로 IPV4_ONLY 또는 IPV4_IPV6일 수 있습니다.

방화벽 규칙 구성

엔드포인트 또는 백엔드와 서비스 연결 사이의 트래픽을 허용하도록 방화벽 규칙을 구성합니다. 클라이언트 요청은 Private Service Connect 유형에 따라 다른 위치에서 시작됩니다.

Private Service Connect 유형 클라이언트 트래픽의 IP 주소 범위 세부정보
엔드포인트(전달 규칙 기반) 이 서비스와 연결된 Private Service Connect 서브넷의 IP 주소 범위입니다. 기본 네트워크를 사용하는 경우, 미리 채워진 default-allow-internal 규칙은 트래픽을 차단하는 더 높은 우선순위 규칙이 없는 한 이 트래픽을 허용합니다.
백엔드(전역 외부 애플리케이션 부하 분산기 기반)
  • 130.211.0.0/22
  • 35.191.0.0/16
전역 외부 애플리케이션 부하 분산기는 이러한 IP 주소 범위를 사용하는 Google 프런트엔드(GFE)에서 구현됩니다.

방화벽 구성이 적절한 엔드포인트 유형의 트래픽을 아직 허용하지 않는 경우 이를 허용하도록 방화벽 규칙을 구성합니다.

이 구성 예시에서는 클라이언트 IP 주소 범위에서 제작자 서비스 부하 분산기의 백엔드 VM으로 들어오는 트래픽을 허용하는 VPC 방화벽 규칙을 만들 수 있습니다. 이 구성에서는 백엔드 VM이 네트워크 태그로 구성되었다고 가정합니다.

인그레스 규칙 예시:

gcloud compute firewall-rules create NAME \
    --network=NETWORK_NAME \
    --direction=ingress \
    --action=allow \
    --target-tags=TAG \
    --source-ranges=CLIENT_IP_RANGES_LIST \
    --rules=RULES_LIST

다음을 바꿉니다.

  • NAME: 방화벽 규칙의 이름

  • NETWORK_NAME: 서비스 및 Private Service Connect 서브넷을 포함하는 네트워크

  • TAG: 제작자 서비스 부하 분산기의 백엔드 VM에 적용되는 대상 태그

  • CLIENT_IP_RANGES_LIST: 클라이언트 트래픽이 시작되는 IP 주소 범위 자세한 내용은 위 표를 참조하세요.

  • RULES_LIST: 규칙이 적용되는 프로토콜 및 대상 포트의 쉼표로 구분된 목록. 예를 들면 tcp,udp입니다.

이그레스 규칙 예시:

gcloud compute firewall-rules create NAME \
    --network=NETWORK_NAME \
    --direction=egress \
    --action=allow \
    --target-tags=TAG \
    --destination-ranges=CLIENT_IP_RANGES_LIST \
    --rules=RULES_LIST

다음을 바꿉니다.

  • NAME: 방화벽 규칙의 이름

  • NETWORK_NAME: 서비스 및 Private Service Connect 서브넷을 포함하는 네트워크

  • TAG: 제작자 서비스 부하 분산기의 백엔드 VM에 적용되는 대상 태그

  • CLIENT_IP_RANGES_LIST: 클라이언트 트래픽이 시작되는 IP 주소 범위 자세한 내용은 위 표를 참조하세요.

  • RULES_LIST: 규칙이 적용되는 프로토콜 및 대상 포트의 쉼표로 구분된 목록. 예를 들면 tcp,udp입니다.

VPC 방화벽 규칙 구성에 대한 자세한 내용은 VPC 방화벽 규칙을 참조하세요. 이 트래픽을 허용하도록 계층식 방화벽 규칙을 구성하려면 계층식 방화벽 정책을 참조하세요.

서비스 게시

서비스를 게시하려면 서비스 연결을 만듭니다. 다음 두 가지 방법 중 하나로 서비스를 사용할 수 있습니다.

서비스의 부하 분산기와 동일한 리전에 서비스 연결을 만듭니다.

각 서비스 연결은 하나 이상의 Private Service Connect 서브넷을 가리킬 수 있지만 Private Service Connect 서브넷은 2개를 초과하는 서비스 연결에서 사용할 수 없습니다.

자동 승인으로 서비스 게시

다음 안내를 따라 서비스를 게시하고 모든 소비자가 자동으로 이 서비스에 연결하도록 허용합니다. 소비자 연결을 명시적으로 승인하려면 명시적 승인을 사용한 서비스 게시를 참조하세요.

서비스를 게시할 때 서비스 연결을 만듭니다. 서비스 소비자는 서비스 연결 세부정보를 사용하여 서비스에 연결합니다.

소비자 연결 정보를 보려면 지원되는 서비스에서 PROXY 프로토콜을 사용 설정하면 됩니다. 지원되는 서비스에 대한 자세한 내용은 기능 및 호환성을 참조하세요. PROXY 프로토콜에 대한 자세한 내용은 소비자 연결 정보를 참조하세요.

단일 스택 및 이중 스택 서브넷을 동일한 서비스 연결에 연결할 수 있습니다. 부하 분산기가 IPv6 트래픽에 대해 구성된 경우 이중 스택 서브넷을 사용해야 합니다.

자동 승인으로 서비스를 게시하면 전파된 연결 한도가 서비스 연결에 연결되는 각 소비자 프로젝트에 적용됩니다.

콘솔

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

    Private Service Connect로 이동

  2. 게시된 서비스 탭을 클릭합니다.

  3. 서비스 게시를 클릭합니다.

  4. 게시하려는 서비스의 부하 분산기 유형을 선택합니다.

    • 내부 패스 스루 네트워크 부하 분산기
    • 리전 내부 프록시 네트워크 부하 분산기
    • 리전 내부 애플리케이션 부하 분산기
  5. 게시하려는 서비스를 호스팅하는 내부 부하 분산기를 선택합니다. 네트워크 및 리전 필드에 선택한 내부 부하 분산기의 세부정보가 채워집니다.

    서비스 프로젝트 관리자공유 VPC 네트워크의 IP 주소가 있는 내부 부하 분산기를 선택할 수 있습니다. 자세한 내용은 공유 VPC를 참조하세요.

  6. 메시지가 표시되면 게시하려는 서비스와 연결된 전달 규칙을 선택합니다.

  7. 서비스 이름에 서비스 연결 이름을 입력합니다.

  8. 서비스에 대해 하나 이상의 Private Service Connect 서브넷을 선택합니다. 이 목록은 공유 VPC를 통해 서비스 프로젝트와 공유된 서브넷을 포함하여 선택된 내부 부하 분산기 VPC 네트워크의 서브넷으로 채워집니다.

    서비스 연결에 공유 VPC 네트워크의 IP 주소가 포함된 내부 부하 분산기가 사용되는 경우 동일한 공유 VPC 네트워크의 공유 서브넷을 선택해야 합니다.

    새 서브넷을 추가하려면 다음과 같이 서브넷을 만듭니다.

    1. 새 서브넷 예약을 클릭합니다.
    2. 서브넷의 이름설명(선택사항)을 입력합니다.
    3. 서브넷의 리전을 선택합니다.
    4. IP 스택 유형을 선택합니다.
    5. 서브넷에 사용할 IPv4 범위를 입력하고 추가를 클릭합니다.
  9. 소비자 연결 정보를 보려면 프록시 프로토콜 사용을 선택합니다.

  10. 모든 연결 자동 허용을 선택합니다.

  11. 연결 조정을 중지하려면 연결 조정 사용 설정 체크박스를 선택 취소합니다.

  12. 선택사항: 고급 구성을 클릭한 후 다음을 수행합니다.

    1. 도메인 이름을 구성하려면 후행 점을 포함하여 도메인 이름을 입력합니다.

      도메인 이름의 권장 형식은 REGION.p.DOMAIN.입니다.

      도메인 이름을 소유하고 있어야 합니다. 자세한 내용은 DNS 구성을 참조하세요.

    2. NCC 전파된 연결 한도를 입력합니다. 지정하지 않을 경우 기본값은 250입니다.

  13. 서비스 추가를 클릭합니다.

gcloud

gcloud compute service-attachments create ATTACHMENT_NAME \
    --region=REGION \
    --producer-forwarding-rule=RULE_NAME \
    --connection-preference=ACCEPT_AUTOMATIC \
    --nat-subnets=PSC_SUBNET_LIST \
    [ --propagated-connection-limit=PROPAGATED_CONNECTION_LIMIT ] \
    [ --enable-proxy-protocol ] \
    [ --domain-names=DOMAIN_NAME ]

다음을 바꿉니다.

  • ATTACHMENT_NAME: 서비스 연결에 할당할 이름

  • REGION: 새 서비스 연결의 리전. 게시하는 서비스와 동일한 리전이어야 합니다.

  • RULE_NAME: 게시하려는 서비스와 연결된 전달 규칙의 이름입니다.

    서비스 프로젝트 관리자공유 VPC 네트워크의 IP 주소가 있는 내부 부하 분산기의 전달 규칙을 지정할 수 있습니다. 자세한 내용은 공유 VPC를 참조하세요.

  • PSC_SUBNET_LIST: 이 서비스 연결에서 사용할 하나 이상의 서브넷 이름의 쉼표로 구분된 목록입니다.

    공유 VPC 네트워크의 IP 주소가 포함된 전달 규칙을 사용하여 서비스 연결을 만드는 경우 동일한 공유 VPC 네트워크의 공유 서브넷을 사용합니다. 각 공유 서브넷에 대해 전체 리소스 URI를 지정합니다(예: --nat-subnets=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET).

  • PROPAGATED_CONNECTION_LIMIT: 프로젝트별 전파된 연결 한도입니다. 기본값은 250입니다.

  • DOMAIN_NAME: 후행 점을 포함한 서비스의 DNS 도메인 이름. 권장 형식은 REGION.p.DOMAIN.입니다.

    자세한 내용은 DNS 구성을 참조하세요.

API

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments
{
  "name": "ATTACHMENT_NAME",
  "connectionPreference": "ACCEPT_AUTOMATIC",
  "targetService": "RULE_URI",
  "enableProxyProtocol": false,
  "natSubnets": [
    "PSC_SUBNET_1_URI",
    "PSC_SUBNET_2_URI"
  ],
  "propagatedConnectionLimit": "PROPAGATED_CONNECTION_LIMIT",
  "domainNames": [
    "DOMAIN_NAME"
  ]
}

다음을 바꿉니다.

  • PROJECT_ID: 서비스 연결의 프로젝트

  • REGION: 새 서비스 연결의 리전. 게시하는 서비스와 동일한 리전이어야 합니다.

  • ATTACHMENT_NAME: 서비스 연결에 할당할 이름

  • RULE_URI: 게시하려는 서비스와 연결된 전달 규칙의 URI

    서비스 프로젝트 관리자공유 VPC 네트워크의 IP 주소가 있는 내부 부하 분산기의 전달 규칙을 지정할 수 있습니다. 자세한 내용은 공유 VPC를 참조하세요.

  • PSC_SUBNET_1_URIPSC_SUBNET_2_URI: 이 서비스 연결에 사용할 서브넷 URI. URI별로 하나 이상의 서브넷을 지정할 수 있습니다.

    공유 VPC 네트워크의 IP 주소가 포함된 전달 규칙을 사용하여 서비스 연결을 만드는 경우 동일한 공유 VPC 네트워크의 공유 서브넷을 사용합니다.

  • DOMAIN_NAME: 후행 점을 포함한 서비스의 DNS 도메인 이름. 권장 형식은 REGION.p.DOMAIN.입니다.

    자세한 내용은 DNS 구성을 참조하세요.

  • PROPAGATED_CONNECTION_LIMIT: 프로젝트별 전파된 연결 한도입니다. 기본값은 250입니다.

명시적 승인으로 서비스 게시

소비자가 이 서비스에 연결하기 전에 소비자를 명시적으로 승인하려면 다음 안내에 따라 서비스를 게시합니다. 소비자 연결을 자동으로 승인하려면 자동 승인을 사용한 서비스 게시를 참조하세요.

서비스를 게시할 때 서비스 연결을 만듭니다. 서비스 소비자는 서비스 연결 세부정보를 사용하여 서비스에 연결합니다.

각 서비스 연결에는 서비스에 연결할 수 있는 엔드포인트를 결정하는 데 사용되는 소비자 허용 목록 및 소비자 거부 목록이 있습니다. 지정된 서비스 연결은 이러한 목록의 프로젝트 또는 네트워크 중 하나를 사용할 수 있지만 둘 다 사용할 수는 없습니다. 폴더별 소비자 지정은 지원되지 않습니다.

프로젝트 기반으로 소비자를 허용하는 방식에서 네트워크를 기반으로 소비자를 허용하는 방식으로 변경하거나 그 반대로 변경하는 경우 다음을 수행하세요.

  • 단일 작업으로 승인된 모든 프로젝트나 네트워크를 바꿉니다.
  • 이전과 동일한 액세스 권한을 제공해야 하는 경우 새로운 허용 및 거부 목록이 이전 목록과 동일한지 확인합니다.

프로젝트 또는 네트워크를 허용 목록과 거부 목록에 모두 추가하면 해당 프로젝트나 네트워크의 연결 요청이 거부됩니다.

소비자 허용 및 거부 목록이 프로젝트를 참조하는 경우 전파된 연결 한도가 소비자 프로젝트에 적용됩니다. 소비자 허용 및 거부 목록이 VPC 네트워크를 참조하는 경우 전파된 연결 한도가 소비자 VPC 네트워크에 적용됩니다.

콘솔

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

    Private Service Connect로 이동

  2. 게시된 서비스 탭을 클릭합니다.

  3. 서비스 게시를 클릭합니다.

  4. 게시하려는 서비스의 부하 분산기 유형을 선택합니다.

    • 내부 패스 스루 네트워크 부하 분산기
    • 리전 내부 프록시 네트워크 부하 분산기
    • 리전 내부 애플리케이션 부하 분산기
  5. 게시하려는 서비스를 호스팅하는 내부 부하 분산기를 선택합니다. 네트워크 및 리전 필드에 선택한 내부 부하 분산기의 세부정보가 채워집니다.

    서비스 프로젝트 관리자공유 VPC 네트워크의 IP 주소가 있는 내부 부하 분산기를 선택할 수 있습니다. 자세한 내용은 공유 VPC를 참조하세요.

  6. 메시지가 표시되면 게시하려는 서비스와 연결된 전달 규칙을 선택합니다.

  7. 서비스 이름에 서비스 연결 이름을 입력합니다.

  8. 서비스에 대해 하나 이상의 Private Service Connect 서브넷을 선택합니다. 이 목록은 공유 VPC를 통해 서비스 프로젝트와 공유된 서브넷을 포함하여 선택된 내부 부하 분산기 VPC 네트워크의 서브넷으로 채워집니다.

    서비스 연결에 공유 VPC 네트워크의 IP 주소가 포함된 내부 부하 분산기가 사용되는 경우 동일한 공유 VPC 네트워크의 공유 서브넷을 선택해야 합니다.

    새 서브넷을 추가하려면 다음과 같이 서브넷을 만듭니다.

    1. 새 서브넷 예약을 클릭합니다.
    2. 서브넷의 이름설명(선택사항)을 입력합니다.
    3. 서브넷의 리전을 선택합니다.
    4. IP 스택 유형을 선택합니다.
    5. 서브넷에 사용할 IPv4 범위를 입력하고 추가를 클릭합니다.
  9. 소비자 연결 정보를 보려면 프록시 프로토콜 사용을 선택합니다.

  10. 선택한 프로젝트에 대한 연결을 수락하려면 선택한 프로젝트에 대한 연결 허용을 선택하세요.

    1. 연결을 수락하려는 각 프로젝트에 대해 다음을 수행하세요.
      1. 허용되는 프로젝트 추가를 클릭하고 다음을 입력합니다.
        • 연결을 수락하려는 프로젝트의 프로젝트 ID 또는 프로젝트 번호
        • 연결 한도는 지정된 프로젝트에서 연결할 수 있는 최대 엔드포인트 수를 지정합니다.
    2. (선택사항): 연결을 명시적으로 거부하려는 각 프로젝트에 대해 거부된 프로젝트 추가를 클릭한 다음 프로젝트 ID 또는 프로젝트 번호를 입력합니다.
  11. 선택한 네트워크의 연결을 수락하려면 선택한 네트워크의 연결 허용을 선택하세요.

    1. 연결을 수락하려는 각 네트워크에 대해 다음을 수행하세요.
      1. 허용된 네트워크 추가를 클릭하고 다음을 입력합니다.
        • 연결을 수락하려는 네트워크의 상위 프로젝트에 대한 프로젝트 ID 또는 프로젝트 번호
        • 연결을 수락하려는 네트워크의 이름
        • 연결 한도는 지정된 네트워크에서 연결할 수 있는 최대 엔드포인트 수를 지정합니다.
    2. (선택사항): 연결을 명시적으로 거부하려는 각 네트워크에 대해 거부된 네트워크 추가를 클릭한 다음 네트워크 상위 프로젝트의 ID 또는 프로젝트 이름, 그리고 네트워크 이름을 입력합니다.
  12. 연결 조정을 중지하려면 연결 조정 사용 설정 체크박스를 선택 취소합니다.

  13. 선택사항: 고급 구성을 클릭한 후 다음을 수행합니다.

    1. 도메인 이름을 구성하려면 후행 점을 포함하여 도메인 이름을 입력합니다.

      도메인 이름의 권장 형식은 REGION.p.DOMAIN.입니다.

      도메인 이름을 소유하고 있어야 합니다. 자세한 내용은 DNS 구성을 참조하세요.

    2. NCC 전파된 연결 한도를 입력합니다. 지정하지 않을 경우 기본값은 250입니다.

  14. 서비스 추가를 클릭합니다.

gcloud

gcloud compute service-attachments create ATTACHMENT_NAME \
    --region=REGION \
    --producer-forwarding-rule=RULE_NAME \
    --connection-preference=ACCEPT_MANUAL \
    --consumer-accept-list=ACCEPTED_PROJECT_OR_NETWORK_1=LIMIT_1,ACCEPTED_PROJECT_OR_NETWORK_2=LIMIT_2 \
    --consumer-reject-list=REJECTED_PROJECT_OR_NETWORK_1,REJECTED_PROJECT_OR_NETWORK_2 \
    --nat-subnets=PSC_SUBNET_LIST \
    [ --propagated-connection-limit=PROPAGATED_CONNECTION_LIMIT ] \
    [ --enable-proxy-protocol ] \
    [ --domain-names=DOMAIN_NAME ] \
    [ --reconcile-connections ]

다음을 바꿉니다.

  • ATTACHMENT_NAME: 서비스 연결에 할당할 이름

  • REGION: 새 서비스 연결의 리전. 게시하는 서비스와 동일한 리전이어야 합니다.

  • RULE_NAME: 게시하려는 서비스와 연결된 전달 규칙의 이름입니다.

    서비스 프로젝트 관리자공유 VPC 네트워크의 IP 주소가 있는 내부 부하 분산기의 전달 규칙을 지정할 수 있습니다. 자세한 내용은 공유 VPC를 참조하세요.

  • ACCEPTED_PROJECT_OR_NETWORK_1ACCEPTED_PROJECT_OR_NETWORK_2: 허용할 프로젝트 ID, 프로젝트 이름 또는 네트워크 URL. --consumer-accept-list는 선택사항이며 하나 이상의 프로젝트 또는 네트워크를 포함할 수 있지만 두 유형을 혼합하여 포함할 수는 없습니다.

  • LIMIT_1LIMIT_2: 프로젝트 또는 네트워크의 연결 한도입니다. 연결 한도는 이 서비스에 연결할 수 있는 소비자 엔드포인트 또는 백엔드의 수입니다. 허용되는 각 프로젝트 또는 네트워크에는 연결 한도가 구성되어 있어야 합니다.

  • REJECTED_PROJECT_OR_NETWORK_1REJECTED_PROJECT_OR_NETWORK_2: 거부할 프로젝트 ID, 프로젝트 이름 또는 네트워크 URL. --consumer-reject-list는 선택사항이며 하나 이상의 프로젝트 또는 네트워크를 포함할 수 있지만 두 유형을 혼합하여 포함할 수는 없습니다.

  • PSC_SUBNET_LIST: 이 서비스 연결에서 사용할 하나 이상의 서브넷 이름의 쉼표로 구분된 목록입니다.

    공유 VPC 네트워크의 IP 주소가 포함된 전달 규칙을 사용하여 서비스 연결을 만드는 경우 동일한 공유 VPC 네트워크의 공유 서브넷을 사용합니다. 각 공유 서브넷에 대해 전체 리소스 URI를 지정합니다(예: --nat-subnets=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET).

  • PROPAGATED_CONNECTION_LIMIT: 전파된 연결 한도입니다. 기본값은 250입니다.

  • DOMAIN_NAME: 후행 점을 포함한 서비스의 DNS 도메인 이름. 권장 형식은 REGION.p.DOMAIN.입니다.

    자세한 내용은 DNS 구성을 참조하세요.

API

  • 서비스를 게시하고 프로젝트에 따라 소비자를 명시적으로 승인하려면 다음 요청을 보냅니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments
    {
      "name": "ATTACHMENT_NAME",
      "region": "REGION",
      "connectionPreference": "ACCEPT_MANUAL",
      "targetService": "RULE_URI",
      "enableProxyProtocol": false,
      "natSubnets": [
        "PSC_SUBNET_1_URI",
        "PSC_SUBNET_2_URI"
      ],
      "consumerRejectLists": [
        "REJECTED_PROJECT_1",
        "REJECTED_PROJECT_2"
      ],
      "consumerAcceptLists": [
        {
          "projectIdOrNum": "ACCEPTED_PROJECT_1",
          "connectionLimit": "LIMIT_1"
        },
        {
          "projectIdOrNum": "ACCEPTED_PROJECT_2",
          "connectionLimit": "LIMIT_2"
        }
      ],
      "propagatedConnectionLimit": "PROPAGATED_CONNECTION_LIMIT",
      "domainNames": [
        "DOMAIN_NAME"
      ]
    }
    

    다음을 바꿉니다.

    • PROJECT_ID: 서비스 연결의 프로젝트

    • REGION: 서비스 연결의 리전

    • ATTACHMENT_NAME: 서비스 연결에 할당할 이름

    • RULE_URI: 게시하려는 서비스와 연결된 전달 규칙의 URI

      서비스 프로젝트 관리자공유 VPC 네트워크의 IP 주소가 있는 내부 부하 분산기의 전달 규칙을 지정할 수 있습니다. 자세한 내용은 공유 VPC를 참조하세요.

    • PSC_SUBNET_1_URIPSC_SUBNET_2_URI: 이 서비스 연결에 사용할 서브넷 URI. URI별로 하나 이상의 서브넷을 지정할 수 있습니다.

      공유 VPC 네트워크의 IP 주소가 포함된 전달 규칙을 사용하여 서비스 연결을 만드는 경우 동일한 공유 VPC 네트워크의 공유 서브넷을 사용합니다.

    • REJECTED_PROJECT_1REJECTED_PROJECT_2: 거부할 프로젝트 ID 또는 프로젝트 번호. consumerRejectLists는 선택사항이며 하나 이상의 프로젝트를 포함할 수 있습니다.

    • ACCEPTED_PROJECT_1ACCEPTED_PROJECT_2: 허용할 프로젝트 ID 또는 프로젝트 번호. consumerAcceptLists는 선택사항이며 하나 이상의 프로젝트를 포함할 수 있습니다.

    • LIMIT_1LIMIT_2: 프로젝트의 연결 한도. 연결 한도는 이 서비스에 연결할 수 있는 소비자 엔드포인트 또는 백엔드의 수입니다. 허용되는 각 프로젝트에는 연결 한도가 구성되어 있어야 합니다.

    • DOMAIN_NAME: 후행 점을 포함한 서비스의 DNS 도메인 이름. 권장 형식: REGION.p.DOMAIN. 자세한 내용은 DNS 구성을 참조하세요.
  • 서비스를 게시하고 VPC 네트워크를 기반으로 소비자를 명시적으로 승인하려면 다음 요청을 보냅니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments
    {
      "name": "ATTACHMENT_NAME",
      "region": "REGION",
      "connectionPreference": "ACCEPT_MANUAL",
      "targetService": "RULE_URI",
      "enableProxyProtocol": false,
      "natSubnets": [
        "PSC_SUBNET_1_URI",
        "PSC_SUBNET_2_URI"
      ],
      "consumerRejectLists": [
        "projects/REJECTED_PROJECT_ID_1/global/networks/REJECTED_NETWORK_1",
        "projects/REJECTED_PROJECT_ID_2/global/networks/REJECTED_NETWORK_2"
      ],
      "consumerAcceptLists": [
        {
          "networkUrl": "projects/ACCEPTED_PROJECT_ID_1/global/networks/ACCEPTED_NETWORK_1",
          "connectionLimit": "LIMIT_1"
        },
        {
          "networkUrl": "projects/ACCEPTED_PROJECT_ID_2/global/networks/ACCEPTED_NETWORK_2",
          "connectionLimit": "LIMIT_2"
        }
      ],
      "propagatedConnectionLimit": PROPAGATED_CONNECTION_LIMIT,
      "domainNames": [
        "DOMAIN_NAME"
      ]
    }
    

    다음을 바꿉니다.

    • REJECTED_PROJECT_ID_1REJECTED_PROJECT_ID_2: 거부하려는 네트워크의 상위 프로젝트 ID. consumerRejectLists는 선택사항이며 하나 이상의 네트워크를 포함할 수 있습니다.
    • REJECTED_NETWORK_1REJECTED_NETWORK_2: 거부하려는 네트워크의 이름.
    • ACCEPTED_PROJECT_ID_1ACCEPTED_PROJECT_ID_2: 허용하려는 네트워크의 상위 프로젝트 ID. consumerAcceptLists는 선택사항이며 하나 이상의 네트워크를 포함할 수 있습니다.
    • ACCEPTED_NETWORK_1ACCEPTED_NETWORK_2: 허용할 네트워크의 이름
    • LIMIT_1LIMIT_2: 네트워크의 연결 한도. 연결 한도는 이 서비스에 연결할 수 있는 소비자 엔드포인트 또는 백엔드의 수입니다. 허용되는 각 프로젝트에는 연결 한도가 구성되어 있어야 합니다.
    • DOMAIN_NAME: 후행 점을 포함한 서비스의 DNS 도메인 이름. 권장 형식: REGION.p.DOMAIN. 자세한 내용은 DNS 구성을 참조하세요.
  • 연결 조정이 사용 설정된 서비스를 게시하려면 이전 요청과 비슷한 요청을 전송하되 다음 필드를 포함합니다.

    {
      ...
      "reconcileConnections": true
      ...
    }
    

소비자 연결 정보 보기

PROXY 프로토콜을 사용하여 소비자 연결 정보를 보는 방법에 대한 자세한 내용은 소비자 연결 정보 보기를 참조하세요.

게시된 서비스에 대한 액세스 요청 관리

명시적 승인으로 서비스를 게시한 경우 소비자 프로젝트나 네트워크의 연결 요청을 허용하거나 거부할 수 있습니다. 자세한 내용은 게시된 서비스에 대한 액세스 요청 관리를 참조하세요.

게시된 서비스의 자동 및 명시적인 프로젝트 허용 간에 전환할 수도 있습니다. 자세한 내용은 게시된 서비스의 연결 환경설정 변경을 참조하세요.

게시된 서비스에서 서브넷 추가 또는 삭제

게시된 서비스에서 서브넷을 추가하거나 삭제할 수 있습니다. 자세한 내용은 게시된 서비스에서 서브넷 추가 또는 삭제를 참조하세요.

게시된 서비스 나열

모든 서비스를 나열할 수 있습니다.

콘솔

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

    Private Service Connect로 이동

  2. 게시된 서비스 탭을 클릭합니다.

    Private Service Connect 서비스 연결이 표시됩니다.

gcloud

  1. 서비스 연결을 나열합니다.

    gcloud compute service-attachments list [--regions=REGION_LIST]
    

    다음을 바꿉니다.

    • REGION_LIST: 서비스 연결을 확인할 하나 이상의 리전이 쉼표로 구분된 목록입니다. 예를 들면 us-central1 또는 us-west1,us-central1입니다.

API

특정 리전이나 모든 리전의 모든 서비스 연결을 볼 수 있습니다.

  • 한 리전의 모든 서비스 연결을 확인합니다.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments
    
  • 모든 리전의 모든 서비스 연결을 확인합니다.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/serviceAttachments
    

    다음을 바꿉니다.

    • PROJECT_ID: 서비스 연결의 프로젝트

    • REGION: 서비스 연결의 리전

    • ATTACHMENT_NAME: 서비스 연결의 이름

게시된 서비스의 세부정보 보기

게시된 서비스의 모든 구성 세부정보를 볼 수 있습니다. Google Cloud 콘솔에서 일부 구성 세부정보(예: 서비스 소비자가 서비스에 연결해야 하는 서비스 연결 URI)를 볼 수 있습니다. 서비스 연결 소비자의 pscConnectionId 값을 포함한 모든 세부정보를 보려면 Google Cloud CLI 또는 API를 사용하세요.

콘솔

게시된 서비스의 세부정보를 볼 수 있습니다. 서비스 연결 필드에는 서비스 연결 URI가 포함되어 있습니다.

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

    Private Service Connect로 이동

  2. 게시된 서비스 탭을 클릭합니다.

  3. 확인하려는 서비스를 클릭합니다.

gcloud

게시된 서비스의 세부정보를 볼 수 있습니다. selfLink 필드에는 서비스 연결 URI가 포함됩니다.

gcloud compute service-attachments describe \
    ATTACHMENT_NAME --region=REGION

API

게시된 서비스의 세부정보를 볼 수 있습니다. selfLink 필드에는 서비스 연결 URI가 포함됩니다.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME

다음을 바꿉니다.

  • PROJECT_ID: 서비스 연결의 프로젝트

  • REGION: 서비스 연결의 리전

  • ATTACHMENT_NAME: 서비스 연결의 이름

게시된 서비스 삭제

서비스 연결에 대한 소비자 연결이 있어도 게시된 서비스를 삭제할 수 있습니다. 게시된 서비스를 삭제하면 서비스 연결만 삭제됩니다. 연결된 부하 분산기는 삭제되지 않습니다. 게시된 서비스를 삭제하면 다음이 적용됩니다.

콘솔

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

    Private Service Connect로 이동

  2. 게시된 서비스 탭을 클릭합니다.

  3. 삭제할 서비스를 클릭합니다.

  4. 삭제를 클릭합니다.

gcloud

gcloud compute service-attachments delete \
    ATTACHMENT_NAME --region=REGION

API

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME

다음을 바꿉니다.

  • PROJECT_ID: 서비스 연결의 프로젝트

  • REGION: 서비스 연결의 리전

  • ATTACHMENT_NAME: 서비스 연결의 이름

알려진 문제

Terraform용 Google 제공업체 업그레이드 후 연결 해제

서비스 연결을 만들려고 4.76.0 이전 버전에서 Terraform에 Google 제공업체를 사용한 경우 4.76.0~4.81.x 버전으로 업그레이드하지 마세요. 버전 4.76.0~4.81.x로 업그레이드한 후 terraform apply를 실행하면 Terraform이 의도치 않게 서비스 연결을 삭제했다가 다시 만들고 기존 Private Service Connect 연결을 닫을 수 있습니다. 다시 만든 서비스 연결은 Private Service Connect 연결을 자동으로 다시 설정하지 않습니다.

버전 4.82.0으로 업그레이드한 후 terraform apply를 실행하면 서비스 연결이 삭제되지 않지만 연결 조정 설정이 true로 설정됩니다. 이 설정이 전에 false로 설정된 경우 일부 Private Service Connect 연결이 종료될 수 있습니다.

  • Google 제공업체 버전 4.76.0~4.81.x로 업그레이드 이 시나리오에서는 terraform plan 출력에 다음이 포함됩니다.

    -/+ resource "google_compute_service_attachment" "SERVICE_NAME" {
      ...
            ~ reconcile_connections = false -> true # forces replacement
      ...
    

    해결 방법을 사용하여 이 문제를 방지합니다.

  • Google 제공업체 버전 4.82.0으로 업그레이드 이 시나리오에서는 terraform plan 출력에 다음이 포함됩니다.

    ~ reconcile_connections = false -> true
    

    이 경고를 무시하고 변경사항을 적용하면 Terraform에서 연결 조정을 사용 설정하도록 서비스 연결을 업데이트합니다. 연결 상태에 따라 false에서 true로 변경하면 기존 연결 일부가 닫힐 수 있습니다. 자세한 내용은 연결 조정을 참조하세요.

    해결 방법을 사용하여 이 문제를 방지합니다.

해결 방법

Terraform용 Google 제공업체 버전을 4.82.0 이상으로 업그레이드하는 것이 좋습니다. 이 버전은 의도하지 않은 서비스 연결 삭제 및 재생성을 방지합니다.

즉시 업그레이드할 수 없거나 업그레이드할 수는 있지만 Terraform이 연결 조정 설정을 변경하지 못하도록 하려면 Terraform 구성에서 연결 조정 설정을 명시적으로 설정하도록 업데이트합니다.

  1. 서비스 연결에 대한 세부 구성을 보고 reconcileConnections 설정을 확인합니다.

    $ gcloud compute service-attachments describe SERVICE_NAME --region=REGION
    

    출력에는 reconcileConnections 필드가 포함되며 이 필드는 true 또는 false가 될 수 있습니다.

    reconcileConnections: false
    
  2. 서비스 연결에 사용되는 동일한 설정을 명시적으로 사용하도록 Terraform 구성 파일을 업데이트합니다.

    resource "google_compute_service_attachment" "SERVICE_NAME" {
      ...
      reconcile_connections    = false
    }
    

    구성 예시는 GitHub의 서비스 연결 조정 연결을 참조하세요.

서비스 연결 패치 업데이트

PATCH API를 사용하여 서비스 연결을 업데이트하는 경우 업데이트할 필드뿐만 아니라 요청 본문에 서비스 연결에 대한 모든 필드를 제공해야 합니다. serviceAttachments.get을 사용해 모든 필드를 가져옵니다.

문제 해결

서비스 연결을 업데이트하는 중에 발생한 오류

서비스 연결을 업데이트할 때 수락 목록 또는 거부 목록에 삭제된 프로젝트가 포함되면 다음 오류 메시지(The resource PROJECT was not found)가 표시될 수 있습니다.

이 문제를 해결하려면 서비스 연결 구성에서 삭제된 프로젝트를 삭제합니다.

  1. gcloud compute service-attachments describe 명령어를 사용하여 수정하려는 서비스 연결 구성을 표시합니다.

    • 허용 목록을 나중에 서비스 연결을 업데이트하는 데 사용할 수 있는 형식으로 출력하려면 다음을 수행합니다.

      gcloud compute service-attachments describe ATTACHMENT_NAME \
        --region=REGION --flatten="consumerAcceptLists[]" \
        --format="csv[no-heading,separator='='](consumerAcceptLists.projectIdOrNum,consumerAcceptLists.connectionLimit)" \
        | xargs | sed -e 's/ /,/g'
      

      허용 목록 출력은 다음과 비슷합니다.

      PROJECT_1=LIMIT_1,PROJECT_2=LIMIT_2,PROJECT_3=LIMIT_3
      
    • 거부 목록을 나중에 서비스 연결을 업데이트하는 데 사용할 수 있는 형식으로 출력하려면 다음을 수행합니다.

      gcloud compute service-attachments describe ATTACHMENT_NAME \
        --region=REGION \
        --format="value[delimiter=','](consumerRejectLists[])"
      

      거부 목록 출력은 다음과 비슷합니다.

      PROJECT_1,PROJECT_2,PROJECT_3
      
  2. 명령어 결과를 수정하여 수락 목록 및 거부 목록에서 삭제된 프로젝트를 삭제합니다.

  3. 서비스 연결을 업데이트하여 삭제된 프로젝트를 삭제합니다.

    • 허용 목록을 업데이트하려면 다음을 수행합니다.

      gcloud compute service-attachments update ATTACHMENT_NAME \
        --region=REGION \
        --consumer-accept-list=UPDATED_ACCEPT_LIST
      
    • 거부 목록을 업데이트하려면 다음을 수행합니다.

      gcloud compute service-attachments update ATTACHMENT_NAME \
        --region=REGION \
        --consumer-reject-list=UPDATED_REJECT_LIST
      

연결이 설정되지 않음

소비자가 서비스 연결을 참조하는 엔드포인트 또는 백엔드를 만들었지만 연결이 설정되지 않은 경우 서비스 연결의 연결 상태를 확인합니다. 연결 상태에 문제를 해결하기 위해 취할 수 있는 단계가 표시될 수 있습니다.

소비자 연결 시간 초과

소비자 연결 시간이 초과되면 서비스에 장기 실행 연결이 필요한지 확인합니다. Private Service Connect NAT의 TCP 설정 연결 유휴 제한 시간은 20분입니다. 서비스에 더 긴 제한 시간이 필요한 경우 연결이 시간 초과되지 않도록 일부 구성 변경이 필요할 수 있습니다. 자세한 내용은 NAT 사양을 참조하세요.

전파된 연결이 설정되지 않음

전파된 연결 문제 해결에 대한 자세한 내용은 Network Connectivity Center 문제 해결을 참조하세요.