Container Apps'te Azure İşlevleri için otomatik olarak oluşturulan KEDA ölçek kurallarını geçersiz kılma

Container Apps'teki işlevler normalde platform tarafından yönetilen ölçeklendirme modunda çalışır. başlangıçta İşlevler ana bilgisayarı tetikleyicileri (örneğin HTTP, Kuyruk veya Zamanlayıcı) inceler ve Azure Container Apps uygulama düzeltmesi için eşleşen KEDA tetikleyici yapılandırmasını oluşturur.

Bu otomatik eşlemeyi devre dışı bırakmak ve kendi ölçek kurallarınızı template.scale.rules içinde tanımlamak istediğinizde properties.template.scale.allowScalingRuleOverride ayarlayın.

Prerequisites

  • İşlevler uygulaması (kind=functionapp) olarak dağıtılmış bir Container Apps kaynağı.
  • uygulama kaynağına karşı az rest çağırma iznine sahip Azure CLI.
  • REST API sürümü 2026-03-02-preview veya daha yenisi.

Özellik tanımı

Mülkiyet Türü Varsayılan Şunlar için geçerlidir: API sürümü
properties.template.scale.allowScalingRuleOverride boolean (null atanabilir) false / null Yalnızca Container Apps'te İşlevler (kind=functionapp) 2026-03-02-preview ve üzeri

Behavior

Geçersiz kılma değeri Ölçek kuralları Behavior
false veya null Otomatik oluşturulan Azure bulunan İşlevler tetikleyicilerinden KEDA kuralları oluşturur ve yönetir. Kullanıcı tarafından sağlanan kurallar bu modda engellenir.
true Müşteri tarafından belirlenen Azure tetikleyici tabanlı kurallar oluşturmaz. Sağladığınız kurallar ölçek kararları için kullanılır.
true hiçbir kural sağlanmadan Sağlanmadı Azure tetikleyici tabanlı kural oluşturmayı atlar. Yalnızca platformun temel HTTP ölçeklendiricisi davranışı etkin kalır.

Geçersiz kılmayı etkinleştirin ve özel ölçek kuralları belirtin

Bu örnek, platform tarafından yönetilen ölçeklendirme (allowScalingRuleOverride=false) ile başlar ve el ile kural denetimine geçer. PATCH isteği bir Azure Kuyruk kuralı ve bir HTTP eşzamanlılık kuralı içerir.

  1. adlı patch-enable-override.jsonbir PATCH gövde dosyası oluşturun.

    {
      "properties": {
        "template": {
          "scale": {
            "allowScalingRuleOverride": true,
            "rules": [
              {
                "name": "my-queue-rule",
                "custom": {
                  "type": "azure-queue",
                  "metadata": {
                    "queueName": "my-test-queue",
                    "queueLength": "20",
                    "connectionFromEnv": "AzureWebJobsStorage"
                  }
                }
              },
              {
                "name": "my-http-rule",
                "http": {
                  "metadata": {
                    "concurrentRequests": "50"
                  }
                }
              }
            ]
          }
        }
      }
    }
    
  2. Güncelleştirmeyi uygulayın.

    az rest --method PATCH \
      --uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.App/containerApps/{appName}?api-version=2026-03-02-preview" \
      --headers "Content-Type=application/json" \
      --body @patch-enable-override.json
    

Beklenen sonuç:

  • Tetikleyiciden türetilen kurallar yeni revizyon için oluşturulmuyor.
  • Özel kurallar (my-queue-rule ve my-http-rule) düzeltmeye eklenir.
  • Ölçeği genişletme davranışı artık kuyruk derinliğini (queueLength=20) ve HTTP eşzamanlılığını (concurrentRequests=50) izler.

Geçersiz kılmayı devre dışı bırak ve platform tarafından oluşturulan kurallara geri dön

Bu örnek, platform tarafından yönetilen ölçeklendirmeye el ile yapılandırılmış bir uygulama (allowScalingRuleOverride=true) döndürür.

Important

rules boş değilken allowScalingRuleOverride=false ayarlayan bir istek reddedilir. Geri dönmek için rules: [] öğesini aynı PATCH içinde gönderin.

  1. adlı patch-disable-override.jsonbir PATCH gövde dosyası oluşturun.

    {
      "properties": {
        "template": {
          "scale": {
            "allowScalingRuleOverride": false,
            "rules": []
          }
        }
      }
    }
    
  2. Güncelleştirmeyi uygulayın.

    az rest --method PATCH \
      --uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.App/containerApps/{appName}?api-version=2026-03-02-preview" \
      --headers "Content-Type=application/json" \
      --body @patch-disable-override.json
    

Beklenen sonuç:

  • Özel ölçek kuralları temizlendi.
  • Azure bulunan İşlev tetikleyicilerinden ölçek kuralları oluşturmaya devam eder.
  • Platform tarafından yönetilen ölçeklendirme ile yeni bir düzeltme oluşturulur.

Hata senaryoları

Scenario Hata kodu Hata iletisi
İşlevler olmayan bir uygulamada ayarla allowScalingRuleOverride=true (kind değil functionapp) AllowScalingRuleOverrideNotApplicable AllowScalingRuleOverride özelliği yalnızca İşlev Uygulamaları (kind = 'functionapp') için geçerlidir. Diğer kapsayıcı uygulaması türleri için ayarlanamaz.
Özel ölçek kuralları hâlâ mevcutken allowScalingRuleOverride=false ayarlayın FunctionAppCannotSetScaleRules Müşteri tanımlı ölçek kurallarını yanlışlıkla silmeyi korumak için boş olmayan kurallar varsa platform denetimi moduna geçilemez. Müşterilerin, platformun bunu otomatik olarak yönetmesini istiyorlarsa, ölçek kurallarında açıkça [] (boş dizi) belirtmeleri gerekir.