Tutorial ini menjelaskan cara mengakses cluster Google Kubernetes Engine (GKE) pribadi menggunakan kumpulan pribadi Cloud Build. Dengan akses ini, Anda dapat menggunakan Cloud Build untuk men-deploy aplikasi di cluster GKE pribadi. Tutorial ini ditujukan untuk administrator jaringan dan berlaku untuk semua situasi ketika kumpulan pribadi Cloud Build perlu berkomunikasi dengan layanan yang berjalan di jaringan Virtual Private Cloud (VPC) yang di-peering. Misalnya, pekerja kumpulan pribadi dapat berkomunikasi dengan layanan berikut:
- Cluster GKE Pribadi
- Database Cloud SQL
- Instance Memorystore
- Instance Compute Engine yang berjalan di jaringan VPC yang berbeda dengan yang di-peering dengan kumpulan pribadi Cloud Build
Kumpulan pribadi Cloud Build dan bidang kontrol cluster GKE berjalan di jaringan VPC milik Google. Jaringan VPC ini di-peering ke jaringan VPC Anda sendiri di Google Cloud. Namun, Peering Jaringan VPC tidak mendukung peering transitif, yang dapat menjadi pembatasan saat menggunakan kumpulan pribadi Cloud Build. Tutorial ini menyajikan solusi yang menggunakan Cloud VPN agar pekerja di kumpulan pribadi Cloud Build dapat mengakses bidang kontrol cluster GKE pribadi.
Tutorial ini mengasumsikan bahwa Anda telah memahami Google Kubernetes Engine,
Cloud Build, perintah gcloud
, Peering Jaringan VPC, dan
Cloud VPN.
Ringkasan arsitektur
Saat Anda membuat cluster GKE pribadi tanpa akses klien ke endpoint publik, klien hanya dapat mengakses bidang kontrol cluster GKE menggunakan alamat IP pribadinya.
Klien seperti kubectl
dapat berkomunikasi dengan bidang kontrol hanya jika mereka berjalan pada instance yang memiliki akses ke jaringan VPC dan berada dalam jaringan yang diizinkan.
Jika ingin menggunakan Cloud Build untuk men-deploy aplikasi di cluster GKE pribadi ini, Anda harus menggunakan kumpulan pribadi Cloud Build untuk mengakses cluster GKE. Kumpulan pribadi adalah sekumpulan instance pekerja yang berjalan di project Google Cloud milik Google, dan di-peering ke jaringan VPC Anda menggunakan koneksi Peering Jaringan VPC. Dalam penyiapan ini, instance pekerja diizinkan untuk berkomunikasi dengan alamat IP pribadi bidang kontrol cluster GKE.
Namun, bidang kontrol cluster GKE juga berjalan di project milik Google dan di-peering ke jaringan VPC Anda menggunakan koneksi peering. Peering Jaringan VPC tidak mendukung peering transitif, sehingga paket tidak dapat dirutekan secara langsung antara kumpulan pribadi Cloud Build dan bidang kontrol cluster GKE.
Agar instance pekerja Cloud Build dapat mengakses bidang kontrol cluster GKE, Anda dapat melakukan peering pool pribadi dan bidang kontrol cluster GKE dengan dua jaringan VPC yang Anda miliki, lalu menghubungkan kedua jaringan VPC ini menggunakan Cloud VPN. Peering dan koneksi ini memungkinkan setiap sisi tunnel VPC untuk mengiklankan jaringan bidang kontrol cluster GKE dan kumpulan pribadi sehingga menyelesaikan rute tersebut.
Diagram arsitektur berikut menunjukkan resource yang digunakan dalam tutorial ini:
Sebaiknya buat semua resource yang digunakan dalam tutorial ini di region Google Cloud yang sama untuk latensi rendah. Tunnel VPN dapat melintasi dua region yang berbeda jika komunikasi antar-region ini diperlukan untuk implementasi Anda sendiri. Dua jaringan VPC yang Anda miliki juga dapat menjadi bagian dari project yang berbeda.
Tujuan
- Membuat cluster GKE pribadi.
- Menyiapkan kumpulan pribadi Cloud Build.
- Buat koneksi VPN dengan ketersediaan tinggi (HA) antara dua jaringan VPC.
- Mengaktifkan pemilihan rute paket di dua Peering Jaringan VPC dan koneksi VPC.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.
Sebelum memulai
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API Cloud Build, Google Kubernetes Engine, and Service Networking.
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Membuat dua jaringan VPC di project Anda sendiri
Di bagian ini, Anda akan membuat dua jaringan VPC dan satu subnet untuk node cluster GKE.
Di Cloud Shell, buat jaringan VPC pertama (disebut "Jaringan VPC peering pool pribadi" dalam diagram sebelumnya). Anda tidak perlu membuat subnet di jaringan ini.
gcloud compute networks create PRIVATE_POOL_PEERING_VPC_NAME \ --subnet-mode=CUSTOM
Ganti PRIVATE_POOL_PEERING_VPC_NAME dengan nama jaringan VPC Anda yang akan di-peering dengan jaringan kumpulan pribadi Cloud Build.
Buat jaringan VPC kedua (disebut "jaringan VPC peering GKE" dalam diagram sebelumnya):
gcloud compute networks create GKE_PEERING_VPC_NAME \ --subnet-mode=CUSTOM
Ganti GKE_PEERING_VPC_NAME dengan nama jaringan VPC Anda untuk melakukan peering dengan bidang kontrol cluster GKE.
Buat subnet untuk node cluster GKE:
gcloud compute networks subnets create GKE_SUBNET_NAME \ --network=GKE_PEERING_VPC_NAME \ --range=GKE_SUBNET_RANGE \ --region=REGION
Ganti kode berikut:
- GKE_SUBNET_NAME: nama subnetwork yang dimaksudkan untuk menghosting node cluster GKE.
- GKE_PEERING_VPC_NAME: nama jaringan VPC Anda untuk di-peering dengan bidang kontrol cluster GKE.
- GKE_SUBNET_RANGE: rentang alamat IP
GKE_SUBNET_NAME. Untuk tutorial ini, Anda dapat
menggunakan
10.244.252.0/22
. - REGION: region Google Cloud yang menghosting cluster GKE. Untuk tutorial ini, Anda dapat
menggunakan
us-central1
.
Sekarang Anda telah menyiapkan dua jaringan VPC di project Anda sendiri, dan jaringan tersebut siap untuk di-peering dengan layanan lain.
Membuat cluster GKE pribadi
Di bagian ini, Anda akan membuat cluster GKE pribadi.
Di Cloud Shell, buat cluster GKE tanpa akses klien ke endpoint publik bidang kontrol.
gcloud container clusters create PRIVATE_CLUSTER_NAME \ --region=REGION \ --enable-master-authorized-networks \ --network=GKE_PEERING_VPC_NAME \ --subnetwork=GKE_SUBNET_NAME \ --enable-private-nodes \ --enable-private-endpoint \ --enable-ip-alias \ --master-ipv4-cidr=CLUSTER_CONTROL_PLANE_CIDR
Ganti kode berikut:
- PRIVATE_CLUSTER_NAME: nama cluster GKE pribadi.
- REGION: region untuk
cluster GKE. Dalam tutorial ini, gunakan
us-central1
untuk region, region yang sama dengan yang Anda gunakan untuk jaringan VPC. - GKE_PEERING_VPC_NAME: nama jaringan VPC Anda untuk di-peering dengan bidang kontrol cluster GKE.
- GKE_SUBNET_RANGE: rentang alamat IP
GKE_SUBNET_NAME. Untuk tutorial ini, Anda dapat
menggunakan
10.244.252.0/22
. CLUSTER_CONTROL_PLANE_CIDR: rentang alamat IP bidang kontrol cluster GKE. Elemen ini harus memiliki awalan
/28
. Untuk tutorial ini, gunakan172.16.0.32/28
.
Anda kini telah membuat cluster GKE pribadi yang di-peering dengan jaringan VPC di project Anda sendiri.
Ambil nama Peering Jaringan VPC cluster GKE. Peering Jaringan VPC ini dibuat secara otomatis saat Anda membuat cluster GKE.
export GKE_PEERING_NAME=$(gcloud container clusters describe PRIVATE_CLUSTER_NAME \ --region=REGION \ --format='value(privateClusterConfig.peeringName)')
Ganti kode berikut:
- PRIVATE_CLUSTER_NAME: nama cluster GKE pribadi.
- REGION: region untuk
cluster GKE. Dalam tutorial ini, gunakan
us-central1
untuk region, region yang sama dengan yang Anda gunakan untuk jaringan VPC.
Aktifkan ekspor rute kustom untuk mengiklankan jaringan kumpulan pribadi ke bidang kontrol cluster GKE:
gcloud compute networks peerings update $GKE_PEERING_NAME \ --network=GKE_PEERING_VPC_NAME \ --export-custom-routes \ --no-export-subnet-routes-with-public-ip
Ganti GKE_PEERING_VPC_NAME dengan nama jaringan VPC Anda untuk melakukan peering dengan bidang kontrol cluster GKE.
Untuk mengetahui informasi selengkapnya tentang rute kustom, Anda dapat membaca Mengimpor dan mengekspor rute kustom.
Membuat kumpulan pribadi Cloud Build
Di bagian ini, Anda akan membuat kumpulan pribadi Cloud Build.
Di Cloud Shell, alokasikan rentang alamat IP bernama dalam jaringan VPC PRIVATE_POOL_PEERING_VPC_NAME untuk kumpulan pribadi Cloud Build:
gcloud compute addresses create RESERVED_RANGE_NAME \ --global \ --purpose=VPC_PEERING \ --addresses=PRIVATE_POOL_NETWORK \ --prefix-length=PRIVATE_POOL_PREFIX \ --network=PRIVATE_POOL_PEERING_VPC_NAME
Ganti kode berikut:
- RESERVED_RANGE_NAME: nama rentang alamat IP pribadi yang menghosting kumpulan pribadi Cloud Build.
- PRIVATE_POOL_NETWORK: alamat IP pertama
RESERVED_RANGE_NAME. Untuk tutorial ini, Anda dapat
menggunakan
192.168.0.0
. - PRIVATE_POOL_PREFIX: awalan
RESERVED_RANGE_NAME. Setiap kumpulan pribadi yang dibuat
akan menggunakan
/24
dari rentang ini. Untuk tutorial ini, Anda dapat menggunakan20
; yang memungkinkan Anda membuat hingga enam belas kumpulan. - PRIVATE_POOL_PEERING_VPC_NAME: nama jaringan VPC Anda yang akan di-peering dengan jaringan kumpulan pribadi Cloud Build.
- Rentang IP adalah
global
karena jika--purpose
adalahVPC_PEERING
, rentang alamat IP bernama harusglobal
.
Buat koneksi pribadi antara jaringan VPC yang berisi kumpulan pribadi Cloud Build dan PRIVATE_POOL_PEERING_VPC_NAME:
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=RESERVED_RANGE_NAME \ --network=PRIVATE_POOL_PEERING_VPC_NAME
Ganti kode berikut:
- RESERVED_RANGE_NAME: nama rentang alamat IP pribadi yang menghosting kumpulan pribadi Cloud Build.
- PRIVATE_POOL_PEERING_VPC_NAME: nama jaringan VPC Anda yang akan di-peering dengan jaringan kumpulan pribadi Cloud Build.
Mengaktifkan ekspor rute kustom untuk mengiklankan jaringan bidang kontrol cluster GKE ke kumpulan pribadi:
gcloud compute networks peerings update servicenetworking-googleapis-com \ --network=PRIVATE_POOL_PEERING_VPC_NAME \ --export-custom-routes \ --no-export-subnet-routes-with-public-ip
Ganti PRIVATE_POOL_PEERING_VPC_NAME dengan nama jaringan VPC Anda yang akan di-peering dengan jaringan kumpulan pribadi Cloud Build.
Buat kumpulan pribadi Cloud Build yang di-peering dengan PRIVATE_POOL_PEERING_VPC_NAME:
gcloud builds worker-pools create PRIVATE_POOL_NAME \ --region=REGION \ --peered-network=projects/$GOOGLE_CLOUD_PROJECT/global/networks/PRIVATE_POOL_PEERING_VPC_NAME
Ganti kode berikut:
- PRIVATE_POOL_NAME: nama kumpulan pribadi Cloud Build.
- REGION: region untuk
cluster GKE. Dalam tutorial ini, gunakan
us-central1
untuk region, region yang sama dengan yang Anda gunakan untuk jaringan VPC.
Anda kini telah membuat kumpulan pribadi Cloud Build dan meng-peeringnya dengan jaringan VPC di project Anda sendiri.
Membuat koneksi Cloud VPN antara dua jaringan VPC Anda
Dalam project Anda sendiri, sekarang Anda memiliki jaringan VPC yang di-peering dengan kumpulan pribadi Cloud Build dan jaringan VPC kedua yang di-peering dengan cluster GKE pribadi.
Di bagian ini, Anda akan membuat koneksi Cloud VPN antara dua jaringan VPC dalam project Anda. Koneksi ini menyelesaikan rute dan memungkinkan kumpulan pribadi Cloud Build mengakses cluster GKE.
Di Cloud Shell, buat dua gateway VPN dengan ketersediaan tinggi (HA) yang saling terhubung. Untuk membuat gateway ini, ikuti petunjuk dalam Membuat dua gateway VPN dengan ketersediaan tinggi (HA) yang dikonfigurasi sepenuhnya dan saling terhubung. Penyiapan selesai setelah Anda membuat sesi BGP. Saat mengikuti petunjuk ini, gunakan nilai berikut:
- PRIVATE_POOL_PEERING_VPC_NAME untuk
NETWORK_1
- GKE_PEERING_VPC_NAME untuk
NETWORK_2
- REGION untuk
REGION_1
danREGION_2
- PRIVATE_POOL_PEERING_VPC_NAME untuk
Konfigurasikan masing-masing dari empat sesi BGP yang Anda buat untuk memberitahukan rute ke jaringan VPC kumpulan pribadi dan jaringan VPC bidang kontrol cluster GKE:
gcloud compute routers update-bgp-peer ROUTER_NAME_1 \ --peer-name=PEER_NAME_GW1_IF0 \ --region=REGION \ --advertisement-mode=CUSTOM \ --set-advertisement-ranges=PRIVATE_POOL_NETWORK/PRIVATE_POOL_PREFIX gcloud compute routers update-bgp-peer ROUTER_NAME_1 \ --peer-name=PEER_NAME_GW1_IF1 \ --region=REGION \ --advertisement-mode=CUSTOM \ --set-advertisement-ranges=PRIVATE_POOL_NETWORK/PRIVATE_POOL_PREFIX gcloud compute routers update-bgp-peer ROUTER_NAME_2 \ --peer-name=PEER_NAME_GW2_IF0 \ --region=REGION \ --advertisement-mode=CUSTOM \ --set-advertisement-ranges=CLUSTER_CONTROL_PLANE_CIDR gcloud compute routers update-bgp-peer ROUTER_NAME_2 \ --peer-name=PEER_NAME_GW2_IF1 \ --region=REGION \ --advertisement-mode=CUSTOM \ --set-advertisement-ranges=CLUSTER_CONTROL_PLANE_CIDR
Dengan nilai berikut adalah nama yang sama dengan yang Anda gunakan saat membuat dua gateway VPN dengan ketersediaan tinggi (HA):
- ROUTER_NAME_1
- PEER_NAME_GW1_IF0
- PEER_NAME_GW1_IF1
- ROUTER_NAME_2
- PEER_NAME_GW2_IF0
- PEER_NAME_GW2_IF1
Mengaktifkan akses Cloud Build ke bidang kontrol cluster GKE
Setelah Anda memiliki koneksi VPN di antara dua jaringan VPC di project Anda, aktifkan akses Cloud Build ke bidang kontrol cluster GKE.
Di Cloud Shell, tambahkan rentang jaringan kumpulan pribadi ke jaringan yang diizinkan bidang kontrol di GKE:
gcloud container clusters update PRIVATE_CLUSTER_NAME \ --enable-master-authorized-networks \ --region=REGION \ --master-authorized-networks=PRIVATE_POOL_NETWORK/PRIVATE_POOL_PREFIX
Ganti kode berikut:
- PRIVATE_CLUSTER_NAME: nama cluster GKE pribadi.
- REGION: region untuk
cluster GKE. Dalam tutorial ini, gunakan
us-central1
untuk region, region yang sama dengan yang Anda gunakan untuk jaringan VPC. - PRIVATE_POOL_NETWORK: alamat IP pertama
RESERVED_RANGE_NAME. Untuk tutorial ini, Anda
dapat menggunakan
192.168.0.0
. - PRIVATE_POOL_PREFIX: awalan
RESERVED_RANGE_NAME. Setiap kumpulan pribadi yang dibuat
akan menggunakan
/24
dari rentang ini. Untuk tutorial ini, Anda dapat menggunakan20
; yang memungkinkan Anda membuat hingga enam belas kumpulan.
Izinkan akun layanan Cloud Build untuk mengakses bidang kontrol cluster GKE:
export PROJECT_NUMBER=$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format 'value(projectNumber)') gcloud projects add-iam-policy-binding $GOOGLE_CLOUD_PROJECT \ --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role=roles/container.developer
Kumpulan pribadi Cloud Build kini dapat mengakses bidang kontrol cluster GKE.
Memverifikasi solusi
Di bagian ini, Anda akan memverifikasi bahwa solusi tersebut berfungsi dengan menjalankan
perintah kubectl get nodes
dalam langkah build yang berjalan di kumpulan
pribadi.
Di Cloud Shell, buat folder sementara dengan file konfigurasi Cloud Build yang menjalankan perintah
kubectl get nodes
:mkdir private-pool-test && cd private-pool-test cat > cloudbuild.yaml <<EOF steps: - name: "gcr.io/cloud-builders/kubectl" args: ['get', 'nodes'] env: - 'CLOUDSDK_COMPUTE_REGION=REGION' - 'CLOUDSDK_CONTAINER_CLUSTER=PRIVATE_CLUSTER_NAME' options: workerPool: 'projects/$GOOGLE_CLOUD_PROJECT/locations/REGION/workerPools/PRIVATE_POOL_NAME' EOF
Ganti kode berikut:
- REGION: region untuk
cluster GKE. Dalam tutorial ini, gunakan
us-central1
untuk region, region yang sama dengan yang Anda gunakan untuk jaringan VPC. - PRIVATE_CLUSTER_NAME: nama cluster GKE pribadi.
- PRIVATE_POOL_NAME: nama kumpulan pribadi Cloud Build.
- REGION: region untuk
cluster GKE. Dalam tutorial ini, gunakan
Mulai tugas build:
gcloud builds submit --config=cloudbuild.yaml
Pastikan outputnya adalah daftar node di cluster GKE. Log build yang ditampilkan di konsol menyertakan tabel yang mirip dengan ini:
NAME STATUS ROLES AGE VERSION gke-private-default-pool-3ec34262-7lq9 Ready <none> 9d v1.19.9-gke.1900 gke-private-default-pool-4c517758-zfqt Ready <none> 9d v1.19.9-gke.1900 gke-private-default-pool-d1a885ae-4s9c Ready <none> 9d v1.19.9-gke.1900
Anda kini telah memverifikasi bahwa pekerja dari kumpulan pribadi dapat mengakses cluster GKE. Dengan akses ini, Anda dapat menggunakan Cloud Build untuk men-deploy aplikasi di cluster GKE pribadi ini.
Pemecahan masalah
Jika Anda mengalami masalah dengan tutorial ini, lihat dokumen berikut:
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus resource satu per satu
Di Cloud Shell, hapus cluster GKE:
gcloud container clusters delete PRIVATE_CLUSTER_NAME \ --region=REGION \ --async
Saat Anda menjalankan perintah ini, Peering Jaringan VPC akan otomatis dihapus.
Hapus kumpulan pribadi Cloud Build:
gcloud builds worker-pools delete PRIVATE_POOL_NAME \ --region=REGION
Hapus koneksi pribadi antara jaringan VPC produsen layanan dan PRIVATE_POOL_PEERING_VPC_NAME:
gcloud services vpc-peerings delete \ --network=PRIVATE_POOL_PEERING_VPC_NAME \ --async
Hapus rentang alamat IP bernama yang digunakan untuk kumpulan pribadi:
gcloud compute addresses delete RESERVED_RANGE_NAME \ --global
Hapus keempat tunnel VPN. Gunakan nama yang sama dengan yang Anda tetapkan di Membuat tunnel VPN.
gcloud compute vpn-tunnels delete \ TUNNEL_NAME_GW1_IF0 \ TUNNEL_NAME_GW1_IF1 \ TUNNEL_NAME_GW2_IF0 \ TUNNEL_NAME_GW2_IF1 \ --region=REGION
Menghapus dua Cloud Router. Gunakan nama yang sama dengan yang Anda tetapkan di Membuat Cloud Router.
gcloud compute routers delete \ ROUTER_NAME_1 \ ROUTER_NAME_2 \ --region=REGION
Hapus kedua Gateway VPN. Gunakan nama yang sama dengan yang Anda tentukan di Membuat gateway VPN dengan ketersediaan tinggi (HA).
gcloud compute vpn-gateways delete \ GW_NAME_1 \ GW_NAME_2 \ --region=REGION
Hapus GKE_SUBNET_NAME, yang merupakan subnetwork yang menghosting node cluster GKE:
gcloud compute networks subnets delete GKE_SUBNET_NAME \ --region=REGION
Hapus dua jaringan VPC PRIVATE_POOL_PEERING_VPC_NAME dan GKE_PEERING_VPC_NAME:
gcloud compute networks delete \ PRIVATE_POOL_PEERING_VPC_NAME \ GKE_PEERING_VPC_NAME
Langkah selanjutnya
- Pelajari cara menjalankan build di kolam renang pribadi.
- Jalankan proxy dalam cluster GKE pribadi yang memiliki akses ke bidang kontrol.
- Pelajari cara men-deploy ke GKE dari Cloud Build.
- Coba sendiri fitur Google Cloud lainnya. Lihat tutorial kami.