Azure App Service'de sepetleri yapılandırma

Bu makalede, App Service uygulamanızda sidecar'ları etkinleştirmek ve yapılandırmak için pratik adımlar sunulmaktadır.

Önemli

Sidecarlar ana uygulamanızla aynı ağ ad alanını ve ortamı paylaştığından, yalnızca güvenilir kodları ve kapsayıcı imajlarını sidecar olarak çalıştırın.

Azure portalında bir sidecar oluşturun

  1. Azure portalında App Service kaynağınıza gidin.
  2. Dağıtım Merkezi'ni seçin ve Kapsayıcılar sekmesine gidin.
  3. Yan araç eklemek için Kapsayıcı ekle'ye tıklayın.
  4. Görüntü adını, kayıt defteri kimlik doğrulamasını (gerekirse) ve ortam değişkenlerini doldurun.
  5. Değişikliklerinizi kaydedin. Sidecar, ana uygulama kapsayıcınızla birlikte dağıtılacaktır.

Linux özel kapsayıcıları için sidecar desteğini etkinleştirme

Özel bir container için sidecar desteğini açıkça etkinleştirmeniz gerekir. Portalda, App Service oluşturma sihirbazında seçimi yapabilirsiniz. Ayrıca, aşağıdaki ekran görüntüsünde gösterildiği gibi mevcut bir uygulamanın Dağıtım Merkezi>Kapsayıcıları sayfasında mevcut bir uygulama için de etkinleştirebilirsiniz:

Özel bir kapsayıcı uygulamasının kapsayıcı ayarlarını gösteren ve Güncelleştirmeyi Başlat düğmesinin vurgulandığı ekran görüntüsü.

Azure CLI ile web uygulamanızı sitecontainers yapılandırmasını kullanacak şekilde dönüştürün. Örneğin:

az webapp sitecontainers convert --mode sitecontainers --name <YourWebAppName> --resource-group <YourResourceGroup>

Bu, LinuxFxVersion öğesini sitecontainers olarak günceller ve sidecar deseni için destek sağlar.

Klasik özel kapsayıcı (Docker) moduna geri dönme

Sepet etkin yapılandırmadan klasik Docker tabanlı kuruluma geri dönmeniz gerekiyorsa aşağıdaki komutu çalıştırın:

az webapp sitecontainers convert \
  --mode docker \
  --name <app-name> \
  --resource-group <resource-group>

Bu komut tüm sepet kapsayıcılarını kaldırır ve uygulamanızı klasik DOCKER|<image> stil yapılandırmasını kullanacak şekilde sıfırlar. Tüm ayrıntılar için az webapp sitecontainers convert için Azure CLI belgelerine bakın.

Daha fazla bilgi için bkz. Sidecar özellikli özel kapsayıcılar arasındaki farklar nelerdir?

Sidecar etkin özel konteynerler için farklar nelerdir?

Sidecar destekli uygulamalar, sidecar destekli olmayan uygulamalardan farklı şekillerde yapılandırılır.

  • Sidecar etkinleştirilmiş uygulamalar LinuxFxVersion=sitecontainers ile belirlenir ve sitecontainers kaynaklarıyla yapılandırılır.
  • Sidecar etkinleştirilmemiş uygulamalar, kapsayıcı adını ve türünü doğrudan LinuxFxVersion=DOCKER|<image-details> ile yapılandırır.

Daha fazla bilgi için bkz. az webapp config set --linux-fx-version.

Sidecar destekli olmayan uygulamalar, ana kapsayıcıyı aşağıdaki gibi uygulama ayarları ile yapılandırır:

  • DOCKER_REGISTRY_SERVER_URL
  • DOCKER_REGISTRY_SERVER_USERNAME
  • DOCKER_REGISTRY_SERVER_PASSWORD
  • WEBSITES_PORT

Bu ayarlar sidecar özellikli uygulamalar için geçerli değildir.

ARM şablonuyla bir sidecar tanımlayın

Microsoft.Web/sites/sitecontainers kaynak türünü bir uygulamaya ekleyin. Kullanıcı tarafından atanan yönetilen kimliği kullanarak ACR'den bir sidecar görüntüsü çekmek için, authType ifadesini UserAssigned olarak belirtin ve userManagedIdentityClientId sağlayın.

{
  "type": "Microsoft.Web/sites/sitecontainers",
  "apiVersion": "2024-04-01",
  "name": "<app-name>/<sidecar-name>",
  "properties": {
    "image": "<acr-name>.azurecr.io/<image-name>:<version>",
    "isMain": false,
    "authType": "UserAssigned",
    "userManagedIdentityClientId": "<client-id>",
    "environmentVariables": [
      { "name": "MY_ENV_VAR", "value": "my-value" }
    ]
  }
}

Önemli

Yalnızca ana kapsayıcı ("isMain": true) dış trafik alır. Linux özel kapsayıcı uygulamanızda sidecar desteği etkinleştirildiğinde, ana kapsayıcınız isMain olarak true şeklinde ayarlanmıştır. Tüm sidecar konteynerleri "isMain": false olmalıdır.

Daha fazla bilgi için bkz. Microsoft. Web siteleri/site kapsayıcıları.

Azure CLI ile sepet oluşturma

az webapp create ile sepet özellikli bir uygulama oluşturun. Örneğin:

az webapp create --name <app-name> --resource-group <group-name> --sitecontainers-app

az webapp sitecontainers create ile bir sidecar konteyner oluşturun. Örneğin:

az webapp sitecontainers create --name <app-name> --resource-group <group-name> --container-name <container> --image <image> --target-port <port>

JSON dosyasıyla sepet kapsayıcısı oluşturma:

az webapp sitecontainers create --name <app-name> --resource-group <group-name> --sitecontainers-spec-file <file-path>

Tüm sepet komutları için bkz. az webapp sitecontainers.

Ortam değişkenlerini belirleme

Linux uygulamasında tüm kapsayıcılar (ana ve sepetler) ortam değişkenlerini paylaşır. Belirli bir değişkeni bir sidecar için geçersiz kılmak için, onu sidecar'ın yapılandırmasına ekleyin.

  • ARM şablonlarında, sidecar'ın özelliklerindeki environmentVariables dizisini kullanın.
  • Portalda kapsayıcı yapılandırma kullanıcı arabirimine ortam değişkenleri ekleyin.
  • Ortam değişkenleri, uygulama ayarlarına isimlerine göre referans verebilir; değer, çalışma zamanında çözülür.

Redis sidecar uzantısını ekle

Azure portalından, önbelleğe almak için uygulamanıza bir Redis sepet uzantısı ekleyebilirsiniz. Redis sepet yalnızca hafif önbelleğe alma içindir, Azure Yönetilen Redis'in yerini almaz.

Redis yan arabayı kullanmak için:

  • Uygulama kodunuzda Redis bağlantı dizesi localhost:6379 olarak ayarlayın.
  • Uygulamanızın başlangıç kodunda Redis'i yapılandırın.
  • Verileri depolamak ve almak için önbelleğe alma desenlerini kullanın.
  • Uygulamanıza erişerek ve önbellek kullanımını onaylamak için günlükleri denetleyerek test edin.

Phi-3/Phi-4 sidecar uzantısını ekleyin

Azure portalından uygulamanıza bir Phi-3 veya Phi-4 sepet uzantısı ekleyerek yapay zeka iş yükleri için yerel çıkarım modeli sağlayabilirsiniz. Uygulamanızın çıkarım gereksinimlerini destekleyen bir fiyatlandırma katmanında olması gerekir. Desteklenmeyen katmanlar için Phi-3/Phi-4 yan araç uzantılarının seçeneklerini görmezsiniz.

  • Phi-3/Phi-4 yan sunucu, bir sohbet tamamlama API’si sunar http://localhost:11434/v1/chat/completions.
  • Yan araba eklendikten sonra, model yüklemesi nedeniyle başlangıçta yavaş olabilir.
  • API'yi çağırmak için, OpenAPI sohbet tamamlama API'sinin stiliyle bu uç noktaya POST istekleri gönderin.

Uçtan uca rehberler için şunlara bkz:

Ana kapsayıcıdan veya başka bir sidecar'dan sidecar'a erişim

Yan araç kapsayıcıları, ana kapsayıcıyla aynı ağ hostunu paylaşır. Ana kapsayıcı ve diğer yan arabirimler, localhost:<port> kullanarak herhangi bir yan arabirim üzerindeki bağlantı noktasına ulaşabilir. Örneğin, bir sidecar 4318 numaralı bağlantı noktasını dinliyorsa, ana uygulama ona localhost:4318 adresinden erişebilir.

Portaldaki Bağlantı Noktası alanı yalnızca meta verilerdir ve App Service tarafından yönlendirme için kullanılmaz.

Birim bağlamaları ekleme

Varsayılan olarak, devre dışı bırakılmadığı sürece varsayılan /home birim tüm kapsayıcılara bağlanır. Sidecar konteynerleriniz için ek disk bağlamaları yapılandırabilirsiniz.

Birim bağlamaları, Kalıcı olmayan dosyaları ve dizinleri Web Uygulamanızdaki kapsayıcılar arasında paylaşmanızı sağlar.

  • Birim alt yolu: App Service tarafından oluşturulan mantıksal dizin yolu. Aynı alt yola sahip kapsayıcılar dosyaları paylaşır.
  • Kapsayıcı bağlama yolu: Birim alt yoluna eşlenen kapsayıcının içindeki dizin yolu.

Örnek yapılandırma:

Sepet adı Hacim alt yolu Kapsayıcı bağlama yolu Sadece okunabilir
Kapsayıcı1 /directory1/directory2 /kapsül1Hacim Yanlış
Kapsayıcı2 /directory1/directory2 /container2Vol Doğru
Kapsayıcı3 /directory1/directory2/directory3 /container3Vol Yanlış
Kapsayıcı4 /directory4 /kapsül1Hacim Yanlış
  • Eğer Container1 /container1Vol/myfile.txt oluşturursa, Container2 /container2Vol/myfile.txt aracılığıyla okuyabilir.
  • Container1 oluşturursa /container1Vol/directory3/myfile.txt, Container2 bunu aracılığıyla /container2Vol/directory3/myfile.txtokuyabilir ve Container3 aracılığıyla /container3Vol/myfile.txtokuyabilir/yazabilir.
  • Container4 diğerleriyle bir hacmi paylaşmıyor.

Uyarı

Kod tabanlı Linux uygulamaları için yerleşik Linux kapsayıcısı birim bağlamalarını kullanamaz.

Daha fazla kaynak