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 mengarahkan permintaan ke produsen layanan.
Gambar 2. Private Service Connect menggunakan endpoint dan lampiran layanan agar konsumen layanan dapat mengirim traffic dari jaringan VPC konsumen ke layanan di jaringan VPC produsen layanan (klik untuk memperbesar).
Yang akan Anda pelajari
- Manfaat koneksi layanan pribadi
- Konsep utama untuk konsumen layanan
- Konsep utama untuk produsen layanan
- Membuat lingkungan produser
- Mengekspos layanan (lingkungan produsen) melalui lampiran layanan
- Menciptakan lingkungan konsumen
- Membuat aturan penerusan di jaringan konsumen
- Memvalidasi akses konsumen
- Aktifkan kontrol akses kebijakan
- Menggunakan aturan firewall keluar untuk memblokir akses ke aturan penerusan konsumen
Yang Anda butuhkan
- Mengetahui cara men-deploy Cluster dan layanan GKE
- Pengetahuan tentang load balancer Internal
- Kemampuan untuk membuat VPC dalam dua project
- Kemampuan untuk membuat Cluster GKE
2. Manfaat koneksi layanan pribadi
Dengan PSC, Anda memiliki beberapa manfaat dibandingkan dengan 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 menyimpan 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, dengan VPC Anda berisi layanan yang menyalurkan beberapa VPC konsumen. Konsumen yang memiliki rentang subnet yang tumpang-tindih bukan lagi masalah.
- Sebagai penyedia layanan, Anda dapat menskalakan layanan Anda ke instance VM sebanyak yang diperlukan, tanpa perlu menghubungi konsumen untuk mendapatkan lebih banyak alamat IP.
Keamanan dan isolasi yang ditingkatkan
- Sebagai konsumen layanan, hanya Anda yang dapat memulai komunikasi ke produsen layanan. Konektivitas searah ini secara drastis menyederhanakan konfigurasi firewall tetapi juga mengurangi risiko dari traffic jahat 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 telah dikonfigurasi untuk layanan Anda.
Skalabilitas yang Lebih Baik
- PSC memungkinkan desain yang sangat skalabel dengan mendukung ribuan Konsumen, serta memungkinkan Produsen Layanan menawarkan layanan multi-tenant atau tenant tunggal yang sangat skalabel.
- Sebagai konsumen layanan yang menggunakan layanan pribadi terhubung, Anda dapat membuat resource sesuai kebutuhan di VPC Anda. Skalanya tidak terpengaruh oleh jumlah resource 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.
Endpoint
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 akan meneruskannya ke target di luar jaringan VPC Anda.
Target
Endpoint Private Service Connect memiliki target, yang merupakan layanan yang ingin Anda hubungkan:
- Paket API:
- Semua API: sebagian besar Google API
- VPC-SC: API yang didukung oleh 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/serviceLampirans/SERVICE_NAME
4. Konsep utama untuk produsen layanan
Agar layanan tersedia bagi konsumen, Anda harus membuat satu atau beberapa subnet khusus untuk digunakan dalam penafsiran alamat jaringan (NAT) alamat IP konsumen. Kemudian, Anda membuat lampiran layanan yang mengacu ke subnet tersebut.
Subnet Private Service Connect
Untuk mengekspos layanan, produsen layanan terlebih dahulu membuat satu atau beberapa subnet dengan Private Service Connect tujuan.
Saat permintaan dikirim dari jaringan VPC konsumen, alamat IP sumber konsumen akan diterjemahkan menggunakan NAT sumber (SNAT) sumber 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 digunakan hanya 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 penafsiran alamat jaringan.
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 ke aturan penerusan load balancer layanan tersebut.
- Untuk mengakses layanan, konsumen layanan membuat endpoint yang mengacu pada lampiran layanan.
Preferensi koneksi
Saat membuat layanan, Anda dapat memilih cara menyediakannya. Ada 2 opsi:
- Terima koneksi untuk semua project secara otomatis - 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 lampiran layanan target 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 GKE ingress L4 ILB (layanan yang dipublikasikan) sehingga 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 digunakan hanya untuk menyediakan alamat IP untuk SNAT koneksi konsumen yang masuk.
Guna mengetahui lebih lanjut L4ILB untuk GKE Private Service Connect dan mendapatkan akses langsung ke konten yang digunakan untuk menjadikan lab ini referensi 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 GCP Console, 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 bukan persyaratan 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 - Memperbarui project untuk mendukung jaringan produsen
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 warna berikut:
7. Membuat jaringan VPC Produser
Jaringan VPC
Dari Cloud Shell
gcloud compute networks create gke-producer-l4-vpc --project=$prodproject --subnet-mode=custom
Membuat 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 Google Cloud Console 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. Menyimpan 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
Menerapkan manifes ke cluster 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
Menerapkan manifes ke cluster dari Cloud Shell
kubectl apply -f my-service.yaml
Membuat ServiceLampiran
Manifes berikut menjelaskan ServiceLampiran yang mengekspos layanan yang Anda buat ke 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
Menerapkan manifes ke cluster 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 menggunakan ACCEPT_AUTOMATIC atau persetujuan project eksplisit menggunakan ACCEPT_AUTOMATIC Untuk mengetahui informasi selengkapnya, lihat Memublikasikan layanan menggunakan Private Service Connect.
- natSubnets: daftar nama resource subnetwork yang akan digunakan untuk lampiran layanan.
- proxyProtocol: jika disetel ke benar, 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 ServiceLampiran. Kolom ini hanya dapat digunakan jika connectionPreference adalah ASSET_MANUAL. Untuk 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 ServiceLampiran menggunakan perintah berikut dari Cloud Shell
kubectl describe serviceattachment emoji-sa
Melihat GKE L4 ILB
Dari Konsol Cloud, buka Network Services → Load Balancing → Frontends
Identifikasi alamat IP frontend yang selaras dengan subnet node 192.168.10.0/24 yang ditentukan sebelumnya. Perhatikan screenshot di bawah ini, Alamat IP Anda mungkin berbeda.
Melihat Layanan yang Dipublikasikan
Dari Cloud Console, buka Network Services → Private Service Connect → Published Services
Identifikasi layanan dengan jaringan yang digunakan di lab, gke-producer-l4-vpc, perhatikan screenshot di bawah, meskipun nilai Layanan dan Target Anda mungkin berbeda
Klik nama layanan yang memajukan Anda ke layar di bawah ini, perhatikan detail lampiran layanan yang diisi di Basic Info. Selain itu, perhatikan 'Project yang Terhubung' kosong karena konsumen belum mendaftar ke layanan tersebut. SETUJU dan TOLAK akan tetap berwarna abu-abu karena Preferensi koneksi ditetapkan ke "Accept_AUTOMATICALLY"', opsi ini dapat diubah kapan saja menjadi "accept_MANUAL" dengan mengubah lampiran layanan yaml (my-psc.yaml).
9. Membuat jaringan VPC Konsumen
Di bagian berikut, VPC konsumen dikonfigurasi dalam project terpisah. Komunikasi antara jaringan konsumen dan produsen dilakukan melalui lampiran layanan yang didefinisikan dalam jaringan konsumen.
Codelab memerlukan dua project, meskipun bukan persyaratan 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 - Memperbarui 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
Membuat 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
Membuat Aturan Firewall
Agar IAP dapat terhubung ke instance VM Anda, buat aturan firewall yang:
- Berlaku untuk semua instance VM yang Anda inginkan agar dapat diakses dengan 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 bagi 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. Membuat 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. Membuat 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 menyalin string Lampiran Layanan Produsen ke tempat yang aman. Mari kita masukkan nilai yang tersimpan ke dalam "lampiran-layanan-target" kolom tersebut.
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 CURL & log {i>firewall<i} 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 melakukan sintaks berikut.
Dari Cloud VPC Konsumen, gunakan shell, identifikasi aturan penerusan dan IP statis
gcloud compute forwarding-rules describe vpc-consumer-psc-fr --region us-central1
Output di bawah ini, kita akan menggunakan 10.0.60.100 untuk mencapai tahap selanjutnya
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 yang Terhubung
Dari Konsol Cloud, buka Network Services → Private Service Connect → Connected Endpoints & melihat endpoint yang baru dibuat
Mari login ke consumer-instance-1 dan uji 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 konsumen-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 login ke consumer-instance-2 dan uji 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. Firewall Logging - Validasi yang Dialokasikan
Menggunakan Logs Explorer memvalidasi aturan firewall "vpc-consumner-psc" adalah merekam alur antara instance VM dan IP statis
- Dari Cloud Console, Identify Operations Logging → Log Explorer
- Pada kolom Query, perbarui entri di bawah dengan yourconsumerproject, lalu pilih "Run Query"
logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) DAN jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")
- Hasil kueri memberikan hal berikut per screenshot yang diberikan
- Luaskan log (jsonPayload → Koneksi) dan identifikasi output yang diberikan di bawah. Perhatikan dest_ip: 10.0.60.100 adalah STATIC TCP IP 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 - Produsen
Dari project Producers, pastikan lampiran layanan berhasil terhubung. Buka Network Services → Private Service Connect → Published Services
Klik layanan tersebut untuk menampilkan project konsumen yang terhubung dan status Anda seperti yang diilustrasikan di bawah ini
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 Keluar untuk menolak akses consumer-instance-2 ke Layanan yang Dipublikasikan.
Secara default, GCP mengizinkan semua Traffic Keluar, tetapi menolak semua traffic Ingress. Pada langkah berikut, kita akan membuat aturan firewall berdasarkan tag jaringan ‘google2' yang ditentukan sebelumnya digunakan saat membuat konsumen-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 waktu sesi habis, 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 memvalidasi aturan firewall "psc-endpoint-deny-egress" adalah merekam alur antara instance VM dan IP statis
- Dari Cloud Console, Identify Operations Logging → Log Explorer
- Pada kolom Query, perbarui entri di bawah dengan yourconsumerproject, lalu pilih "Run Query"
logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) DAN jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:psc-endpoint-deny-egress")
- Hasil kueri memberikan hal berikut per screenshot yang diberikan
- Luaskan log dan identifikasi output yang disediakan di bawah. Perhatikan dest_ip: 10.0.60.100 adalah STATIC TCP IP dan src_ip: 10.0.70.10 atau 10.0.70.20 adalah alamat IP instance VM. Disposisi Ditolak.
17. Langkah-langkah pembersihan
Langkah-langkah pembersihan jaringan produsen
Dari satu Cloud Shell di terminal project Producer, 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 pembersihan jaringan konsumen
Dari satu Cloud Shell di terminal project Consumer, 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 koneksi layanan pribadi
- Konsep utama untuk konsumen layanan
- Konsep utama untuk produsen layanan
- Membuat lingkungan produser
- Mengekspos layanan (lingkungan produsen) melalui lampiran layanan
- Menciptakan lingkungan konsumen
- Membuat aturan penerusan di jaringan konsumen
- Memvalidasi akses konsumen
- Aktifkan kontrol akses kebijakan
- Menggunakan aturan firewall keluar untuk memblokir akses ke aturan penerusan konsumen