Anda dapat menargetkan endpoint pribadi untuk panggilan HTTP dari eksekusi alur kerja menggunakan registry layanan Direktori Layanan dengan Alur Kerja. Hal ini memungkinkan Anda memberikan nama layanan Direktori Layanan ke alur kerja. Eksekusi alur kerja Anda menggunakan informasi yang diambil dari registry layanan untuk mengirim permintaan HTTP yang sesuai, tanpa keluar ke jaringan publik.
Dokumen ini menunjukkan cara mendaftarkan virtual machine (VM) di jaringan Virtual Private Cloud (VPC) sebagai endpoint Direktori Layanan:
Jaringan VPC menyediakan konektivitas untuk instance VM Anda, dan memungkinkan Anda membuat endpoint pribadi dalam jaringan VPC menggunakan alamat IP internal. Panggilan HTTP ke resource jaringan VPC dikirim melalui jaringan pribadi sambil menerapkan Identity and Access Management (IAM) dan Kontrol Layanan VPC.
Direktori Layanan adalah registry layanan yang menyimpan informasi tentang layanan jaringan terdaftar, termasuk nama, lokasi, dan atributnya. Terlepas dari infrastrukturnya, Anda dapat mendaftarkan layanan secara otomatis, dan mengambil detailnya. Hal ini memungkinkan Anda menemukan, memublikasikan, dan menghubungkan layanan dalam skala besar untuk semua endpoint layanan.
Diagram ini memberikan ringkasan:
Pada tingkat tinggi, Anda harus melakukan hal berikut:
- Memberikan izin ke agen layanan Cloud Workflows sehingga agen layanan dapat melihat resource Direktori Layanan dan mengakses jaringan VPC menggunakan Direktori Layanan.
- Membuat jaringan VPC untuk menyediakan fungsi jaringan.
- Membuat aturan firewall VPC sehingga Anda dapat mengizinkan atau menolak traffic ke atau dari instance VM di jaringan VPC Anda.
- Membuat instance VM di jaringan VPC. Instance VM Compute Engine adalah virtual machine yang dihosting di infrastruktur Google. Istilah instance Compute Engine, instance VM, dan VM adalah sinonim dan digunakan secara bergantian.
- Men-deploy aplikasi di VM. Anda dapat menjalankan aplikasi di instance VM dan mengonfirmasi bahwa traffic ditayangkan seperti yang diharapkan.
Mengonfigurasi Direktori Layanan sehingga eksekusi alur kerja Anda dapat memanggil endpoint Direktori Layanan.
Membuat dan men-deploy alur kerja Anda. Nilai
private_service_namedalam alur kerja Anda menentukan endpoint Direktori Layanan yang Anda daftarkan pada langkah sebelumnya.
Memberikan izin ke agen layanan Cloud Workflows
Beberapalayanan memiliki Google Cloud agen layanan yang memungkinkan layanan mengakses resource Anda. Jika API memerlukan agen layanan, Google akan membuat agen layanan setelah Anda mengaktifkan dan menggunakan API.
Saat pertama kali men-deploy alur kerja, agen layanan Cloud Workflows akan otomatis dibuat dengan format berikut:
service-PROJECT_NUMBER@gcp-sa-workflows.iam.gserviceaccount.comAnda dapat membuat akun layanan secara manual dalam project tanpa alur kerja apa pun dengan perintah ini:
gcloud beta services identity create \ --service=workflows.googleapis.com \ --project=PROJECT_ID
Ganti
PROJECT_IDdengan ID project Google Cloud Anda.Untuk melihat resource Direktori Layanan, berikan peran Viewer Direktori Layanan (
servicedirectory.viewer) pada project ke agen layanan Alur Kerja:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-workflows.iam.gserviceaccount.com \ --role=roles/servicedirectory.viewer
Ganti
PROJECT_NUMBERdengan nomor Google Cloud project Anda. Anda dapat menemukan nomor project di halaman Selamat Datang di Google Cloud konsol atau dengan menjalankan perintah berikut:gcloud projects describe PROJECT_ID --format='value(projectNumber)'
Untuk mengakses jaringan VPC menggunakan Direktori Layanan, berikan peran Layanan Resmi Private Service Connect (
roles/servicedirectory.pscAuthorizedService) pada project ke agen layanan Alur Kerja:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-workflows.iam.gserviceaccount.com \ --role=roles/servicedirectory.pscAuthorizedService
Membuat jaringan VPC
Jaringan VPC adalah versi virtual dari jaringan fisik yang diterapkan di dalam jaringan produksi Google. Jaringan ini menyediakan konektivitas untuk instance VM Compute Engine Anda.
Anda dapat membuat jaringan VPC mode otomatis atau mode kustom. Setiap jaringan baru yang Anda buat harus memiliki nama unik dalam project yang sama.
Misalnya, perintah berikut membuat jaringan VPC mode otomatis:
gcloud compute networks create NETWORK_NAME \ --subnet-mode=auto
Ganti NETWORK_NAME dengan nama untuk jaringan VPC.
Untuk mengetahui informasi selengkapnya, lihat Membuat dan mengelola jaringan VPC.
Membuat aturan firewall VPC
Dengan aturan firewall VPC, Anda dapat mengizinkan atau menolak traffic ke atau dari instance VM di jaringan VPC berdasarkan nomor port, tag, atau protokol.
Aturan firewall VPC ditentukan di tingkat jaringan, dan hanya berlaku untuk jaringan tempat aturan tersebut dibuat; namun, nama yang Anda pilih untuk aturan harus unik untuk project.
Misalnya, perintah berikut membuat aturan firewall untuk jaringan VPC yang Anda buat sebelumnya.
gcloud compute firewall-rules create RULE_NAME \ --network=projects/PROJECT_ID/global/networks/NETWORK_NAME \ --direction=INGRESS \ --action=ALLOW \ --source-ranges=IP_ADDRESS_RANGE \ --rules=all
Ganti kode berikut:
RULE_NAME: nama untuk aturan firewall.IP_ADDRESS_RANGE: satu atau beberapa rentang alamat IPv4 atau IPv6. Sebagai praktik terbaik, tentukan rentang alamat IP tertentu yang diperlukan untuk mengizinkan akses. Perhatikan hal berikut:Akses jaringan pribadi untuk Direktori Layanan menggunakan
35.199.192.0/19sebagai rentang khusus internal dengan hop berikutnya yang sepenuhnya berada dalam jaringan Google. Untuk mengetahui informasi selengkapnya, lihat Jalur untuk Cloud DNS dan Direktori Layanan.Menyertakan
35.235.240.0/20dalam rentang sumber memungkinkan koneksi SSH menggunakan penerusan TCP Identity-Aware Proxy (IAP) jika semua prasyarat lainnya terpenuhi. Untuk mengetahui informasi selengkapnya, lihat Menggunakan IAP untuk penerusan TCP.Jika Anda menggunakan alat SSH di browser untuk terhubung ke VM Compute Engine dari dalam Google Cloud konsol, ada persyaratan tertentu.
Nilai flag
--rulesdariallmembuat aturan firewall berlaku untuk semua protokol dan semua port tujuan. Anda dapat mempersempit cakupan dengan menentukan protokol dan port.Secara opsional, Anda dapat menggunakan flag
--target-tagsdan--target-service-accountsuntuk menentukan target; jika tidak, aturan akan berlaku untuk semua target di jaringan.
Untuk mengetahui informasi selengkapnya, lihat Menggunakan aturan firewall VPC.
Membuat instance VM di jaringan VPC
Instance VM mencakup cluster Google Kubernetes Engine (GKE), instance lingkungan fleksibel App Engine, dan produk lainnya yang dibangun di Google Cloud Compute Engine VM. Untuk mendukung akses jaringan pribadi, resource jaringan VPC dapat berupa instance VM atau tujuan lain yang didukung. Untuk mengetahui informasi selengkapnya, lihat Ringkasan akses jaringan pribadi.
Instance Compute Engine dapat menjalankan image publik untuk Linux dan Windows Server yang disediakan Google, serta image kustom pribadi yang dapat Anda buat atau impor dari sistem yang ada. Anda juga dapat men-deploy container Docker.
Anda dapat memilih properti mesin instance, misalnya jumlah CPU virtual dan jumlah memori, dengan menggunakan serangkaian jenis mesin yang telah ditetapkan atau dengan membuat jenis mesin kustom milik Anda sendiri.
Misalnya, perintah berikut membuat instance VM Linux dari image publik dengan antarmuka jaringan yang terpasang ke jaringan VPC yang Anda buat sebelumnya.
Buat dan mulai instance VM:
gcloud compute instances create VM_NAME \ --image-family=debian-11 \ --image-project=debian-cloud \ --machine-type=e2-micro \ --network-interface network=projects/PROJECT_ID/global/networks/NETWORK_NAME
Ganti
VM_NAMEdengan nama untuk VM.Jika Anda diminta untuk mengonfirmasi zona untuk instance, ketik
y.Setelah membuat instance VM, perhatikan alamat
INTERNAL_IPyang ditampilkan.Di Google Cloud konsol, buka halaman VM instances.
Di kolom Name, klik nama instance VM yang sesuai.
Jika VM berjalan, untuk menghentikan VM, klik Stop.
Untuk mengedit VM, klik Edit.
Di bagian Networking > Firewalls, untuk mengizinkan traffic HTTP atau HTTPS ke VM, pilih Allow HTTP traffic atau Allow HTTPS traffic.
Untuk contoh ini, centang kotak Allow HTTP traffic.
Compute Engine menambahkan tag jaringan ke VM Anda yang mengaitkan aturan firewall dengan VM. Kemudian, Compute Engine membuat aturan firewall masuk yang sesuai, yang mengizinkan semua traffic masuk di
tcp:80(HTTP) atautcp:443(HTTPS).Untuk menyimpan perubahan, klik Save.
Untuk memulai ulang VM, klik Start/Resume.
Untuk mengetahui informasi selengkapnya, baca bagian Membuat dan memulai instance VM.
Men-deploy aplikasi di VM
Untuk menguji konfigurasi jaringan dan mengonfirmasi bahwa traffic ditayangkan seperti yang diharapkan, Anda dapat men-deploy aplikasi dasar di VM yang memproses port.
Misalnya, perintah berikut membuat layanan web Node.js yang memproses port 3000.
Buat koneksi SSH ke instance VM Anda.
Perbarui repositori paket Anda:
sudo apt update
-
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan lingkungan pengembangan Node.js.
Buat file
package.jsonsecara interaktif:npm initContoh:
{ "name": "test", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "hello" }, "author": "", "license": "ISC" }
Instal Express, framework aplikasi web untuk Node.js:
npm install express
Tulis kode untuk aplikasi pengujian:
vim app.jsContoh berikut membuat aplikasi yang merespons permintaan
GETke jalur root (/) dengan teks "Hello, world!"Perhatikan port yang diproses oleh aplikasi. Nomor port yang sama harus digunakan saat mengonfigurasi endpoint untuk layanan Direktori Layanan.
Konfirmasi bahwa aplikasi memproses port 3000:
node app.js
Compute Engine menawarkan berbagai opsi deployment. Untuk mengetahui informasi selengkapnya, lihat Memilih strategi deployment Compute Engine untuk workload Anda.
Mengonfigurasi Direktori Layanan
Untuk mendukung pemanggilan endpoint pribadi dari eksekusi alur kerja, Anda harus menyiapkan namespace Direktori Layanan, mendaftarkan layanan di namespace, dan menambahkan endpoint ke layanan.
Misalnya, perintah berikut membuat namespace, layanan, dan endpoint yang menentukan jaringan VPC dan alamat IP internal instance VM Anda.
Buat namespace:
gcloud service-directory namespaces create NAMESPACE \ --location=REGION
Ganti kode berikut:
NAMESPACE: ID namespace atau ID yang memenuhi syarat sepenuhnya untuk namespace.REGION: region yang Google Cloud berisi namespace; misalnya,us-central1.
Buat layanan:
gcloud service-directory services create SERVICE \ --namespace=NAMESPACE \ --location=REGION
Ganti
SERVICEdengan nama layanan yang Anda buat.Konfigurasikan endpoint.
gcloud service-directory endpoints create ENDPOINT \ --namespace=NAMESPACE \ --service=SERVICE \ --network=projects/PROJECT_NUMBER/locations/global/networks/NETWORK_NAME \ --port=PORT_NUMBER \ --address=IP_ADDRESS \ --location=REGION
Ganti kode berikut:
ENDPOINT: nama endpoint yang Anda buat.PORT_NUMBER: port tempat endpoint berjalan; misalnya,3000.IP_ADDRESS: alamat IPv6 atau IPv4 endpoint; ini adalah alamat IP internal yang Anda catat sebelumnya.
Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi Direktori Layanan dan Mengonfigurasi akses jaringan pribadi.
Membuat dan men-deploy alur kerja Anda
Memanggil atau memanggil endpoint pribadi dari Alur Kerja dilakukan melalui permintaan HTTP. Metode permintaan HTTP yang paling umum memiliki pintasan panggilan (seperti http.get dan
http.post), tetapi Anda dapat membuat jenis permintaan HTTP apa pun
dengan menetapkan kolom call ke http.request dan
menentukan jenis permintaan menggunakan kolom method. Untuk mengetahui informasi selengkapnya,
lihat Membuat permintaan HTTP.
Buat file kode sumber untuk alur kerja Anda:
touch call-private-endpoint.JSON_OR_YAMLGanti
JSON_OR_YAMLdenganyamlataujsonbergantung pada format alur kerja Anda.Di editor teks, salin alur kerja berikut (yang dalam hal ini menggunakan protokol HTTP untuk nilai
url) ke file kode sumber Anda:YAML
main: steps: - checkHttp: call: http.get args: url: http://IP_ADDRESS private_service_name: "projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE/services/SERVICE" result: res - ret: return: ${res}
JSON
{ "main": { "steps": [ { "checkHttp": { "call": "http.get", "args": { "url": "http://IP_ADDRESS", "private_service_name": "projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE/services/SERVICE" }, "result": "res" } }, { "ret": { "return": "${res}" } } ] } }
Nilai
private_service_nameharus berupa string yang menentukan nama layanan Direktori Layanan terdaftar dengan format berikut:projects/PROJECT_ID/locations/LOCATION/namespaces/NAMESPACE_NAME/services/SERVICE_NAMEDeploy alur kerja. Untuk tujuan pengujian, Anda dapat melampirkan akun layanan default Compute Engine ke alur kerja untuk merepresentasikan identitasnya:
gcloud workflows deploy call-private-endpoint \ --source=call-private-endpoint.JSON_OR_YAML \ --location=REGION \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
Jalankan alur kerja:
gcloud workflows run call-private-endpoint \ --location=REGION
Anda akan melihat hasil yang mirip dengan berikut ini:
argument: 'null' duration: 0.650784403s endTime: '2023-06-09T18:19:52.570690079Z' name: projects/968807934019/locations/us-central1/workflows/call-private-endpoint/executions/4aac88d3-0b54-419b-b364-b6eb973cc932 result: '{"body":"Hello, world!","code":200,"headers":{"Connection":"keep-alive","Content-Length":"21","Content-Type":"text/html; charset=utf-8","Date":"Fri, 09 Jun 2023 18:19:52 GMT","Etag":"W/\"15-NFaeBgdti+9S7zm5kAdSuGJQm6Q\"","Keep-Alive":"timeout=5","X-Powered-By":"Express"}}' startTime: '2023-06-09T18:19:51.919905676Z' state: SUCCEEDED
Langkah berikutnya
- Pelajari lebih lanjut Private Service Connect.
- Mengonfigurasi Direktori Layanan untuk GKE.
- Menyiapkan perimeter layanan menggunakan Kontrol Layanan VPC.
- Memanggil endpoint yang diamankan IAP.