Alamat IP keluar statis

Secara default, layanan Cloud Run terhubung ke endpoint eksternal di internet menggunakan kumpulan alamat IP dinamis. Jika layanan Cloud Run terhubung ke endpoint eksternal yang memerlukan alamat IP statis seperti database atau API yang menggunakan firewall berbasis alamat IP, Anda harus mengonfigurasi layanan Cloud Run untuk merutekan permintaan menggunakan alamat IP statis.

Halaman ini menjelaskan cara mengaktifkan layanan Cloud Run untuk mengirim permintaan menggunakan alamat IP statis.

Sebaiknya konfigurasi Cloud Run untuk mengirim traffic ke jaringan VPC menggunakan traffic keluar VPC Langsung. Namun, Anda memiliki opsi untuk Membuat konektor.

Ringkasan tugas

Agar layanan Cloud Run dapat merutekan permintaan menggunakan alamat IP statis, konfigurasi traffic keluar VPC layanan Cloud Run untuk merutekan semua traffic keluar melalui jaringan VPC yang memiliki gateway Cloud NAT yang dikonfigurasi dengan alamat IP statis.

Dalam tutorial ini, Anda akan mengonfigurasi Cloud NAT dalam mode manual dan menetapkan satu alamat IP statis ke Cloud NAT. Jika beban kerja Cloud Run Anda di-scaling hingga jumlah yang besar, Anda mungkin perlu menetapkan beberapa alamat IP statis ke Cloud NAT. Pelajari lebih lanjut cara gateway Cloud NAT menggunakan alamat IP dan port.

Mengarahkan traffic Anda melalui Cloud NAT tidak menyebabkan hop tambahan pada stack jaringan Anda karena gateway Cloud NAT dan Cloud Router hanya menyediakan bidang kontrol dan paketnya tidak melewati gateway NAT atau Cloud Router.

Mengonfigurasi penafsiran alamat jaringan (NAT)

Jika Anda menggunakan traffic keluar VPC Langsung atau konektor Akses VPC Tanpa Server, permintaan dari layanan Cloud Run Anda akan masuk ke jaringan VPC Anda. Jika Anda ingin mengarahkan permintaan keluar ke endpoint eksternal menggunakan IP statis, konfigurasi gateway Cloud NAT.

gcloud

  1. Buat Cloud Router baru untuk memprogram gateway Cloud NAT:

    gcloud compute routers create ROUTER_NAME \
      --network=NETWORK_NAME \
      --region=REGION

    Ganti kode berikut:

    • ROUTER_NAME: nama untuk resource Cloud Router yang ingin Anda buat.
    • NETWORK_NAME: nama jaringan VPC yang Anda temukan sebelumnya.
    • REGION: region tempat Anda ingin membuat gateway Cloud NAT.
  2. Sediakan alamat IP statis. Resource alamat IP yang dicadangkan mempertahankan alamat IP dasar saat resource yang terkait dengannya dihapus dan dibuat ulang.

    gcloud compute addresses create ORIGIN_IP_NAME --region=REGION

    Ganti kode berikut:

    • ORIGIN_IP_NAME: nama yang ingin Anda tetapkan ke resource alamat IP.
    • REGION: region yang akan menjalankan router Cloud NAT. Gunakan region yang sama dengan layanan Cloud Run Anda untuk meminimalkan latensi dan biaya jaringan.
  3. Buat konfigurasi gateway Cloud NAT di router ini untuk mengarahkan traffic yang berasal dari jaringan VPC menggunakan alamat IP statis yang Anda buat:

    gcloud compute routers nats create NAT_NAME \
      --router=ROUTER_NAME \
      --region=REGION \
      --nat-custom-subnet-ip-ranges=SUBNET_NAME \
      --nat-external-ip-pool=ORIGIN_IP_NAME

    Ganti kode berikut:

    • NAT_NAME: nama untuk resource gateway Cloud NAT yang ingin Anda buat.
    • ROUTER_NAME: nama Cloud Router Anda.
    • REGION: region tempat Anda ingin membuat gateway Cloud NAT.
    • SUBNET_NAME: nama subnet Anda.
    • ORIGIN_IP_NAME: nama resource alamat IP yang dicadangkan yang Anda buat di langkah sebelumnya.

Terraform

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

  1. Buat Cloud Router baru untuk memprogram gateway Cloud NAT:

    resource "google_compute_router" "default" {
      name    = "cr-static-ip-router"
      network = google_compute_network.default.name
      region  = google_compute_subnetwork.default.region
    }

    Ganti cr-static-ip-router dengan nama subnet Anda.

  2. Sediakan alamat IP statis. Resource alamat IP yang dicadangkan mempertahankan alamat IP dasar saat resource yang terkait dengannya dihapus dan dibuat ulang:

    resource "google_compute_address" "default" {
      name   = "cr-static-ip-addr"
      region = google_compute_subnetwork.default.region
    }

    Ganti cr-static-ip-addr dengan nama subnet Anda.

  3. Buat konfigurasi gateway Cloud NAT di router ini untuk mengarahkan traffic yang berasal dari jaringan VPC menggunakan alamat IP statis yang Anda buat:

    resource "google_compute_router_nat" "default" {
      name   = "cr-static-nat"
      router = google_compute_router.default.name
      region = google_compute_subnetwork.default.region
    
      nat_ip_allocate_option = "MANUAL_ONLY"
      nat_ips                = [google_compute_address.default.self_link]
    
      source_subnetwork_ip_ranges_to_nat = "LIST_OF_SUBNETWORKS"
      subnetwork {
        name                    = google_compute_subnetwork.default.id
        source_ip_ranges_to_nat = ["ALL_IP_RANGES"]
      }
    }

    Ganti cr-static-nat dengan nama gateway Cloud NAT Anda.

Merutekan traffic Cloud Run melalui jaringan VPC

Setelah Cloud NAT dikonfigurasi, deploy atau perbarui layanan Cloud Run Anda dengan traffic keluar VPC Langsung atau konektor Akses VPC Serverless, dan tetapkan traffic keluar VPC untuk merutekan semua traffic melalui jaringan VPC:

gcloud

Traffic keluar VPC langsung

Untuk men-deploy atau memperbarui layanan Cloud Run Anda agar menggunakan traffic keluar VPC Langsung dan merutekan semua traffic keluar melalui traffic keluar tersebut, jalankan perintah berikut:

gcloud run deploy SERVICE_NAME 
--image=IMAGE_URL
--network=NETWORK
--subnet=SUBNET
--region=REGION
--vpc-egress=all-traffic

Ganti kode berikut:

  • SERVICE_NAME: nama layanan Cloud Run yang ingin Anda deploy.
  • IMAGE_URL: referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL mengikuti format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  • NETWORK: nama jaringan VPC Anda.
  • SUBNET: nama subnet Anda.
  • REGION: region untuk layanan Anda.

Konektor Akses VPC Serverless

Untuk men-deploy atau memperbarui layanan Cloud Run Anda agar menggunakan konektor Akses VPC Serverless dan merutekan semua traffic keluar melaluinya, jalankan perintah berikut:

gcloud run deploy SERVICE_NAME 
--image=IMAGE_URL
--vpc-connector=CONNECTOR_NAME
--region=REGION
--vpc-egress=all-traffic

Ganti kode berikut:

  • SERVICE_NAME: nama layanan Cloud Run yang ingin Anda deploy.
  • IMAGE_URL: referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL mengikuti format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  • CONNECTOR_NAME: nama konektor Akses VPC Serverless Anda.
  • REGION: region untuk layanan Anda.

YAML

Traffic keluar VPC langsung

  1. Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Perbarui sesuai kebutuhan.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'
            run.googleapis.com/vpc-access-egress: all-traffic
        spec:
          containers:
          - image: IMAGE_URL

    Ganti kode berikut:

    • SERVICE: nama layanan Cloud Run.
    • NETWORK: nama jaringan VPC Anda.
    • SUBNET: nama subnet Anda.
    • IMAGE_URL: URL image container layanan Anda.
  3. Buat atau perbarui layanan menggunakan perintah berikut:

    gcloud run services replace service.yaml

Konektor Akses VPC Serverless

  1. Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Perbarui sesuai kebutuhan.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
        spec:
          containers:
          - image: IMAGE_URL

    Ganti kode berikut:

    • SERVICE: nama layanan Cloud Run.
    • CONNECTOR_NAME: nama jaringan Akses VPC Serverless Anda.
    • IMAGE_URL: referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL mengikuti format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  3. Buat atau perbarui layanan menggunakan perintah berikut:

    gcloud run services replace service.yaml

Terraform

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

Layanan Cloud Run ini menggunakan konektor VPC dan juga merutekan semua traffic keluar melaluinya:

resource "google_cloud_run_v2_service" "default" {
  name     = "cr-static-ip-service"
  location = google_compute_subnetwork.default.region

  deletion_protection = false # set to "true" in production

  template {
    containers {
      # Replace with the URL of your container
      #   gcr.io/<YOUR_GCP_PROJECT_ID>/<YOUR_CONTAINER_NAME>
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
    scaling {
      max_instance_count = 5
    }
    vpc_access {
      connector = google_vpc_access_connector.default.id
      egress    = "ALL_TRAFFIC"
    }
  }
  ingress = "INGRESS_TRAFFIC_ALL"

}

Ganti us-docker.pkg.dev/cloudrun/container/hello dengan referensi ke image container Anda.

Memverifikasi alamat IP eksternal statis

Setelah menyelesaikan langkah-langkah sebelumnya, Anda harus menyiapkan Cloud NAT di jaringan VPC Anda dengan alamat IP statis yang telah ditetapkan, dan telah merutekan semua traffic keluar layanan Cloud Run ke jaringan VPC Anda. Permintaan dari layanan Cloud Run berpindah melalui jaringan VPC Anda dan menjangkau endpoint eksternal menggunakan menggunakan alamat IP statis.

Untuk memverifikasi perilaku ini dan mengonfirmasi alamat IP asal yang digunakan layanan Anda, Anda dapat membuat permintaan ke API atau situs seperti curlmyip.org yang menampilkan alamat IP asal.

Menghapus alamat IP eksternal statis

Jika Anda tidak lagi memerlukan alamat IP eksternal statis, lihat Merilis alamat IP eksternal statis.