Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu hızlı başlangıçta, düğüm işletim sistemi (OS) olarak Azure Container Linux (ACL) çalıştıran bir Azure Kubernetes Service (AKS) kümesi oluşturmak için Azure CLI kullanacaksınız. Kümeyi dağıttıktan sonra, kubectl kullanarak kümeye bağlanır ve ACL düğümlerinin beklendiği gibi çalıştığını doğrularsınız.
Dikkat edilmesi gerekenler ve sınırlamalar
Başlamadan önce ACL için aşağıdaki önemli noktaları ve sınırlamaları gözden geçirin:
- ACL, AKS v1.34'den itibaren genel olarak kullanılabilir.
- ACL, Güvenli Önyükleme ve vTPM ile Güvenilir Başlatma gerektirir. Güvenilir Olmayan Başlatma değişkenleri kullanılamaz.
- Arm64'te ACL, Güvenilir Başlatma uyumluluğunu etkinleştirmek için Cobalt tabanlı (v6) SKU'lar gerektirir.
-
NodeImageveNonedesteklenen tek işletim sistemi yükseltme kanallarıdır.UnmanagedveSecurityPatch,/usrdizininin değiştirilemez olması nedeniyle ACL ile uyumsuzdur. - Nesne Akışı desteklenmez.
- Pod Kapsülleme desteklenmez.
- Gizli Sanal Makineler (CVM' ler) desteklenmez.
- 1. nesil VM'ler desteklenmez.
- FIPS özellikli düğümler henüz desteklenmiyor.
Prerequisites
Note
Bu hızlı başlangıçtaki komutları çalıştırmak için Azure Cloud Shell veya Azure CLI yerel yüklemesini kullanabilirsiniz.
- Azure CLI yerel olarak çalıştırıyorsanız Azure CLI yükleyin. Windows veya macOS üzerinde çalışıyorsanız, Azure CLI'yi bir Docker konteynerinde çalıştırmayı düşünün. Daha fazla bilgi için Azure CLI'nin bir Docker konteynerında nasıl çalıştırılacağını inceleyin.
- Yerel yükleme kullanıyorsanız
az loginkomutunu kullanarak Azure CLI oturum açın. Kimlik doğrulama işlemini tamamlamak için, terminalinizde görüntülenen adımları takip edin. Diğer oturum açma seçenekleri için bkz. Azure CLI ile oturum açma. - İstenirse ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için Azure CLI ile uzantıları kullanma başlığına bakın.
- Yüklü Azure CLI sürümünü ve bağımlı kitaplıkları bulmak için
az versionkomutunu kullanın. Azure Container Linux için Azure CLI sürüm 2.86.0 veya üzeri gerekir. En son sürüme yükseltmek için komutunu kullanınaz upgrade. - Gerekirse, Azure aboneliğinizde Microsoft.ContainerService kaynak sağlayıcısını kaydedin.
Microsoft.ContainerService kaynak sağlayıcısını kaydedin
Kaynak sağlayıcılarını Azure aboneliğinize kaydetmeniz gerekebilir. komutunu kullanarak az provider show kayıt durumunu denetleyin.
az provider show --namespace Microsoft.ContainerService --query registrationState
Gerekirse, az provider register komutunu kullanarak kaynak sağlayıcısını kaydedin.
az provider register --namespace Microsoft.ContainerService
Bir kaynak grubu oluşturun
Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği mantıksal bir gruptur. Kaynak grubu oluştururken bir konum belirtmeniz gerekir. Bu konum:
- Kaynak grubu meta verilerinizin depolama konumu.
- Kaynak oluştururken başka bir bölge belirtmezseniz kaynaklarınızın Azure'da çalıştırılacağı yer.
az group create komutunu kullanarak bir kaynak grubu oluşturun. Aşağıdaki örnek kaynak grubu adı, bölgesi ve AKS kümesi adı için ortam değişkenlerini ayarlar ve ardından belirtilen konumda bir kaynak grubu oluşturur. Ortam değişkenlerinin değerlerini tercih ettiğiniz adlarla ve bölgeyle değiştirebilirsiniz.
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
Örnek çıkış:
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myACLResourceGroup",
"location": "westus",
"managedBy": null,
"name": "myACLResourceGroup",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
ACL kümesi oluşturma
--os-sku AzureContainerLinux parametresine sahip az aks create komutunu kullanarak, ACL görüntüsüyle sağlanan bir AKS kümesi oluşturun.
az aks create \
--resource-group $MY_RESOURCE_GROUP_NAME \
--name $MY_AKS_CLUSTER_NAME \
--os-sku AzureContainerLinux \
--node-count 3 \
--generate-ssh-keys
Birkaç dakika sonra komut tamamlanıp kümeyle ilgili JSON biçimli bilgileri döndürür.
Kümeye bağlanma
Kubernetes kümesini yönetmek için Kubernetes komut satırı istemcisini kubectlkullanın. Azure Cloud Shell kullanıyorsanız kubectl zaten yüklüdür.
kubectl yerel olarak yüklemek için az aks install-cli komutunu kullanın.
kubectl'yi,az aks get-credentialskomutunu kullanarak Kubernetes kümenize bağlanmak için yapılandırın. Bu komut, kimlik bilgilerini indirir ve Kubernetes CLI'yi bunları kullanacak şekilde yapılandırır.az aks get-credentials --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_AKS_CLUSTER_NAMEKümelenize olan bağlantınızı
kubectl getkomutunu kullanarak doğrulayın. Bu komut, küme düğümlerinin bir listesini döndürür.kubectl get nodes
Uygulamayı dağıt
Uygulamayı dağıtmak için bir bildirim dosyası kullanarak AKS Store uygulamasını çalıştırmak için gereken tüm nesneleri oluşturursunuz. Kubernetes bildirim dosyası, hangi kapsayıcı görüntülerinin çalıştırıldığı gibi kümenin istenen durumunu tanımlar. Bildirim aşağıdaki Kubernetes dağıtımlarını ve hizmetlerini içerir:
- Mağaza ön: Müşterilerin ürünleri görüntülemesi ve sipariş vermesi için web uygulaması.
- Ürün hizmeti: Ürün bilgilerini gösterir.
- Sipariş hizmeti: Sipariş verir.
- Rabbit MQ: Sipariş kuyruğu için ileti kuyruğu.
Note
Üretim için kalıcı depolama olmadan Rabbit MQ gibi durum bilgisi olan kapsayıcıları çalıştırmanızı önermiyoruz. Bunlar burada kolaylık sağlamak için kullanılır, ancak Azure Cosmos DB veya Azure Service Bus gibi yönetilen hizmetleri kullanmanızı öneririz.
Adlı
aks-store-quickstart.yamlbir dosya oluşturun ve aşağıdaki bildirimde kopyalayın: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: LoadBalancerkomutunu kullanarak uygulamayı dağıtın
kubectl applyve YAML bildiriminizin adını belirtin.kubectl apply -f aks-store-quickstart.yaml
Uygulamayı test et
Genel IP adresini veya uygulama URL'sini ziyaret ederek uygulamanın çalıştığını doğrulayabilirsiniz.
Aşağıdaki komutları kullanarak uygulama URL'sini alın:
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"
Kümeyi sil
Öğreticileri tamamlamayı planlamıyorsanız, Azure ücretlerinden kaçınmak için gereksiz kaynakları kaldırın.
komutunu kullanarak az group delete kaynak grubunu, kapsayıcı hizmetini ve tüm ilgili kaynakları kaldırın.
az group delete --name $MY_RESOURCE_GROUP_NAME --yes --no-wait
İlgili içerik
AKS için ACL hakkında daha fazla bilgi edinmek için bkz. Azure Kubernetes Service (AKS) için Azure Container Linux (ACL) nedir?