1. Pengantar
Private Service Connect memungkinkan produsen layanan menawarkan layanan secara pribadi kepada konsumen layanan. Private Service Connect menawarkan manfaat berikut:
- Jaringan VPC produsen layanan dapat mendukung lebih dari satu konsumen layanan.
- Setiap konsumen terhubung ke alamat IP internal yang mereka tentukan. Private Service Connect melakukan penafsiran alamat jaringan (NAT) untuk merutekan permintaan ke produsen layanan.

Gambar 2. Private Service Connect menggunakan endpoint dan lampiran layanan untuk memungkinkan konsumen layanan mengirim traffic dari jaringan VPC konsumen ke layanan di jaringan VPC produsen layanan (klik untuk memperbesar).
Yang akan Anda pelajari
- Manfaat Private Service Connect
- Konsep utama untuk konsumen layanan
- Konsep utama untuk produsen layanan
- Membuat lingkungan produser
- Mengekspos layanan (lingkungan produsen) melalui lampiran layanan
- Membuat lingkungan konsumen
- Membuat aturan penerusan di jaringan konsumen
- Memvalidasi akses konsumen
- Mengaktifkan kontrol akses kebijakan
- Menggunakan aturan firewall keluar untuk memblokir akses ke aturan penerusan konsumen
Yang Anda butuhkan
- Pengetahuan tentang men-deploy Cluster dan layanan GKE
- Pengetahuan tentang Load balancer internal
- Kemampuan untuk membuat VPC di dua project
- Kemampuan untuk membuat Cluster GKE
2. Manfaat Private Service Connect
Dengan PSC, Anda mendapatkan beberapa manfaat dibandingkan dengan menggunakan Peering VPC:
Kontrol yang lebih baik atas ruang IP pribadi
- Sebagai konsumen layanan, Anda dapat mengontrol alamat IP pribadi yang digunakan untuk terhubung ke layanan terkelola yang ingin Anda akses.
- Sebagai konsumen layanan, Anda tidak perlu khawatir tentang mencadangkan rentang alamat IP pribadi untuk layanan backend yang digunakan di VPC Anda. Anda hanya perlu memilih alamat IP dari subnet Anda sendiri untuk terhubung ke layanan produsen.
- Sebagai produsen layanan, Anda dapat memilih untuk men-deploy model multi-tenant, di mana VPC Anda berisi layanan yang melayani beberapa VPC konsumen. Konsumen yang memiliki rentang subnet yang tumpang-tindih tidak lagi menjadi masalah.
- Sebagai penyedia layanan, Anda dapat menskalakan layanan ke sebanyak mungkin instance VM yang diperlukan, tanpa perlu menghubungi konsumen untuk mendapatkan lebih banyak alamat IP.
Peningkatan keamanan dan isolasi
- Sebagai konsumen layanan, hanya Anda yang dapat memulai komunikasi dengan produsen layanan. Konektivitas satu arah ini menyederhanakan konfigurasi firewall secara drastis, tetapi juga mengurangi risiko dari traffic tidak sah yang berasal dari produsen layanan.
- Sebagai produsen layanan, Anda tidak perlu mengubah aturan firewall berdasarkan rentang subnet di VPC konsumen. Anda cukup membuat aturan firewall untuk rentang alamat IP NAT yang dikonfigurasi untuk layanan Anda.
Skalabilitas yang Lebih Baik
- PSC memungkinkan desain yang sangat skalabel dengan mendukung ribuan Konsumen, dan memungkinkan Produsen Layanan menawarkan layanan multi-tenant atau single-tenant yang sangat skalabel.
- Sebagai konsumen layanan yang menggunakan Private Service Connect, Anda dapat membuat resource sesuai kebutuhan di VPC Anda. Skala ini tidak terpengaruh oleh jumlah resource tersebut yang dibuat di VPC produsen.
3. Konsep utama untuk konsumen layanan
Anda dapat menggunakan endpoint Private Service Connect untuk menggunakan layanan yang berada di luar jaringan VPC Anda. Konsumen layanan membuat endpoint Private Service Connect yang terhubung ke layanan target.
Endpoints
Anda menggunakan endpoint Private Service Connect untuk terhubung ke layanan target. Endpoint memiliki alamat IP internal di jaringan VPC Anda dan didasarkan pada resource aturan penerusan.
Anda mengirim traffic ke endpoint, yang meneruskannya ke target di luar jaringan VPC Anda.
Target
Endpoint Private Service Connect memiliki target, yaitu layanan yang ingin Anda hubungkan:
- Paket API:
- Semua API: sebagian besar Google API
- VPC-SC: API yang didukung Kontrol Layanan VPC
- Layanan yang dipublikasikan di jaringan VPC lain. Layanan ini dapat dikelola oleh organisasi Anda sendiri atau pihak ketiga.
Layanan yang dipublikasikan
Untuk menghubungkan endpoint ke layanan produsen layanan, Anda memerlukan lampiran layanan untuk layanan tersebut. URI lampiran layanan memiliki format ini: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
4. Konsep utama untuk produsen layanan
Untuk menyediakan layanan kepada konsumen, Anda membuat satu atau beberapa subnet khusus untuk digunakan dalam penafsiran alamat jaringan (NAT) alamat IP konsumen. Kemudian, buat lampiran layanan yang merujuk ke subnet tersebut.
Subnet Private Service Connect
Untuk mengekspos layanan, produsen layanan terlebih dahulu membuat satu atau beberapa subnet dengan tujuan Private Service Connect.
Saat permintaan dikirim dari jaringan VPC konsumen, alamat IP sumber konsumen diterjemahkan menggunakan NAT sumber (SNAT) ke alamat IP yang dipilih dari salah satu subnet Private Service Connect.
Jika Anda ingin menyimpan informasi alamat IP koneksi konsumen, lihat Melihat informasi koneksi konsumen.
Subnet ini tidak dapat digunakan untuk resource seperti instance VM atau aturan penerusan. Subnet hanya digunakan untuk menyediakan alamat IP untuk SNAT koneksi konsumen yang masuk.
Subnet Private Service Connect harus berisi minimal satu alamat IP untuk setiap 63 VM konsumen sehingga setiap VM konsumen dialokasikan 1.024 tuple sumber untuk network address translation.
Ukuran minimum untuk subnet Private Service Connect adalah /24.
Lampiran layanan
Produsen layanan mengekspos layanan mereka melalui lampiran layanan.
- Untuk mengekspos layanan, produsen layanan membuat lampiran layanan yang merujuk pada aturan penerusan load balancer layanan.
- Untuk mengakses layanan, konsumen layanan membuat endpoint yang merujuk ke lampiran layanan.
Preferensi koneksi
Saat membuat layanan, Anda memilih cara untuk menyediakannya. Ada 2 opsi:
- Menerima koneksi secara otomatis untuk semua project - setiap konsumen layanan dapat mengonfigurasi endpoint dan terhubung ke layanan secara otomatis.
- Menerima koneksi untuk project yang dipilih - konsumen layanan mengonfigurasi endpoint untuk terhubung ke layanan dan produsen layanan menerima atau menolak permintaan koneksi.
Persyaratan dan batasan
- Batasan untuk Private Service Connect berlaku.
- Anda dapat membuat lampiran layanan di GKE versi 1.21.4-gke.300 dan yang lebih baru.
- Anda tidak dapat menggunakan subnet yang sama dalam beberapa konfigurasi lampiran layanan.
- Anda harus membuat layanan GKE yang menggunakan load balancer TCP/UDP internal.
5. Lingkungan Pengujian
Jaringan konsumen terdiri dari alamat IP statis yang digunakan untuk memulai permintaan ke produsen layanan, selain target-service-attachment yang dipetakan ke lampiran layanan produsen (layanan yang dipublikasikan).

Sekarang, mari kita lihat jaringan produsen. Perhatikan bagaimana jaringan produsen tidak memiliki pemetaan ke jaringan konsumen, melainkan jaringan produsen berisi lampiran layanan (layanan yang dipublikasikan) yang digunakan oleh konsumen untuk layanan. Lampiran layanan produsen diekspos oleh ILB L4 ingress GKE (layanan yang dipublikasikan) yang memungkinkan komunikasi ke Pod GKE & aplikasi terkait.
Subnet NAT digunakan saat permintaan dikirim dari jaringan VPC konsumen, alamat IP sumber konsumen diterjemahkan menggunakan NAT sumber (SNAT) ke alamat IP yang dipilih dari salah satu subnet Private Service Connect.
Subnet ini tidak dapat digunakan untuk resource seperti instance VM atau aturan penerusan. Subnet hanya digunakan untuk menyediakan alamat IP untuk SNAT koneksi konsumen yang masuk.
Untuk mengetahui lebih lanjut L4ILB untuk Private Service Connect GKE dan mendapatkan akses langsung ke konten yang digunakan untuk membuat referensi lab ini, lihat berikut.
Penyiapan lingkungan mandiri
- Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.



- Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API, dan Anda dapat memperbaruinya kapan saja.
- Project ID harus unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis menghasilkan string unik; biasanya Anda tidak peduli dengan kata-katanya. Pada sebagian besar codelab, Anda harus mereferensikan Project ID (dan biasanya diidentifikasi sebagai
PROJECT_ID). Jadi, jika Anda tidak menyukainya, buat ID acak lain, atau, Anda dapat mencoba sendiri dan melihat apakah tersedia. Kemudian file akan "dibekukan" setelah project dibuat. - Ada nilai ketiga, Nomor Project yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
- Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan API/resource Cloud. Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Untuk menonaktifkan resource agar tidak menimbulkan penagihan di luar tutorial ini, ikuti petunjuk "pembersihan" yang ada di akhir codelab. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.
Mulai Cloud Shell
Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.
Dari Konsol GCP, klik ikon Cloud Shell di toolbar kanan atas:

Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:

Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda di lab ini dapat dilakukan hanya dengan browser.
6. Sebelum memulai
Codelab memerlukan dua project, meskipun tidak diperlukan untuk PSC. Perhatikan referensi untuk mendukung satu atau beberapa project.
Project Tunggal - Memperbarui project untuk mendukung jaringan produsen dan konsumen
Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME consumerproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
Beberapa project - Perbarui project untuk mendukung jaringan produser
Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME echo $prodproject
Perhatikan konvensi kode pewarnaan berikut:

7. Buat jaringan VPC Produsen

Jaringan VPC
Dari Cloud Shell
gcloud compute networks create gke-producer-l4-vpc --project=$prodproject --subnet-mode=custom
Buat subnet Cluster GKE
Dari Cloud Shell
gcloud compute networks subnets create node-subnet1 --project=$prodproject --range=192.168.10.0/24 --network=gke-producer-l4-vpc --region=us-central1 --secondary-range=pod=10.10.10.0/24,service=10.10.20.0/24 --enable-private-ip-google-access
Membuat Cluster GKE
Dari Cloud Shell
gcloud container clusters create gke-psc-l4 \
--release-channel=rapid \
--enable-ip-alias \
--zone=us-central1-a \
--network gke-producer-l4-vpc \
--num-nodes 1 \
--subnetwork node-subnet1 \
--cluster-secondary-range-name pod \
--services-secondary-range-name service
Membuat subnet untuk Private Service Connect (Subnet NAT)
Anda harus membuat satu atau beberapa subnet khusus untuk digunakan dengan Private Service Connect. Jika menggunakan Konsol Google Cloud untuk memublikasikan layanan, Anda dapat membuat subnet selama prosedur tersebut.
Untuk mengetahui informasi tentang subnet Private Service Connect, lihat Subnet Private Service Connect.
Dari Cloud Shell
gcloud beta compute networks subnets create gke-nat-subnet \
--project $prodproject \
--network gke-producer-l4-vpc \
--region us-central1 \
--range 100.100.10.0/24 \
--purpose PRIVATE_SERVICE_CONNECT
8. Men-deploy workload dan layanan
Manifes berikut menjelaskan Deployment yang menjalankan image container aplikasi web contoh. Simpan manifes sebagai my-deployment.yaml dari cloud shell
apiVersion: apps/v1
kind: Deployment
metadata:
name: psc-ilb
spec:
replicas: 3
selector:
matchLabels:
app: psc-ilb
template:
metadata:
labels:
app: psc-ilb
spec:
containers:
- name: whereami
image: gcr.io/google-samples/whereami:v1.2.1
ports:
- name: http
containerPort: 8080
readinessProbe:
httpGet:
path: /healthz
port: 8080
scheme: HTTP
initialDelaySeconds: 5
timeoutSeconds: 1
Terapkan manifes ke cluster Anda dari cloud shell
kubectl apply -f my-deployment.yaml
Membuat layanan
Manifes berikut menjelaskan layanan yang membuat load balancer TCP/UDP internal pada port TCP 8080. Simpan manifes sebagai my-service.yaml dari cloud shell.
apiVersion: v1
kind: Service
metadata:
name: gke-l4-psc
annotations:
networking.gke.io/load-balancer-type: "Internal"
spec:
type: LoadBalancer
selector:
app: psc-ilb
ports:
- port: 80
targetPort: 8080
protocol: TCP
Terapkan manifes ke cluster Anda dari cloud shell
kubectl apply -f my-service.yaml
Buat ServiceAttachment
Manifes berikut menjelaskan ServiceAttachment yang menampilkan layanan yang Anda buat untuk konsumen layanan. Simpan manifes sebagai my-psc.yaml dari cloud shell.
apiVersion: networking.gke.io/v1beta1 kind: ServiceAttachment metadata: name: emoji-sa namespace: default spec: connectionPreference: ACCEPT_AUTOMATIC natSubnets: - gke-nat-subnet proxyProtocol: false resourceRef: kind: Service name: gke-l4-psc
Terapkan manifes ke cluster Anda dari cloud shell
kubectl apply -f my-psc.yaml
ServiceAttachment memiliki kolom berikut:
- connectionPreference: preferensi koneksi yang menentukan cara pelanggan terhubung ke layanan. Anda dapat menggunakan persetujuan project otomatis dengan ACCEPT_AUTOMATIC atau persetujuan project eksplisit dengan ACCEPT_MANUAL. Untuk mengetahui informasi selengkapnya, lihat Memublikasikan layanan menggunakan Private Service Connect.
- natSubnets: daftar nama resource subnetwork yang akan digunakan untuk lampiran layanan.
- proxyProtocol: jika ditetapkan ke benar (true), IP sumber konsumen dan ID koneksi Private Service Connect akan tersedia dalam permintaan. Kolom ini bersifat opsional dan setelan defaultnya adalah false.
- consumerAllowList: daftar project konsumen yang diizinkan untuk terhubung ke ServiceAttachment. Kolom ini hanya dapat digunakan jika connectionPreference adalah ACCEPT_MANUAL. Untuk mengetahui informasi selengkapnya tentang kolom ini dan opsi lainnya, lihat Memublikasikan layanan menggunakan Private Service Connect.
Validasi Produsen
Melihat detail Lampiran Layanan
Anda dapat melihat detail ServiceAttachment menggunakan perintah berikut dari Cloud Shell
kubectl describe serviceattachment emoji-sa
Melihat ILB L4 GKE
Dari konsol cloud, buka Network Services → Load Balancing → Frontends
Identifikasi alamat IP frontend yang selaras dengan subnet node yang ditentukan sebelumnya 192.168.10.0/24, lihat screenshot di bawah, Alamat IP Anda mungkin berbeda.

Melihat Layanan yang Dipublikasikan
Dari konsol cloud, buka Network Services → Private Service Connect → Published Services
Identifikasi layanan dengan jaringan yang digunakan di lab, gke-producer-l4-vpc, lihat screenshot di bawah, meskipun nilai Layanan dan Target Anda mungkin berbeda

Klik nama layanan yang akan mengarahkan Anda ke layar di bawah, catat detail lampiran layanan yang diisi di Info Dasar. Selain itu, catat bahwa 'Project yang Terhubung' kosong karena konsumen belum mendaftar ke layanan. TERIMA dan TOLAK akan tetap berwarna abu-abu karena Preferensi koneksi disetel ke "ACCEPT_AUTOMATICALLY"', opsi ini dapat diubah kapan saja menjadi "ACCEPT_MANUAL" dengan mengubah YAML lampiran layanan (my-psc.yaml).


9. Buat jaringan VPC Konsumen

Di bagian berikut, VPC konsumen dikonfigurasi dalam project terpisah. Komunikasi antara jaringan konsumen dan produsen dilakukan melalui lampiran layanan yang ditentukan di jaringan konsumen.
Codelab memerlukan dua project, meskipun tidak diperlukan untuk PSC. Perhatikan referensi untuk mendukung satu atau beberapa project.
Project Tunggal - Memperbarui project untuk mendukung jaringan produsen dan konsumen
Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] consumerproject=YOUR-PROJECT-NAME prodproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
Beberapa project - Perbarui project untuk mendukung jaringan konsumen
Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] consumerproject=YOUR-PROJECT-NAME echo $consumerproject
Jaringan VPC
Dari Cloud Shell
gcloud compute networks create vpc-demo-consumer --project=$consumerproject --subnet-mode=custom
Membuat subnet untuk PSC
Dari Cloud Shell
gcloud compute networks subnets create consumer-subnet --project=$consumerproject --range=10.0.60.0/24 --network=vpc-demo-consumer --region=us-central1
Membuat subnet untuk instance VM
Dari Cloud Shell
gcloud compute networks subnets create consumer-subnet-vm --project=$consumerproject --range=10.0.70.0/24 --network=vpc-demo-consumer --region=us-central1
Buat alamat IP statis untuk mengakses layanan yang dipublikasikan
Dari Cloud Shell
gcloud compute addresses create vpc-consumer-psc --region=us-central1 --subnet=consumer-subnet --addresses 10.0.60.100
Buat Aturan Firewall
Untuk mengizinkan IAP terhubung ke instance VM Anda, buat aturan firewall yang:
- Berlaku untuk semua instance VM yang ingin Anda akses menggunakan IAP.
- Mengizinkan traffic masuk dari rentang IP 35.235.240.0/20. Rentang ini berisi semua alamat IP yang digunakan IAP untuk penerusan TCP
Dari Cloud Shell
gcloud compute firewall-rules create psclab-iap-consumer --network vpc-demo-consumer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
Meskipun tidak diperlukan untuk PSC, buat aturan firewall keluar untuk memantau traffic PSC konsumen ke lampiran layanan produsen
gcloud compute --project=$consumerproject firewall-rules create vpc-consumer-psc --direction=EGRESS --priority=1000 --network=vpc-demo-consumer --action=ALLOW --rules=all --destination-ranges=10.0.60.0/24 --enable-logging
10. Buat instance pengujian konsumen 1
Dari Cloud Shell
gcloud compute instances create consumer-instance-1 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.10 --no-address --subnet=consumer-subnet-vm --tags=google1 --image-family=debian-10 --image-project=debian-cloud
11. Buat instance pengujian konsumen 2
Dari Cloud Shell
gcloud compute instances create consumer-instance-2 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.20 --no-address --subnet=consumer-subnet-vm --tags=google2 --image-family=debian-10 --image-project=debian-cloud
12. Membuat lampiran layanan
Pada langkah sebelumnya, Anda telah menyalin string Producer Service Attachment ke tempat yang aman. Sekarang, mari kita masukkan nilai yang disimpan ke kolom "target-service-attachment".

Dari Cloud Shell
gcloud compute forwarding-rules create vpc-consumer-psc-fr --region=us-central1 --network=vpc-demo-consumer --address=vpc-consumer-psc --target-service-attachment=yoursavedproducerserviceattachment
13. Validasi - Konsumen
Kami akan menggunakan log CURL & firewall untuk memvalidasi komunikasi konsumen dan produsen.
Dalam project Konsumen, alamat IP statis digunakan untuk memulai komunikasi ke Produsen. Pemetaan alamat IP statis ke aturan penerusan Konsumen ini divalidasi dengan menjalankan sintaksis berikut.

Dari shell penggunaan Cloud VPC Konsumen, identifikasi aturan penerusan dan IP statis
gcloud compute forwarding-rules describe vpc-consumer-psc-fr --region us-central1
Output di bawah, kita akan menggunakan 10.0.60.100 untuk menghubungi produser pada langkah berikutnya
IPAddress: 10.0.60.100 creationTimestamp: '2021-09-30T21:13:54.124-07:00' id: '3564572805904938477' kind: compute#forwardingRule labelFingerprint: 42WmSpB8rSM= name: vpc-consumer-psc-fr network: https://www.googleapis.com/compute/v1/projects/deepakmichaelstage/global/networks/vpc-demo-consumer networkTier: PREMIUM pscConnectionId: '36583161500548196' pscConnectionStatus: ACCEPTED
Melihat Layanan Terhubung
Dari konsol cloud, buka Network Services → Private Service Connect → Connected Endpoints & view the newly created endpoint

Mari kita login ke consumer-instance-1 dan menguji akses ke Layanan yang Dipublikasikan Produsen
Dari Cloud Shell, buka tab baru dengan mengklik +.

Dari cloud shell, lakukan hal berikut:
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-1" --project "$projectname"
Setelah login ke instance consumer-instance-1, lakukan curl terhadap Alamat IP aturan penerusan 10.0.60.100
Dari cloud shell, lakukan hal berikut:
user@consumer-instance-1:~$ curl 10.0.60.100
Contoh output
user@consumer-instance-1:~$ curl 10.0.60.100
{
"cluster_name": "gke-psc-l4",
"host_header": "10.0.60.100",
"node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodprojectid.internal",
"pod_name": "psc-ilb-588887dfdb-w7tbr",
"pod_name_emoji": "🤷",
"project_id": "prodorijectid",
"timestamp": "2021-10-01T17:43:37",
"zone": "us-central1-a"
Mari kita login ke consumer-instance-2 dan menguji akses ke Layanan yang Dipublikasikan Produsen
Dari Cloud Shell, buka tab baru dengan mengklik +.

Dari cloud shell, lakukan hal berikut:
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"
Dari cloud shell, lakukan hal berikut:
user@consumer-instance-2:~$ curl 10.0.60.100
Contoh output
deepakmichael@consumer-instance-2:~$ curl 10.0.60.100
{
"cluster_name": "gke-psc-l4",
"host_header": "10.0.60.100",
"node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodproject.internal",
"pod_name": "psc-ilb-588887dfdb-4jdql",
"pod_name_emoji": "🧑🏿",
"project_id": "prodproject",
"timestamp": "2021-10-01T17:49:51",
"zone": "us-central1-a"
14. Logging firewall - Validasi yang dialokasikan
Menggunakan Logs Explorer, validasi bahwa aturan firewall "vpc-consumer-psc" mencatat alur antara instance VM dan IP statis
- Dari Konsol Cloud, Identifikasi Logging Operasi → Log Explorer
- Di kolom Query, perbarui entri di bawah dengan yourconsumerproject, lalu pilih "Run Query"
logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")
- Hasil kueri memberikan hal berikut per screenshot yang diberikan

- Luaskan log (jsonPayload → Connection) dan identifikasi output yang diberikan di bawah. Perhatikan dest_ip: 10.0.60.100 adalah IP TCP STATIS yang digunakan untuk mengakses Layanan Produsen dan src_ip: 10.0.70.10 atau 10.0.70.20 adalah alamat IP instance VM. Disposisi Diizinkan.

15. Validasi - Produser

Dari project Produsen, pastikan lampiran layanan berhasil terhubung. Buka Network Services → Private Service Connect → Published Services

Mengklik layanan akan menampilkan project konsumen dan status Anda yang terhubung seperti yang diilustrasikan di bawah

16. Membatasi akses ke Layanan yang Dipublikasikan

Sejauh ini, kita telah mengonfirmasi bahwa kedua instance memiliki akses ke Layanan yang Dipublikasikan. Mari kita buat Aturan Firewall Egress untuk menolak akses consumer-instance-2 ke Layanan yang Dipublikasikan.
Secara default, GCP mengizinkan semua traffic Keluar, tetapi menolak semua traffic Masuk. Pada langkah-langkah berikut, kita akan membuat aturan firewall berdasarkan tag jaringan 'google2' yang telah ditentukan sebelumnya dan digunakan saat membuat consumer-instance-2 untuk menolak akses ke Layanan yang Dipublikasikan.

Buka tab Cloud Shell baru dengan mengklik + jalankan aturan firewall berikut di Cloud Shell
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute --project=$projectname firewall-rules create psc-endpoint-deny-egress --direction=EGRESS --priority=999 --network=vpc-demo-consumer --action=DENY --rules=all --destination-ranges=10.0.60.100/32 --target-tags=google2 --enable-logging
Sekarang, mari kita uji apakah consumer-instance-2 dapat mengakses Layanan yang Dipublikasikan. Jika sesi Anda berakhir, Anda harus membuka cloud shell baru + dan login ke VM seperti yang dijelaskan di bawah.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"
Dari cloud shell, lakukan hal berikut:
user@consumer-instance-2:~$ curl 10.0.60.100
Contoh output
user@consumer-instance-2:~$ curl 10.0.60.100 curl: (7) Failed to connect to 10.0.60.100 port 80: Connection timed out
Logging firewall - Validasi Ditolak
Menggunakan Logs Explorer, validasi bahwa aturan firewall "psc-endpoint-deny-egress" mencatat aliran antara instance VM dan IP statis
- Dari Konsol Cloud, Identifikasi Logging Operasi → Log Explorer
- Di kolom Query, perbarui entri di bawah dengan consumerproject Anda, lalu pilih "Run Query"
logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:psc-endpoint-deny-egress")
- Hasil kueri memberikan hal berikut per screenshot yang diberikan

- Perluas log dan identifikasi output yang diberikan di bawah. Perhatikan dest_ip: 10.0.60.100 adalah IP TCP STATIS dan src_ip: 10.0.70.10 atau 10.0.70.20 adalah alamat IP instance VM. Disposisi adalah Ditolak.

17. Langkah-langkah pembersihan
Langkah-langkah penghapusan jaringan produsen

Dari satu terminal project Produser Cloud Shell, hapus komponen lab
gcloud container clusters delete gke-psc-l4 --region us-central1-a --quiet gcloud compute networks subnets delete gke-nat-subnet --region=us-central1 --quiet gcloud compute networks subnets delete node-subnet1 --region=us-central1 --quiet gcloud compute networks delete gke-producer-l4-vpc --quiet

Langkah-langkah penghapusan jaringan konsumen
Dari satu shell cloud di terminal project Konsumen, hapus komponen lab
gcloud compute instances delete consumer-instance-1 --zone=us-central1-a --quiet gcloud compute instances delete consumer-instance-2 --zone=us-central1-a --quiet gcloud compute forwarding-rules delete vpc-consumer-psc-fr --region=us-central1 --quiet gcloud compute addresses delete vpc-consumer-psc --region=us-central1 --quiet gcloud compute firewall-rules delete psclab-iap-consumer --quiet gcloud compute networks subnets delete consumer-subnet --region=us-central1 --quiet gcloud compute networks subnets delete consumer-subnet-vm --region=us-central1 --quiet gcloud compute firewall-rules delete vpc-consumer-psc --quiet gcloud compute firewall-rules delete psc-endpoint-deny-egress --quiet gcloud compute networks delete vpc-demo-consumer --quiet
18. Selamat!
Selamat, Anda telah menyelesaikan codelab.
Yang telah kita bahas
- Manfaat Private Service Connect
- Konsep utama untuk konsumen layanan
- Konsep utama untuk produsen layanan
- Membuat lingkungan produser
- Mengekspos layanan (lingkungan produsen) melalui lampiran layanan
- Membuat lingkungan konsumen
- Membuat aturan penerusan di jaringan konsumen
- Memvalidasi akses konsumen
- Mengaktifkan kontrol akses kebijakan
- Menggunakan aturan firewall keluar untuk memblokir akses ke aturan penerusan konsumen