Kılavuz: Azure Container Apps içinde Azure Files birimi bağlaması oluşturma

Azure Files depolama bağlama noktası kullanarak bir kapsayıcı uygulamasında kalıcı depolamaya nasıl yazacağınızı öğ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:

  • Bir Container Apps ortamı oluşturun
  • Azure Depolama hesabı oluşturma
  • Depolama hesabında dosya paylaşımı tanımlama
  • Ortamı depolama dosyası 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

Uyarı

Azure Container Apps, SMB ve NFS protokollerini kullanarak dosya paylaşımlarını bağlamayı destekler. Bu öğreticide SMB protokolü kullanılarak 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 ortam değişkenlerini tanımlar ve Container Apps uzantınızın güncel olduğundan emin olur.

  1. Azure CLI'da oturum açın.

    az login
    
  2. Takip edecek çeşitli komutlarda kullanılan ortam değişkenlerini ayarlayın.

    RESOURCE_GROUP="my-container-apps-group"
    ENVIRONMENT_NAME="my-storage-environment"
    LOCATION="canadacentral"
    
  3. 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
    
  4. Microsoft.App ad alanını kaydedin.

    az provider register --namespace Microsoft.App
    
  5. Daha önce kullanmadıysanız Azure İzleyici Log Analytics çalışma alanı için Microsoft.OperationalInsights sağlayıcısını kaydedin.

    az provider register --namespace Microsoft.OperationalInsights
    

Ortam oluşturun

Aşağıdaki adımlar bir kaynak grubu ve Container Apps ortamı oluşturur.

  1. Bir 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.

  2. 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.

  1. 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"
    
  2. 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.

  3. Dosya paylaşımı adı tanımlayın.

    STORAGE_SHARE_NAME="myfileshare"
    
  4. 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
    
  5. 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. Container Apps, Azure dosya paylaşımlarına kimlik tabanlı erişimi desteklemez.

  6. 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.

  1. 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.

  2. Kapsayıcı uygulaması adını tanımlayın.

    CONTAINER_APP_NAME="my-container-app"
    
  3. 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.

  4. 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 güncelleyebilirsiniz.

  5. 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
    

    Uyarı

    Bu uygulamanın gizli özellikleri olmasa da, birçok uygulamada gizli özellikler bulunur. Varsayılan olarak, bir uygulamanın yapılandırmasını dışarı aktardığınızda, gizli değerler oluşturulan YAML dosyasına dahil edilmez.

    Gizli değerleri değiştirmeniz gerekmiyorsa, secrets bölümünü kaldırabilir ve gizli bilgilerinizin değişmeden kalmasını sağlayabilirsiniz. Alternatif olarak, bir gizli anahtarın değerini değiştirmeniz gerekiyorsa, uygulamayı güncellemeye çalışmadan önce dosyadaki tüm gizli anahtarların ve ilgili kodlarının name ve value belirtildiğinden emin olun. Bir anahtarı secrets bölümünden çıkarmak, anahtarı siler.

  6. app.yaml dosyasını bir kod düzenleyicisinde açın.

  7. volumes: null bölümündeki tanımı depolama birimine template başvuran bir volumes: tanımla değiştirin. Şablon bölümü aşağıdaki gibi görünmelidir:

    template:
      containers:
      - image: nginx
        imageType: ContainerImage
        name: my-container-app
        resources:
          cpu: 0.5
          ephemeralStorage: 2Gi
          memory: 1Gi
        volumeMounts:
        - volumeName: my-azure-file-volume
          mountPath: /var/log/nginx
      initContainers: null
      revisionSuffix: ''
      scale:
        cooldownPeriod: 300
        maxReplicas: 1
        minReplicas: 1
        pollingInterval: 30
        rules: null
      serviceBinds: null
      terminationGracePeriodSeconds: null
      volumes:
      - name: my-azure-file-volume
        storageName: mystoragemount
        storageType: AzureFile
    

    Yeni template.volumes bölüm aşağıdaki özellikleri içerir.

    Mülkiyet Açıklama
    name Bu değer, az containerapp env storage set komutu çalıştırılarak oluşturulan birimle eşleşir.
    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 Files bağlantısı bildirilir.

    volumes bölümü, uygulama kapsayıcınızın veya yardımcı kapsayıcılarınızın bir kapsayıcıyla ilişkilendirilmiş bir volumeMounts bölümü aracılığıyla başvurabileceği uygulama düzeyinde hacimleri tanımlar.

  8. volumeMounts bölümündeki nginx kapsayıcısına bir containers 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:

    Mülkiyet 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.
  9. Kapsayıcı uygulamasını yeni depolama monte etme yapılandırmasıyla güncelleyin.

    az containerapp update \
      --name $CONTAINER_APP_NAME \
      --resource-group $RESOURCE_GROUP \
      --yaml app.yaml \
      --output table
    

Depolama bağlama noktasını doğrulayın

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.

  1. Çalışan kapsayıcıda komutları yürütmek için etkileşimli bir komut satırı 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. Daha fazla bilgi için bkz. Azure Container Apps'te kapsayıcı konsoluna bağlanma.

  2. nginx /var/log/nginx klasörüne geçin.

    cd /var/log/nginx
    
  3. 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 kayıt akışı oluşturur.

  4. 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.

  5. access.log dosyasının içeriğini görüntüleyin.

    cat access.log
    
  6. Yerel terminal oturumunuza dönmek için kapsayıcının etkileşimli kabuğundan çıkın.

    exit
    
  7. Artık azure depolama hesabınızda mevcut olduklarını doğrulamak için Azure portalında dosyaları görüntüleyebilirsiniz. Rastgele oluşturulan depolama hesabınızın adını yazdırın.

    echo $STORAGE_ACCOUNT_NAME
    
  8. Azure portalına gidin ve bu yordamda oluşturulan depolama hesabını açın.

  9. Veri Depolama'nın altında Dosya paylaşımları'yı seçin.

  10. 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

Sonraki adımlar