1. Pengantar
Hanya instance Looker (Google Cloud core) yang menggunakan akses layanan pribadi untuk koneksi pribadinya yang mendukung konfigurasi IP pribadi dan IP publik.
Instance Looker (Google Cloud core) yang memiliki koneksi IP pribadi (akses layanan pribadi) dan koneksi IP publik memiliki URL publik, dan semua traffic masuk akan melalui koneksi IP publik. Traffic keluar dirutekan melalui VPC Anda, yang dapat dikonfigurasi untuk hanya mengizinkan traffic IP pribadi seperti yang diilustrasikan dalam gambar 1.
Figure1
Komunikasi ke github.com di-resolve ke alamat IP publik sehingga tidak dapat dijangkau dari instance Looker yang di-deploy sebagai Pribadi atau Publik+Pribadi.
Dalam codelab ini, Anda akan melakukan koneksi HTTPS southbound ke GitHub menggunakan load balancer proxy tcp internal dan grup endpoint jaringan internet (NEG) yang dipanggil dari PSA Looker.
Yang akan Anda pelajari
- Persyaratan jaringan
- Membangun konektivitas ke GitHub dari Looker menggunakan Koneksi Pengujian
Yang Anda butuhkan
- Project Google Cloud dengan izin Pemilik
- Akun dan repositori GitHub
- GitHub Personal Access Token (Klasik)
- Instance PSA Looker yang ada dengan Publik + Pribadi atau Pribadi saja diaktifkan
2. Yang akan Anda build
Anda akan men-deploy load balancer proxy TCP internal dan NEG Internet yang dikonfigurasi dengan alamat IP github.com yang di-resolve yang memanfaatkan Cloud NAT untuk traffic keluar internet ke organisasi github.com yang di-resolve oleh Looker.
3. Persyaratan jaringan
Berikut adalah perincian persyaratan jaringan:
Komponen | Deskripsi |
VPC ($vpc_network) | VPC mode kustom |
subnet aturan penerusan | Digunakan untuk mengalokasikan alamat IP untuk Load Balancer Proxy TCP Internal Regional |
Subnet Khusus Proxy | Setiap proxy load balancer diberi alamat IP internal. Paket yang dikirim dari proxy ke VM atau endpoint backend memiliki alamat IP sumber dari subnet khusus proxy. |
NEG Internet | Resource yang digunakan untuk menentukan backend eksternal untuk load balancer. Endpoint tidak dapat dijangkau hanya melalui Cloud VPN atau Cloud Interconnect. |
Layanan Backend | Layanan backend bertindak sebagai jembatan antara load balancer dan resource backend Anda. Dalam tutorial ini, layanan backend dikaitkan dengan NEG Internet. |
Cloud Router | Cloud NAT mengandalkan Cloud Router untuk kemampuan bidang kontrol, tetapi tidak untuk pengelolaan sesi BGP. |
Cloud NAT | NEG internet regional memanfaatkan Cloud NAT untuk traffic keluar internet. |
4. Topologi codelab
5. Penyiapan dan Persyaratan
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. Anda dapat memperbaruinya kapan saja.
- Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (umumnya diidentifikasi sebagai
PROJECT_ID
). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri, dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan tersedia selama durasi project. - Sebagai informasi, ada nilai ketiga, Project Number, yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
- Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini tidak akan memakan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus project-nya. 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 Google Cloud 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 dalam codelab ini dapat dilakukan di browser. Anda tidak perlu menginstal apa pun.
6. Sebelum memulai
Mengaktifkan API
Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan:
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
vpc_network=[VPC Name]
echo $project
echo $region
echo $vpc-network
Aktifkan semua layanan yang diperlukan:
gcloud services enable compute.googleapis.com
7. Komponen Jaringan VPC
Jaringan VPC
Prasyarat tutorial ini adalah Instance Looker PSA yang ada sehingga VPC terkait sudah dibuat.
Di dalam Cloud Shell, buat subnet aturan penerusan:
gcloud compute networks subnets create psa-fr-subnet --network $vpc_network --range 172.16.20.0/28 --region $region --enable-private-ip-google-access
Di dalam Cloud Shell, buat subnet khusus proxy regional:
gcloud compute networks subnets create $region-proxyonly-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$region \
--network=$vpc_network \
--range=10.10.10.0/24
Membuat gateway Public NAT
NAT Gateway digunakan oleh load balancer proxy tcp internal regional untuk traffic keluar internet dengan opsi konfigurasi, –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB, sehingga NATGW yang sama tidak akan mendukung traffic keluar internet GCE/GKE. Deploy GW NAT tambahan dengan –endpoint-types=ENDPOINT_TYPE_VM untuk traffic keluar internet GCE/GKE.
Di dalam Cloud Shell, buat Cloud Router:
gcloud compute routers create $vpc_network-cloud-router --network $vpc_network --region $region
Di dalam Cloud Shell, buat gateway Cloud NAT yang mengaktifkan traffic keluar internet untuk load balancer proxy tcp:
gcloud compute routers nats create $vpc_network-natgw \
--router=$vpc_network-cloud-router \
--endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
--nat-custom-subnet-ip-ranges=$region-proxyonly-subnet \
--auto-allocate-nat-external-ips \
--region=$region
Mencadangkan alamat IP load balancer
Di dalam Cloud Shell, cadangkan alamat IP internal untuk load balancer yang akan digunakan nanti sebagai data A DNS untuk github.com:
gcloud compute addresses create internet-neg-lb-ip \
--region=$region \
--subnet=psa-fr-subnet
Di dalam Cloud Shell, lihat Alamat IP yang dicadangkan:
gcloud compute addresses describe internet-neg-lb-ip \
--region=$region | grep -i address:
Contoh output:
user@cloudshell$ gcloud compute addresses describe internet-neg-lb-ip --region=$region | grep -i address:
address: 172.16.20.2
8. NEG Internet
Ada dua cara untuk mengonfigurasi endpoint eksternal yang dirujuk oleh NEG Internet: INTERNET_FQDN_PORT atau INTERNET_IP_PORT. Jika format INTERNET_IP_PORT (Opsi 1) dipilih, hanya alamat IP internet publik yang dapat dirutekan yang dapat digunakan; jika format INTERNET_FQDN_PORT (Opsi 2) dipilih, FQDN dapat di-resolve ke alamat IP internet publik yang dapat dirutekan atau ke alamat IP pribadi, bergantung pada cakupan endpoint: regional atau global.
Opsi 1: Menyiapkan NEG Internet menggunakan Alamat IP
NEG Internet memerlukan alamat IP Github.com yang di-resolve, sehingga untuk mendapatkan performa terbaik, buka terminal lokal dan lakukan dig serta dapatkan Alamat IP github.com.
Contoh dari terminal lokal menghasilkan Alamat IP yang di-resolve 140.82.113.4
bash-3.2$ dig github.com ; <<>> DiG 9.10.6 <<>> github.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64801 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;github.com. IN A ;; ANSWER SECTION: github.com. 60 IN A 140.82.113.4 ;; Query time: 409 msec ;; SERVER: ::1#53(::1) ;; WHEN: Thu Sep 26 15:50:45 CDT 2024 ;; MSG SIZE rcvd: 65
Buat NEG Internet, dan tetapkan –network-endpoint-type ke internet_ip_port.
Di dalam Cloud Shell, buat NEG Internet yang digunakan untuk github.com:
gcloud compute network-endpoint-groups create github-internet-neg \
--network-endpoint-type=INTERNET_IP_PORT \
--network=$vpc_network \
--region=$region
Di dalam Cloud Shell, perbarui NEG Internet github-internet-neg dengan alamat IP github.com dan port 443 yang di-resolve:
gcloud compute network-endpoint-groups update github-internet-neg \
--add-endpoint="ip=[your-resolved-ip],port=443" \
--region=$region
Contoh:
gcloud compute network-endpoint-groups update github-internet-neg \
--add-endpoint="ip=140.82.113.4,port=443" \
--region=$region
Opsi 2: Menyiapkan NEG internet menggunakan FQDN
Secara opsional, Anda dapat membuat NEG Internet, dan menetapkan –network-endpoint-type ke internet_FQDN_port.
Di dalam Cloud Shell, buat NEG Internet yang digunakan untuk github.com:
gcloud compute network-endpoint-groups create github-internet-neg \
--network-endpoint-type=INTERNET_FQDN_PORT \
--network=$vpc_network \
--region=$region
Di dalam Cloud Shell, perbarui NEG Internet github-internet-neg dengan FQDN github.com:
gcloud compute network-endpoint-groups update github-internet-neg \
--add-endpoint="fqdn=github.com,port=443" \
--region=$region
9. Membuat layanan GitHub
Membuat Komponen Load Balancer
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute backend-services create psa-backend-svc --protocol=tcp --region=$region --load-balancing-scheme=INTERNAL_MANAGED
gcloud compute backend-services add-backend psa-backend-svc --network-endpoint-group=github-internet-neg --network-endpoint-group-region=$region --region=$region
Di Cloud Shell, Buat proxy TCP target untuk merutekan permintaan ke layanan backend Anda:
gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
--backend-service=psa-backend-svc \
--region=$region
Dalam sintaksis berikut, buat aturan penerusan (load balancer proxy tcp internal).
Di Cloud Shell, lakukan hal berikut:
gcloud compute forwarding-rules create psa-github-fr \
--load-balancing-scheme=INTERNAL_MANAGED \
--network-tier=PREMIUM \
--network=$vpc_network \
--subnet=psa-fr-subnet \
--address=internet-neg-lb-ip \
--target-tcp-proxy=producer-lb-tcp-proxy \
--target-tcp-proxy-region=$region \
--region=$region \
--ports=443
10. Zona DNS GitHub
Di bagian berikut, Anda akan membuat kebijakan respons DNS untuk GitHub.com dengan data A yang terdiri dari alamat IP load balancer proxy tcp internal.
Setelah itu, peering DNS akan membagikan zona github.com dengan PSA Looker yang memungkinkan konektivitas ke github melalui load balancer internal yang dikombinasikan dengan NEG Internet dan Cloud NAT.
Di Cloud Shell, buat zona kebijakan respons:
gcloud dns --project=$project response-policies create github-com --description="" --networks="$vpc_network"
Di Cloud Shell, buat data A DNS yang terdiri dari Alamat IP load balancer proxy tcp, [insert-your-ip-address]:
gcloud dns --project=$project response-policies rules create github --response-policy="github-com" --dns-name="github.com." --local-data=name="github.com.",type="A",ttl=300,rrdatas="[insert-your-ip-address]"
Contoh:
gcloud dns --project=$project response-policies rules create github --response-policy="github-com" --dns-name="github.com." --local-data=name="github.com.",type="A",ttl=300,rrdatas="172.16.20.2"
Memperbarui peering DNS
Di bagian ini, Anda akan menggunakan sintaksis "gcloud services peered-dns-domains create" yang membuat domain DNS peering untuk koneksi layanan pribadi yang mengirim permintaan untuk data di namespace tertentu yang berasal dari jaringan VPC produsen layanan ke jaringan VPC konsumen untuk di-resolve.
Di Cloud Shell, buat peered-dns-domain yang akan dikueri oleh Looker untuk github.com:
gcloud services peered-dns-domains create github-com --project=$project --network=$vpc_network --dns-suffix=github.com.
11. Menguji Konektivitas ke GitHub
Pada langkah-langkah berikut, Anda akan menggunakan Konsol Looker untuk membuat project guna memvalidasi konektivitas HTTPS ke github.com.
12. Membuat project baru
Mengaktifkan mode Pengembangan
Di Konsol Looker, buka:
Aktifkan Mode Pengembangan (halaman kiri bawah), setelah dipilih, banner 'Anda berada dalam Mode Pengembangan' akan ditampilkan.
Membuat project baru
Di Cloud Console, buka:
Kembangkan → Project
Memilih Project LookML Baru
Berikan nama project, pilih Blank Project, lalu Create Project.
Pilih Konfigurasi Git
Mengonfigurasi Git
Perbarui URL Repositori dengan detail GitHub HTTPS Anda, pastikan untuk menambahkan URL dengan .git, lalu pilih Lanjutkan.
Contoh:
Perbarui pilihan dengan nama pengguna GitHub dan Token Akses Pribadi (klasik), lalu pilih Uji dan Selesaikan Penyiapan.
Memilih Tindakan Git
Memilih Uji Koneksi Git
Memvalidasi Uji Koneksi Git
13. Pembersihan
Dari satu terminal Cloud Shell, hapus komponen lab:
gcloud compute forwarding-rules delete psa-github-fr --region=$region -q
gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q
gcloud compute backend-services delete psa-backend-svc --region=$region -q
gcloud compute routers nats delete $vpc_network-natgw --router=$vpc_network-cloud-router --router-region=$region -q
gcloud compute routers delete $vpc_network-cloud-router --region=$region -q
gcloud compute network-endpoint-groups delete github-internet-neg --region=$region -q
gcloud compute addresses delete internet-neg-lb-ip --region=$region -q
gcloud compute networks subnets delete psa-fr-subnet $region-proxyonly-subnet --region=$region -q
gcloud services peered-dns-domains delete github-com --network=$vpc_network -q
gcloud dns --project=$project response-policies rules delete github --response-policy="github-com" -q
gcloud dns response-policies update github-com --networks= -q
gcloud dns response-policies delete github-com
14. Selamat
Selamat, Anda telah berhasil mengonfigurasi dan memvalidasi konektivitas ke GitHub menggunakan Konsol Looker.
Cosmopup menganggap codelab itu luar biasa.