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.
Mulai menggunakan Azure Container Linux (ACL) untuk AKS dengan menyebarkan kluster AKS menggunakan Azure CLI.
Dalam panduan memulai cepat ini, Anda mempelajari cara:
- Buat kluster AKS menggunakan ACL untuk AKS.
- Sebarkan kluster menggunakan Azure CLI.
- Jalankan contoh aplikasi multi-kontainer dengan sekumpulan microservices dan antarmuka depan web yang mensimulasikan skenario ritel.
Note
Artikel ini mencakup langkah-langkah untuk menyebarkan kluster dengan pengaturan default hanya untuk tujuan evaluasi. Sebelum Anda menyebarkan kluster siap produksi, kami sarankan Anda membiasakan diri dengan arsitektur referensi dasar kami untuk mempertimbangkan bagaimana kluster tersebut selaras dengan kebutuhan bisnis Anda.
Important
Jika Anda menggunakan Azure Container Linux (ACL) di AKS, pastikan Anda meninjau pertimbangan dan batasan berikut:
- ACL umumnya tersedia mulai AKS v1.34.
- ACL memerlukan Peluncuran Tepercaya dengan Boot Aman dan vTPM. Varian peluncuran nontepercaya tidak tersedia.
- ACL di Arm64 memerlukan SKU berbasis Cobalt (v6) untuk mengaktifkan kompatibilitas Peluncuran Tepercaya.
-
NodeImagedanNonemerupakan satu-satunya saluran peningkatan sistem operasi (OS) yang didukung.UnmanageddanSecurityPatchtidak kompatibel dengan ACL karena direktori yang tidak dapat/usrdiubah. - Artifact Streaming tidak didukung.
- Pod Sandboxing tidak didukung.
- Confidential Virtual Machines (CVM) tidak didukung.
- VM Generasi 1 tidak didukung.
Prerequisites
Panduan memulai cepat ini mengasumsikan bahwa Anda memiliki pemahaman dasar tentang 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.
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai menggunakan Azure Cloud Shell.
Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, instal Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
- Jika Anda menggunakan penginstalan lokal, masuk ke Azure CLI menggunakan perintah
az login. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Mengautentikasi ke Azure menggunakan Azure CLI. - Saat diminta, instal ekstensi Azure CLI saat pertama kali digunakan. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan dan mengelola ekstensi dengan Azure CLI.
- Anda memerlukan Azure CLI versi 2.86.0 atau yang lebih baru. Jalankan
az versionuntuk menemukan versi dan pustaka dependen yang diinstal. Untuk meningkatkan ke versi terbaru, jalankanaz upgrade.
- Jika Anda menggunakan penginstalan lokal, masuk ke Azure CLI menggunakan perintah
Pastikan identitas yang Anda gunakan untuk membuat kluster Anda memiliki izin minimum yang sesuai. Untuk informasi selengkapnya tentang akses dan identitas untuk AKS, lihat Opsi akses dan identitas untuk Azure Kubernetes Service (AKS).
Jika Anda memiliki beberapa langganan Azure, pilih ID langganan yang sesuai di mana sumber daya akan ditagihkan menggunakan perintah
az account set. Untuk informasi selengkapnya, lihat Cara mengelola langganan Azure – Azure CLI.Bergantung pada langganan Azure, Anda mungkin perlu meminta penambahan kuota vCPU. Untuk informasi selengkapnya, lihat Meningkatkan kuota vCPU VM-family.
Mendaftarkan penyedia sumber daya yang diperlukan
Anda mungkin perlu mendaftarkan penyedia sumber daya yang diperlukan, seperti Microsoft.ContainerService dalam langganan Azure Anda.
Periksa status pendaftaran
Periksa status pendaftaran menggunakan az provider show perintah .
az provider show --namespace Microsoft.ContainerService --query registrationState
Mendaftarkan penyedia sumber
Jika perlu, daftarkan penyedia sumber daya Microsoft.ContainerService menggunakan perintah az provider register.
az provider register --namespace Microsoft.ContainerService
Menentukan variabel lingkungan
Tentukan variabel lingkungan berikut untuk digunakan di seluruh panduan kilat ini. Anda dapat mengganti nilai dengan nama kustom Anda sendiri jika mau.
export RESOURCE_GROUP="myAKSResourceGroup"
export REGION="westus"
export CLUSTER_NAME="myAKSCluster"
Buat grup sumber daya
Grup sumber daya Azure adalah grup logis tempat sumber daya Azure disebarkan dan dikelola. Saat membuat grup sumber daya, Anda diminta untuk menentukan lokasi. Lokasi ini adalah lokasi penyimpanan metadata grup sumber daya Anda dan tempat sumber daya Anda berjalan di Azure jika Anda tidak menentukan wilayah lain selama pembuatan sumber daya.
Buat grup sumber daya menggunakan perintah az group create.
az group create \
--name $RESOURCE_GROUP \
--location $REGION
Contoh output:
{
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myAKSResourceGroup",
"location": "westus",
"managedBy": null,
"name": "myAKSResourceGroup",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
Membuat kluster AKS
Buat kluster AKS menggunakan perintah az aks create. Parameter --os-sku AzureContainerLinux mengonfigurasi kumpulan simpul sistem untuk menggunakan ACL sebagai OS simpul. Contoh berikut membuat kluster dengan satu simpul dan mengaktifkan identitas terkelola yang ditetapkan sistem:
az aks create \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--os-sku AzureContainerLinux \
--node-count 1 \
--generate-ssh-keys
Note
Saat Anda membuat kluster baru, AKS secara otomatis membuat grup sumber daya kedua untuk menyimpan sumber daya AKS. Untuk informasi selengkapnya, lihat Mengapa dua grup sumber daya dibuat dengan AKS?
Menyambungkan ke kluster
Untuk mengelola kluster Kube, gunakan klien baris perintah Kube, kubectl.
kubectl sudah diinstal jika Anda menggunakan Azure Cloud Shell. Untuk menginstal kubectl secara lokal, gunakan az aks install-cli perintah .
Konfigurasikan
kubectluntuk terhubung ke kluster Kubernetes menggunakan perintahaz aks get-credentials. Perintah ini mengunduh kredensial dan mengonfigurasi CLI Kubernetes agar menggunakannya.az aks get-credentials \ --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAMEVerifikasi koneksi ke kluster Anda menggunakan
kubectl getperintah . Perintah ini menampilkan daftar node kluster.kubectl get nodes
Menyebarkan aplikasi
Untuk menyebarkan aplikasi, Anda menggunakan file manifes untuk membuat semua objek yang diperlukan untuk menjalankan aplikasi AKS Store. File manifes Kubernetes menentukan status kluster yang diinginkan, seperti citra kontainer mana yang akan dijalankan. Manifes mencakup penyebaran dan layanan Kubernetes berikut:
- Tampilan toko: Aplikasi web bagi pelanggan untuk menjelajahi produk dan melakukan pemesanan.
- Layanan produk: Menampilkan informasi produk.
- Layanan pemesanan: Menempatkan pesanan.
-
RabbitMQ: Antrian pesan untuk pesanan.
Note
Kami tidak menyarankan untuk menjalankan kontainer stateful, seperti RabbitMQ, tanpa penyimpanan persisten untuk produksi. Kami menggunakannya di sini untuk kesederhanaan, tetapi sebaiknya gunakan layanan terkelola, seperti Azure Cosmos DB atau Azure Service Bus.
Buat file bernama aks-store-quickstart.yaml dan salin dalam manifes berikut:
apiVersion: apps/v1 kind: StatefulSet metadata: name: rabbitmq spec: serviceName: rabbitmq 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 startupProbe: httpGet: path: /health port: 3000 failureThreshold: 5 initialDelaySeconds: 20 periodSeconds: 10 readinessProbe: httpGet: path: /health port: 3000 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: httpGet: path: /health port: 3000 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 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 env: - name: AI_SERVICE_URL value: "http://ai-service:5001/" resources: requests: cpu: 1m memory: 1Mi limits: cpu: 2m memory: 20Mi readinessProbe: httpGet: path: /health port: 3002 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: httpGet: path: /health port: 3002 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 --- 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 startupProbe: httpGet: path: /health port: 8080 failureThreshold: 3 initialDelaySeconds: 5 periodSeconds: 5 readinessProbe: httpGet: path: /health port: 8080 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 3 livenessProbe: httpGet: path: /health port: 8080 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 --- apiVersion: v1 kind: Service metadata: name: store-front spec: ports: - port: 80 targetPort: 8080 selector: app: store-front type: LoadBalancerUntuk 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 Cloud Shell dengan memilih tombol Unggah/Unduh file dan memilih file dari sistem file lokal Anda.
Sebarkan aplikasi menggunakan
kubectl applyperintah dan tentukan nama manifes YAML Anda.kubectl apply -f aks-store-quickstart.yamlContoh 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 perintah
kubectl get pods. Pastikan semua pod berada dalam kondisiRunningsebelum melanjutkan.kubectl get podsPeriksa alamat IP publik untuk aplikasi.
store-frontPantau kemajuan menggunakan perintahkubectl get servicedengan argumen--watch.kubectl get service store-front --watchKeluaran EXTERNAL-IP untuk layanan
store-frontawalnya ditampilkan sebagai tertunda:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4mSaat alamat IP EKSTERNAL berubah dari tertunda menjadi alamat IP publik yang sebenarnya, gunakan
CTRL-Cuntuk menghentikan proses pemantauankubectl.Keluaran contoh berikut menunjukkan alamat IP publik yang valid yang diberikan 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 4h5mBuka browser web ke alamat IP eksternal layanan Anda untuk melihat aplikasi Azure Store beraksi.
Hapus kluster tersebut
Jika Anda tidak berencana untuk melalui tutorial AKS, bersihkan sumber daya yang tidak perlu untuk menghindari biaya penagihan Azure.
Hapus grup sumber daya, layanan kontainer, dan semua sumber daya terkait menggunakan az group delete perintah .
az group delete --name $RESOURCE_GROUP
Kluster AKS dibuat dengan identitas terkelola yang ditetapkan oleh sistem, yang merupakan opsi identitas default yang digunakan dalam panduan cepat ini. Platform mengelola identitas ini sehingga Anda tidak perlu menghapusnya secara manual.
Konten terkait
Dalam panduan mulai cepat ini, Anda menerapkan kluster AKS dengan ACL untuk AKS menggunakan Azure CLI. Untuk mempelajari selengkapnya tentang ACL untuk AKS, lihat Azure Container Linux (ACL) untuk Azure Kubernetes Service (AKS).