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

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

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

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

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

역할

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

시작하기 전에

지원되는 부하 분산기 유형

다음 부하 분산기를 사용하여 서비스를 호스팅할 수 있습니다.

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

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

Private Service Connect의 서브넷 만들기

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

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

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

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

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

콘솔

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

    VPC 네트워크로 이동

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

  3. 서브넷 추가를 클릭합니다. 표시되는 패널에서 다음을 설정합니다.

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

gcloud

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

다음을 바꿉니다.

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

  • NETWORK_NAME: 새 서브넷의 VPC 이름

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

  • SUBNET_RANGE: 서브넷에 사용할 IP 주소 범위. 예를 들면 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",
}

다음을 바꿉니다.

  • PROJECT_ID: 서브넷의 프로젝트

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

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

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

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

방화벽 규칙 구성

엔드포인트 또는 백엔드와 서비스 연결 사이의 트래픽을 허용하도록 방화벽 규칙을 구성합니다. 클라이언트 요청은 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 프로토콜에 대한 자세한 내용은 소비자 연결 정보 보기를 참조하세요.

콘솔

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

    Private Service Connect로 이동

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

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

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

    • 내부 패스 스루 네트워크 부하 분산기
    • 리전 내부 프록시 네트워크 부하 분산기
    • 리전별 내부 애플리케이션 부하 분산기
  5. 게시하려는 서비스를 호스팅하는 내부 부하 분산기를 선택합니다.

    네트워크 및 리전 필드에 선택한 내부 부하 분산기의 세부정보가 채워집니다.

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

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

  8. 서비스에 대해 하나 이상의 서브넷을 선택합니다. 새 서브넷을 추가하려면 다음과 같이 서브넷을 만듭니다.

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

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

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

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

  11. 연결 자동 수락을 선택합니다.

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

gcloud

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

다음을 바꿉니다.

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

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

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

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

  • 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",
  ],
  "domainNames": [
    "DOMAIN_NAME",
  ]
}

다음을 바꿉니다.

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

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

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

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

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

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

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

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

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

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

각 서비스 연결에는 소비자 허용 목록 및 소비자 거부 목록이 있으며 서비스에 연결할 수 있는 엔드포인트를 결정하는 데 사용됩니다. 지정된 서비스 연결은 이 목록에 있는 프로젝트나 네트워크 중 하나만 사용할 수 있습니다.

프로젝트 기반의 소비자 허용에서 네트워크에 기반한 소비자 허용으로 변경하거나 그 반대로 변경하는 경우 다음을 수행합니다.

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

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

콘솔

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

    Private Service Connect로 이동

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

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

  4. 부하 분산기 유형: 내부 TCP/UDP 부하 분산기 또는 내부 HTTP(S) 부하 분산기를 선택합니다.

  5. 게시하려는 서비스를 호스팅하는 내부 부하 분산기를 선택합니다.

    네트워크 및 리전 필드에 선택한 내부 부하 분산기의 세부정보가 채워집니다.

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

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

  8. 서비스에 대해 하나 이상의 서브넷을 선택합니다.

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

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

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

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

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

  11. 선택한 프로젝트의 연결을 수락하려면 선택한 프로젝트의 연결 허용을 선택합니다.

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

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

  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 \
    [--enable-proxy-protocol ] \
    [--domain-names=DOMAIN_NAME] \
    [--reconcile-connections]

다음을 바꿉니다.

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

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

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

  • 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: 이 서비스 연결에서 사용할 하나 이상의 서브넷의 쉼표로 구분된 목록

  • 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"
        }
      ],
      "domainNames": [
        "DOMAIN_NAME"
      ]
    }
    

    다음을 바꿉니다.

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

    • REGION: 서비스 연결의 리전

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

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

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

    • 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"
        }
      ],
      "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: 네트워크의 연결 한도. 연결 한도는 이 서비스에 연결할 수 있는 소비자 엔드포인트 또는 백엔드의 수입니다. 허용되는 각 프로젝트에는 연결 한도가 구성되어 있어야 합니다.
  • 연결 조정이 사용 설정된 서비스를 게시하려면 이전 요청과 비슷하지만 다음 필드를 포함하여 요청을 보냅니다.

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

소비자 연결 정보 보기

기본적으로 Private Service Connect는 소비자의 소스 IP 주소를 서비스 제작자의 VPC 네트워크에 있는 Private Service Connect 서브넷 중 하나의 주소로 변환합니다. 소비자의 원래 소스 IP 주소를 보려면 PROXY 프로토콜을 사용 설정하면 됩니다.

모든 서비스가 PROXY 프로토콜을 지원하지는 않습니다. 자세한 내용은 기능 및 호환성을 참조하세요.

PROXY 프로토콜이 사용 설정되면 PROXY 프로토콜 헤더에서 소비자의 소스 IP 주소와 PSC 연결 ID(pscConnectionId)를 가져올 수 있습니다.

서비스 연결에 PROXY 프로토콜을 사용 설정하면 변경사항이 새 연결에만 적용됩니다. 기존 연결에는 PROXY 프로토콜 헤더가 포함되지 않습니다.

프록시 프로토콜을 사용 설정하는 경우 클라이언트 연결 TCP 페이로드에서 수신 PROXY 프로토콜 헤더를 파싱하고 처리하는 방법에 대한 자세한 내용은 백엔드 웹 서버 소프트웨어 문서를 참조하세요. 서비스 연결에서 PROXY 프로토콜이 사용 설정되어 있지만 백엔드 웹 서버가 PROXY 프로토콜 헤더를 처리하도록 구성되지 않았으면 웹 요청이 잘못된 형식일 수 있습니다. 요청의 형식이 잘못된 경우 서버는 요청을 해석할 수 없습니다.

pscConnectionId는 PROXY 프로토콜 헤더에 유형-길이-값(TLV) 형식으로 인코딩됩니다.

필드 필드 길이 필드 값
유형 1바이트 0xE0(PP2_TYPE_GCP)
기간 2바이트 0x8(8바이트)
8바이트 네트워크 순서에서 8바이트 pscConnectionId

소비자 전달 규칙 또는 제작자 서비스 첨부파일에서 8바이트 pscConnectionId를 확인할 수 있습니다.

pscConnectionId는 지정된 시점에 모든 활성 연결에 대해 전역적으로 고유합니다. 하지만 시간이 경과하면 pscConnectionId를 이러한 시나리오에서 재사용할 수 있습니다.

  • 지정된 VPC 네트워크 내에서 엔드포인트(전달 규칙)를 삭제하고 동일한 IP 주소를 사용해서 새 엔드포인트를 만드는 경우 동일한 pscConnectionId가 사용될 수 있습니다.

  • 7일 대기 기간이 지난 후 엔드포인트(전달 규칙)가 포함된 VPC 네트워크를 삭제하면 해당 엔드포인트에 사용된 pscConnectionId가 다른 VPC 네트워크의 다른 엔드포인트에 사용될 수 있습니다.

You 디버깅을 위해 그리고 패킷 소스를 trace하기 위해 pscConnectionId를 사용할 수 있습니다.

또한 16바이트 PSC 연결 ID는 제작자 서비스 첨부파일에서 확인할 수 있습니다. PSC 연결 ID는 Private Service Connect 서비스 연결을 식별하는 전역적으로 고유한 ID입니다. 가시성 및 디버깅용으로 PSC 연결 ID를 사용할 수 있습니다. PSC 연결 ID는 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
    

    출력에는 true 또는 false일 수 있는 reconcileConnections 필드가 포함됩니다.

    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 사양을 참조하세요.