Tutorial ini menjelaskan cara mengakses cluster Google Kubernetes Engine (GKE) pribadi menggunakan kumpulan pribadi Cloud Build. Akses ini memungkinkan Anda menggunakan Cloud Build untuk men-deploy aplikasi di cluster GKE pribadi. Tutorial ini ditujukan untuk administrator jaringan dan berlaku untuk semua situasi saat kumpulan pribadi Cloud Build perlu berkomunikasi dengan layanan yang berjalan di jaringan Virtual Private Cloud (VPC) yang tersambung. 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 jaringan yang dihubungkan dengan kumpulan pribadi Cloud Build
Cloud Build private pool 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 batasan saat menggunakan kumpulan pribadi Cloud Build. Tutorial ini menyajikan solusi yang menggunakan Cloud VPN untuk mengizinkan pekerja di kumpulan pribadi Cloud Build mengakses platform kontrol cluster GKE pribadi.
Tutorial ini mengasumsikan bahwa Anda sudah 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
panel kontrol cluster GKE
menggunakan
alamat IP pribadi-nya.
Klien seperti kubectl
hanya dapat berkomunikasi dengan bidang kontrol
jika berjalan di instance yang memiliki akses ke jaringan VPC
dan berada di
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 terhubung ke jaringan VPC Anda menggunakan Private Service Connect (PSC). Peering Jaringan VPC tidak mendukung peering transitif, sehingga paket tidak dapat dirutekan 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 kumpulan pribadi dan menggunakan PSC untuk menghubungkan 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 mengiklankan jaringan bidang kontrol cluster GKE dan kumpulan pribadi, sehingga menyelesaikan rute.
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 penerapan 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 akan 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
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Google Kubernetes Engine, and Service Networking APIs.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Membuat dua jaringan VPC di project Anda sendiri
Di bagian ini, Anda akan membuat dua jaringan VPC dan subnet untuk node cluster GKE.
Di Cloud Shell, buat jaringan VPC pertama (disebut "Jaringan VPC peering kumpulan 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 dihubungkan dengan jaringan kumpulan pribadi Cloud Build.
Buat jaringan VPC kedua (disebut "jaringan VPC cluster GKE" dalam diagram sebelumnya):
gcloud compute networks create GKE_CLUSTER_VPC_NAME \ --subnet-mode=CUSTOM
Ganti GKE_CLUSTER_VPC_NAME dengan nama jaringan VPC Anda untuk melakukan peering dengan control plane cluster GKE.
Buat subnet untuk node cluster GKE:
gcloud compute networks subnets create GKE_SUBNET_NAME \ --network=GKE_CLUSTER_VPC_NAME \ --range=GKE_SUBNET_RANGE \ --region=REGION
Ganti kode berikut:
- GKE_SUBNET_NAME: nama subnetwork yang dimaksudkan untuk menghosting node cluster GKE.
- GKE_CLUSTER_VPC_NAME: nama jaringan VPC Anda untuk terhubung 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 melakukan 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 panel kontrol.
gcloud container clusters create PRIVATE_CLUSTER_NAME \ --region=REGION \ --enable-master-authorized-networks \ --network=GKE_CLUSTER_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_CLUSTER_VPC_NAME: nama jaringan VPC Anda untuk terhubung ke 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
.
Sekarang Anda telah membuat cluster GKE pribadi.
Mengonfigurasi Peering Jaringan VPC untuk GKE 1.28 dan yang lebih lama
Jika Anda menggunakan tutorial ini untuk mengonfigurasi cluster yang ada yang menjalankan GKE versi 1.28 atau yang lebih lama, jaringan VPC pribadi Anda akan menggunakan Peering Jaringan VPC untuk terhubung ke cluster GKE. Selesaikan langkah-langkah berikut:
Ambil nama Peering Jaringan VPC cluster GKE. Penautan 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_CLUSTER_VPC_NAME \ --export-custom-routes \ --no-export-subnet-routes-with-public-ip
Ganti GKE_CLUSTER_VPC_NAME dengan nama jaringan VPC Anda untuk terhubung dengan control plane cluster GKE.
Untuk mengetahui informasi selengkapnya tentang rute kustom, Anda dapat membaca artikel 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 di 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
; hal ini 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 yang dinamai 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.
Aktifkan 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 dihubungkan dengan jaringan kumpulan pribadi Cloud Build.
Buat kumpulan pribadi Cloud Build yang dihubungkan 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.
Sekarang Anda telah membuat kumpulan pribadi Cloud Build dan melakukan peering dengan jaringan VPC di project Anda sendiri.
Membuat koneksi Cloud VPN antara dua jaringan VPC Anda
Di 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 untuk mengakses cluster GKE.
Di Cloud Shell, buat dua gateway VPN dengan ketersediaan tinggi (HA) yang terhubung satu sama lain. Untuk membuat gateway ini, ikuti petunjuk di Membuat dua gateway VPN dengan ketersediaan tinggi (HA) yang dikonfigurasi sepenuhnya yang terhubung satu sama lain. Penyiapan selesai setelah Anda membuat sesi BGP. Saat mengikuti petunjuk ini, gunakan nilai berikut:
- PRIVATE_POOL_PEERING_VPC_NAME untuk
NETWORK_1
- GKE_CLUSTER_VPC_NAME untuk
NETWORK_2
- REGION untuk
REGION_1
danREGION_2
- PRIVATE_POOL_PEERING_VPC_NAME untuk
Konfigurasikan setiap dari empat sesi BGP yang Anda buat untuk mengiklankan 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 antara dua jaringan VPC di project, aktifkan akses Cloud Build ke platform 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
; hal ini memungkinkan Anda membuat hingga enam belas kumpulan.
Izinkan akun layanan yang Anda gunakan untuk build 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:SERVICE_ACCOUNT \ --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 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 output-nya 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
Sekarang Anda telah memverifikasi bahwa pekerja dari kumpulan pribadi dapat mengakses cluster GKE. Akses ini memungkinkan Anda 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
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the 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 dihapus secara otomatis.
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 yang telah diberi nama yang digunakan untuk kumpulan pribadi:
gcloud compute addresses delete RESERVED_RANGE_NAME \ --global
Hapus empat tunnel VPN. Gunakan nama yang sama dengan yang Anda tentukan di Buat 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
Hapus dua Cloud Router. Gunakan nama yang sama dengan yang Anda tentukan di Membuat Cloud Router.
gcloud compute routers delete \ ROUTER_NAME_1 \ ROUTER_NAME_2 \ --region=REGION
Hapus dua 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_CLUSTER_VPC_NAME:
gcloud compute networks delete \ PRIVATE_POOL_PEERING_VPC_NAME \ GKE_CLUSTER_VPC_NAME
Langkah selanjutnya
- Pelajari cara menjalankan build di kumpulan 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.