Menggunakan Private Service Connect untuk memublikasikan dan menggunakan layanan dengan GKE

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.

45b90d50690dd111.png

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).

1ce5607c0c56d77d.jpeg

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

  1. 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.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • 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.
  1. 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:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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:

f251ebb137e37136.png

7. Buat jaringan VPC Produsen

afe738fc869f0d6e.png

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.

ed7a25ed4774977b.png

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

5a00836ee514b918.png

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).

497f5f43920018c0.png

e246063a23771273.png

9. Buat jaringan VPC Konsumen

1f3c90f1e139e906.png

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".

7abaccc4e24f1ef7.png

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.

1f3c90f1e139e906.png

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

206bc00297aaa260.png

Mari kita login ke consumer-instance-1 dan menguji akses ke Layanan yang Dipublikasikan Produsen

Dari Cloud Shell, buka tab baru dengan mengklik +.

81f3210b29faebd3.png

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 +.

81f3210b29faebd3.png

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

  1. Dari Konsol Cloud, Identifikasi Logging Operasi → Log Explorer
  2. 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")

  1. Hasil kueri memberikan hal berikut per screenshot yang diberikan

23e427b3060473.png

  1. 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.

2669743fd1f1cb0d.png

15. Validasi - Produser

afe738fc869f0d6e.png

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

89ded87a63888f60.png

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

15966d47423ebc5f.png

16. Membatasi akses ke Layanan yang Dipublikasikan

1f3c90f1e139e906.png

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.

7fa2cda1dfec33a.png

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

  1. Dari Konsol Cloud, Identifikasi Logging Operasi → Log Explorer
  2. 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")

  1. Hasil kueri memberikan hal berikut per screenshot yang diberikan

83b4fc7348ac93cd.png

  1. 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.

a344f75f67590655.png

17. Langkah-langkah pembersihan

Langkah-langkah penghapusan jaringan produsen

afe738fc869f0d6e.png

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

1f3c90f1e139e906.png

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