Mulai cepat: Menyebarkan kluster Azure Kubernetes Service (AKS) menggunakan Terraform
Azure Kubernetes Service (AKS) merupakan layanan Kube terkelola yang memungkinkan Anda menyebarkan dan mengelola kluster dengan cepat. Dalam mulai cepat ini, Anda akan:
- Menyebarkan kluster AKS menggunakan Terraform.
- Jalankan contoh aplikasi multi-kontainer dengan sekelompok layanan mikro dan ujung depan web yang mensimulasikan skenario ritel.
Catatan
Untuk memulai provisi kluster AKS dengan cepat, artikel ini menyertakan langkah-langkah untuk menyebarkan kluster dengan pengaturan default hanya untuk tujuan evaluasi. Sebelum menyebarkan kluster siap produksi, kami sarankan Anda membiasakan diri dengan arsitektur referensi dasar kami untuk mempertimbangkan bagaimana kluster tersebut selaras dengan kebutuhan bisnis Anda.
Sebelum Anda mulai
- Mulai cepat ini mengasumsikan pemahaman dasar tentang konsep Kube. Untuk informasi lebih, lihat konsep inti Kubernetes untuk Azure Kubernetes Service (AKS).
- Anda memerlukan akun Azure dengan langganan aktif. Jika Anda tidak memilikinya, buat akun secara gratis.
- Ikuti instruksi berdasarkan antarmuka baris perintah Anda.
- Untuk mempelajari selengkapnya tentang membuat kumpulan simpul Windows Server, lihat Membuat kluster AKS yang mendukung kontainer Windows Server.
Catatan
Kumpulan simpul Azure Linux sekarang secara umum tersedia (GA). Untuk mempelajari tentang manfaat dan langkah-langkah penyebaran, lihat Pengantar Host Kontainer Azure Linux untuk AKS.
- Menginstal dan mengonfigurasi Terraform.
- Unduh kubectl.
- Buat nilai acak untuk nama grup sumber daya Azure menggunakan random_pet.
- Buat grup sumber daya Azure menggunakan azurerm_resource_group.
- Akses konfigurasi penyedia AzureRM untuk mendapatkan ID Objek Azure menggunakan azurerm_client_config.
- Buat kluster Kubernetes menggunakan azurerm_kubernetes_cluster.
- Buat azapi_resource sumber daya AzAPI.
- Buat sumber daya AzAPI untuk menghasilkan pasangan kunci SSH menggunakan azapi_resource_action.
Masuk ke akun Azure Anda
Pertama, masuk ke akun Azure Anda dan autentikasi menggunakan salah satu metode yang dijelaskan di bagian berikut.
Terraform hanya mendukung autentikasi ke Azure dengan Azure CLI. Autentikasi menggunakan Azure PowerShell tidak didukung. Oleh karena itu, meskipun Anda dapat menggunakan modul Azure PowerShell saat melakukan pekerjaan Terraform, Anda harus terlebih dahulu mengautentikasi ke Azure.
Menerapkan kode Terraform
Catatan
Kode sampel untuk artikel ini terletak di repositori GitHub Azure Terraform. Anda dapat melihat file log yang berisi hasil pengujian dari terraform versi saat ini dan sebelumnya.
Buat direktori yang dapat Anda gunakan untuk menguji sampel kode Terraform dan menjadikannya direktori Anda saat ini.
Buat file bernama
providers.tf
dan masukkan kode berikut:terraform { required_version = ">=1.0" required_providers { azapi = { source = "azure/azapi" version = "~>1.5" } azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } time = { source = "hashicorp/time" version = "0.9.1" } } } provider "azurerm" { features {} }
Buat file bernama
ssh.tf
dan masukkan kode berikut:resource "random_pet" "ssh_key_name" { prefix = "ssh" separator = "" } resource "azapi_resource_action" "ssh_public_key_gen" { type = "Microsoft.Compute/sshPublicKeys@2022-11-01" resource_id = azapi_resource.ssh_public_key.id action = "generateKeyPair" method = "POST" response_export_values = ["publicKey", "privateKey"] } resource "azapi_resource" "ssh_public_key" { type = "Microsoft.Compute/sshPublicKeys@2022-11-01" name = random_pet.ssh_key_name.id location = azurerm_resource_group.rg.location parent_id = azurerm_resource_group.rg.id } output "key_data" { value = azapi_resource_action.ssh_public_key_gen.output.publicKey }
Buat file bernama
main.tf
dan masukkan kode berikut:# Generate random resource group name resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { location = var.resource_group_location name = random_pet.rg_name.id } resource "random_pet" "azurerm_kubernetes_cluster_name" { prefix = "cluster" } resource "random_pet" "azurerm_kubernetes_cluster_dns_prefix" { prefix = "dns" } resource "azurerm_kubernetes_cluster" "k8s" { location = azurerm_resource_group.rg.location name = random_pet.azurerm_kubernetes_cluster_name.id resource_group_name = azurerm_resource_group.rg.name dns_prefix = random_pet.azurerm_kubernetes_cluster_dns_prefix.id identity { type = "SystemAssigned" } default_node_pool { name = "agentpool" vm_size = "Standard_D2_v2" node_count = var.node_count } linux_profile { admin_username = var.username ssh_key { key_data = azapi_resource_action.ssh_public_key_gen.output.publicKey } } network_profile { network_plugin = "kubenet" load_balancer_sku = "standard" } }
Buat file bernama
variables.tf
dan masukkan kode berikut:variable "resource_group_location" { type = string default = "eastus" description = "Location of the resource group." } variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." } variable "node_count" { type = number description = "The initial quantity of nodes for the node pool." default = 3 } variable "msi_id" { type = string description = "The Managed Service Identity ID. Set this value if you're running this example using Managed Identity as the authentication method." default = null } variable "username" { type = string description = "The admin username for the new cluster." default = "azureadmin" }
Buat file bernama
outputs.tf
dan masukkan kode berikut:output "resource_group_name" { value = azurerm_resource_group.rg.name } output "kubernetes_cluster_name" { value = azurerm_kubernetes_cluster.k8s.name } output "client_certificate" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].client_certificate sensitive = true } output "client_key" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].client_key sensitive = true } output "cluster_ca_certificate" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].cluster_ca_certificate sensitive = true } output "cluster_password" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].password sensitive = true } output "cluster_username" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].username sensitive = true } output "host" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].host sensitive = true } output "kube_config" { value = azurerm_kubernetes_cluster.k8s.kube_config_raw sensitive = true }
Inisialisasi Terraform
Jalankan terraform init untuk menginisialisasi penyebaran Terraform. Perintah ini mengunduh penyedia Azure yang diperlukan untuk mengelola sumber daya Azure Anda.
terraform init -upgrade
Poin utama:
- Parameter
-upgrade
meningkatkan plugin penyedia yang diperlukan ke versi terbaru yang sesuai dengan batasan versi konfigurasi.
Buat rencana eksekusi Terraform
Jalankan terraform plan untuk membuat rencana eksekusi.
terraform plan -out main.tfplan
Poin utama:
- Perintah
terraform plan
membuat rencana eksekusi, tetapi tidak menjalankannya. Perintah ini justru menentukan tindakan yang diperlukan untuk membuat konfigurasi yang ditentukan dalam file konfigurasi Anda. Pola ini memungkinkan Anda memastikan apakah rencana eksekusi telah sesuai dengan ekspektasi Anda sebelum membuat perubahan pada sumber daya aktual. - Parameter
-out
opsional memungkinkan Anda menentukan file output untuk rencana. Menggunakan parameter-out
memastikan bahwa rencana yang Anda tinjau benar-benar sesuai dengan yang diterapkan.
Terapkan rencana eksekusi Terraform
Jalankan terraform apply untuk menerapkan rencana eksekusi ke infrastruktur cloud Anda.
terraform apply main.tfplan
Poin utama:
- Contoh
terraform apply
perintah mengasumsikan Anda sebelumnya menjalankanterraform plan -out main.tfplan
. - Jika Anda menentukan nama file yang berbeda untuk parameter
-out
, gunakan nama file yang sama dalam panggilan keterraform apply
. - Jika Anda tidak menggunakan parameter
-out
, panggilterraform apply
tanpa parameter apa pun.
Memverifikasi hasil
Dapatkan nama grup sumber daya Azure menggunakan perintah berikut.
resource_group_name=$(terraform output -raw resource_group_name)
Tampilkan nama kluster Kubernetes baru Anda menggunakan perintah az aks list .
az aks list \ --resource-group $resource_group_name \ --query "[].{\"K8s cluster name\":name}" \ --output table
Dapatkan konfigurasi Kubernetes dari status Terraform dan simpan dalam file yang
kubectl
dapat dibaca menggunakan perintah berikut.echo "$(terraform output kube_config)" > ./azurek8s
Verifikasi bahwa perintah sebelumnya tidak menambahkan karakter EOT ASCII menggunakan perintah berikut.
cat ./azurek8s
Poin utama:
- Jika Anda melihat
<< EOT
di awal danEOT
di akhir, hapus karakter ini dari file. Jika tidak, Anda mungkin menerima pesan kesalahan berikut:error: error loading config file "./azurek8s": yaml: line 2: mapping values are not allowed in this context
- Jika Anda melihat
Atur variabel lingkungan sehingga
kubectl
dapat mengambil konfigurasi yang benar menggunakan perintah berikut.export KUBECONFIG=./azurek8s
Verifikasi kesehatan kluster menggunakan
kubectl get nodes
perintah .kubectl get nodes
Poin utama:
- Saat Anda membuat kluster AKS, pemantauan diaktifkan untuk menangkap metrik kesehatan untuk node kluster dan pod. Metrik kesehatan tersebut tersedia di portal Azure. Untuk informasi lebih lanjut tentang pemantauan kesehatan kontainer, lihat Memantau kesehatan Azure Kubernetes Service.
- Beberapa nilai kunci diklasifikasikan sebagai output saat Anda menerapkan rencana eksekusi Terraform. Misalnya, alamat host, nama pengguna kluster AKS, dan kata sandi kluster AKS adalah output.
Menyebarkan aplikasi
Untuk menyebarkan aplikasi, Anda menggunakan file manifes untuk membuat semua objek yang diperlukan untuk menjalankan aplikasi AKS Store. File manifes Kube menentukan status kluster yang diinginkan, seperti gambar kontainer mana yang akan dijalankan. Manifes mencakup penyebaran dan layanan Kubernetes berikut:
- Simpan depan: Aplikasi web bagi pelanggan untuk melihat produk dan melakukan pemesanan.
- Layanan produk: Menampilkan informasi produk.
- Layanan pesanan: Menempatkan pesanan.
- Rabbit MQ: Antrean pesan untuk antrean pesanan.
Catatan
Kami tidak menyarankan untuk menjalankan kontainer stateful, seperti Rabbit MQ, tanpa penyimpanan persisten untuk produksi. Ini digunakan di sini untuk kesederhanaan, tetapi sebaiknya gunakan layanan terkelola, seperti Azure CosmosDB atau Azure Bus Layanan.
Buat file bernama
aks-store-quickstart.yaml
dan salin dalam manifes berikut:apiVersion: apps/v1 kind: Deployment metadata: name: rabbitmq spec: replicas: 1 selector: matchLabels: app: rabbitmq template: metadata: labels: app: rabbitmq spec: nodeSelector: "kubernetes.io/os": linux containers: - name: rabbitmq image: mcr.microsoft.com/mirror/docker/library/rabbitmq:3.10-management-alpine ports: - containerPort: 5672 name: rabbitmq-amqp - containerPort: 15672 name: rabbitmq-http env: - name: RABBITMQ_DEFAULT_USER value: "username" - name: RABBITMQ_DEFAULT_PASS value: "password" resources: requests: cpu: 10m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: rabbitmq-enabled-plugins mountPath: /etc/rabbitmq/enabled_plugins subPath: enabled_plugins volumes: - name: rabbitmq-enabled-plugins configMap: name: rabbitmq-enabled-plugins items: - key: rabbitmq_enabled_plugins path: enabled_plugins --- apiVersion: v1 data: rabbitmq_enabled_plugins: | [rabbitmq_management,rabbitmq_prometheus,rabbitmq_amqp1_0]. kind: ConfigMap metadata: name: rabbitmq-enabled-plugins --- apiVersion: v1 kind: Service metadata: name: rabbitmq spec: selector: app: rabbitmq ports: - name: rabbitmq-amqp port: 5672 targetPort: 5672 - name: rabbitmq-http port: 15672 targetPort: 15672 type: ClusterIP --- apiVersion: apps/v1 kind: Deployment metadata: name: order-service spec: replicas: 1 selector: matchLabels: app: order-service template: metadata: labels: app: order-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: order-service image: ghcr.io/azure-samples/aks-store-demo/order-service:latest ports: - containerPort: 3000 env: - name: ORDER_QUEUE_HOSTNAME value: "rabbitmq" - name: ORDER_QUEUE_PORT value: "5672" - name: ORDER_QUEUE_USERNAME value: "username" - name: ORDER_QUEUE_PASSWORD value: "password" - name: ORDER_QUEUE_NAME value: "orders" - name: FASTIFY_ADDRESS value: "0.0.0.0" resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi initContainers: - name: wait-for-rabbitmq image: busybox command: ['sh', '-c', 'until nc -zv rabbitmq 5672; do echo waiting for rabbitmq; sleep 2; done;'] resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi --- apiVersion: v1 kind: Service metadata: name: order-service spec: type: ClusterIP ports: - name: http port: 3000 targetPort: 3000 selector: app: order-service --- apiVersion: apps/v1 kind: Deployment metadata: name: product-service spec: replicas: 1 selector: matchLabels: app: product-service template: metadata: labels: app: product-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: product-service image: ghcr.io/azure-samples/aks-store-demo/product-service:latest ports: - containerPort: 3002 resources: requests: cpu: 1m memory: 1Mi limits: cpu: 1m memory: 7Mi --- apiVersion: v1 kind: Service metadata: name: product-service spec: type: ClusterIP ports: - name: http port: 3002 targetPort: 3002 selector: app: product-service --- apiVersion: apps/v1 kind: Deployment metadata: name: store-front spec: replicas: 1 selector: matchLabels: app: store-front template: metadata: labels: app: store-front spec: nodeSelector: "kubernetes.io/os": linux containers: - name: store-front image: ghcr.io/azure-samples/aks-store-demo/store-front:latest ports: - containerPort: 8080 name: store-front env: - name: VUE_APP_ORDER_SERVICE_URL value: "http://order-service:3000/" - name: VUE_APP_PRODUCT_SERVICE_URL value: "http://product-service:3002/" resources: requests: cpu: 1m memory: 200Mi limits: cpu: 1000m memory: 512Mi --- apiVersion: v1 kind: Service metadata: name: store-front spec: ports: - port: 80 targetPort: 8080 selector: app: store-front type: LoadBalancer
Untuk perincian file manifes YAML, lihat Manifes Penyebaran dan YAML.
Jika Anda membuat dan menyimpan file YAML secara lokal, maka Anda dapat mengunggah file manifes ke direktori default Anda di CloudShell dengan memilih tombol Unggah/Unduh file dan memilih file dari sistem file lokal Anda.
Sebarkan aplikasi menggunakan
kubectl apply
perintah dan tentukan nama manifes YAML Anda.kubectl apply -f aks-store-quickstart.yaml
Contoh output berikut menunjukkan penyebaran dan layanan:
deployment.apps/rabbitmq created service/rabbitmq created deployment.apps/order-service created service/order-service created deployment.apps/product-service created service/product-service created deployment.apps/store-front created service/store-front created
Uji aplikasi
Ketika aplikasi berjalan, layanan Kubernetes mengekspos front end aplikasi ke internet. Diperlukan beberapa menit untuk menyelesaikan proses ini.
Periksa status pod yang disebarkan menggunakan
kubectl get pods
perintah . Buat semua pod sebelumRunning
melanjutkan.kubectl get pods
Periksa alamat IP publik untuk aplikasi store-front. Pantau kemajuan menggunakan perintah
kubectl get service
dengan argumen--watch
.kubectl get service store-front --watch
Output EXTERNAL-IP untuk layanan awalnya
store-front
ditampilkan sebagai tertunda:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4m
Saat alamat IP EKSTERNAL berubah dari tertunda menjadi alamat IP publik yang sebenarnya, gunakan
CTRL-C
untuk menghentikan proses pemantauankubectl
.Output contoh berikut menunjukkan alamat IP publik yang valid yang ditetapkan ke layanan:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5m
Buka browser web ke alamat IP eksternal layanan Anda untuk melihat aplikasi Azure Store beraksi.
Membersihkan sumber daya
Menghapus sumber daya AKS
Ketika Anda tidak lagi membutuhkan sumber daya yang dibuat melalui Terraform, lakukan langkah-langkah berikut:
Jalankan terraform plan dan tentukan bendera
destroy
.terraform plan -destroy -out main.destroy.tfplan
Poin utama:
- Perintah
terraform plan
membuat rencana eksekusi, tetapi tidak menjalankannya. Perintah ini justru menentukan tindakan yang diperlukan untuk membuat konfigurasi yang ditentukan dalam file konfigurasi Anda. Pola ini memungkinkan Anda memastikan apakah rencana eksekusi telah sesuai dengan ekspektasi Anda sebelum membuat perubahan pada sumber daya aktual. - Parameter
-out
opsional memungkinkan Anda menentukan file output untuk rencana. Menggunakan parameter-out
memastikan bahwa rencana yang Anda tinjau benar-benar sesuai dengan yang diterapkan.
- Perintah
Jalankan terraform apply untuk menerapkan rencana eksekusi.
terraform apply main.destroy.tfplan
Menghapus perwakilan layanan
Dapatkan ID perwakilan layanan menggunakan perintah berikut.
sp=$(terraform output -raw sp)
Hapus perwakilan layanan menggunakan perintah az ad sp delete .
az ad sp delete --id $sp
- Menginstal Azure Developer CLI (AZD)
- Menginstal dan mengonfigurasi Terraform.
- Anda dapat meninjau kode aplikasi yang digunakan dalam repositori Azure-Samples/aks-store-demo.
Mengkloning templat Azure Developer CLI
Azure Developer CLI memungkinkan Anda mengunduh sampel dengan cepat dari repositori Azure-Samples . Dalam mulai cepat kami, Anda mengunduh aks-store-demo
aplikasi. Untuk informasi selengkapnya tentang kasus penggunaan umum, lihat azd
gambaran umum.
Kloning templat demo penyimpanan AKS dari repositori Azure-Samples menggunakan
azd init
perintah dengan--template
parameter .azd init --template Azure-Samples/aks-store-demo
Masukkan nama lingkungan untuk proyek Anda yang hanya menggunakan karakter alfanumerik dan tanda hubung, seperti aks-terraform-1.
Enter a new environment name: aks-terraform-1
Masuk ke akun Azure Cloud Anda
azd
Templat berisi semua kode yang diperlukan untuk membuat layanan, tetapi Anda perlu masuk ke akun Azure Anda untuk menghosting aplikasi di AKS.
Masuk ke akun Anda menggunakan
azd auth login
perintah .azd auth login
Salin kode perangkat yang muncul di output dan tekan enter untuk masuk.
Start by copying the next code: XXXXXXXXX Then press enter and continue to log in from your browser...
Penting
Jika Anda menggunakan komputer virtual di luar jaringan atau GitHub Codespace, kebijakan keamanan Azure tertentu menyebabkan konflik saat digunakan untuk masuk dengan
azd auth login
. Jika Anda mengalami masalah di sini, Anda dapat mengikuti solusi azd auth yang disediakan, yang melibatkan penggunaancurl
permintaan ke URL localhost tempat Anda dialihkan setelah menjalankanazd auth login
.Autentikasi dengan kredensial Anda di halaman masuk organisasi Anda.
Konfirmasikan bahwa Anda mencoba menyambungkan dari Azure CLI.
Verifikasi pesan "Autentikasi kode perangkat selesai. Masuk ke Azure." muncul di terminal asli Anda.
Waiting for you to complete authentication in the browser... Device code authentication completed. Logged in to Azure.
solusi azd auth
Solusi ini mengharuskan Anda menginstal Azure CLI .
Buka jendela terminal dan masuk dengan Azure CLI menggunakan
az login
perintah dengan parameter yang--scope
diatur kehttps://graph.microsoft.com/.default
.az login --scope https://graph.microsoft.com/.default
Anda harus diarahkan ke halaman autentikasi di tab baru untuk membuat token akses browser, seperti yang ditunjukkan dalam contoh berikut:
https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?clientid=<your_client_id>.
Salin URL localhost halaman web yang Anda terima setelah mencoba masuk dengan
azd auth login
.Di jendela terminal baru, gunakan permintaan berikut
curl
untuk masuk. Pastikan Anda mengganti<localhost>
tempat penampung dengan URL localhost yang Anda salin di langkah sebelumnya.curl <localhost>
Login yang berhasil menghasilkan halaman web HTML, seperti yang ditunjukkan dalam contoh berikut:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta http-equiv="refresh" content="60;url=https://docs.microsoft.com/cli/azure/"> <title>Login successfully</title> <style> body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } code { font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; display: inline-block; background-color: rgb(242, 242, 242); padding: 12px 16px; margin: 8px 0px; } </style> </head> <body> <h3>You have logged into Microsoft Azure!</h3> <p>You can close this window, or we will redirect you to the <a href="https://docs.microsoft.com/cli/azure/">Azure CLI documentation</a> in 1 minute.</p> <h3>Announcements</h3> <p>[Windows only] Azure CLI is collecting feedback on using the <a href="https://learn.microsoft.com/windows/uwp/security/web-account-manager">Web Account Manager</a> (WAM) broker for the login experience.</p> <p>You may opt-in to use WAM by running the following commands:</p> <code> az config set core.allow_broker=true<br> az account clear<br> az login </code> </body> </html>
Tutup terminal saat ini dan buka terminal asli. Anda akan melihat daftar JSON langganan Anda.
id
Salin bidang langganan yang ingin Anda gunakan.Atur
az account set
langganan Anda menggunakan perintah .az account set --subscription <subscription_id>
Membuat dan menyebarkan sumber daya untuk kluster Anda
Untuk menyebarkan aplikasi, Anda menggunakan azd up
perintah untuk membuat semua objek yang diperlukan untuk menjalankan aplikasi AKS Store.
- File
azure.yaml
mendefinisikan status kluster yang diinginkan, seperti gambar kontainer mana yang akan diambil dan menyertakan penyebaran dan layanan Kubernetes berikut:
- Simpan depan: Aplikasi web bagi pelanggan untuk melihat produk dan melakukan pemesanan.
- Layanan produk: Menampilkan informasi produk.
- Layanan pesanan: Menempatkan pesanan.
- Rabbit MQ: Antrean pesan untuk antrean pesanan.
Catatan
Kami tidak menyarankan untuk menjalankan kontainer stateful, seperti Rabbit MQ, tanpa penyimpanan persisten untuk produksi. Ini digunakan di sini untuk kesederhanaan, tetapi sebaiknya gunakan layanan terkelola, seperti Azure Cosmos DB atau Azure Bus Layanan.
Menyebarkan sumber daya aplikasi
azd
Templat untuk mulai cepat ini membuat grup sumber daya baru dengan kluster AKS dan Azure Key Vault. Brankas kunci menyimpan rahasia klien dan menjalankan layanan di pets
namespace layanan.
Buat semua sumber daya aplikasi menggunakan
azd up
perintah .azd up
azd up
menjalankan semua kait di dalamazd-hooks
folder untuk melakukan pra-pendaftaran, provisi, dan menyebarkan layanan aplikasi.Kustomisasi kait untuk menambahkan kode kustom ke
azd
dalam tahap alur kerja. Untuk informasi selengkapnya, lihatazd
referensi hook .Pilih langganan Azure untuk penggunaan tagihan Anda.
? Select an Azure Subscription to use: [Use arrows to move, type to filter] > 1. My Azure Subscription (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
Pilih wilayah untuk menyebarkan aplikasi Anda.
Select an Azure location to use: [Use arrows to move, type to filter] 1. (South America) Brazil Southeast (brazilsoutheast) 2. (US) Central US (centralus) 3. (US) East US (eastus) > 43. (US) East US 2 (eastus2) 4. (US) East US STG (eastusstg) 5. (US) North Central US (northcentralus) 6. (US) South Central US (southcentralus)
azd
secara otomatis menjalankan kait praprovisi dan pascaprovisi untuk membuat sumber daya untuk aplikasi Anda. Diperlukan beberapa menit untuk menyelesaikan proses ini. Setelah selesai, Anda akan melihat output yang mirip dengan contoh berikut:SUCCESS: Your workflow to provision and deploy to Azure completed in 9 minutes 40 seconds.
Hasilkan paket Terraform
Dalam templat Pengembang Azure Anda, /infra/terraform
folder berisi semua kode yang digunakan untuk menghasilkan paket Terraform.
Terraform menyebarkan dan menjalankan perintah menggunakan terraform apply
sebagai bagian azd
dari langkah provisi. Setelah selesai, Anda akan melihat output yang mirip dengan contoh berikut:
Plan: 5 to add, 0 to change, 0 to destroy.
...
Saved the plan to: /workspaces/aks-store-demo/.azure/aks-terraform-azd/infra/terraform/main.tfplan
Uji aplikasi
Ketika aplikasi berjalan, layanan Kubernetes mengekspos front end aplikasi ke internet. Diperlukan beberapa menit untuk menyelesaikan proses ini.
Atur namespace Anda sebagai namespace
pets
demo menggunakankubectl set-context
perintah .kubectl config set-context --current --namespace=pets
Periksa status pod yang disebarkan menggunakan
kubectl get pods
perintah . Pastikan semua pod sebelumRunning
melanjutkan.kubectl get pods
Periksa alamat IP publik untuk aplikasi store-front dan pantau kemajuan menggunakan
kubectl get service
perintah dengan--watch
argumen .kubectl get service store-front --watch
Output EXTERNAL-IP untuk layanan awalnya
store-front
ditampilkan sebagai tertunda:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4m
Saat alamat IP EKSTERNAL berubah dari tertunda menjadi alamat IP publik yang sebenarnya, gunakan
CTRL-C
untuk menghentikan proses pemantauankubectl
.Contoh output berikut menunjukkan alamat IP publik yang valid yang ditetapkan ke layanan:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5m
Buka browser web ke alamat IP eksternal layanan Anda untuk melihat aplikasi Azure Store beraksi.
Menghapus kluster
Setelah selesai dengan mulai cepat, bersihkan sumber daya yang tidak perlu untuk menghindari biaya Azure.
Hapus semua sumber daya yang dibuat dalam mulai cepat menggunakan
azd down
perintah .azd down
Konfirmasikan keputusan Anda untuk menghapus semua sumber daya yang digunakan dari langganan Anda dengan mengetik
y
dan menekanEnter
.? Total resources to delete: 14, are you sure you want to continue? (y/N)
Izinkan pembersihan untuk menggunakan kembali variabel mulai cepat jika berlaku dengan mengetik
y
dan menekanEnter
.[Warning]: These resources have soft delete enabled allowing them to be recovered for a period or time after deletion. During this period, their names can't be reused. In the future, you can use the argument --purge to skip this confirmation.
Memecahkan masalah Terraform pada Azure
Memecahkan masalah umum saat menggunakan Terraform di Azure.
Langkah berikutnya
Dalam panduan mulai cepat ini, Anda menerapkan kluster Kubernetes dan kemudian menerapkan aplikasi multi-kontainer sederhana ke dalamnya. Aplikasi sampel ini hanya untuk tujuan demo dan tidak mewakili semua praktik terbaik untuk aplikasi Kubernetes. Untuk panduan tentang membuat solusi lengkap dengan AKS untuk produksi, lihat panduan solusi AKS.
Untuk mempelajari lebih lanjut tentang AKS dan menelusuri contoh kode-ke-penyebaran lengkap, lanjutkan ke tutorial kluster Kubernetes.
Azure Kubernetes Service