Mengonfigurasi konektor di project host VPC Bersama

Jika organisasi Anda menggunakan VPC Bersama, Anda dapat menyiapkan konektor Akses VPC Serverless di project layanan atau project host. Panduan ini menunjukkan cara menyiapkan konektor di project host.

Jika Anda perlu menyiapkan konektor di project layanan, lihat Mengonfigurasi konektor di project layanan. Untuk mempelajari keuntungan dari setiap metode, lihat Menghubungkan ke jaringan VPC Bersama.

Sebelum memulai

  1. Periksa peran Identity and Access Management (IAM) untuk akun yang sedang Anda gunakan. Akun aktif harus memiliki peran berikut di project host:

  2. Pilih project host di lingkungan pilihan Anda.

Konsol

  1. Buka dasbor Konsol Google Cloud.

    Buka dasbor Konsol Google Cloud

  2. Pada panel menu di bagian atas dasbor, klik menu dropdown project lalu pilih project host.

gcloud

Tetapkan project default di gcloud CLI ke project host dengan menjalankan perintah berikut di terminal Anda:

gcloud config set project HOST_PROJECT_ID

Ganti kode berikut:

  • HOST_PROJECT_ID: ID project host VPC Bersama

Membuat konektor Akses VPC Serverless

Untuk mengirim permintaan ke jaringan VPC dan menerima respons yang sesuai, Anda harus membuat konektor Akses VPC Serverless. Anda dapat membuat konektor menggunakan konsol Google Cloud, Google Cloud CLI, atau Terraform:

Konsol

  1. Aktifkan API Akses VPC Serverless untuk project Anda.

    Aktifkan API

  2. Buka halaman ringkasan Akses VPC Serverless.

    Buka Akses VPC Serverless

  3. Klik Create connector.

  4. Di kolom Name, masukkan nama untuk konektor Anda. Nama ini harus mengikuti konvensi penamaan Compute Engine dan kurang dari 21 karakter. Tanda hubung (-) dihitung sebagai dua karakter.

  5. Di kolom Region, pilih region untuk konektor Anda. Region ini harus cocok dengan region layanan serverless Anda.

    Jika layanan Anda berada di region us-central atau europe-west, gunakan us-central1 atau europe-west1.

  6. Di kolom Network, pilih jaringan VPC yang akan dipasangkan konektor.

  7. Klik menu pull-down Subnetwork:

    Pilih subnet /28 yang tidak digunakan.

    • Subnet harus digunakan secara eksklusif oleh konektor. Subnet tidak dapat digunakan oleh resource lain seperti VM, Private Service Connect, atau load balancer.
    • Untuk mengonfirmasi bahwa subnet Anda tidak digunakan untuk Private Service Connect atau Cloud Load Balancing, pastikan subnet purpose adalah PRIVATE dengan menjalankan perintah berikut di gcloud CLI:
      gcloud compute networks subnets describe SUBNET_NAME
      
      Ganti SUBNET_NAME dengan nama subnet Anda.
  8. (Opsional) Guna menetapkan opsi penskalaan untuk mendapatkan kontrol tambahan atas konektor, klik Tampilkan Setelan Penskalaan untuk menampilkan formulir penskalaan.

    1. Tetapkan jumlah minimum dan maksimum instance untuk konektor Anda, atau gunakan default, yaitu 2 (minimum) dan 10 (maksimum). Konektor diskalakan hingga batas maksimum yang ditentukan saat traffic meningkat, tetapi konektor tidak diskalakan balik saat traffic menurun. Anda harus menggunakan nilai antara 2 dan 10, serta nilai MIN harus kurang dari nilai MAX.
    2. Pada menu pull-down Jenis Instance, pilih jenis mesin yang akan digunakan untuk konektor, atau gunakan e2-micro default. Perhatikan sidebar biaya di sisi kanan saat Anda memilih jenis instance, yang menampilkan estimasi biaya dan bandwidth.
  9. Klik Create.

  10. Tanda centang berwarna hijau akan muncul di samping nama konektor saat konektor siap digunakan.

gcloud

  1. Update komponen gcloud ke versi terbaru:

    gcloud components update
    
  2. Aktifkan API Akses VPC Serverless untuk project Anda:

    gcloud services enable vpcaccess.googleapis.com
    
  3. Buat konektor Akses VPC Serverless:

    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

    Ganti kode berikut:

    • CONNECTOR_NAME: nama untuk konektor Anda. Nama ini harus mengikuti konvensi penamaan Compute Engine dan kurang dari 21 karakter. Tanda hubung (-) dihitung sebagai dua karakter.
    • REGION: region untuk konektor Anda; region ini harus cocok dengan region layanan serverless Anda. Jika layanan Anda berada di region us-central atau europe-west, gunakan us-central1 atau europe-west1.
    • SUBNET: nama subnet /28 yang tidak digunakan.
      • Subnet harus digunakan secara eksklusif oleh konektor. Subnet tidak dapat digunakan oleh resource lain seperti VM, Private Service Connect, atau load balancer.
      • Untuk mengonfirmasi bahwa subnet Anda tidak digunakan untuk Private Service Connect atau Cloud Load Balancing, pastikan subnet purpose adalah PRIVATE dengan menjalankan perintah berikut di gcloud CLI:
        gcloud compute networks subnets describe SUBNET_NAME
        
        Ganti kode berikut:
        • SUBNET_NAME: nama subnet Anda
    • HOST_PROJECT_ID: ID project host
    • MIN: jumlah minimum instance yang akan digunakan untuk konektor. Gunakan bilangan bulat antara 2 dan 9. Default-nya adalah 2. Untuk mempelajari penskalaan konektor, lihat Throughput dan penskalaan.
    • MAX: jumlah maksimum instance yang akan digunakan untuk konektor. Gunakan bilangan bulat antara 3 dan 10. Default-nya adalah 10. Jika traffic memerlukannya, konektor akan diskalakan ke instance [MAX], tetapi tidak diskalakan balik. Untuk mempelajari penskalaan konektor, lihat Throughput dan penskalaan.
    • MACHINE_TYPE: f1-micro, e2-micro, atau e2-standard-4. Untuk mempelajari throughput konektor, termasuk jenis mesin dan penskalaan, lihat Throughput dan penskalaan.

    Untuk detail selengkapnya dan argumen opsional, lihat referensi gcloud.

  4. Pastikan konektor Anda berstatus READY sebelum menggunakannya:

    gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \
    --region=REGION

    Ganti kode berikut:

    • CONNECTOR_NAME: nama konektor Anda; ini adalah nama yang Anda tentukan di langkah sebelumnya
    • REGION: region konektor Anda; ini adalah region yang Anda tentukan di langkah sebelumnya

    Output harus berisi baris state: READY.

Terraform

Anda dapat menggunakan resource Terraform untuk mengaktifkan API vpcaccess.googleapis.com.

resource "google_project_service" "vpcaccess-api" {
  project = var.project_id # Replace this with your project ID in quotes
  service = "vpcaccess.googleapis.com"
}

Anda dapat menggunakan modul Terraform untuk membuat jaringan VPC dan subnet, lalu membuat konektor.

module "test-vpc-module" {
  source       = "terraform-google-modules/network/google"
  version      = "~> 9.0"
  project_id   = var.project_id # Replace this with your project ID in quotes
  network_name = "my-serverless-network"
  mtu          = 1460

  subnets = [
    {
      subnet_name   = "serverless-subnet"
      subnet_ip     = "10.10.10.0/28"
      subnet_region = "us-central1"
    }
  ]
}

module "serverless-connector" {
  source     = "terraform-google-modules/network/google//modules/vpc-serverless-connector-beta"
  version    = "~> 9.0"
  project_id = var.project_id
  vpc_connectors = [{
    name        = "central-serverless"
    region      = "us-central1"
    subnet_name = module.test-vpc-module.subnets["us-central1/serverless-subnet"].name
    # host_project_id = var.host_project_id # Specify a host_project_id for shared VPC
    machine_type  = "e2-standard-4"
    min_instances = 2
    max_instances = 7
    }
    # Uncomment to specify an ip_cidr_range
    #   , {
    #     name          = "central-serverless2"
    #     region        = "us-central1"
    #     network       = module.test-vpc-module.network_name
    #     ip_cidr_range = "10.10.11.0/28"
    #     subnet_name   = null
    #     machine_type  = "e2-standard-4"
    #     min_instances = 2
    #   max_instances = 7 }
  ]
  depends_on = [
    google_project_service.vpcaccess-api
  ]
}

Mengaktifkan Cloud Run untuk project layanan

Mengaktifkan Cloud Run API untuk project layanan. Hal ini diperlukan untuk menambahkan peran IAM pada langkah berikutnya dan agar project layanan dapat menggunakan Cloud Run.

Konsol

  1. Buka halaman untuk Cloud Run API.

    Cloud Run API

  2. Pada panel menu di bagian atas dasbor, klik menu dropdown project lalu pilih layanan project.

  3. Klik Enable.

gcloud

Jalankan perintah berikut di terminal Anda:

gcloud services enable run.googleapis.com --project=SERVICE_PROJECT_ID

Ganti kode berikut:

  • SERVICE_PROJECT_ID: ID project layanan

Memberikan akses ke konektor

Memberikan akses ke konektor dengan memberikan project layanan Agen Layanan Cloud Run thePengguna Akses VPC Serverless Peran IAM pada project host.

Konsol

  1. Buka halaman IAM.

    Buka IAM

  2. Klik menu dropdown project lalu pilih project host.

  3. Klik Tambahkan.

  4. Di kolom New principals, masukkan alamat email Agen Layanan Cloud Run untuk layanan Cloud Run:

    service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com

    Ganti kode berikut:

    • SERVICE_PROJECT_NUMBER: nomor project yang terkait dengan project layanan. ID ini berbeda dengan ID project. Anda dapat menemukan nomor project di halaman Project Settings untuk project layanan di konsol Google Cloud.
  5. Di kolom Peran, pilih Serverless VPC Access User.

  6. Klik Simpan.

gcloud

Jalankan perintah berikut di terminal Anda:

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

Ganti kode berikut:

  • HOST_PROJECT_ID: ID project host VPC Bersama
  • SERVICE_PROJECT_NUMBER: nomor project yang dikaitkan dengan akun layanan. ID ini berbeda dengan ID project. Anda dapat menemukan nomor project dengan menjalankan perintah berikut:

    gcloud projects describe SERVICE_PROJECT_ID
    

Membuat konektor dapat ditemukan

Pada kebijakan IAM project host, Anda harus memberikan dua peran yang telah ditetapkan berikut kepada akun utama yang men-deploy layanan Cloud Run:

Atau, Anda dapat menggunakan peran khusus atau peran lain yang telah ditetapkan yang mencakup semua izin peran Serverless VPC Access Viewer (vpcaccess.viewer).

Konsol

  1. Buka halaman IAM.

    Buka IAM

  2. Klik menu dropdown project lalu pilih project host.

  3. Klik Add.

  4. Di kolom Akun utama baru, masukkan alamat email akun utama yang akan dapat melihat konektor dari project layanan. Anda dapat memasukkan beberapa email di kolom ini.

  5. Di kolom Peran, pilih kedua peran berikut:

    • Serverless VPC Access Viewer
    • Penampil Jaringan Compute
  6. Klik Simpan.

gcloud

Jalankan perintah berikut di terminal Anda:

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

Ganti kode berikut:

  • HOST_PROJECT_ID: ID project host VPC Bersama
  • PRINCIPAL: akun utama yang men-deploy layanan Cloud Run. Pelajari selengkapnya tentang flag --member.

Mengonfigurasi layanan Anda menggunakan konektor

Untuk setiap layanan Cloud Run yang memerlukan akses ke VPC Bersama, Anda harus menentukan konektor untuk layanan tersebut. Anda dapat menentukan konektor menggunakan Google Cloud Console, Google Cloud CLI, file YAML, atau Terraform saat men-deploy layanan baru atau mengupdate layanan yang ada.

Konsol

  1. Di konsol Google Cloud, buka Cloud Run:

    Buka Cloud Run

  2. Klik Deploy container dan pilih Service untuk mengonfigurasi layanan baru. Jika Anda mengonfigurasi layanan yang sudah ada, klik layanan, lalu klik Edit dan deploy revisi baru.

  3. Jika Anda mengonfigurasi layanan baru, isi halaman setelan layanan awal, lalu klik Container, volume, networking, security untuk memperluas halaman konfigurasi layanan.

  4. Klik tab Koneksi.

    gambar

    • Di kolom VPC Connector, pilih konektor yang akan digunakan atau pilih None untuk memutuskan koneksi layanan Anda dari jaringan VPC.
  5. Klik Buat atau Deploy.

gcloud

  1. Tetapkan gcloud CLI untuk menggunakan project yang berisi resource Cloud Run:

    gcloud config set project PROJECT_ID
    Ganti kode berikut:

    • PROJECT_ID: ID project yang berisi resource Cloud Run yang memerlukan akses ke VPC Bersama. Jika resource Cloud Run ada dalam project host, ini adalah ID project host. Jika resource Cloud Run berada dalam project layanan, ini adalah ID project layanan.
  2. Menggunakan flag --vpc-connector.

  • Untuk layanan yang ada:
    gcloud run services update SERVICE --vpc-connector=CONNECTOR_NAME
  • Untuk layanan baru:
    gcloud run deploy SERVICE --image=IMAGE_URL --vpc-connector=CONNECTOR_NAME
    Ganti kode berikut:
    • SERVICE: Nama layanan Anda.
    • IMAGE_URL: referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest
    • CONNECTOR_NAME: nama konektor Anda Gunakan nama yang sepenuhnya memenuhi syarat saat melakukan deployment dari project layanan VPC Bersama (bukan project host), misalnya:
      projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
      dengan HOST_PROJECT_ID sebagai ID project host, CONNECTOR_REGION adalah region konektor Anda, dan CONNECTOR_NAME adalah nama yang Anda berikan untuk konektor.

YAML

Tetapkan gcloud CLI untuk menggunakan project yang berisi resource Cloud Run:

gcloud config set project PROJECT_ID

Ganti kode berikut:

  • PROJECT_ID: ID project yang berisi resource Cloud Run yang memerlukan akses ke VPC Bersama. Jika resource Cloud Run ada dalam project host, ini adalah ID project host. Jika resource Cloud Run berada dalam project layanan, ini adalah ID project layanan.
  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. Tambahkan atau perbarui atribut run.googleapis.com/vpc-access-connector di bagian annotations pada atribut spec level teratas:

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

    Ganti kode berikut:

    • SERVICE: nama layanan Cloud Run Anda.
    • CONNECTOR_NAME: nama konektor Anda Gunakan nama yang sepenuhnya memenuhi syarat saat melakukan deployment dari project layanan VPC Bersama (bukan project host), misalnya:
      projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
      dengan HOST_PROJECT_ID adalah ID project host, CONNECTOR_REGION adalah region konektor Anda, dan CONNECTOR_NAME adalah nama yang Anda berikan untuk konektor.
    • REVISION dengan nama revisi baru atau hapus (jika ada). Jika Anda memberikan nama revisi baru, nama tersebut harus memenuhi kriteria berikut:
      • Dimulai denganSERVICE-
      • Hanya berisi huruf kecil, angka, dan -
      • Tidak diakhiri dengan -
      • Tidak melebihi 63 karakter
  3. Ganti layanan dengan konfigurasi barunya menggunakan perintah berikut:

    gcloud run services replace service.yaml

Terraform

Anda dapat menggunakan resource Terraform untuk membuat layanan dan mengonfigurasinya untuk menggunakan konektor Anda.

# Cloud Run service
resource "google_cloud_run_v2_service" "gcr_service" {
  name     = "mygcrservice"
  location = "us-west1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        limits = {
          cpu    = "1000m"
          memory = "512Mi"
        }
      }
      # the service uses this SA to call other Google Cloud APIs
      # service_account_name = myservice_runtime_sa
    }

    scaling {
      # Limit scale up to prevent any cost blow outs!
      max_instance_count = 5
    }

    vpc_access {
      # Use the VPC Connector
      connector = google_vpc_access_connector.connector.id
      # all egress from the service should go through the VPC Connector
      egress = "ALL_TRAFFIC"
    }
  }
}

Langkah berikutnya