gcloud services enable compute.googleapis.comThis command enables the Compute Engine API, which is required to create and manage virtual machines in Google Cloud Platform (GCP).
gcloud compute networks create my-vpc \
--subnet-mode=custom \
--bgp-routing-mode=regionalThis command creates a new VPC network called my-vpc with custom subnet mode and regional BGP routing mode. A VPC network is a virtual private network that provides networking functionality to GCP resources.
gcloud services enable vpcaccess.googleapis.comThis command enables the Serverless VPC Access API, which allows you to connect to resources in your VPC network from a serverless environment.
gcloud compute networks vpc-access connectors create functions-connector \
--network my-vpc \
--region asia-southeast1 \
--range 10.8.0.0/28This command creates a new Serverless VPC Access connector called functions-connector in the my-vpc network and the asia-southeast1 region. The connector is assigned a range of IP addresses from 10.8.0.0 to 10.8.0.15.
NOTE: This step may take a few minutes to complete.
export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
export PROJECT_NUMBER=$(gcloud projects list --filter="$PROJECT_ID" --format="value(PROJECT_NUMBER)")This command gets the project ID and project number of your project.
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member=serviceAccount:service-$PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com \
--role=roles/viewerThis command grants the Serverless VPC Access connector service account the Viewer role on your project. This role is required to access the VPC network.
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member=serviceAccount:service-$PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com \
--role=roles/compute.networkUserThis command grants the Serverless VPC Access connector service account the Compute Network User role on your project. This role is required to access the VPC network.
gcloud compute addresses create functions-static-ip \
--region=asia-southeast1This command reserves a static IP address called functions-static-ip in the asia-southeast1 region.
gcloud compute routers create my-router \
--network my-vpc \
--region asia-southeast1This command creates a Cloud Router called my-router in the my-vpc network and the asia-southeast1 region. A Cloud Router is a VPC resource that advertises your VPC network IP addresses to the Google network.
gcloud compute routers nats create my-cloud-nat-config \
--router=my-router \
--nat-external-ip-pool=functions-static-ip \
--nat-all-subnet-ip-ranges \
--enable-logging \
--router-region=asia-southeast1This command creates a Cloud NAT called my-cloud-nat-config in the my-router router and the asia-southeast1 region. A Cloud NAT is a VPC resource that allows you to provision your VPC network with outbound NAT gateway to provide internet connectivity to your instances.
gcloud functions deploy test-ip \
--gen2 \
--runtime=python311 \
--region=asia-southeast1 \
--source=./ \
--entry-point=test_ip \
--trigger-http \
--allow-unauthenticated \
--vpc-connector functions-connector \
--egress-settings allThis command deploys a Cloud Function called test-ip in the asia-southeast1 region. The Cloud Function is assigned a static IP address from the functions-static-ip IP address pool. The Cloud Function is connected to the functions-connector Serverless VPC Access connector. The Cloud Function is configured to allow outbound connections to the internet.