Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Azure Kubernetes Service (AKS) merupakan layanan Kube terkelola yang memungkinkan Anda menyebarkan dan mengelola kluster dengan cepat. Dalam panduan kilat ini, Anda:
- Sebarkan kluster AKS menggunakan ekstensi Bicep Kubernetes (pratinjau).
- Jalankan aplikasi multi-container contoh dengan sekelompok layanan mikro dan antarmuka web yang mensimulasikan skenario ritel.
Penting
Ekstensi Bicep untuk Kubernetes saat ini sedang dalam tahap pratinjau. Anda dapat mengaktifkan fitur dari file konfigurasi Bicep dengan menambahkan:
{
"experimentalFeaturesEnabled": {
"extensibility": true,
}
}
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
Panduan awal ini mengasumsikan bahwa Anda memiliki pemahaman dasar mengenai konsep Kubernetes. Untuk informasi lebih, lihat konsep inti Kubernetes untuk Azure Kubernetes Service (AKS).
- Jika Anda tidak memiliki akun Azure, buat akun gratis sebelum memulai.
- Pastikan bahwa identitas yang Anda gunakan untuk membuat kluster Anda memiliki izin minimum yang sesuai. Untuk informasi selengkapnya tentang akses dan identitas AKS, lihat Opsi akses dan identitas untuk Azure Kubernetes Service (AKS).
Bicep adalah bahasa pemrogram khusus domain (DSL) yang menggunakan sintaks deklaratif untuk menyebarkan sumber daya Azure. Bicep menyediakan sintaks yang ringkas, keamanan tipe yang andal, dan dukungan untuk pemakaian ulang kode. Bicep menawarkan pengalaman penulisan terbaik untuk solusi infrastructure-as-code di Azure.
- Untuk menyiapkan lingkungan untuk pengembangan Bicep, lihat Pasang alat Bicep. Setelah menyelesaikan langkah-langkahnya, Anda memiliki Visual Studio Code dan ekstensi Bicep. Anda juga memiliki versi Azure CLI terbaru atau modul Azure PowerShell terbaru.
- Untuk membuat kluster AKS menggunakan file Bicep, Anda menyediakan kunci umum SSH. Jika Anda memerlukan sumber daya ini, lihat bagian berikut. Jika tidak, langsung ke Meninjau file Bicep.
- Untuk menyebarkan file Bicep, Anda memerlukan akses tulis pada sumber daya yang Anda sebarkan dan akses ke semua operasi pada
Microsoft.Resources/deployments
jenis sumber daya. Misalnya, untuk menyebarkan mesin virtual, Anda memerlukan izinMicrosoft.Compute/virtualMachines/write
danMicrosoft.Resources/deployments/*
. Untuk daftar peran dan izin, lihat Peran bawaan Azure.
Membuat pasangan kunci SSH
Buka https://shell.azure.com untuk membuka Cloud Shell di browser Anda.
Buat pasangan kunci SSH menggunakan perintah az sshkey create Azure CLI atau perintah
ssh-keygen
.# Create an SSH key pair using Azure CLI az sshkey create --name "mySSHKey" --resource-group "myResourceGroup" # Create an SSH key pair using ssh-keygen ssh-keygen -t rsa -b 4096
Untuk mengetahui informasi selengkapnya tentang membuat kunci SSH, lihat Membuat dan mengelola kunci SSH untuk autentikasi di Azure.
Tinjauan file Bicep
File Bicep yang digunakan untuk membuat kluster AKS berasal dari Azure Quickstart Templates. Untuk sampel AKS lainnya, lihat Template Langsung AKS.
@description('The name of the Managed Cluster resource.')
param clusterName string = 'aks101cluster'
@description('The location of the Managed Cluster resource.')
param location string = resourceGroup().location
@description('Optional DNS prefix to use with hosted Kubernetes API server FQDN.')
param dnsPrefix string
@description('Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.')
@minValue(0)
@maxValue(1023)
param osDiskSizeGB int = 0
@description('The number of nodes for the cluster.')
@minValue(1)
@maxValue(50)
param agentCount int = 3
@description('The size of the Virtual Machine.')
param agentVMSize string = 'standard_d2s_v3'
@description('User name for the Linux Virtual Machines.')
param linuxAdminUsername string
@description('Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example \'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm\'')
param sshRSAPublicKey string
resource aks 'Microsoft.ContainerService/managedClusters@2024-02-01' = {
name: clusterName
location: location
identity: {
type: 'SystemAssigned'
}
properties: {
dnsPrefix: dnsPrefix
agentPoolProfiles: [
{
name: 'agentpool'
osDiskSizeGB: osDiskSizeGB
count: agentCount
vmSize: agentVMSize
osType: 'Linux'
mode: 'System'
}
]
linuxProfile: {
adminUsername: linuxAdminUsername
ssh: {
publicKeys: [
{
keyData: sshRSAPublicKey
}
]
}
}
}
}
output controlPlaneFQDN string = aks.properties.fqdn
Sumber daya yang ditentukan dalam file Bicep adalah Microsoft.ContainerService/managedClusters.
Simpan salinan file sebagai main.bicep
ke komputer lokal Anda.
Menambahkan definisi aplikasi
Untuk menyebarkan aplikasi, Anda menggunakan file manifes untuk membuat semua objek yang diperlukan untuk menjalankan aplikasi AKS Store. File manifes Kubernetes mendefinisikan status klaster yang diinginkan, seperti citra 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 pemesanan: Menempatkan pesanan.
- Rabbit MQ: Antrian pesan untuk antrean pesanan.
Catatan
Kami tidak merekomendasikan untuk menjalankan kontainer stateful, seperti Rabbit MQ, tanpa menggunakan 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
di folder yang sama denganmain.bicep
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 manifest YAML, lihat Penerapan dan manifes 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.
Buka
main.bicep
di Visual Studio Code.Tekan Ctrl+Shift+P untuk membuka Palet Perintah.
Cari bicep, lalu pilih Manifes Kubernetes: Impor.
Pilih
aks-store-quickstart.yaml
dari petunjuk. Proses ini membuataks-store-quickstart.bicep
file di folder yang sama.Buka
main.bicep
dan tambahkan Bicep berikut di akhir file untuk mereferensikan modul yang baru dibuataks-store-quickstart.bicep
:module kubernetes './aks-store-quickstart.bicep' = { name: 'buildbicep-deploy' params: { kubeConfig: aks.listClusterAdminCredential().kubeconfigs[0].value } }
Simpan keduanya
main.bicep
danaks-store-quickstart.bicep
.
Menerapkan file Bicep
Buat grup sumber daya Azure menggunakan perintah az group create .
az group create --name myResourceGroup --location eastus
Sebarkan file Bicep dengan menggunakan perintah az deployment group create.
az deployment group create --resource-group myResourceGroup --template-file main.bicep --parameters clusterName=<cluster-name> dnsPrefix=<dns-previs> linuxAdminUsername=<linux-admin-username> sshRSAPublicKey='<ssh-key>'
Berikan nilai berikut dalam perintah:
- Nama kluster: Masukkan nama unik untuk kluster AKS, seperti myAKSCluster.
- Awalan DNS: Masukkan awalan DNS unik untuk kluster Anda, seperti myakscluster.
- Nama Pengguna Admin Linux: Masukkan nama pengguna untuk terhubung menggunakan SSH, seperti azureuser.
- Kunci Publik SSH RSA: Salin dan tempel bagian publik dari pasangan kunci SSH Anda (secara default, konten ~/.ssh/id_rsa.pub).
Perlu waktu beberapa menit untuk membuat kluster AKS. Tunggu kluster berhasil disebarkan sebelum Anda melanjutkan ke langkah berikutnya.
Memvalidasi penyebaran Bicep
Masuk ke portal Azure.
Pada menu portal Azure atau dari halaman Beranda, navigasikan ke kluster AKS Anda.
Di bawah sumber daya Kubernetes, pilih Layanan dan masukan.
Temukan layanan toko depan dan salin nilai untuk IP Eksternal.
Buka browser web ke alamat IP eksternal layanan Anda untuk melihat aplikasi Azure Store beraksi.
Menghapus kluster
Jika Anda tidak berencana untuk melalui tutorial AKS, bersihkan sumber daya yang tidak perlu untuk menghindari biaya Azure.
Hapus grup sumber daya, layanan kontainer, dan semua sumber daya terkait menggunakan perintah az group delete .
az group delete --name myResourceGroup --yes --no-wait
Catatan
Kluster AKS dibuat dengan identitas terkelola yang ditetapkan sistem, opsi identitas default yang digunakan dalam panduan cepat ini. Platform mengelola identitas ini sehingga Anda tidak perlu menghapusnya secara manual.
Langkah berikutnya
Dalam panduan cepat mulai ini, Anda menerapkan kluster Kubernetes dan kemudian menerapkan aplikasi multi-kontainer sederhana padanya. 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