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 şunların nasıl yapılacağını öğreneceksiniz:
- Azure CLI kullanarak OS Guard (önizleme) AKS kümesiyle bir Azure Linux oluşturun.
- kubectl kullanarak kümeye bağlanın.
- Kümede örnek bir çok kapsayıcılı uygulama çalıştırın.
Note
OS Guard (önizleme) içeren Azure Linux, Azure Container Linux (ACL) ile değiştiriliyor.
Azure Container Linux, Azure Kubernetes Service (AKS) için uzun vadeli, değişmez, kapsayıcılar için optimize edilmiş Linux işletim sistemidir (OS). Kapsayıcılı iş yüklerini büyük ölçekte çalıştırmak için tasarlanmış güvenli, en düşük ve operasyonel tutarlı bir konak işletim sistemi sağlar.
Daha fazla bilgi için bkz. Azure Container Linux'a (ACL) genel bakış.
Prerequisites
-
Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.
Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için Azure Cloud Shell Hızlı Başlangıç - Bash kısmına bakın.
CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanı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. - İstendiğinde, 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ü sürümü ve bağımlı kitaplıkları bulmak için
az versionçalıştırın. En son sürüme yükseltmek içinaz upgradeçalıştırın.
- Yerel yükleme kullanıyorsanız
OS Guard’lı Azure Linux için dikkat edilmesi gerekenler ve sınırlamalar
Başlamadan önce, OS Guard ile Azure Linux için aşağıdaki önemli noktaları ve sınırlamaları gözden geçirin (önizleme):
- OS Guard ile Azure Linux için Kubernetes sürüm 1.32.0 veya üzeri gereklidir.
- OS Guard görüntülerine sahip tüm Azure Linux'ta Federal Bilgi İşlem Standardı (FIPS) ve Güvenilen Başlatma etkindir.
- Azure CLI ve ARM şablonları önizlemede AKS üzerinde OS Guard ile Azure Linux için desteklenen tek dağıtım yöntemleridir. PowerShell ve Terraform desteklenmez.
- Arm64 görüntüleri, önizlemede OS Guard ile Azure Linux'un AKS üzerinde desteklenmemektedir.
-
NodeImageveNone, AKS üzerinde OS Guard ile linux Azure için desteklenen tek işletim sistemi (OS) yükseltme kanallarıdir.UnmanagedveSecurityPatchsabit /usr dizini nedeniyle OS Guard ile Azure Linux ile uyumlu değildir. - Nesne Akışı desteklenmez.
- Pod Kapsülleme desteklenmez.
- Gizli Sanal Makineler (CVM' ler) desteklenmez.
- 1. Nesil sanal makineler (VM) desteklenmez.
aks-preview Azure CLI uzantısını yükleme
Important
AKS önizleme özellikleri self servis ve kabul temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "mevcut olduğu şekilde" sağlanmakta olup, hizmet seviyesi anlaşmalarına ve sınırlı garantilere dahil edilmemektedir. AKS önizlemeleri, müşteri desteği ekibi tarafından maksimum çaba gösterilerek kısmen ele alınmaktadır. Bu nedenle, bu özellikler üretim kullanımı için tasarlanmamıştır. Daha fazla bilgi için aşağıdaki destek makalelerine bakın:
aks-preview komutunu kullanarak az extension add uzantısını yükleyin.
az extension add --name aks-preview
aks-preview komutunu kullanarak uzantıyı en son sürüme güncelleştirinaz extension update.
az extension update --name aks-preview
Özellik bayrağını AzureLinuxOSGuardPreview kaydetme
AzureLinuxOSGuardPreviewözellik bayrağınıaz feature registerkomutunu kullanarak kaydedin.az feature register --namespace "Microsoft.ContainerService" --name "AzureLinuxOSGuardPreview"Durumun Kayıtlı olarak gösterilmesi birkaç dakika sürer.
komutunu kullanarak
az feature showkayıt durumunu doğrulayın.az feature show --namespace "Microsoft.ContainerService" --name "AzureLinuxOSGuardPreview"Durum Kayıtlı olarak yansıtıldığında komutunu kullanarak
az provider registerkaynak sağlayıcısının kaydını yenileyin.az provider register --namespace "Microsoft.ContainerService"
Ortam değişkenlerini ayarlama
Her dağıtım için benzersiz kaynak adları oluşturmak için aşağıdaki ortam değişkenlerini ayarlayın.
<your-resource-group-name>, <your-region> ve <your-cluster-name> değerleini kendi değerlerinizle değiştirin. İsteğe bağlı olarak komutunu kullanarak openssl rand -hex 3 kaynak grubunuzun ve küme adlarınızın sonuna eklenecek rastgele bir dize oluşturabilirsiniz (örneğin, export RESOURCE_GROUP="myResourceGroup$RANDOM_ID").
# Create random string
export RANDOM_ID="$(openssl rand -hex 3)"
# Set environment variables
export RESOURCE_GROUP="<your-resource-group-name>"
export REGION="<your-region>"
export CLUSTER_NAME="<your-cluster-name>"
Bir kaynak grubu oluşturun
Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği mantıksal bir gruptur. Azure'de kaynak grubu oluştururken bir konum belirtmeniz gerekir. Bu konum, kaynak grubu meta verilerinizin depolama konumudur ve kaynak oluştururken başka bir bölge belirtmezseniz kaynaklarınızın Azure çalıştırıldığı konumdur.
az group create komutunu kullanarak bir kaynak grubu oluşturun.
az group create --name $RESOURCE_GROUP --location $REGION
Örnek çıkış:
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/$RESOURCE_GROUPxxxxxx",
"location": "$REGION",
"managedBy": null,
"name": "$RESOURCE_GROUPxxxxxx",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
OS Guard kümesi ile Azure Linux oluşturma
Azure Linux'i OS Guard görüntüsü ile sağlamak için az aks create komutunu --os-sku parametresiyle kullanarak bir AKS kümesi oluşturun.
az aks create --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --os-sku AzureLinuxOSGuard --node-osdisk-type Managed --enable-fips-image --enable-secure-boot --enable-vtpm
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 $RESOURCE_GROUP --name $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 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: LoadBalancerYAML dosyasını yerel olarak oluşturur ve kaydederseniz, Dosyaları Karşıya Yükle/İndir düğmesini seçip yerel dosya sisteminizden dosyayı seçerek bildirim dosyasını CloudShell'deki varsayılan dizininize yükleyebilirsiniz.
komutunu 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
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
curl $IP_ADDRESS
Sonuçlar:
<!doctype html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="icon" href="/favicon.ico">
<title>store-front</title>
<script defer="defer" src="/js/chunk-vendors.df69ae47.js"></script>
<script defer="defer" src="/js/app.7e8cfbb2.js"></script>
<link href="/css/app.a5dc49f6.css" rel="stylesheet">
</head>
<body>
<div id="app"></div>
</body>
</html>
echo "You can now visit your web server at $IP_ADDRESS"
Kümeyi sil
Artık bunlara ihtiyacınız yoksa, Azure ücretlerinden kaçınmak için gereksiz kaynakları temizleyebilirsiniz.
az group delete komutunu kullanarak Azure kaynak grubunu ve tüm ilgili kaynakları silin.
az group delete --name $RESOURCE_GROUP --yes --no-wait
İlgili içerik
Bu hızlı başlangıçta, OS Guard kümesi ile bir Azure Linux dağıttınız. OS Guard ile linux Azure hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın: