Men-deploy aplikasi di GKE di Azure
Halaman ini menjelaskan cara membuat cluster dan node pool, lalu men-deploy aplikasi contoh menggunakan GKE di Azure.
Dukungan Terraform
Jika sudah memahami Terraform, Anda dapat menggunakan skrip Terraform yang tersedia di GitHub untuk mengotomatiskan prasyarat dan membuat cluster.
Sebelum memulai
Sebelum membuat cluster, Anda harus menyelesaikan prasyarat. Secara khusus, Anda harus menyediakan resource berikut:
- Jaringan virtual Azure tempat cluster akan berjalan.
- Subnet untuk replika bidang kontrol Kubernetes.
- Penetapan peran Azure yang akan memberikan akses GKE di Azure ke lingkungan Azure Anda menggunakan akun utama layanan.
- Resource AzureClient yang digunakan GKE di Azure untuk melakukan autentikasi ke layanan Azure dan mengelola resource di akun Azure Anda.
- Pasangan kunci SSH untuk mengakses mesin virtual Azure di cluster.
Anda bertanggung jawab untuk membuat dan mengelola resource ini, yang dapat dibagikan di antara semua cluster Anda. Semua resource Azure pokok lainnya untuk cluster Anda dikelola oleh GKE di Azure.
Menetapkan setelan default untuk gcloud CLI
Gunakan gcloud CLI untuk mengonfigurasi setelan default untuk project default dan Google Cloud region default Anda.
Project Anda memiliki project ID sebagai ID unik. Saat membuat project, Anda dapat menggunakan project ID yang dibuat secara otomatis atau membuat project ID sendiri.
Region Google Cloud adalah lokasi tempat cluster Anda akan dikelola. Contoh, us-west1
. Lihat
Wilayah pengelolaan untuk mengetahui detail selengkapnya.
Saat mengonfigurasi setelan default ini, Anda tidak perlu menyertakannya saat menjalankan Google Cloud CLI. Anda juga dapat menentukan setelan atau mengganti setelan default dengan meneruskan flag --project
dan --location
ke Google Cloud CLI.
Saat Anda membuat resource GKE di Azure setelah mengonfigurasi project dan lokasi default, resource akan otomatis dibuat di project dan lokasi tersebut.
Untuk menetapkan default, ikuti langkah-langkah berikut:
Tetapkan project default:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan project ID Anda.Tetapkan lokasi pengelolaan default:
gcloud config set container_azure/location GOOGLE_CLOUD_LOCATION
Ganti
GOOGLE_CLOUD_LOCATION
dengan lokasi Anda, sepertius-west1
.
Pilih ID resource Azure untuk cluster Anda
Pilih ID grup resource
Simpan grup resource cluster Anda ke variabel lingkungan dengan menjalankan perintah berikut:
CLUSTER_RESOURCE_GROUP_ID=$(az group show --query id --output tsv \
--resource-group=CLUSTER_RESOURCE_GROUP_NAME)
Ganti CLUSTER_RESOURCE_GROUP_NAME
dengan nama
grup resource untuk menyediakan resource cluster Anda, yang Anda siapkan di langkah prasyarat
Buat grup resource Azure.
Pilih ID jaringan virtual
Simpan ID VNet cluster Anda ke variabel lingkungan dengan menjalankan perintah berikut:
VNET_ID=$(az network vnet show --query id --output tsv \
--resource-group=VNET_RESOURCE_GROUP_NAME \
--name=VNET_NAME)
Ganti kode berikut:
VNET_RESOURCE_GROUP_NAME
dengan nama grup resource yang berisi jaringan virtual Anda, seperti yang disiapkan di langkah prasyarat Buat jaringan virtual Azure.VNET_NAME
dengan nama jaringan virtual Anda, seperti yang disiapkan di langkah prasyarat Buat jaringan virtual Azure.
Pilih ID subnet
Simpan ID subnet cluster Anda ke variabel lingkungan dengan menjalankan perintah berikut:
SUBNET_ID=$(az network vnet subnet show --query id --output tsv \
--resource-group VNET_RESOURCE_GROUP_NAME \
--vnet-name VNET_NAME \
--name SUBNET_NAME)
Ganti:
VNET_RESOURCE_GROUP_NAME
dengan nama grup resource yang ada yang berisi jaringan virtual Anda. Ini bisa berupa nama grup resource yang Anda siapkan di Membuat jaringan virtual Azure.VNET_NAME
dengan nama jaringan virtual Anda. Ini bisa berupa nama jaringan virtual yang Anda siapkan di bagian Membuat jaringan virtual Azure.SUBNET_NAME
dengan nama subnet Anda—misalnya,default
.
Pilih rentang CIDR untuk cluster Anda
Kubernetes memerlukan dua rentang CIDR untuk cluster. Rentang CIDR ini harus dipilih agar tidak tumpang-tindih dengan rentang CIDR yang digunakan oleh subnet VPC Anda. Rentang ini harus cukup besar untuk ukuran maksimum yang diharapkan dari cluster Anda.
Rentang CIDR alamat Pod: Saat
Pod
baru dibuat, alamat IP akan dialokasikan dari rentang ini. Contoh rentang: 192.168.208.0/20Rentang CIDR alamat layanan: Saat Layanan baru dibuat, alamat IP akan dialokasikan dari rentang ini. Contoh rentang: 192.168.224.0/20
Membuat cluster
Gunakan perintah berikut untuk membuat cluster di GKE di Azure.
gcloud container azure clusters create azure-cluster-0 \
--cluster-version 1.32.4-gke.200 \
--azure-region AZURE_REGION \
--fleet-project FLEET_PROJECT_ID \
--client CLIENT_NAME \
--resource-group-id $CLUSTER_RESOURCE_GROUP_ID \
--vnet-id $VNET_ID \
--subnet-id $SUBNET_ID \
--pod-address-cidr-blocks POD_CIDR_BLOCK \
--service-address-cidr-blocks SERVICE_CIDR_BLOCK \
--ssh-public-key "SSH_PUBLIC_KEY" \
--tags "google:gkemulticloud:cluster=azure-cluster-0"
Ganti:
AZURE_REGION
: region Azure yang didukung yang terkait dengan region Google Cloud AndaFLEET_PROJECT_ID
dengan ID project host fleet tempat cluster akan didaftarkan.CLIENT_NAME
: nama AzureClient Anda.POD_CIDR_BLOCK
: rentang alamat Pod cluster AndaSERVICE_CIDR_BLOCK
: Rentang alamat layanan cluster AndaSSH_PUBLIC_KEY
dengan teks kunci publik SSH Anda seperti yang dibuat pada langkah prasyarat Buat pasangan kunci SSH. Jika Anda menyimpan kunci publik ke variabel lingkungan pada langkah tersebut, Anda dapat menggunakan${SSH_PUBLIC_KEY}
.
Untuk mengetahui informasi selengkapnya dan parameter opsional, lihat halaman referensi gcloud container azure clusters create.
Membuat node pool
Buat node pool dengan Google Cloud CLI:
gcloud container azure node-pools create pool-0 \
--cluster azure-cluster-0 \
--node-version 1.32.4-gke.200 \
--vm-size Standard_B2s \
--max-pods-per-node 110 \
--min-nodes 1 \
--max-nodes 5 \
--ssh-public-key "SSH_PUBLIC_KEY" \
--subnet-id $SUBNET_ID \
--tags "google:gkemulticloud:cluster=azure-cluster-0"
Ganti SSH_PUBLIC_KEY
dengan teks kunci publik SSH Anda,
seperti yang dibuat di langkah prasyarat Buat pasangan kunci SSH. Jika Anda menyimpan kunci publik ke variabel lingkungan,
Anda dapat menggunakan ${SSH_PUBLIC_KEY}
.
Melihat status cluster Anda
Setelah membuat cluster dan node pool, Anda dapat melihat status cluster dengan Google Cloud CLI atau konsol Google Cloud . Untuk melihat status cluster, pilih apakah Anda menggunakan Google Cloud CLI atau Google Cloud konsol, lalu ikuti langkah-langkah berikut:
gcloud
Gunakan perintah gcloud container azure clusters describe
untuk mendapatkan detail
tentang cluster Anda:
gcloud container azure clusters describe CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Ganti kode berikut:
CLUSTER_NAME
: nama cluster AndaGOOGLE_CLOUD_LOCATION
: nama lokasi Google Cloud yang mengelola cluster
Google Cloud console
Di konsol Google Cloud , buka halaman ringkasan cluster Google Kubernetes Engine.
Cluster Anda dicantumkan berdasarkan nama dan lokasinya.
Klik nama cluster. Panel dengan informasi tentang cluster, termasuk status dan fitur yang diaktifkan, akan muncul.
Mendapatkan kredensial autentikasi untuk cluster
Setelah membuat cluster, Anda perlu mendapatkan kredensial autentikasi agar dapat berinteraksi dengan cluster:
gcloud container azure clusters get-credentials azure-cluster-0
Perintah ini mengonfigurasi kubectl
untuk mengakses cluster yang Anda buat menggunakan
Connect gateway. Anda memerlukan setidaknya satu node pool untuk menggunakan gateway Connect karena gateway ini mengandalkan agen Connect, yang berjalan sebagai Deployment di cluster.
Men-deploy aplikasi ke cluster
Setelah membuat cluster, Anda dapat men-deploy aplikasi dalam kontainer ke cluster tersebut. Untuk panduan memulai ini, Anda dapat men-deploy aplikasi web contoh kami, hello-app
.
Anda dapat menggunakan objek Kubernetes untuk membuat dan mengelola resource cluster Anda. Anda menggunakan objek Deployment untuk men-deploy aplikasi stateless seperti server web. Objek Service menentukan aturan dan load balancer untuk mengakses aplikasi Anda dari internet.
Membuat Deployment
Untuk menjalankan hello-app
di cluster, Anda harus men-deploy aplikasi dengan
menjalankan perintah berikut:
kubectl create deployment hello-server --image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Perintah Kubernetes ini, kubectl create deployment
membuat Deployment bernama hello-server
. Pod
Deployment akan menjalankan image container hello-app
.
Dalam perintah ini:
--image
menentukan image container yang akan di-deploy. Dalam hal ini, perintah tersebut akan mengambil image contoh dari repositori Artifact Registry,us-docker.pkg.dev/google-samples/containers/gke/hello-app
.:1.0
menunjukkan versi image tertentu yang akan ditarik. Jika Anda tidak menentukan versinya, image yang diberi taglatest
akan digunakan.
Mengekspos Deployment
Setelah men-deploy aplikasi, Anda perlu mengeksposnya ke internet agar pengguna dapat mengaksesnya. Anda dapat mengekspos aplikasi Anda dengan membuat Service, yaitu resource Kubernetes yang mengekspos aplikasi Anda ke traffic eksternal.
Untuk mengekspos aplikasi Anda, jalankan perintah
kubectl expose
berikut:
kubectl expose deployment hello-server --type LoadBalancer --port 80 --target-port 8080
Meneruskan flag --type LoadBalancer
akan membuat load balancer Azure untuk container Anda. Flag --port
menginisialisasi port publik 80 ke internet dan flag --target-port
mengarahkan traffic ke port 8080 aplikasi.
Load balancer ditagih sesuai dengan harga load balancer Azure.
Memeriksa dan melihat aplikasi
Periksa Pod yang berjalan menggunakan
kubectl get pods
:kubectl get pods
Anda akan melihat satu Pod
hello-server
berjalan di cluster Anda.Periksa Layanan
hello-server
menggunakankubectl get service
:kubectl get service hello-server
Dari output perintah ini, salin alamat IP eksternal Layanan dari kolom
EXTERNAL-IP
.Lihat aplikasi dari browser web dengan menggunakan IP eksternal dengan port yang diekspos:
http://EXTERNAL-IP
Anda baru saja berhasil men-deploy aplikasi web dalam container ke GKE di Azure.
Pembersihan
Hapus Service dan Deployment aplikasi:
kubectl delete service hello-server kubectl delete deployment hello-server
Hapus kumpulan node Anda dengan menjalankan
gcloud container azure node-pools delete
:gcloud container azure node-pools delete pool-0 --cluster azure-cluster-0
Hapus cluster Anda dengan menjalankan
gcloud container azure clusters delete
:gcloud container azure clusters delete azure-cluster-0