공유 VPC 호스트 프로젝트에서 커넥터 구성
조직에서 공유 VPC를 사용하는 경우 서비스 프로젝트 또는 호스트 프로젝트에서 서버리스 VPC 액세스 커넥터를 설정할 수 있습니다. 이 가이드에서는 호스트 프로젝트에서 커넥터를 설정하는 방법을 보여줍니다.
서비스 프로젝트에서 커넥터를 설정해야 하는 경우 서비스 프로젝트에서 커넥터 구성을 참조하세요. 각 방법의 장점에 대한 자세한 내용은 공유 VPC 네트워크에 연결을 참조하세요.
시작하기 전에
사용 중인 계정의 Identity and Access Management (IAM) 역할을 확인합니다. 활성 계정에는 호스트 프로젝트의 다음 역할이 있어야 합니다.
원하는 환경의 호스트 프로젝트를 선택합니다.
터미널에서 다음을 실행하여 gcloud CLI의 기본 프로젝트를 호스트 프로젝트로 설정합니다.
gcloud config set project HOST_PROJECT_ID
다음을 바꿉니다.
HOST_PROJECT_ID
: 공유 VPC 호스트 프로젝트의 프로젝트 ID 입니다.
서버리스 VPC 액세스 커넥터 만들기
VPC 네트워크에 요청을 보내고 해당 응답을 수신하려면 서버리스 VPC 액세스 커넥터를 만들어야 합니다. Google Cloud CLI 또는 Terraform을 사용하여 커넥터를 만들 수 있습니다.
gcloud
gcloud
구성요소를 최신 버전으로 업데이트합니다.gcloud components update
프로젝트에 대해 서버리스 VPC 액세스 API를 사용 설정합니다.
gcloud services enable vpcaccess.googleapis.com
서버리스 VPC 액세스 커넥터를 만듭니다.
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region=REGION \ --subnet=SUBNET \ --subnet-project=HOST_PROJECT_ID \ # Optional: specify minimum and maximum instance values between 2 and 10, default is 2 min, 10 max. --min-instances=MIN \ --max-instances=MAX \ # Optional: specify machine type, default is e2-micro --machine-type=MACHINE_TYPE
다음을 바꿉니다.
CONNECTOR_NAME
: 커넥터 이름. 이름은 Compute Engine 이름 지정 규칙을 따라야 하며 21자(영문 기준) 미만이어야 합니다. 하이픈(-
)은 2자로 계산됩니다.REGION
: 커넥터의 리전. 서버리스 서비스의 리전과 일치해야 합니다. 서비스가us-central
또는europe-west
리전에 있으면us-central1
또는europe-west1
을 사용합니다.SUBNET
: 사용되지 않은/28
서브넷의 이름입니다.- 서브넷은 커넥터에서만 사용되어야 합니다. VM, Private Service Connect 또는 부하 분산기와 같은 다른 리소스에서는 사용될 수 없습니다.
- 서브넷이 Private Service Connect 또는 Cloud Load Balancing에 사용되지 않는지 확인하려면 gcloud CLI에서 다음 명령어를 실행하여
purpose
서브넷이PRIVATE
인지 확인합니다. 다음을 바꿉니다.gcloud compute networks subnets describe SUBNET_NAME
SUBNET_NAME
: 서브넷 이름
HOST_PROJECT_ID
: 호스트 프로젝트의 IDMIN
: 커넥터에 사용할 최소 인스턴스 수.2
와9
사이의 정수를 사용합니다. 기본값은2
입니다. 커넥터 확장에 대한 자세한 내용은 처리량 및 확장을 참조하세요.MAX
: 커넥터에 사용할 최대 인스턴스 수.3
와10
사이의 정수를 사용합니다. 기본값은10
입니다. 트래픽에 필요한 경우 커넥터는[MAX]
인스턴스로 수평 확장되지만 다시 축소되지 않습니다. 커넥터 확장에 대한 자세한 내용은 처리량 및 확장을 참조하세요.MACHINE_TYPE
:f1-micro
,e2-micro
, 또는e2-standard-4
입니다. 머신 유형 및 확장을 포함한 커넥터 처리량에 대한 자세한 내용은 처리량 및 확장을 참조하세요.
자세한 내용과 선택적 인수는
gcloud
참조를 확인하세요.커넥터를 사용하기 전에 커넥터가
READY
상태인지 확인합니다.gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \ --region=REGION
다음을 바꿉니다.
CONNECTOR_NAME
: 커넥터 이름. 이전 단계에서 지정한 이름REGION
: 커넥터의 리전. 이전 단계에서 지정한 리전
출력에는
state: READY
줄이 포함되어야 합니다.
Terraform
Terraform 리소스를 사용하여 vpcaccess.googleapis.com
API를 사용 설정할 수 있습니다.
Terraform 모듈을 사용하여 VPC 네트워크 및 서브넷을 만든 후 커넥터를 만들 수 있습니다.
서비스 프로젝트에 Cloud Run Functions 사용 설정
서비스 프로젝트에 Cloud Run Functions API를 사용 설정합니다. 이 작업은 후속 단계에서 IAM 역할을 추가하고 서비스 프로젝트에서 Cloud Run Functions를 사용하는 데 필요합니다.
터미널에서 다음을 실행합니다.
gcloud services enable cloudfunctions.googleapis.com --project=SERVICE_PROJECT_ID
다음을 바꿉니다.
SERVICE_PROJECT_ID
: 서비스 프로젝트의 ID입니다.
커넥터에 대한 액세스 제공
호스트 프로젝트의 서비스 프로젝트에 Cloud Run Functions 서비스 에이전트 서버리스 VPC 액세스 사용자 IAM 역할을 부여하여 커넥터에 대한 액세스 권한을 제공하세요. Cloud Run 서비스 에이전트에도 동일한 역할을 부여해야 합니다.
터미널에서 다음 명령어를 실행합니다.
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=serviceAccount:service-SERVICE_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com \ --role=roles/vpcaccess.user
다음을 바꿉니다.
HOST_PROJECT_ID
: 공유 VPC 호스트 프로젝트의 프로젝트 IDSERVICE_PROJECT_NUMBER
: 서비스 프로젝트와 연결된 프로젝트 번호. 프로젝트 ID와는 다릅니다. 다음 명령어를 실행하여 프로젝트 번호를 찾을 수 있습니다.gcloud projects describe SERVICE_PROJECT_ID
다음 명령어를 실행하여 Cloud Run 서비스 에이전트에도 역할을 부여합니다.
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=serviceAccount:service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com \ --role=roles/vpcaccess.user
커넥터를 검색할 수 있도록 설정
호스트 프로젝트의 IAM 정책에서 Cloud Run 서비스를 배포하는 주 구성원에게 다음 두 가지 사전 정의된 역할을 부여해야 합니다.
- 서버리스 VPC 액세스 뷰어(
vpcaccess.viewer
): 필수 항목입니다. - Compute 네트워크 뷰어(
compute.networkViewer
): 선택사항이지만 권장됩니다. IAM 주 구성원이 공유 VPC 네트워크의 서브넷을 열거할 수 있습니다.
또는 맞춤 역할을 사용하거나 서버리스 VPC 액세스 뷰어(vpcaccess.viewer
) 역할의 모든 권한이 포함된 사전 정의된 다른 역할을 사용할 수 있습니다.
터미널에서 다음 명령어를 실행합니다.
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=PRINCIPAL \ --role=roles/vpcaccess.viewer gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=PRINCIPAL \ --role=roles/compute.networkViewer
다음을 바꿉니다.
HOST_PROJECT_ID
: 공유 VPC 호스트 프로젝트의 프로젝트 ID입니다.PRINCIPAL
: Cloud Run 서비스를 배포하는 주 구성원.--member
플래그에 대해 자세히 알아보세요.
커넥터를 사용하도록 함수 구성
공유 VPC에 액세스해야 하는 각 함수에 함수의 커넥터를 지정해야 합니다. 다음 단계에서는 커넥터를 사용하도록 함수를 구성하는 방법을 보여줍니다.
함수가 포함된 프로젝트를 사용하도록 gcloud CLI를 설정합니다.
다음을 바꿉니다.gcloud config set project PROJECT_ID
PROJECT_ID
: 공유 VPC에 액세스해야 하는 함수가 포함된 프로젝트의 ID입니다. 함수가 호스트 프로젝트에 있으면 호스트 프로젝트 ID입니다. 함수가 서비스 프로젝트에 있으면 서비스 프로젝트 ID입니다.
--vpc-connector
플래그를 사용하고 함수를 배포합니다.gcloud functions deploy FUNCTION_NAME --vpc-connector=CONNECTOR_NAME
다음을 바꿉니다.
FUNCTION_NAME
: 함수 이름CONNECTOR_NAME
: 커넥터의 이름. 공유 VPC 서비스 프로젝트(호스트 프로젝트와 반대)에서 배포할 때는 정규화된 이름을 사용합니다. 예를 들면 다음과 같습니다. 여기서projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
HOST_PROJECT_ID
는 호스트 프로젝트의 ID이고,CONNECTOR_REGION
은 커넥터 리전이며,CONNECTOR_NAME
은 커넥터에 지정한 이름입니다.
커넥터를 통해 라우팅할 수 있는 요청을 추가로 제어하려면 이그레스 설정을 참조하세요.
다음 단계
- Cloud Run Functions에서 Memorystore에 연결하기
- Cloud Run Functions의 네트워크 설정 구성하기
- 서버리스 VPC 액세스 감사 로깅으로 관리자 활동 모니터링하기
- VPC 서비스 제어로 서비스 경계를 만들어 리소스와 데이터 보호하기
- 서버리스 VPC 액세스와 관련된 Identity and Access Management(IAM) 역할 알아보기. 각 역할과 관련된 권한 목록은 IAM 문서의 서버리스 VPC 액세스 역할을 참조하세요.