Bagian ini menjelaskan arsitektur tingkat tinggi untuk membuat kontrol traffic keluar dari instance Cloud Data Fusion pribadi selama fase pengembangan dan fase eksekusi pipeline.
Diagram arsitektur sistem berikut menunjukkan cara instance Cloud Data Fusion pribadi terhubung dengan internet publik saat Anda mengembangkan pipeline:
Anda dapat mengontrol koneksi ke aplikasi SaaS dan layanan cloud publik pihak ketiga selama pengembangan atau eksekusi pipeline, dengan mengarahkan semua traffic keluar melalui project pelanggan. Proses ini menggunakan sumber daya berikut:
Rute jaringan VPC kustom: Jaringan VPC kustom merutekan traffic melalui rute kustom yang diimpor ke VM gateway, yang diekspor ke VPC project tenant menggunakan peering VPC.
VM Proxy: Proxy VM mengarahkan traffic keluar dari Google Cloud dari project tenant Cloud Data Fusion ke tujuan yang ditentukan melalui internet publik. Anda membuat dan mengelola VM gateway di project pelanggan. Sebaiknya konfigurasikan dalam konfigurasi Ketersediaan Tinggi (HA) menggunakan Load Balancer Internal (ILB). Jika Anda memiliki beberapa instance Cloud Data Fusion pribadi yang menggunakan jaringan VPC yang sama, Anda dapat menggunakan kembali VM yang sama dalam VPC tersebut.
Sebelum memulai
Anda dapat terhubung ke sumber publik dari instance pribadi di Cloud Data Fusion versi 6.4 atau yang lebih baru. Untuk menggunakan salah satu versi tersebut, Anda dapat membuat instance Cloud Data Fusion pribadi baru atau mengupgrade instance yang ada.
Saat membuat koneksi peering jaringan VPC untuk instance Anda, pilih Export routes.
Menyiapkan kontrol traffic keluar selama pengembangan pipeline
Kontrol traffic keluar memungkinkan Anda mengontrol atau memfilter apa yang bisa keluar dari jaringan, dan hal ini berguna dalam lingkungan Kontrol Layanan VPC. Tidak ada proxy jaringan pilihan untuk melakukan tugas ini. Contoh proxy meliputi Squid proxy, HAProxy, dan Envoy.
Contoh dalam panduan ini menjelaskan cara menyiapkan proxy HTTP untuk pemfilteran HTTP pada instance VM yang menggunakan image Debian. Contoh tersebut menggunakan server proxy Squid, yang merupakan salah satu cara untuk menyiapkan server proxy.
Membuat VM proxy
Buat VM di VPC yang sama dengan instance Cloud Data Fusion pribadi Anda dengan skrip startup dan penerusan IP berikut.
Skrip ini menginstal proxy Squid, dan mengonfigurasinya untuk mencegat traffic HTTP serta mengizinkan domain .squid-cache.org
dan .google.com
. Anda dapat mengganti domain ini dengan domain yang ingin dihubungkan dengan instance Cloud Data Fusion Anda.
Konsol
Buka halaman VM instances.
Klik Create instance.
Gunakan VPC yang sama dengan yang telah menyiapkan peering jaringan dengan instance Cloud Data Fusion pribadi. Untuk informasi lebih lanjut tentang peering jaringan VPC dalam skenario ini, lihat Sebelum Anda memulai.
Aktifkan penerusan IP untuk instance dalam jaringan yang sama dengan instance Cloud Data Fusion.
Di kolom Skrip startup, masukkan skrip berikut:
#! /bin/bash apt-get -y install squid3 cat <<EOF > /etc/squid/conf.d/debian.conf # # Squid configuration settings for Debian # logformat squid %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %ssl::>sni %Sh/%<a %mt logfile_rotate 10 debug_options rotate=10 # configure intercept port http_port 3129 intercept # allow only certain sites acl allowed_domains dstdomain "/etc/squid/allowed_domains.txt" http_access allow allowed_domains # deny all other http requests http_access deny all EOF # Create a file with allowed egress domains # Replace these example domains with the domains that you want to allow # egress from in Data Fusion pipelines cat <<EOF > /etc/squid/allowed_domains.txt .squid-cache.org .google.com EOF /etc/init.d/squid restart iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3129 echo 1 > /proc/sys/net/ipv4/ip_forward echo net.ipv4.ip_forward=1 > /etc/sysctl.d/11-gce-network-security.conf iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -p tcp --dport 443 -j MASQUERADE
gcloud
export CDF_PROJECT=<cdf-project>
export PROXY_VM=<proxy-vm>
export ZONE=<vm-zone>
export SUBNET=<subnet>
export VPC_NETWORK=<vpc-network>
export COMPUTE_ENGINE_SA=<compute-engine-sa>
gcloud beta compute --project=$CDF_PROJECT instances create $PROXY_VM --zone=$ZONE --machine-type=e2-medium --subnet=$SUBNET --no-address --metadata=startup-script=\#\!\ /bin/bash$'\n'apt-get\ -y\ install\ squid3$'\n'cat\ \<\<EOF\ \>\ /etc/squid/conf.d/debian.conf$'\n'\#$'\n'\#\ Squid\ configuration\ settings\ for\ Debian$'\n'\#$'\n'logformat\ squid\ \%ts.\%03tu\ \%6tr\ \%\>a\ \%Ss/\%03\>Hs\ \%\<st\ \%rm\ \%ru\ \%ssl::\>sni\ \%Sh/\%\<a\ \%mt$'\n'logfile_rotate\ 10$'\n'debug_options\ rotate=10$'\n'$'\n'\#\ configure\ intercept\ port$'\n'http_port\ 3129\ intercept$'\n'$'\n'\#\ allow\ only\ certain\ sites$'\n'acl\ allowed_domains\ dstdomain\ \"/etc/squid/allowed_domains.txt\"$'\n'http_access\ allow\ allowed_domains$'\n'$'\n'\#\ deny\ all\ other\ http\ requests$'\n'http_access\ deny\ all$'\n'EOF$'\n'$'\n'$'\n'\#\ Create\ a\ file\ with\ allowed\ egress\ domains$'\n'\#\ Replace\ these\ example\ domains\ with\ the\ domains\ that\ you\ want\ to\ allow\ $'\n'\#\ egress\ from\ in\ Data\ Fusion\ pipelines$'\n'cat\ \<\<EOF\ \>\ /etc/squid/allowed_domains.txt$'\n'.squid-cache.org$'\n'.google.com$'\n'EOF$'\n'$'\n'/etc/init.d/squid\ restart$'\n'$'\n'iptables\ -t\ nat\ -A\ PREROUTING\ -p\ tcp\ --dport\ 80\ -j\ REDIRECT\ --to-port\ 3129$'\n'echo\ 1\ \>\ /proc/sys/net/ipv4/ip_forward$'\n'echo\ net.ipv4.ip_forward=1\ \>\ /etc/sysctl.d/11-gce-network-security.conf$'\n'iptables\ -t\ nat\ -A\ POSTROUTING\ -s\ 0.0.0.0/0\ -p\ tcp\ --dport\ 443\ -j\ MASQUERADE --can-ip-forward --maintenance-policy=MIGRATE --service-account=$COMPUTE_ENGINE_SA --scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append --tags=http-server,https-server --image=debian-10-buster-v20210420 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=instance-1 --no-shielded-secure-boot --shielded-vtpm --shielded-integrity-monitoring --reservation-affinity=any
gcloud compute --project=$CDF_PROJECT firewall-rules create egress-allow-http --direction=INGRESS --priority=1000 --network=$VPC_NETWORK --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=https-server
gcloud compute --project=$CDF_PROJECT firewall-rules create egress-allow-https --direction=INGRESS --priority=1000 --network=$VPC_NETWORK --action=ALLOW --rules=tcp:443 --source-ranges=0.0.0.0/0 --target-tags=https-server
Membuat rute kustom
Buat rute kustom untuk terhubung ke instance VM gateway yang Anda buat.
Konsol
Untuk membuat rute di Konsol Google Cloud, lihat Menambahkan rute statis.
Saat mengonfigurasi rute, lakukan hal berikut:
- Setel Priority ke lebih besar dari atau sama dengan
1001
. - Gunakan project dan VPC yang sama dengan instance Cloud Data Fusion pribadi.
- Pastikan konfigurasi peering jaringan VPC Anda memungkinkan ekspor rute, sehingga VPC project tenant Cloud Data Fusion mengimpor rute kustom ini melalui peering jaringan VPC.
gcloud
Untuk membuat rute di gcloud CLI:
gcloud beta compute routes create $ROUTE --project=$CDF_PROJECT \ --network=$VPC_NETWORK --priority=1001 \ --destination-range=0.0.0.0/0 \ --next-hop-instance=$PROXY_VM \ --next-hop-instance-zone=$ZONE
Menyiapkan kontrol traffic keluar untuk eksekusi pipeline
Setelah Anda dapat mengakses internet publik dengan nama host yang diizinkan di Pratinjau dan Wrangler di lingkungan desain, deploy pipeline Anda. Pipeline Cloud Data Fusion yang di-deploy berjalan di cluster Dataproc secara default.
Untuk memastikan bahwa semua traffic internet publik dari cluster Dataproc melewati satu atau beberapa Proxy VM, tambahkan zona dan data DNS pribadi. Langkah ini diperlukan karena Cloud NAT tidak mendukung pemfilteran.
Dalam data DNS, sertakan alamat IP VM atau ILB proxy.
Men-deploy pipeline
Setelah Anda memverifikasi pipeline dalam fase desain, deploy pipeline Anda. Pipeline yang di-deploy berjalan di cluster Dataproc secara default.
Untuk memastikan bahwa semua traffic internet publik dari cluster Dataproc melewati satu atau beberapa VM Proxy, tambahkan rute kustom dengan tag instance proxy
dan prioritas 1000
ke VPC yang sama dengan VM Dataproc:
Ubah pipeline Anda untuk menggunakan tag Dataproc karena Cloud NAT saat ini tidak mendukung pemfilteran traffic keluar.
Langkah selanjutnya
- Pelajari Networking di Cloud Data Fusion lebih lanjut.