VPC 네트워크에 연결

이 페이지에서는 서버리스 VPC 액세스를 사용해 Cloud Run(완전 관리형) 서비스에서 직접 VPC 네트워크에 연결하여 Compute Engine VM 인스턴스, Memorystore 인스턴스, 내부 IP 주소가 있는 기타 리소스에 액세스하는 방법을 보여줍니다.

서버리스 VPC 액세스를 사용하려면 먼저 VPC 네트워크와의 통신을 처리하는 서버리스 VPC 액세스 커넥터를 만들어야 합니다. 커넥터를 만든 후에는 이 커넥터를 사용하도록 Cloud Run(완전 관리형) 서비스 구성을 설정합니다.

서버리스 VPC 액세스 커넥터 만들기

서버리스 VPC 액세스 커넥터를 만드는 방법에 대한 자세한 내용은 커넥터 만들기를 참조하세요.

커넥터를 사용하도록 서비스 구성

새 서비스를 만들거나 새 버전을 배포할 때 Cloud Console, 명령줄 또는 YAML 파일에서 커넥터를 사용하도록 서비스를 구성할 수 있습니다.

Console

  1. Cloud Run으로 이동

  2. 배포할 새 서비스를 구성하려면 서비스 만들기를 클릭합니다. 기존 서비스를 구성하는 경우 서비스를 클릭한 다음 새 버전 수정 및 배포를 클릭합니다.

  3. 고급 설정에서 연결을 클릭합니다.

    이미지

  4. VPC 커넥터 필드에서 사용할 커넥터를 선택하거나 없음을 선택하여 VPC 네트워크에서 서비스의 연결을 해제합니다.

  5. 만들기 또는 배포를 클릭합니다.

명령줄

배포 중에 커넥터를 지정하려면 --vpc-connector 플래그를 사용합니다.

gcloud run deploy SERVICE --image IMAGE_URL --vpc-connector CONNECTOR_NAME
  • SERVICE를 서비스 이름으로 바꿉니다.
  • IMAGE_URL을 컨테이너 이미지에 대한 참조(예: gcr.io/myproject/my-image:latest)로 바꿉니다.
  • CONNECTOR_NAME을 커넥터 이름으로 바꿉니다.

기존 서비스의 커넥터를 연결, 업데이트 또는 삭제하려면 필요에 따라 다음 플래그 중 하나와 함께 gcloud run services update 명령어를 사용합니다.

예를 들어 커넥터를 연결하거나 업데이트하려면 다음을 실행합니다.

gcloud run services update SERVICE --vpc-connector CONNECTOR_NAME
  • SERVICE를 서비스 이름으로 바꿉니다.
  • CONNECTOR_NAME을 커넥터 이름으로 바꿉니다.

YAML

YAML 형식으로 정리된 결과를 반환하는 gcloud run services describe --format export 명령어를 사용하면 기존 서비스 구성을 다운로드하고 볼 수 있습니다. 그런 다음 아래 설명된 필드를 수정하고 gcloud beta run services replace 명령어를 사용하여 수정된 YAML을 업로드할 수 있습니다. 설명된 대로 필드만 수정해야 합니다.

  1. 구성을 보고 다운로드하려면 다음을 실행합니다.

    gcloud run services describe SERVICE --format export > service.yaml
  2. 최상위 spec 속성 아래의 annotations 속성에서 run.googleapis.com/vpc-access-connector 속성을 추가하거나 업데이트합니다.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
    • SERVICE를 Cloud Run(완전 관리형) 서비스의 이름으로 바꿉니다.
    • CONNECTOR_NAME을 커넥터 이름으로 바꿉니다.
  3. 다음 명령어를 사용하여 서비스를 새 구성으로 바꿉니다.

    gcloud beta run services replace service.yaml

공유 VPC 네트워크에 연결

조직에서 공유 VPC를 사용하는 경우 공유 VPC 서비스 프로젝트의 Cloud Run(완전 관리형) 서비스는 공유 VPC 호스트 프로젝트의 구성을 일부 변경하면 공유 VPC 네트워크에 연결할 수 있습니다.

  1. 호스트 프로젝트의 관리자가 공유 VPC 네트워크 사용에 설명된 설정 작업을 완료해야 합니다. 이 설정 작업에는 호스트 프로젝트에 서버리스 VPC 액세스 커넥터를 만들고 공유 VPC 네트워크에 연결하는 과정이 포함됩니다.
  2. 서비스 프로젝트에 서버리스 VPC 액세스 API를 사용 설정합니다.

    API 사용 설정

  3. 호스트 프로젝트 설정이 완료되면 서비스 프로젝트에서 Cloud Run(완전 관리형) 서비스를 배포하거나 업데이트할 때 커넥터의 정규화된 이름을 사용하여 호스트 프로젝트의 커넥터를 지정할 수 있습니다. 예를 들면 다음과 같습니다.

    gcloud run deploy SERVICE --image IMAGE_URL \
    --vpc-connector projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME

    이렇게 하면 서비스가 공유 VPC 네트워크에 연결됩니다.

서비스에서 이그레스 트래픽 제어

기본적으로 내부 IP 주소 및 내부 DNS 이름에 대한 요청만 서버리스 VPC 액세스 커넥터를 통해 라우팅됩니다. 하지만 네트워크 방화벽 규칙으로 위험하거나 원치 않는 호스트로 트래픽이 아웃바운드되지 않도록 방지해야 하는 경우와 같이 일부 경우에는 서비스의 모든 아웃바운드 요청을 VPC 네트워크에 라우팅해야 할 수 있습니다.

서비스에서 아웃바운드 요청 라우팅을 제어하기 위해서는 VPC 이그레스를 다음 옵션 중 하나로 설정할 수 있습니다.

  • VPC 커넥터를 통해 비공개 IP에 대한 요청만 라우팅: 기본값입니다. RFC 1918RFC 6598 IP 주소 범위 또는 내부 DNS 이름으로의 요청만 VPC 네트워크로 라우팅됩니다. 다른 모든 요청은 인터넷으로 직접 라우팅됩니다.
  • VPC 커넥터를 통해 모든 트래픽 라우팅: 서비스의 모든 아웃바운드 요청이 VPC 네트워크로 라우팅됩니다. 요청은 네트워크의 방화벽, DNS, 라우팅 규칙을 따릅니다.

새 서비스를 만들거나 새 버전을 배포할 때 Cloud Console, 명령줄, YAML 파일로부터 VPC 이그레스 설정을 지정할 수 있습니다.

Console

  1. Cloud Run으로 이동

  2. 배포할 새 서비스를 구성하려면 서비스 만들기를 클릭합니다. 기존 서비스를 구성하는 경우 서비스를 클릭한 다음 새 버전 수정 및 배포를 클릭합니다.

  3. 고급 설정에서 연결을 클릭합니다.

    이미지

  4. VPC 커넥터를 선택한 후, VPC 커넥터를 통해 비공개 IP에 대한 요청만 라우팅 또는 VPC 커넥터를 통해 모든 트래픽 라우팅을 선택합니다.

  5. 만들기 또는 배포를 클릭합니다.

명령줄

이그레스 설정을 지정하려면 --vpc-egress 플래그를 사용합니다. 배포 중 이그레스 설정을 지정할 수 있습니다.

gcloud beta run deploy SERVICE \
--image IMAGE_URL \
--vpc-connector CONNECTOR_NAME \
--vpc-egress EGRESS_SETTING
  • SERVICE를 서비스 이름으로 바꿉니다.
  • IMAGE_URL을 컨테이너 이미지에 대한 참조(예: gcr.io/myproject/my-image:latest)로 바꿉니다.
  • CONNECTOR_NAME을 커넥터 이름으로 바꿉니다.
  • EGRESS_SETTING이그레스 설정 값으로 바꿉니다.
    • all: 모든 아웃바운드 트래픽을 커넥터를 통해 전송합니다.
    • private-ranges-only: VPC 커넥터를 통해 내부 주소로만 트래픽을 전송합니다.

또한 기존 서비스를 업데이트하고 이그레스 설정을 변경할 수 있습니다.

gcloud beta run services update SERVICE --vpc-egress EGRESS_SETTING
  • SERVICE를 서비스 이름으로 바꿉니다.
  • 위에 나열된 대로 EGRESS_SETTING이그레스 설정 값으로 바꿉니다.

YAML

YAML 형식으로 정리된 결과를 반환하는 gcloud run services describe --format export 명령어를 사용하면 기존 서비스 구성을 다운로드하고 볼 수 있습니다. 그런 다음 아래 설명된 필드를 수정하고 gcloud beta run services replace 명령어를 사용하여 수정된 YAML을 업로드할 수 있습니다. 설명된 대로 필드만 수정해야 합니다.

  1. 구성을 보고 다운로드하려면 다음을 실행합니다.

    gcloud run services describe SERVICE --format export > service.yaml
  2. 최상위 spec 속성 아래의 annotations 속성에서 run.googleapis.com/vpc-access-egress 속성을 추가하거나 업데이트합니다.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
            run.googleapis.com/vpc-access-egress: EGRESS_SETTING
    • SERVICE를 Cloud Run(완전 관리형) 서비스의 이름으로 바꿉니다.
    • CONNECTOR_NAME을 커넥터 이름으로 바꿉니다. run.googleapis.com/vpc-access-connector 속성은 이그레스 설정을 지정할 때 필요합니다.
    • EGRESS_SETTING을 다음 중 하나로 바꿉니다.
      • all: 모든 아웃바운드 트래픽을 커넥터를 통해 전송합니다.
      • private-ranges-only: VPC 커넥터를 통해 내부 주소로만 트래픽을 전송합니다.
  3. 다음 명령어를 사용하여 서비스를 새 구성으로 바꿉니다.

    gcloud beta run services replace service.yaml

다음 단계