서버리스 환경에서 호스팅되는 서비스에 연결

이 페이지에서는 Google Cloud의 Cloud Run과 같은 서버리스 환경에서 호스팅된 서비스에 연결하도록 Integration Connectors를 구성하는 방법을 설명합니다.

다음 이미지는 Integration Connectors에서 Google Cloud의 Cloud Run 환경에서 호스팅되는 서비스에 대한 비공개 네트워크 연결 설정을 보여줍니다.

이 페이지에서는 사용자가 다음에 익숙하다고 가정합니다.

고려사항

PSC 서비스 연결을 만들 때는 다음 핵심 사항을 고려하세요.

  • PSC 서비스 연결과 부하 분산기는 같은 VPC 내 서로 다른 서브넷에서 생성됩니다. 특히 서비스 연결은 항상 NAT 서브넷에서 생성됩니다.
  • 부하 분산기와 상태 점검 프로브의 트래픽을 같은 포트로 보내야 합니다.
  • 트래픽 흐름을 용이하게 하도록 방화벽 규칙을 구성하세요.

    인그레스 규칙

    PSC 서비스 연결 서브넷에서 들어오는 트래픽이 백엔드 서비스에 도달해야 합니다.

    이그레스 규칙

    이그레스 트래픽은 특정 거부 규칙이 구성되지 않는 한 Google Cloud 프로젝트에서 기본적으로 사용 설정됩니다.

  • PSC 서비스 연결 및 부하 분산기와 같은 모든 Google Cloud 구성요소는 같은 리전에 있어야 합니다.

PSC 서비스 연결 만들기

Integration Connectors에서 비공개 연결을 설정하려면 PSC 서비스 연결을 사용하여 서비스를 Integration Connectors에 노출해야 합니다. 서비스 연결은 항상 부하 분산기를 사용합니다. 따라서 서비스가 부하 분산기 뒤에 있지 않으면 부하 분산기를 구성해야 합니다.

  1. 부하 분산기 만들기 이미 부하 분산기가 있는 경우 이 단계를 건너뜁니다.

    Cloud Run을 사용하여 리전 내부 애플리케이션 부하 분산기 설정의 안내에 따라 서버리스 NEG를 백엔드로 사용하여 애플리케이션 부하 분산기를 만듭니다.

  2. 서비스 연결을 만드세요.
    1. PSC NAT용 서브넷을 생성합니다. 다음 명령어는 psc-nat-subnet1이라는 이름의 서브넷을 생성하며 용도는 PRIVATE_SERVICE_CONNECT입니다.
      gcloud compute networks subnets create psc-nat-subnet1 \
                --network=VPC_NETWORK --range=SUBNET_RANGE_1 \
                --purpose=PRIVATE_SERVICE_CONNECT
    2. PSC NAT에서 부하 분산기로 트래픽을 허용하는 방화벽 규칙을 만듭니다.
      gcloud compute network-firewall-policies rules create PRIORITY --firewall-policy FIREWALL_POLICY_NAME_SA \
          --direction=INGRESS  --network=VPC_NETWORK \
          --action=allow --allow=tcp:BACKEND_SERVER_PORT --src-ip-ranges=SUBNET_RANGE_1
    3. 명시적 승인으로 서비스 연결을 만듭니다.
      gcloud compute service-attachments create SERVICE_ATTACHMENT_NAME --producer-forwarding-rule=FORWARDING_RULE_NAME  --connection-preference=ACCEPT_MANUAL --consumer-accept-list=SERVICE_DIRECTORY_PROJECT_ID=LIMIT --nat-subnets=psc-nat-subnet1

      이 명령어에서 LIMIT는 프로젝트의 연결 한도입니다. 연결 한도는 이 서비스에 연결할 수 있는 소비자 PSC 엔드포인트의 수입니다. SERVICE_DIRECTORY_PROJECT_ID를 가져오려면 다음 단계를 따르세요.

      • 지정된 Google Cloud 프로젝트의 요청만 수락하도록 PSC 서비스 연결을 만들 수 있습니다. 하지만 이렇게 하려면 Google Cloud 프로젝트와 연결된 서비스 디렉터리의 프로젝트 ID가 필요합니다. 서비스 디렉터리의 프로젝트 ID를 가져오려면 다음 예시와 같이 List Connections API를 사용할 수 있습니다.

        구문

        curl -X GET \
            -H "authorization: Bearer $(gcloud auth print-access-token)" \
            -H "Content-Type: application/json" \
            "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"

        다음을 바꿉니다.

        • CONNECTORS_PROJECT_ID: 연결을 만든 Google Cloud 프로젝트의 ID

        이 예시에서는 connectors-test Google Cloud 프로젝트에 대한 서비스 디렉터리의 프로젝트 ID를 가져옵니다.

        curl -X GET \
            -H "authorization: Bearer $(gcloud auth print-access-token)" \
            -H "Content-Type: application/json" \
            "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"

        터미널에서 이 명령어를 실행하면 다음과 비슷한 출력이 표시됩니다.

        .....
        {
          "connections": [
            {
              "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa",
              "createTime": "2022-10-07T09:02:31.905048520Z",
              "updateTime": "2022-10-07T09:22:39.993778690Z",
              "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1",
              "status": {
                "state": "ACTIVE"
              },
              "configVariables": [
                {
                  "key": "project_id",
                  "stringValue": "connectors-test"
                },
                {
                  "key": "dataset_id",
                  "stringValue": "testDataset"
                }
              ],
              "authConfig": {},
              "serviceAccount": "564332356444-compute@developer.gserviceaccount.com",
              "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime",
              "nodeConfig": {
                "minNodeCount": 2,
                "maxNodeCount": 50
              }
            },
        ....
        

        샘플 출력에서 connectors-test Google Cloud 프로젝트의 서비스 디렉터리 프로젝트 ID는 abcdefghijk-tp입니다.

PSC 서비스 연결을 소비하는 엔드포인트 연결 만들기

IP 주소로 엔드포인트 연결

IP 주소로 엔드포인트 연결을 만드는 방법에 관한 안내는 IP 주소로 엔드포인트 연결 만들기를 참고하세요.

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

TLS 지원 백엔드와 같은 일부 경우에는 대상에서 TLS 유효성 검사를 실행하기 위해 비공개 IP 대신 호스트 이름을 사용해야 합니다. 호스트 대상에 대한 IP 주소 대신 비공개 DNS가 사용되는 경우 엔드포인트 연결을 IP 주소로 만드는 것 외에도 관리형 영역을 구성해야 합니다. 호스트 이름으로 엔드포인트 연결을 만드는 방법에 관한 안내는 호스트 이름으로 엔드포인트 연결 만들기를 참고하세요.

나중에 엔드포인트 연결을 사용하도록 연결을 구성할 때 이 엔드포인트 연결을 선택할 수 있습니다.

엔드포인트 연결을 사용하도록 연결 구성

이제 엔드포인트 연결을 만들었으므로 연결에서 엔드포인트 연결을 사용합니다. 새 연결을 만들거나 기존 연결을 업데이트할 때는 대상 섹션에서 대상 유형으로 엔드포인트 연결을 선택하고 엔드포인트 연결 목록에서 만든 엔드포인트 연결을 선택합니다.

관리형 영역을 만든 경우 대상 유형으로 호스트 주소를 선택하고 관리형 영역을 만들 때 만든 A 레코드를 사용합니다.

문제해결 도움말

일반적인 문제를 방지하려면 이 섹션에 나열된 가이드라인을 따르세요.