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.
Dalam panduan mulai cepat ini, Anda menggunakan Azure CLI untuk membuat kluster Azure Kubernetes Service (AKS) yang menggunakan Azure Container Linux (ACL) sebagai sistem operasi (OS) node. Setelah menyebarkan kluster, Anda menyambungkannya menggunakan kubectl dan memverifikasi bahwa simpul ACL berjalan seperti yang diharapkan.
Pertimbangan dan keterbatasan
Sebelum memulai, tinjau pertimbangan dan batasan berikut untuk ACL:
- ACL umumnya tersedia mulai AKS v1.34.
- ACL memerlukan Peluncuran Tepercaya dengan Boot Aman dan vTPM. Varian peluncuran non-tepercaya tidak tersedia.
- ACL di Arm64 memerlukan SKU berbasis Cobalt (v6) untuk mengaktifkan kompatibilitas Peluncuran Tepercaya.
-
NodeImagedanNonemerupakan satu-satunya saluran peningkatan 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
Note
Anda dapat menggunakan Azure Cloud Shell atau instalasi lokal Azure CLI untuk menjalankan perintah dalam panduan cepat ini.
- Jika Anda menjalankan Azure 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 Masuk dengan Azure CLI. - Jika diminta, instal ekstensi Azure CLI saat pertama kali digunakan. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan ekstensi dengan Azure CLI.
- Gunakan perintah
az versionuntuk menemukan versi Azure CLI dan pustaka dependen yang diinstal. Azure Container Linux memerlukan Azure CLI versi 2.86.0 atau yang lebih tinggi. Untuk meningkatkan ke versi terbaru, gunakanaz upgradeperintah . - Jika diperlukan, daftarkan penyedia sumber daya Microsoft.ContainerService pada langganan Azure Anda.
Daftarkan penyedia sumber daya Microsoft.ContainerService
Anda mungkin perlu mendaftarkan penyedia sumber daya di langganan Azure Anda. Periksa status pendaftaran menggunakan az provider show perintah .
az provider show --namespace Microsoft.ContainerService --query registrationState
Jika perlu, daftarkan penyedia sumber daya menggunakan az provider register perintah .
az provider register --namespace Microsoft.ContainerService
Buat grup sumber daya
Grup sumber daya Azure adalah grup logis tempat sumber daya Azure disebarkan dan dikelola. Saat membuat grup sumber daya, Anda perlu menentukan lokasi. Lokasi ini adalah:
- Lokasi penyimpanan metadata grup sumber daya Anda.
- Tempat sumber daya Anda akan berjalan di Azure jika Anda tidak menentukan wilayah lain saat membuat sumber daya.
Buat grup sumber daya menggunakan perintah az group create. Contoh berikut menetapkan variabel lingkungan untuk nama grup sumber daya, wilayah, dan nama kluster AKS, lalu membuat grup sumber daya di lokasi yang ditentukan. Anda dapat mengganti nilai variabel lingkungan dengan nama dan wilayah pilihan Anda sendiri.
export MY_RESOURCE_GROUP_NAME="myACLResourceGroup"
export REGION="westus"
export MY_AKS_CLUSTER_NAME="myACLCluster"
az group create --name $MY_RESOURCE_GROUP_NAME --location $REGION
Contoh output:
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myACLResourceGroup",
"location": "westus",
"managedBy": null,
"name": "myACLResourceGroup",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
Membuat kluster ACL
Buat kluster AKS menggunakan az aks create perintah dengan --os-sku AzureContainerLinux parameter untuk menyediakan kluster AKS dengan gambar ACL.
az aks create \
--resource-group $MY_RESOURCE_GROUP_NAME \
--name $MY_AKS_CLUSTER_NAME \
--os-sku AzureContainerLinux \
--node-count 3 \
--generate-ssh-keys
Setelah beberapa menit, perintah selesai dan kembalikan informasi berformat JSON tentang kluster.
Menyambungkan ke kluster
Untuk mengelola kluster Kubernetes, gunakan klien baris perintah Kubernetes, 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 $MY_RESOURCE_GROUP_NAME --name $MY_AKS_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:
- Simpan depan: Aplikasi web bagi pelanggan untuk melihat produk dan melakukan pemesanan.
- Layanan produk: Menampilkan informasi produk.
- Layanan Pemesanan : Mengurus pemesanan.
- Rabbit MQ: Antrean pesan untuk pemrosesan pesanan.
Note
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 Cosmos DB atau Azure Service Bus.
Buat file bernama
aks-store-quickstart.yamldan 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 --- 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: LoadBalancerSebarkan aplikasi menggunakan
kubectl applyperintah dan tentukan nama manifes YAML Anda.kubectl apply -f aks-store-quickstart.yaml
Uji aplikasi
Anda dapat memvalidasi bahwa aplikasi berjalan dengan mengunjungi alamat IP publik atau URL aplikasi.
Dapatkan URL aplikasi menggunakan perintah berikut:
runtime="5 minutes"
endtime=$(date -ud "$runtime" +%s)
while [[ $(date -u +%s) -le $endtime ]]
do
STATUS=$(kubectl get pods -l app=store-front -o 'jsonpath={..status.conditions[?(@.type=="Ready")].status}')
echo "Status: $STATUS"
if [ "$STATUS" == 'True' ]
then
export IP_ADDRESS=$(kubectl get service store-front --output 'jsonpath={..status.loadBalancer.ingress[0].ip}')
echo "Service IP Address: $IP_ADDRESS"
break
else
sleep 10
fi
done
echo "http://$IP_ADDRESS"
Hapus kluster tersebut
Jika Anda tidak berencana untuk melalui tutorial, bersihkan sumber daya yang tidak perlu untuk menghindari biaya Azure.
Hapus grup sumber daya, layanan kontainer, dan semua sumber daya terkait menggunakan az group delete perintah .
az group delete --name $MY_RESOURCE_GROUP_NAME --yes --no-wait
Konten terkait
Untuk mempelajari selengkapnya tentang ACL untuk AKS, lihat Apa Azure Container Linux (ACL) untuk Azure Kubernetes Service (AKS)?