엔드포인트 연결 만들기

Integration Connectors의 비공개 연결을 구성하려면 PSC(Private Service Connect) 연결을 생성해야 합니다. 하지만 PSC 연결은 직접 사용할 수 없으므로 PSC 연결을 사용하려면 엔드포인트 연결도 만들어야 합니다. 엔드포인트 연결은 PSC 서비스 연결의 인터페이스라고 생각하면 됩니다. 생성 후에는 비공개 연결을 위한 커넥터를 구성할 때 엔드포인트 연결 세부정보를 사용할 수 있습니다. 이 페이지에서는 엔드포인트 연결을 만드는 방법을 설명하고 다음 개념에 익숙하다고 가정합니다.

IP 주소 또는 호스트 이름으로 엔드포인트 연결을 만들 수 있습니다.

IP 주소로 엔드포인트 연결 만들기

IP 주소로 엔드포인트 연결을 만들려면 Cloud 콘솔 또는 명령줄(gcloud)을 사용하면 됩니다.

콘솔

Cloud 콘솔에서 엔드포인트 연결을 만들려면 다음 안내를 따르세요.

  1. Integration Connectors의 엔드포인트 연결 페이지를 엽니다.

    엔드포인트 연결로 이동

  2. + 만들기를 클릭합니다. 엔드포인트 연결 만들기 페이지가 열립니다.
  3. 다음 필드에 값을 입력합니다.
    • 이름: 엔드포인트 연결 이름입니다. 이름은 고유해야 합니다. 이름이 같은 다른 엔드포인트 연결은 있을 수 없으며 이름은 나중에 변경할 수 없습니다. 이름은 소문자로 시작해야 합니다. 이어서 최대 63자(영문 기준)의 소문자, 숫자 또는 하이픈이 와야 하며 하이픈으로 끝나서는 안 됩니다. 최소 길이는 2자입니다.
    • 서비스 연결 ID: 이미 만든 PSC 서비스 연결의 이름입니다.
    • (선택사항) 설명: 엔드포인트 연결에 대한 설명을 입력합니다.
    • (선택사항) 라벨: 리소스 라벨을 키-값 쌍으로 입력합니다. 라벨에 대한 자세한 내용은 라벨이란 무엇인가요?를 참조하세요.
  4. 만들기를 클릭합니다.

IP 주소 열은 엔드포인트 연결의 IP 주소를 지정합니다. 비공개 연결에 사용할 커넥터를 구성할 때 이 IP 주소를 사용해야 합니다.

gcloud

명령줄에서 엔드포인트 연결을 만들려면 다음 안내를 따르세요.

  1. PSC 서비스 연결 리소스를 가져옵니다.
    gcloud compute service-attachments list

    이 명령어는 서비스 연결 목록을 반환합니다. 예를 들면 다음과 같습니다.

    NAME       REGION   TARGET_SERVICE                                       CONNECTION_PREFERENCE
    demo-sa us-west1 k8s2-tcp-tgysilgj-apps-ingressgateway-fzdhwstg ACCEPT_AUTOMATIC

    이 서비스 연결 정보는 이후 단계에서 필요합니다.

  2. CreateEndpointAttachment API를 실행하기 전에 인증 토큰을 가져옵니다.
    TOKEN="$(gcloud auth print-access-token)"
  3. CreateEndpointAttachment API를 사용하여 엔드포인트 연결을 만듭니다. 예를 들면 다음과 같습니다.
    curl -X POST -H "Authorization: Bearer $TOKEN" \
         -H "Content-Type: application/json" \
         -d '{
        "name": "projects/PROJECT_ID/locations/LOCATION/endpointAttachments/ENDPOINT_ATTACHMENT_NAME",
        "serviceAttachment": "projects/demo/serviceAttachments/?SERVICE_ATTACHMENT_NAME"
      }' \
         https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpointAttachments?endpointAttachmentId=ENDPOINT_ATTACHMENT_NAME
    

    각 항목의 의미는 다음과 같습니다.

    • LOCATION은 서비스 연결의 리전입니다. 예를 들면 us-west1입니다.
    • PROJECT_ID는 PSC 서비스 연결을 만든 Google Cloud 프로젝트입니다.
    • ENDPOINT_ATTACHMENT_NAME은 엔드포인트 연결의 이름입니다. 이름은 고유해야 합니다. 이름이 같은 다른 엔드포인트 연결은 있을 수 없으며 이름은 나중에 변경할 수 없습니다. 이름은 소문자로 시작해야 합니다. 이어서 최대 31자(영문 기준)의 소문자, 숫자 또는 하이픈이 와야 하며 하이픈으로 끝나서는 안 됩니다. 최소 길이는 2자입니다.
    • SERVICE_ATTACHMENT_NAME은 서비스 연결의 이름입니다. 이전에 실행한 gcloud compute service-attachments list 명령어에서 반환된 PSC 서비스 계정 이름을 사용합니다.

    API를 호출하면 Integration Connectors가 장기 실행 작업을 시작하고 작업을 완료하는 데 다소 시간이 걸릴 수 있습니다. 작업이 성공적으로 완료되면 엔드포인트 연결이 생성됩니다.

  4. Google Cloud 프로젝트와 연결된 서비스 디렉터리의 프로젝트 ID를 가져온 후 서비스 연결에서 해당 프로젝트 ID를 허용 목록에 추가합니다.
  5. GetEndpointAttachment API를 사용하여 엔드포인트 연결이 생성되었는지 확인합니다. 예를 들면 다음과 같습니다.
    curl -X GET -H "Authorization: Bearer $TOKEN" \
      https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/endpointAttachments/ENDPOINT_ATTACHMENT_NAME
    

    API는 다음과 비슷한 응답을 반환합니다.

    {
      "name": "projects/demo-project/locations/us-central1/endpointAttachments/demo-ea",
      "createTime": "2023-04-17T04:34:59.569527046Z",
      "updateTime": "2023-04-17T04:37:25.189074195Z",
      "description": "demo endpoint attachment",
      "serviceAttachment": "projects/demo-project/regions/us-central1/serviceAttachments/demo-sa",
      "endpointIp": "10.0.0.0",
      "labels": {"team":"sre"},
    }

    엔드포인트 연결의 IP 주소는 endpointIp 필드에서 확인할 수 있습니다. 이 샘플 응답에서 IP 주소는 10.0.0.0입니다. 비공개 연결에 사용할 커넥터를 구성할 때 이 IP 주소를 사용합니다.

엔드포인트 연결 생성이 성공하면 다음 이미지와 같이 새로 생성된 연결이 엔드포인트 연결 페이지에 나열됩니다.

endpoint-attachment endpoint-attachment

지금까지 설명한 단계에서는 엔드포인트 연결을 IP 주소로 만드는 방법을 보여줍니다. 하지만 호스트 이름으로 엔드포인트 연결을 만들고 호스트 이름을 사용하여 비공개 연결용 커넥터를 구성할 수도 있습니다. 호스트 이름으로 엔드포인트 연결을 만드는 방법을 알아보려면 호스트 이름으로 엔드포인트 연결 만들기를 참조하세요.

호스트 이름으로 엔드포인트 연결 만들기

호스트 이름으로 엔드포인트 연결을 만들려면 다음 태스크를 수행합니다.

  1. IP 주소로 엔드포인트 연결을 만듭니다. 자세한 내용은 IP 주소로 엔드포인트 연결 만들기를 참조하세요.
  2. Google Cloud 프로젝트에 Cloud DNS 비공개 관리형 영역을 만듭니다.

    이 DNS 영역에서 커넥터 구성에 사용할 호스트 이름을 추가하고 1단계에서 가져온 엔드포인트 연결 IP 주소에 호스트 이름을 매핑해야 합니다. Cloud DNS 비공개 관리형 영역을 만드는 방법에 대한 자세한 내용은 비공개 영역 만들기레코드 추가를 참조하세요.

  3. Google Cloud 프로젝트에서 Integration Connectors에 사용할 Integration Connectors 관리형 영역을 만듭니다. Integration Connectors 관리형 영역(피어링 영역)은 이름 확인을 위해 Cloud DNS 비공개 관리형 영역(2단계에서 생성됨)과 통신합니다.

    관리형 영역을 만들기 전에 다음 역할 및 권한을 부여해야 합니다.

    • Integration Connectors 관리형 영역을 만드는 사용자에게 connectors.managedZones.create 권한을 부여합니다.

      connectors.managedZones.create 권한은 roles/connectors.admin IAM 역할 또는 roles/connectors.managedZonesAdmin IAM 역할에 제공됩니다. Integration Connectors에 사용할 수 있는 다양한 IAM 역할 및 해당 권한에 대한 자세한 내용은 Integration Connectors의 IAM 역할 및 권한을 참조하세요.

    • Integration Connectors service-PROJECT_NUMBER@gcp-sa-connectors.iam.gserviceaccount.com 서비스 계정에 role/dns.peer 역할을 부여합니다.

      Cloud DNS Google Cloud 프로젝트가 Integration Connectors Google Cloud 프로젝트와 다른 경우 Cloud DNS Google Cloud 프로젝트의 Integration Connectors 서비스 계정에 roles/dns.peer 역할을 부여합니다. 예를 들어 Google Cloud 프로젝트 12345에서 Integration Connectors 관리형 영역을 만들려고 하는데 Cloud DNS가 Google Cloud 프로젝트 67890에 있다고 가정해 보겠습니다. 이 경우 Google Cloud 프로젝트 67890에서 service-12345@gcp-sa-connectors.iam.gserviceaccount.com 서비스 계정에 roles/dns.peer 역할을 부여해야 합니다.

    Integration Connectors 관리형 영역을 만들려면 Cloud 콘솔 또는 명령줄(gcloud)을 사용하면 됩니다.

    콘솔

    Cloud 콘솔에서 Integration Connectors 관리형 영역을 만들려면 다음 안내를 따르세요.

    1. Integration Connectors의 관리형 영역 페이지로 이동합니다.

      관리형 영역으로 이동

    2. 다음 필드에 값을 입력합니다.
      1. 이름: 관리형 영역의 이름입니다.
      2. 대상 DNS 이름: 관리형(피어링) 영역을 만들 전체 Cloud DNS 이름입니다. 예를 들면 server8.stage.user.private입니다.
      3. 대상 프로젝트: 비공개 Cloud DNS 영역이 있는 Google Cloud 프로젝트의 이름입니다.
      4. 대상 네트워크: 비공개 Cloud DNS 영역이 유지관리되는 VPC 네트워크의 이름입니다.
      5. (선택사항) 설명: 엔드포인트 연결에 대한 설명을 입력합니다.
      6. (선택사항) 라벨: 리소스 라벨을 키-값 쌍으로 입력합니다. 라벨에 대한 자세한 내용은 라벨이란 무엇인가요?를 참조하세요.
    3. 만들기를 클릭합니다.

    gcloud

    명령줄에서 Integration Connectors 관리형 영역을 만들려면 다음 안내를 따르세요.

    1. CreateManagedZone API를 실행하기 전에 인증 토큰을 가져옵니다.
      TOKEN="$(gcloud auth print-access-token)"
    2. CreateManagedZone API를 사용하여 관리형 영역을 만듭니다. 예를 들면 다음과 같습니다.
      curl -X POST -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type: application/json" \
      -d '{
        "description": "DESCRIPTION",
        "dns": "DNS_NAME",
        "target_project": "TARGET_PROJECT",
        "target_vpc": "TARGET_VPC"
      }' \
      https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/global/managedZones?managedZoneId=MANAGED_ZONE_NAME
      

      각 항목의 의미는 다음과 같습니다.

      • DESCRIPTION은 관리형 영역에 대한 설명입니다(선택사항).
      • DNS_NAME: 관리형(피어링) 영역을 만들 전체 Cloud DNS 이름입니다. 예를 들면 server8.stage.user.private입니다.
      • TARGET_PROJECT는 비공개 Cloud DNS 영역이 있는 Google Cloud 프로젝트의 이름입니다.
      • TARGET_NETWORK는 비공개 Cloud DNS 영역이 유지관리되는 VPC 네트워크의 이름입니다.
      • PROJECT_ID는 Integration Connectors에 사용 중인 Google Cloud 프로젝트입니다.
      • MANAGED_ZONE_NAME은 관리형 영역의 이름입니다. 이름은 고유해야 합니다. 이름이 같은 다른 관리형 영역은 있을 수 없으며 이름은 나중에 변경할 수 없습니다. 이름은 소문자로 시작해야 합니다. 이어서 최대 63자(영문 기준)의 소문자, 숫자 또는 하이픈이 와야 하며 하이픈으로 끝나서는 안 됩니다. 최소 길이는 2자입니다.

      API를 호출하면 Integration Connectors가 장기 실행 작업을 시작하고 작업을 완료하는 데 다소 시간이 걸릴 수 있습니다. 작업이 성공적으로 완료되면 관리형 영역이 생성됩니다.

    3. GetManagedZone API를 사용하여 관리형 영역이 생성되었는지 확인합니다. 예를 들면 다음과 같습니다.
      curl -X GET -H "Authorization: Bearer $TOKEN" \
        https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/global/managedZones/MANAGED_ZONE_NAME
      

      API는 다음과 비슷한 응답을 반환합니다.

      {
        "name": "projects/demo-project/locations/global/managedZones/demo-mz",
        "createTime": "2023-04-17T04:34:59.569527046Z",
        "updateTime": "2023-04-17T04:37:25.189074195Z",
        "description": "demo managed zone",
        "dns": "api.private.service.com.",
        "targetVpc": "target-project-vpc",
        "targetProject": "target-project"
      }

관리형 영역 만들기에 성공하면 새로 생성된 관리형 영역이 다음 이미지와 비슷한 관리형 영역 페이지에 나열됩니다.

managed-zone managed-zone

엔드포인트 연결 설정 확인

백엔드 시스템에 대한 연결을 만들어 엔드포인트 연결을 확인할 수 있습니다. 연결을 만들 때 Destinations 섹션에서 Destination typeHostname으로 선택한 다음 적절한 엔드포인트 IP 주소 또는 호스트 이름을 입력합니다. 연결이 성공적으로 생성되면 Cloud 콘솔연결 페이지에서 새로 생성된 연결의 상태가 Active가 됩니다.