Men-deploy aplikasi di GKE di AWS

Halaman ini memberikan petunjuk panduan memulai untuk membuat cluster dan kumpulan node, lalu men-deploy aplikasi contoh menggunakan GKE di AWS.

Panduan memulai cluster Anda dengan Terraform

Anda dapat menggunakan Terraform untuk membuat cluster dan kumpulan node. Sebelum membuat cluster, skrip Terraform juga menyiapkan VPC AWS Anda.

Anda dapat mempelajari Terraform lebih lanjut di lingkungan AWS di referensi cluster Terraform dan referensi node pool Terraform.

Setelah membuat VPC dan cluster dengan Terraform, lanjutkan ke bagian Men-deploy aplikasi ke cluster untuk men-deploy aplikasi contoh.

Panduan memulai cluster Anda tanpa Terraform

Jika Anda ingin menyiapkan VPC AWS serta membuat cluster dan kumpulan node tanpa Terraform, ikuti petunjuk berikut.

Sebelum memulai

Sebelum membuat cluster, Anda harus menyelesaikan prasyarat. Secara khusus, Anda harus menyediakan referensi berikut:

  • VPC AWS tempat cluster akan dijalankan.
  • Hingga tiga subnet AWS untuk tiga replika bidang kontrol. Masing-masing harus berada di Zona Ketersediaan AWS yang berbeda.
  • Peran IAM AWS yang diambil GKE di AWS saat mengelola cluster Anda. Tindakan ini memerlukan serangkaian izin IAM spesifik.
  • Kunci CMK simetris KMS untuk enkripsi data cluster (dlld) dan konfigurasi dalam penyimpanan.
  • Profil instance IAM AWS untuk setiap replika bidang kontrol. Tindakan ini memerlukan serangkaian izin IAM spesifik.
  • Pasangan kunci SSH EC2 (opsional) jika Anda memerlukan akses SSH ke instance EC2 yang menjalankan setiap replika bidang kontrol.

Anda bertanggung jawab untuk membuat dan mengelola resource ini, yang dapat dibagikan ke semua GKE Anda di cluster AWS. Semua resource AWS dengan cakupan cluster dasar lainnya dikelola oleh GKE di AWS.

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.

Saat Anda membuat GKE di resource AWS 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_aws/location GOOGLE_CLOUD_LOCATION
    

    Ganti GOOGLE_CLOUD_LOCATION dengan lokasi Anda, seperti us-west1.

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 Service baru dibuat, alamat IP tersebut akan dialokasikan dari rentang ini. Rentang contoh: 192.168.224.0/20

Membuat cluster

Gunakan perintah berikut untuk membuat cluster di GKE di AWS. Untuk mengetahui informasi lebih lanjut tentang perintah ini, termasuk parameter opsionalnya, lihat halaman referensi gcloud container aws create.

gcloud container aws clusters create aws-cluster-0 \
    --cluster-version 1.29.4-gke.200 \
    --aws-region AWS_REGION \
    --fleet-project FLEET_PROJECT_ID \
    --vpc-id VPC_ID \
    --subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 \
    --pod-address-cidr-blocks POD_CIDR_BLOCK \
    --service-address-cidr-blocks SERVICE_CIDR_BLOCK \
    --role-arn API_ROLE_ARN \
    --iam-instance-profile CONTROL_PLANE_PROFILE \
    --database-encryption-kms-key-arn DB_KMS_KEY_ARN \
    --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
    --tags "google:gkemulticloud:cluster=aws-cluster-0"

Ganti kode berikut:

  • AWS_REGION: region AWS tempat cluster akan dibuat.
  • FLEET_PROJECT_ID: project host Fleet tempat cluster akan didaftarkan
  • VPC_ID: ID VPC AWS untuk cluster ini yang Anda siapkan pada langkah prasyarat Buat VPC Anda
  • CONTROL_PLANE_SUBNET_1, CONTROL_PLANE_SUBNET_2, CONTROL_PLANE_SUBNET_3: ID subnet untuk tiga instance bidang kontrol cluster yang Anda buat dalam langkah prasyarat Membuat subnet pribadi
  • POD_CIDR_BLOCK: rentang alamat CIDR untuk pod cluster Anda
  • SERVICE_CIDR_BLOCK: rentang alamat CIDR untuk layanan cluster Anda
  • API_ROLE_ARN: ARN dari peran IAM untuk layanan GKE Multi-Cloud yang Anda buat dalam Membuat peran GKE Multi-Cloud API langkah prasyarat
  • CONTROL_PLANE_PROFILE: nama profil instance IAM yang terkait dengan cluster yang Anda pilih dalam langkah prasyarat Buat peran bidang kontrol
  • DB_KMS_KEY_ARN: Nama Resource Amazon (ARN) dari salah satu kunci AWS KMS yang Anda buat pada langkah prasyarat Membuat kunci AWS KMS
  • CONFIG_KMS_KEY_ARN: Nama Resource Amazon (ARN) dari kunci AWS KMS lain yang Anda buat dalam langkah prasyarat Membuat kunci AWS KMS

Jika ada, parameter --tags akan menerapkan tag AWS yang diberikan ke semua resource AWS dasar yang dikelola oleh GKE di AWS. Contoh ini memberi tag node bidang kontrol Anda dengan nama cluster tempatnya berada.

Membuat node pool

Gunakan perintah berikut untuk membuat kumpulan node:

gcloud container aws node-pools create pool-0 \
    --cluster aws-cluster-0 \
    --node-version 1.29.4-gke.200 \
    --min-nodes 1 \
    --max-nodes 5 \
    --max-pods-per-node 110 \
    --root-volume-size 50 \
    --subnet-id NODEPOOL_SUBNET_ID \
    --iam-instance-profile NODEPOOL_PROFILE \
    --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
    --ssh-ec2-key-pair EC2_KEY_PAIR \
    --tags "google:gkemulticloud:cluster=aws-cluster-0"

Ganti kode berikut:

  • NODEPOOL_SUBNET_ID: ID salah satu subnet pribadi yang Anda buat pada langkah prasyarat Membuat subnet pribadi
  • NODEPOOL_PROFILE: nama profil instance IAM untuk instance EC2 di kumpulan node yang Anda pilih pada langkah prasyarat Membuat peran IAM kumpulan node
  • CONFIG_KMS_KEY_ARN: Amazon Resource Name (ARN) dari kunci AWS KMS untuk mengenkripsi data pengguna
  • EC2_KEY_PAIR (opsional): nama pasangan kunci EC2 yang dibuat untuk akses SSH (opsional) yang Anda buat dalam langkah prasyarat Buat pasangan kunci SSH

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 aws clusters describe untuk mendapatkan detail tentang cluster Anda:

gcloud container aws 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 aws clusters get-credentials aws-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 AWS 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 AWS.

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 AWS.

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 aws node-pools delete:

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

    gcloud container aws clusters delete aws-cluster-0
    

Langkah selanjutnya