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 mengarahkan permintaan ke produsen layanan.

45b90d50690dd111.pngS

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

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 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 hanya digunakan untuk menyediakan alamat IP bagi 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

  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 GCP Console, 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 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:

f251ebb137e37136.png

7. Membuat jaringan VPC Produser

afe738fc869f0d6e.png

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.

ed7a25ed4774977b.png

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

5a00836ee514b918.pngS

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

497f5f43920018c0.pngS

e246063a23771273.png

9. Membuat jaringan VPC Konsumen

1f3c90f1e139e906.pngS

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

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

7abaccc4e24f1ef7.pngS

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.

1f3c90f1e139e906.pngS

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

206bc00297aaa260.png

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

Dari Cloud Shell, buka tab baru dengan mengklik +

81f3210b29faebd3.pngS

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 +

81f3210b29faebd3.pngS

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

  1. Dari Cloud Console, Identify Operations Logging → Log Explorer
  2. 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")

  1. Hasil kueri memberikan hal berikut per screenshot yang diberikan

23e427b3060473.pngS

  1. Luaskan log (jsonPayload → Koneksi) dan identifikasi output yang diberikan di bawah. Perhatikan dest_ip: 10.0.60.100 adalah IP TCP STATIC 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 - Produsen

afe738fc869f0d6e.png

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

89ded87a63888f60.pngS

Klik layanan tersebut untuk menampilkan project konsumen dan status Anda yang terhubung seperti yang diilustrasikan di bawah

15966d47423ebc5f.pngS

16. Membatasi akses ke Layanan yang Dipublikasikan

1f3c90f1e139e906.pngS

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.

7fa2cda1dfec33a.pngS

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

  1. Dari Cloud Console, Identify Operations Logging → Log Explorer
  2. 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")

  1. Hasil kueri memberikan hal berikut per screenshot yang diberikan

83b4fc7348ac93cd.pngS

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

a344f75f67590655.png

17. Langkah-langkah pembersihan

Langkah-langkah pembersihan jaringan produsen

afe738fc869f0d6e.png

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

1f3c90f1e139e906.pngS

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