Men-deploy aplikasi di GKE di Azure

Halaman ini menjelaskan cara membuat cluster dan node pool, kemudian men-deploy contoh aplikasi menggunakan GKE di Azure.

Dukungan Terraform

Jika sudah terbiasa dengan 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 referensi berikut:

  • Jaringan virtual Azure tempat cluster akan dijalankan.
  • Subnet untuk replika bidang kontrol Kubernetes.
  • Penetapan peran Azure yang akan memberi GKE di Azure akses ke lingkungan Azure Anda menggunakan entity 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 virtual machine Azure di cluster.

Anda bertanggung jawab untuk membuat dan mengelola resource ini, yang dapat dibagikan antara semua cluster Anda. Semua resource Azure dasar 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 region Google Cloud Anda.

Project Anda memiliki project ID sebagai ID unik. Saat membuat project, Anda dapat menggunakan project ID yang dihasilkan secara otomatis atau membuatnya sendiri.

Region Google Cloud adalah lokasi tempat cluster Anda akan dikelola. Misalnya, us-west1. Lihat Region pengelolaan untuk 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.

Ketika Anda membuat GKE di resource Azure setelah mengonfigurasi project dan lokasi default, resource akan otomatis dibuat di project dan lokasi tersebut.

Untuk menyetel default, ikuti langkah-langkah berikut:

  1. Tetapkan project default:

    gcloud config set project PROJECT_ID
    

    Ganti PROJECT_ID dengan project ID Anda.

  2. Tetapkan lokasi pengelolaan default:

    gcloud config set container_azure/location GOOGLE_CLOUD_LOCATION
    

    Ganti GOOGLE_CLOUD_LOCATION dengan lokasi Anda, seperti us-west1.

Pilih ID resource Azure untuk cluster Anda

Pilih ID grup resource

Simpan grup resource cluster Anda ke variabel lingkungan yang 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 telah disiapkan pada langkah prasyarat Create an Azure resource group.

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:

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 dapat berupa nama grup resource yang Anda siapkan di Membuat Azure virtual network.
  • VNET_NAME dengan nama jaringan virtual Anda. Ini bisa berupa nama jaringan virtual yang Anda siapkan di Membuat jaringan virtual Azure.
  • SUBNET_NAME dengan nama subnet Anda—misalnya, default.

Pilih rentang CIDR untuk cluster Anda

Kubernetes memerlukan dua rentang CIDR untuk disediakan untuk cluster. Rentang CIDR ini harus dipilih agar tidak tumpang tindih dengan rentang CIDR yang digunakan oleh subnet VPC Anda. Ukuran cluster harus cukup besar untuk ukuran maksimum cluster yang diharapkan.

  • Rentang CIDR alamat pod: Saat Pod baru dibuat, alamat IP akan dialokasikan dari rentang ini. Rentang contoh: 192.168.208.0/20

  • Rentang CIDR alamat layanan: Saat Layanan baru dibuat, alamat IP akan dialokasikan dari rentang ini. Rentang contoh: 192.168.224.0/20

Membuat cluster

Gunakan perintah berikut untuk membuat cluster di bagian GKE di Azure.

gcloud container azure clusters create azure-cluster-0 \
    --cluster-version 1.29.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 Anda
  • FLEET_PROJECT_ID dengan ID project host fleet tempat cluster akan didaftarkan.
  • CLIENT_NAME: nama AzureClient Anda.
  • POD_CIDR_BLOCK: rentang alamat Pod cluster Anda
  • SERVICE_CIDR_BLOCK: Rentang alamat layanan cluster Anda
  • SSH_PUBLIC_KEY dengan teks kunci publik SSH seperti yang dibuat dalam langkah prasyarat Membuat 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 kumpulan node dengan Google Cloud CLI:

gcloud container azure node-pools create pool-0 \
    --cluster azure-cluster-0 \
    --node-version 1.29.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, seperti yang dibuat dalam langkah prasyarat Membuat 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 kumpulan node, 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 Console dan 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 Anda
  • GOOGLE_CLOUD_LOCATION: nama lokasi Google Cloud yang mengelola cluster

Konsol Google Cloud

  1. Di konsol Google Cloud, buka halaman ringkasan cluster Google Kubernetes Engine.

    Buka cluster GKE

  2. Cluster Anda dicantumkan berdasarkan nama dan lokasi.

  3. Klik nama cluster. Panel yang berisi 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 kumpulan node untuk menggunakan gateway Connect karena mengandalkan agen Connect, yang berjalan sebagai Deployment di cluster.

Men-deploy aplikasi ke cluster

Setelah membuat cluster, Anda dapat men-deploy aplikasi dalam container ke cluster tersebut. Untuk panduan memulai ini, Anda dapat men-deploy contoh aplikasi web kami, hello-app.

Anda dapat menggunakan objek Kubernetes untuk membuat dan mengelola resource cluster. Anda menggunakan objek Deployment untuk men-deploy aplikasi stateless seperti server web. Objek layanan 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 menjalankan image container hello-app.

Dalam perintah ini:

  • --image menentukan image container yang akan di-deploy. Dalam hal ini, perintah akan mengambil image contoh dari repositori Artifact Registry, us-docker.pkg.dev/google-samples/containers/gke/hello-app. :1.0 menunjukkan versi gambar tertentu yang akan ditarik. Jika Anda tidak menentukan versi, image yang diberi tag latest 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

  1. Periksa Pod yang sedang berjalan menggunakan kubectl get pods:

    kubectl get pods
    

    Anda akan melihat satu Pod hello-server berjalan di cluster Anda.

  2. Periksa Layanan hello-server menggunakan kubectl get service:

    kubectl get service hello-server
    

    Dari output perintah ini, salin alamat IP eksternal Layanan dari kolom EXTERNAL-IP.

  3. Lihat aplikasi dari browser web menggunakan IP eksternal dengan port yang diekspos:

    http://EXTERNAL-IP
    

Anda baru saja men-deploy aplikasi web dalam container ke GKE di Azure.

Pembersihan

  1. Hapus Service dan Deployment aplikasi:

    kubectl delete service hello-server
    kubectl delete deployment hello-server
    
  2. Hapus kumpulan node dengan menjalankan gcloud container azure node-pools delete:

    gcloud container azure node-pools delete pool-0 --cluster azure-cluster-0
    
  3. Hapus cluster Anda dengan menjalankan gcloud container azure clusters delete:

    gcloud container azure clusters delete azure-cluster-0
    

Langkah selanjutnya