Öğretici: Azure Container Apps'te Azure Dosyalar birim bağlaması oluşturma
Azure Dosyalar depolama bağlama kullanarak kapsayıcı uygulamasında kalıcı depolamaya yazmayı öğrenin. Depolama bağlamaları hakkında daha fazla bilgi için bkz . Azure Container Apps'te depolama bağlamalarını kullanma.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Container Apps ortamı oluşturma
- Azure Depolama hesabı oluşturma
- Depolama hesabında dosya paylaşımı tanımlama
- Ortamı depolama dosya paylaşımına bağlama
- Depolama paylaşımını tek bir kapsayıcıya bağlama
- Web sitesi erişim günlüğünü görüntüleyerek depolama bağlamasını doğrulayın
Not
Azure Container Apps, SMB ve NFS protokollerini kullanarak dosya paylaşımlarını bağlamayı destekler. Bu öğreticide SMB protokolü kullanılarak bir Azure Dosyalar paylaşımının bağlanması gösterilmektedir. NFS paylaşımlarını bağlama hakkında daha fazla bilgi edinmek için bkz . Azure Container Apps'te depolama bağlamalarını kullanma.
Önkoşullar
Ortamı ayarlama
Aşağıdaki komutlar değişkenleri tanımlamanıza ve Container Apps uzantınızın güncel olduğundan emin olmanıza yardımcı olur.
Azure CLI'da oturum açın.
az login
İzleyebileceğiniz çeşitli komutlarda kullanılan ortam değişkenlerini ayarlayın.
RESOURCE_GROUP="my-container-apps-group" ENVIRONMENT_NAME="my-storage-environment" LOCATION="canadacentral"
Container Apps Azure CLI uzantısının en son sürümüne sahip olduğunuzdan emin olun.
az extension add -n containerapp --upgrade
Ad alanını
Microsoft.App
kaydedin.az provider register --namespace Microsoft.App
Daha önce kullanmadıysanız sağlayıcıyı
Microsoft.OperationalInsights
Azure İzleyici Log Analytics çalışma alanına kaydedin.az provider register --namespace Microsoft.OperationalInsights
Ortam oluşturun
Aşağıdaki adımlar bir kaynak grubu ve Container Apps ortamı oluşturur.
Kaynak grubu oluşturun.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"
Komut oluşturulduktan sonra bir "Başarılı" iletisi döndürür.
Bu öğreticinin sonunda, bu makale sırasında oluşturulan tüm hizmetleri kaldırmak için kaynak grubunu silebilirsiniz.
Container Apps ortamı oluşturun.
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --location "$LOCATION" \ --query "properties.provisioningState"
Komut oluşturulduktan sonra bir "Başarılı" iletisi döndürür.
Depolama bağlamaları bir Container Apps ortamıyla ilişkilendirilir ve tek tek kapsayıcı uygulamalarında yapılandırılır.
Depolama hesabı ayarlama
Ardından bir depolama hesabı oluşturun ve kapsayıcı uygulamasına bağlamak için bir dosya paylaşımı oluşturun.
Depolama hesabı adı tanımlayın.
Bu komut, benzersiz olduğundan emin olmak için depolama hesabı adına rastgele bir sonek oluşturur.
STORAGE_ACCOUNT_NAME="myacastorageaccount$RANDOM"
Bir Azure Depolama hesabı oluşturun.
az storage account create \ --resource-group $RESOURCE_GROUP \ --name $STORAGE_ACCOUNT_NAME \ --location "$LOCATION" \ --kind StorageV2 \ --sku Standard_LRS \ --enable-large-file-share \ --query provisioningState
Komut oluşturulduktan sonra bir "Başarılı" iletisi döndürür.
Dosya paylaşımı adı tanımlayın.
STORAGE_SHARE_NAME="myfileshare"
Azure Depolama dosya paylaşımını oluşturun.
az storage share-rm create \ --resource-group $RESOURCE_GROUP \ --storage-account $STORAGE_ACCOUNT_NAME \ --name $STORAGE_SHARE_NAME \ --quota 1024 \ --enabled-protocols SMB \ --output table
Depolama hesabı anahtarını alın.
STORAGE_ACCOUNT_KEY=`az storage account keys list -n $STORAGE_ACCOUNT_NAME --query "[0].value" -o tsv`
Depolama hesabı anahtarı, Container Apps ortamınızda depolama bağlantısı oluşturmak için gereklidir.
Depolama bağlama adını tanımlayın.
STORAGE_MOUNT_NAME="mystoragemount"
Bu değer, Container Apps ortamınızdan Azure Depolama hesabınıza depolama bağlama bağlantısını tanımlamak için kullanılan addır.
Depolama bağlamasını oluşturma
Artık kapsayıcı uygulaması yapılandırmasını depolama bağlamasını destekleyecek şekilde güncelleştirebilirsiniz.
Ortamda depolama bağlantısını oluşturun.
az containerapp env storage set \ --access-mode ReadWrite \ --azure-file-account-name $STORAGE_ACCOUNT_NAME \ --azure-file-account-key $STORAGE_ACCOUNT_KEY \ --azure-file-share-name $STORAGE_SHARE_NAME \ --storage-name $STORAGE_MOUNT_NAME \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --output table
Bu komut, kapsayıcı uygulaması ortamı ile komutuyla
az storage share-rm
oluşturulan dosya paylaşımı arasında bir bağlantı oluşturur.Artık depolama hesabı ve ortamı bağlı olduğuna göre, depolama bağlamasını kullanan bir kapsayıcı uygulaması oluşturabilirsiniz.
Kapsayıcı uygulaması adını tanımlayın.
CONTAINER_APP_NAME="my-container-app"
Kapsayıcı uygulamasını oluşturun.
az containerapp create \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --environment $ENVIRONMENT_NAME \ --image nginx \ --min-replicas 1 \ --max-replicas 1 \ --target-port 80 \ --ingress external \ --query properties.configuration.ingress.fqdn
Bu komut, yeni kapsayıcı uygulamanızın URL'sini görüntüler.
WEB sitesine gitmek için URL'yi kopyalayın ve web tarayıcınıza yapıştırın.
Sayfa yüklendikten sonra "Nginx'e hoş geldiniz!" iletisini görürsünüz. Bu tarayıcı sekmesini açık tutun. Depolama bağlama doğrulama adımları sırasında web sitesine döneceksiniz.
Kapsayıcı uygulamasının yapılandırıldığını onayladığınıza göre, uygulamayı bir depolama bağlama tanımıyla olarak güncelleştirebilirsiniz.
Kapsayıcı uygulamasının yapılandırmasını dışarı aktarın.
az containerapp show \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --output yaml > app.yaml
Not
Bu uygulamanın gizli dizileri olmasa da, birçok uygulamada gizli diziler bulunur. Varsayılan olarak, bir uygulamanın yapılandırmasını dışarı aktardığınızda, gizli dizi değerleri oluşturulan YAML'ye dahil değildir.
Gizli dizi değerlerini değiştirmeniz gerekmiyorsa bölümü kaldırabilirsiniz
secrets
ve gizli dizileriniz değişmeden kalır. Alternatif olarak, gizli dizinin değerini değiştirmeniz gerekiyorsa, uygulamayı güncelleştirmeye çalışmadan önce dosyadaki tüm gizli dizileri vename
value
değerlerini sağladığından emin olun. Bölümden gizli dizi atlanmasısecrets
gizli diziyi siler.app.yaml dosyasını bir kod düzenleyicisinde açın.
volumes: null
bölümündeki tanımı depolama biriminetemplate
başvuran birvolumes:
tanımla değiştirin. Şablon bölümü aşağıdaki gibi görünmelidir:template: volumes: - name: my-azure-file-volume storageName: mystoragemount storageType: AzureFile containers: - image: nginx name: my-container-app volumeMounts: - volumeName: my-azure-file-volume mountPath: /var/log/nginx resources: cpu: 0.5 ephemeralStorage: 3Gi memory: 1Gi initContainers: null revisionSuffix: '' scale: maxReplicas: 1 minReplicas: 1 rules: null
Yeni
template.volumes
bölüm aşağıdaki özellikleri içerir.Özellik Açıklama name
Bu değer, komutu çağrılarak oluşturulan birimle eşleşir az containerapp env storage set
.storageName
Bu değer, ortamdaki kapsayıcılar tarafından depolama birimine erişmek için kullanılan adı tanımlar. storageType
Bu değer, ortam için tanımlanan depolama biriminin türünü belirler. Bu durumda, bir Azure Dosyalar bağlaması bildirilir. bölümü,
volumes
uygulama kapsayıcınızın veya sepet kapsayıcılarınızın bir kapsayıcıyla ilişkilendirilmiş birvolumeMounts
bölüm aracılığıyla başvurabileceği uygulama düzeyinde birimleri tanımlar.bölümünde kapsayıcıya
nginx
containers
birvolumeMounts
bölüm ekleyin.containers: - image: nginx name: my-container-app volumeMounts: - volumeName: my-azure-file-volume mountPath: /var/log/nginx
Yeni
volumeMounts
bölüm aşağıdaki özellikleri içerir:Özellik Açıklama volumeName
Bu değer, tanımda tanımlanan adla volumes
eşleşmelidir.mountPath
Bu değer, kapsayıcınızda depolamanın bağlandığı yolu tanımlar. Kapsayıcı uygulamasını yeni depolama bağlama yapılandırmasıyla güncelleştirin.
az containerapp update \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --yaml app.yaml \ --output table
Depolama bağlamasını doğrulama
Artık depolama bağlaması kurulduğuna göre Azure Depolama'daki dosyaları kapsayıcınızdan işleyebilirsiniz. İş yerinde depolama bağlamasını gözlemlemek için aşağıdaki komutları kullanın.
Çalışan kapsayıcının içinde komut yürütmek için kapsayıcı uygulamasının içinde etkileşimli bir kabuk açın.
az containerapp exec \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP
Bu komutun uzak kabuğu açması biraz zaman alabilir. Kabuk hazır olduğunda, dosya sistemi komutları aracılığıyla depolama bağlamasıyla etkileşim kurabilirsiniz.
nginx /var/log/nginx klasörüne geçin.
cd /var/log/nginx
Tarayıcıya dönün ve web sitesine gidin ve sayfayı birkaç kez yenileyin.
Web sitesine yapılan istekler bir dizi günlük akışı girdisi oluşturur.
Terminalinize dönün ve klasörün değerlerini
/var/log/nginx
listeleyin.ls
access.log ve error.log dosyalarının bu klasörde nasıl göründüğüne dikkat edin. Bu dosyalar, önceki adımlarda oluşturulan Azure Depolama paylaşımınızdaki Azure Dosyalar bağlamasına yazılır.
access.log dosyasının içeriğini görüntüleyin.
cat access.log
Yerel terminal oturumunuza dönmek için kapsayıcının etkileşimli kabuğundan çıkın.
exit
Artık Azure portalında dosyaları görüntüleyebilir ve bunların Azure Depolama hesabınızda mevcut olduğunu doğrulayabilirsiniz. Rastgele oluşturulan depolama hesabınızın adını yazdırın.
echo $STORAGE_ACCOUNT_NAME
Azure portalına gidin ve bu yordamda oluşturulan depolama hesabını açın.
Veri Depolama altında Dosya paylaşımları'ı seçin.
access.log ve error.log dosyalarını görüntülemek için paylaşımım'ı seçin.
Kaynakları temizleme
Bu uygulamayı kullanmaya devam etmeyecekseniz, bu makalede oluşturulan tüm kaynaklarla birlikte kaynak grubunu silmek için aşağıdaki komutu çalıştırın.
az group delete \
--name $RESOURCE_GROUP