Azure Container Apps'de ölçeklendirme kuralları ayarlama

Azure Container Apps, bir dizi bildirim temelli ölçeklendirme kuralı aracılığıyla otomatik yatay ölçeklendirmeyi yönetir. Kapsayıcı uygulaması düzeltmesi ölçeği genişletildikçe platform, isteğe bağlı olarak düzeltmenin yeni örneklerini oluşturur. Bu örnekler çoğaltma olarak bilinir.

bu ölçeklendirme davranışını desteklemek için Azure Container Apps KEDA (Kubernetes Olay Temelli Otomatik Ölçeklendirme) kullanır. KEDA; HTTP istekleri, kuyruk iletileri, CPU ve bellek yükü gibi çeşitli ölçümlere ve Azure Service Bus, Azure Event Hubs, Apache Kafka ve Redis gibi olay kaynaklarına göre ölçeklendirmeyi destekler. Daha fazla bilgi için KEDA belgelerindeki Ölçekleyiciler'e bakın.

Ölçeklendirme kuralları ekler veya düzenlerken kapsayıcı uygulamanızın yeni bir düzeltmesini oluşturursunuz. Düzeltme, kapsayıcı uygulamanızın sabit bir anlık görüntüsüdür. Yeni bir düzeltmeyi tetikleyen değişiklik türlerini öğrenmek için bkz. düzeltme değişiklik türleri.

Olay temelli Container Apps işleri , olaylara göre yürütmeleri tetikleme amacıyla ölçeklendirme kurallarını kullanır.

Ölçek tanımı

Ölçeklendirme, sınırların, kuralların ve davranışın birleşimidir.

  • Sınırlar , kapsayıcı uygulamanız ölçeklendikçe düzeltme başına mümkün olan en düşük ve en fazla çoğaltma sayısını tanımlar.

    Ölçeklendirme sınırı Varsayılan değer En düşük değer En yüksek değer
    Düzeltme başına en az çoğaltma sayısı 0 0 Yapılandırılabilir en fazla çoğaltma sayısı 1.000'tir.
    Düzeltme başına en fazla çoğaltma sayısı 10 1 Yapılandırılabilir en fazla çoğaltma sayısı 1.000'tir.
  • Kurallar , Container Apps tarafından çoğaltmaların ne zaman ekleneceğine veya kaldırılacağına karar vermek için kullanılan ölçütlerdir.

    Ölçek kuralları HTTP, TCP (İletim Denetimi Protokolü) veya özel olarak uygulanır.

  • Davranış , zaman içindeki ölçek kararlarını belirlemek için kurallar ve sınırların birleşimidir.

    Ölçek davranışı , ölçek kararlarının nasıl alınıyor olduğunu açıklar.

Ölçeklendirme kurallarınızı tanımlarken aşağıdaki öğeleri göz önünde bulundurun:

  • Kapsayıcı uygulamanız sıfıra ölçeklendirilirse kullanım ücretleri size faturalandırılmaz.
  • İşlem yapmayan ancak bellekte kalan replikalar, daha düşük bir "boşta" ücret tarifesiyle faturalandırılabilir. Daha fazla bilgi için bkz . Faturalama.
  • Düzeltmenizin bir örneğinin her zaman çalıştığından emin olmak istiyorsanız, en az çoğaltma sayısını 1 veya daha yüksek olarak ayarlayın.
  • Geçici olarak, platform yükseltmeleri veya bakım sırasında beklenenden daha fazla kopya görebilirsiniz. Container Apps, varsayılan Kubernetes davranışına benzer şekilde, trafiği değiştirmeden önce üretim iş yükünüzün yeni çoğaltmaların önceden ısıtılmasından etkilenmemesini sağlar. İşlem tamamlandıktan sonra ek çoğaltmalar otomatik olarak kaldırılır.

Ölçek kuralları

Üç tetikleyici kategorisi ölçeklendirmenin nasıl gerçekleştiğini belirler:

  • HTTP: Düzeltmenize yönelik eşzamanlı HTTP isteklerinin sayısına göre.
  • TCP: Düzeltmenize yönelik eşzamanlı TCP bağlantılarının sayısına göre.
  • Özel: Şu gibi özel ölçümleri temel alır:
    • İşlemci (CPU)
    • Hafıza
    • Desteklenen olay temelli veri kaynakları:
      • Azure Service Bus
      • Azure Event Hubs
      • Apache Kafka
      • Redis

Birden fazla ölçek kuralı tanımlarsanız, herhangi bir kuralın ilk koşulu karşılandığında kapsayıcı uygulaması ölçeklendirmeye başlar.

Not

Container Apps'te İşlevler'i kullanıyorsanız, varsayılan deneyim işlev tetikleyicilerine ve bağlamalarına göre ölçeklendirme kurallarını otomatik olarak yapılandırır. Azure portalı, bu uygulamalar için Ekle ölçek kuralları düğmesini devre dışı bırakır. Müşteri tarafından tanımlanan kurallara ihtiyacınız varsa, Container Apps üzerindeki Azure İşlevleri için otomatik olarak oluşturulan KEDA ölçek kurallarını geçersiz kılma başlığında açıklandığı gibi allowScalingRuleOverride kullanın.

HTTP

HTTP ölçeklendirme kuralı kullandığınızda, kapsayıcı uygulama düzeltmenizin nasıl ölçeklendirileceğini belirleyen eşzamanlı HTTP isteklerinin eşiğini denetlersiniz. Her 15 saniyede bir eşzamanlı istek sayısı, son 15 saniye içindeki isteklerin sayısı 15'e bölünerek hesaplanır. Container Apps işleri HTTP ölçeklendirme kurallarını desteklemez.

Aşağıdaki örnekte, düzeltme beş çoğaltmaya kadar ölçeklendirilir ve ölçeği sıfıra ölçeklendirebilir. Ölçeklendirme özelliği saniyede 100 eşzamanlı istek olarak ayarlanır.

Örnek

http bölümü bir HTTP ölçek kuralı tanımlar.

Ölçek özelliği Açıklama Varsayılan değer En düşük değer En yüksek değer
concurrentRequests HTTP isteklerinin sayısı bu değeri aştığında uygulama bir örnek daha ekler. Uygulama, maxReplicas miktarına ulaşana kadar replika eklemeye devam eder. 10 1 yok
resource symbolicname 'Microsoft.App/containerApps@2025-02-02-preview' = {
  ...
  properties: {
    ...
    template: {
      ...
      scale: {
        maxReplicas: 0
        minReplicas: 5
        rules: [
          {
            name: 'http-rule'
            http: {
              metadata: {
                concurrentRequests: '100'
              }
            }
          }
        ]
      }
    }
  }
}

Not

HTTP dışı olay ölçeklendirme kuralları kullanırken kapsayıcı uygulamasının properties.configuration.activeRevisionsMode özelliğini single olarak ayarlayın.

http bölümü bir HTTP ölçek kuralı tanımlar.

Ölçek özelliği Açıklama Varsayılan değer En düşük değer En yüksek değer
concurrentRequests HTTP isteklerinin sayısı bu değeri aştığında uygulama bir kopya daha ekler. Uygulama, maxReplicas miktarına ulaşana kadar kopya eklemeye devam eder. 10 1 yok
{
  ...
  "resources": {
    ...
    "properties": {
      ...
      "template": {
        ...
        "scale": {
          "minReplicas": 0,
          "maxReplicas": 5,
          "rules": [{
            "name": "http-rule",
            "http": {
              "metadata": {
                "concurrentRequests": "100"
              }
            }
          }]
        }
      }
    }
  }
}

Not

HTTP dışı olay ölçeklendirme kuralları kullanırken kapsayıcı uygulamasının properties.configuration.activeRevisionsMode özelliğini single olarak ayarlayın.

Bir HTTP ölçek kuralını, create veya update komutlarında --scale-rule-http-concurrency parametresini kullanarak tanımlayın.

CLI parametresi Açıklama Varsayılan değer En düşük değer En yüksek değer
--scale-rule-http-concurrency Eşzamanlı HTTP isteklerinin sayısı bu değeri aştığında, uygulama başka bir çoğaltma ekler. Uygulama, max-replicas miktarına ulaşana kadar çoğaltmalar eklemeye devam eder. 10 1 yok
az containerapp create \
  --name <CONTAINER_APP_NAME> \
  --resource-group <RESOURCE_GROUP> \
  --environment <ENVIRONMENT_NAME> \
  --image <CONTAINER_IMAGE_LOCATION>
  --min-replicas 0 \
  --max-replicas 5 \
  --scale-rule-name azure-http-rule \
  --scale-rule-type http \
  --scale-rule-http-concurrency 100
  1. Azure portal kapsayıcı uygulamanıza gidin.

  2. Ölçek'i seçin.

  3. Düzenle ve dağıt'ı seçin.

  4. Ölçek sekmesini seçin.

  5. En düşük ve en yüksek replika aralığını seçin.

    >Azure Container Apps ölçek aralığı kaydırıcısının ekran görüntüsü.

  6. Ekle'yi seçin.

  7. Kural adı kutusuna bir kural adı girin.

  8. Tür açılan listesinde HTTP Ölçeklendirme'yi seçin.

  9. Eşzamanlı istekler kutusuna kapsayıcı uygulamanız için istediğiniz eşzamanlı istek sayısını girin.

TCP

TCP ölçeklendirme kuralı kullandığınızda, uygulamanızın nasıl ölçeklendirileceğini belirleyen eşzamanlı TCP bağlantılarının eşiğini denetleyebilirsiniz. Her 15 saniyede bir sistem, son 15 saniyedeki bağlantıların sayısı 15'e bölündükçe eşzamanlı bağlantı sayısını hesaplar. Container Apps işleri TCP ölçeklendirme kurallarını desteklemez.

Aşağıdaki örnekte, kapsayıcı uygulama revizyonu en fazla beş kopyaya kadar yatay olarak ölçeklenebilir ve sıfıra kadar ölçek küçültebilir. Ölçeklendirme eşiği saniyede 100 eşzamanlı bağlantı olarak ayarlanır.

Örnek

tcp bölümü bir TCP ölçek kuralı tanımlar.

Ölçek özelliği Açıklama Varsayılan değer En düşük değer En yüksek değer
concurrentConnections Eşzamanlı TCP bağlantılarının sayısı bu değeri aştığında sistem başka bir çoğaltma ekler. Sistem, eş zamanlı bağlantı sayısı arttıkça maxReplicas miktarına kadar replika eklemeyi sürdürür. 10 1 yok
resource symbolicname 'Microsoft.App/containerApps@2025-02-02-preview' = {
  ...
  properties: {
    ...
    template: {
      ...
      scale: {
        maxReplicas: 0
        minReplicas: 5
        rules: [
          {
            name: 'tcp-rule'
            http: {
              metadata: {
                concurrentConnections: '100'
              }
            }
          }
        ]
      }
    }
  }
}

tcp bölümü bir TCP ölçek kuralı tanımlar.

Ölçek özelliği Açıklama Varsayılan değer En düşük değer En yüksek değer
concurrentConnections Eşzamanlı TCP bağlantılarının sayısı bu değeri aştığında sistem başka bir çoğaltma ekler. Sistem, eşzamanlı bağlantı sayısı arttıkça maxReplicas miktarına kadar replika eklemeye devam eder. 10 1 yok
{
  ...
  "resources": {
    ...
    "properties": {
      ...
      "template": {
        ...
        "scale": {
          "minReplicas": 0,
          "maxReplicas": 5,
          "rules": [{
            "name": "tcp-rule",
            "tcp": {
              "metadata": {
                "concurrentConnections": "100"
              }
            }
          }]
        }
      }
    }
  }
}

create veya update komutlarında --scale-rule-tcp-concurrency parametresini kullanarak bir TCP ölçek kuralı tanımlayın.

CLI parametresi Açıklama Varsayılan değer En düşük değer En yüksek değer
--scale-rule-tcp-concurrency Eşzamanlı TCP bağlantılarının sayısı bu değeri aştığında sistem başka bir çoğaltma ekler. Sistem, eşzamanlı bağlantı sayısı arttıkça max-replicas sayısına kadar replika eklemeye devam eder. 10 1 yok
az containerapp create \
  --name <CONTAINER_APP_NAME> \
  --resource-group <RESOURCE_GROUP> \
  --environment <ENVIRONMENT_NAME> \
  --image <CONTAINER_IMAGE_LOCATION>
  --min-replicas 0 \
  --max-replicas 5 \
  --transport tcp \
  --ingress <external/internal> \
  --target-port <CONTAINER_TARGET_PORT> \
  --scale-rule-name azure-tcp-rule \
  --scale-rule-type tcp \
  --scale-rule-tcp-concurrency 100

Azure portalı bu özelliği desteklemez. TCP ölçek kuralını yapılandırmak için Azure CLI, Azure Resource Manager veya Bicep kullanın.

Özel

Aşağıdaki varsayılan değerleri kullanarak Herhangi bir ScaledObject tabanlı KEDA ölçeklendiricisini temel alan özel bir Container Apps ölçeklendirme kuralı oluşturun:

Varsayılan değer Saniye
Yoklama aralığı 30
Bekleme süresi 300

Not

Bekleme süresi yalnızca son replikadan 0'a ölçeği küçültürken devreye girer. Diğer tüm kopyalar kaldırıldığından, soğuma süresi ölçeklendirmeyi etkilemez.

Olay temelli Container Apps işleri için ScaledJob tabanlı KEDA ölçeklendiricilerini temel alan özel bir ölçeklendirme kuralı oluşturun.

Aşağıdaki örnekte özel ölçek kuralının nasıl oluşturulacağı gösterilmektedir.

Örnek

Bu örnekte, Azure Service Bus ölçekleyici Container Apps ölçek kuralına nasıl dönüştürüldüğü gösterilir, ancak aynı işlemi diğer tüm ScaledObject tabanlı KEDA ölçekleyici belirtimi için kullanırsınız.

Kimlik doğrulaması için KEDA ölçeklendiricisi kimlik doğrulama parametreleri Container Apps gizli dizilerini veya yönetilen kimliği alır.

Aşağıdaki yordamda KEDA ölçekleyicisini Kapsayıcı Uygulaması ölçek kuralına dönüştürme işlemi gösterilmektedir. Bu kod parçacığı, her bölümün genel şablon bağlamında nereye uyduğunu gösteren bicep şablonunun bir alıntısıdır.

resource symbolicname 'Microsoft.App/containerApps@2025-02-02-preview' = {
  ...
  properties: {
    ...
    configuration: {
      ...
      secrets: [
        {
          name: '<NAME>'
          value: '<VALUE>'
        }
      ]
    }
    template: {
      ...
      scale: {
        maxReplicas: 0
        minReplicas: 5
        rules: [
          {
            name: '<RULE_NAME>'
            custom: {
              metadata: {
                ...
              }
              auth: [
                {
                  secretRef: '<NAME>'
                  triggerParameter: '<PARAMETER>'
                }
              ]
            }
          }
        ]
      }
    }
  }
}

Aşağıdaki örneklerin Bicep şablonuna nasıl uyduklarına ilişkin bağlam için bu alıntıya bakın.

İlk olarak, ölçek kuralının türünü ve meta verilerini tanımlayın.

  1. KEDA ölçeklendirici belirtiminden type değerini bulun.

    triggers:
     - type: azure-servicebus ⬅️
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  2. Bicep şablonunda ölçekleyici type değerini ölçek kuralının custom.type özelliğine girin.

    ...
    rules: [
      {
        name: 'azure-servicebus-queue-rule'
        custom: {
          type: 'azure-servicebus' ⬅️
          metadata: {
            queueName: 'my-queue'
            namespace: 'service-bus-namespace'
            messageCount: '5'
          }
        }
      }
    ]
    ...
    
  3. KEDA ölçekleyici belirtiminden metadata değerleri bulun.

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue              ⬅️
        namespace: service-bus-namespace ⬅️
        messageCount: "5"                ⬅️
    
  4. Bicep şablonunda, ölçek kuralının custom.metadata bölümüne tüm meta veri değerlerini ekleyin.

    ...
    rules: [
      {
        name: 'azure-servicebus-queue-rule'
        custom: {
          type: 'azure-servicebus'
          metadata: {
            queueName: 'my-queue'              ⬅️
            namespace: 'service-bus-namespace' ⬅️
            messageCount: '5'                  ⬅️
          }
        }
      }
    ]
    ...
    

Kimlik Doğrulaması

Container Apps ölçek kuralları gizli dizi tabanlı kimlik doğrulamayı destekler. Azure Kuyruk Depolama, Azure Service Bus ve Azure Event Hubs gibi Azure kaynakları için ölçeklendirme kuralları da yönetilen kimliği destekler. Mümkün olduğunda, uygulama içinde gizli dizileri depolamaktan kaçınmak için yönetilen kimlik kimlik doğrulamasını kullanın.

Gizli dizileri kullanma

Kimlik doğrulaması için gizli dizileri kullanmak için kapsayıcı uygulamasının secrets dizisinde bir gizli dizi oluşturun. Ölçek kuralının dizisindeki auth gizli dizi değerini kullanın.

KEDA ölçeklendiricileri, authenticationRef özelliğinin başvurduğu bir TriggerAuthentication içinde gizli anahtarlar kullanabilir. TriggerAuthentication nesnesini Container Apps ölçek kuralına eşleyebilirsiniz.

  1. KEDA belirtimi tarafından referans verilen TriggerAuthentication nesneyi bulun.

  2. Nesnesinde TriggerAuthentication, her secretTargetRef ve ilişkili sırrını bulun.

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-secrets
      namespace: my-project
    type: Opaque
    data:
      connection-string-secret: <SERVICE_BUS_CONNECTION_STRING> ⬅️
    ---
    apiVersion: keda.sh/v1alpha1
    kind: TriggerAuthentication
    metadata:
      name: azure-servicebus-auth
    spec:
      secretTargetRef:
      - parameter: connection         ⬅️
        name: my-secrets              ⬅️
        key: connection-string-secret ⬅️
    ---
    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
      name: azure-servicebus-queue-rule
      namespace: default
    spec:
      scaleTargetRef:
        name: my-scale-target
      triggers:
      - type: azure-servicebus
        metadata:
          queueName: my-queue
          namespace: service-bus-namespace
          messageCount: "5"
        authenticationRef:
            name: azure-servicebus-auth
    
  3. Bicep şablonunda her bir gizli bilgi için:

    1. Gizli adını ve değerini içeren bir gizli öğeyi kapsayıcı uygulamasının secrets dizisine ekleyin.

    2. Ölçek kuralının auth dizisine bir girdi ekleyin.

      1. triggerParameter özelliğinin değerini, secretTargetRef özelliğindeki parameter değerine ayarlayın.

      2. secretRef özelliğinin değerini, secretTargetRef öğesinin key adı olarak ayarlayın.

        resource symbolicname 'Microsoft.App/containerApps@2025-02-02-preview' = {
          ...
          properties: {
            ...
            configuration: {
              ...
              secrets: [
                {                                          ⬅️
                  name: 'connection-string-secret'         ⬅️
                  value: '<SERVICE_BUS_CONNECTION_STRING>' ⬅️
                }                                          ⬅️
              ]
            }
            template: {
              ...
              scale: {
                maxReplicas: 0
                minReplicas: 5
                rules: [
                  {
                    name: 'azure-servicebus-queue-rule'
                    custom: {
                      type: 'azure-servicebus'
                      metadata: {
                        queueName: 'my-queue'
                        namespace: 'service-bus-namespace'
                        messageCount: '5'
                      }
                      auth: [
                        {
                          secretRef: 'connection-string-secret'
                          triggerParameter: 'connection'
                        }
                      ]
                    }
                  }
                ]
              }
            }
          }
        }
        

    Bazı ölçekleyiciler, ortam değişkenindeki FromEnv bir değere başvurmak için sonek içeren meta verileri destekler. Container Apps, ortam değişkeni için ARM şablonunda listelenen ilk kapsayıcıya bakar.

    Güvenlikle ilgili daha fazla bilgi için dikkat edilmesi gerekenler bölümüne bakın.

Yönetilen kimliği kullanma

Container Apps ölçek kuralları, Azure hizmetleriyle kimlik doğrulaması yapmak için yönetilen kimliği kullanabilir. Aşağıdaki Bicep şablonu, Azure Kuyruk ölçeklendiricisi için kimlik doğrulaması yapmak amacıyla sistem tabanlı yönetilen kimliği aktarır.

Aşağıdaki kodu kullanmadan önce, <> ile çevrelenmiş yer tutucuları kendi değerlerinizle değiştirin.

scale: {
  minReplicas: 0
  maxReplicas: 4
  rules: [
    {
      name: 'azure-queue'
      custom: {
        type: 'azure-queue'
        metadata: {
          accountName: '<ACCOUNT_NAME>'
          queueName: '<QUEUE_NAME>'
          queueLength: '1'
        },
        identity: 'system'
      }
    }
  ]
}

Yönetilen kimliği ölçek kurallarıyla kullanma hakkında daha fazla bilgi edinmek için bkz . Yönetilen kimlik.

Aşağıdaki yordamda KEDA ölçekleyicisini Kapsayıcı Uygulaması ölçek kuralına dönüştürme işlemi gösterilmektedir. Bu kod parçacığı, bir ARM şablonunun, her bölümün genel şablon bağlamında nereye uyduğunu gösteren bir alıntıdır.

{
  ...
  "resources": {
    ...
    "properties": {
      ...
      "configuration": {
        ...
        "secrets": [
          {
            "name": "<NAME>",
            "value": "<VALUE>"
          }
        ]
      },
      "template": {
        ...
        "scale": {
          "minReplicas": 0,
          "maxReplicas": 5,
          "rules": [
            {
              "name": "<RULE_NAME>",
              "custom": {
                "metadata": {
                  ...
                },
                "auth": [
                  {
                    "secretRef": "<NAME>",
                    "triggerParameter": "<PARAMETER>"
                  }
                ]
              }
            }
          ]
        }
      }
    }
  }
}

Aşağıdaki örneklerin ARM şablonuna nasıl sığacaklarına ilişkin bağlam için bu alıntıya bakın.

İlk olarak, ölçek kuralının türünü ve meta verilerini tanımlayın.

  1. KEDA ölçeklendirici belirtiminden type değerini bulun.

    triggers:
    - type: azure-servicebus ⬅️
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  2. ARM şablonunda ölçekleyici type değerini ölçek kuralının custom.type özelliğine girin.

    ...
    "rules": [
      {
        "name": "azure-servicebus-queue-rule",
        "custom": {
          "type": "azure-servicebus",  ⬅️
          "metadata": {
            "queueName": "my-queue",
            "namespace": "service-bus-namespace",
            "messageCount": "5"
          }
        }
      }
    ]
    ...
    
  3. KEDA ölçekleyici belirtiminden metadata değerleri bulun.

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue              ⬅️
        namespace: service-bus-namespace ⬅️
        messageCount: "5"                ⬅️
    
  4. ARM şablonunda, ölçek kuralının custom.metadata bölümüne tüm meta veri değerlerini ekleyin.

    ...
    "rules": [
      {
        "name": "azure-servicebus-queue-rule",
        "custom": {
          "type": "azure-servicebus",
          "metadata": {
            "queueName": "my-queue",              ⬅️
            "namespace": "service-bus-namespace", ⬅️
            "messageCount": "5"                   ⬅️
          }
        }
      }
    ]
    ...
    

Kimlik Doğrulaması

Container Apps ölçek kuralları gizli dizi tabanlı kimlik doğrulamayı destekler. Azure Kuyruk Depolama, Azure Service Bus ve Azure Event Hubs gibi Azure kaynakları için ölçeklendirme kuralları da yönetilen kimliği destekler. Mümkün olduğunda, uygulama içinde gizli dizileri depolamaktan kaçınmak için yönetilen kimlik kimlik doğrulamasını kullanın.

Gizli dizileri kullanma

Kimlik doğrulaması için gizli dizileri kullanmak için kapsayıcı uygulamasının secrets dizisinde bir gizli dizi oluşturun. Ölçek kuralının dizisindeki auth gizli dizi değerini kullanın.

KEDA ölçeklendiricileri, authenticationRef özelliğinin başvurduğu bir TriggerAuthentication içinde gizli bilgileri kullanabilir. TriggerAuthentication nesnesini Container Apps ölçek kuralına eşleyebilirsiniz.

  1. KEDA belirtimi tarafından referans verilen TriggerAuthentication nesneyi bulun.

  2. Nesnesinde TriggerAuthentication, her secretTargetRef ve ilişkili sırrını bulun.

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-secrets
      namespace: my-project
    type: Opaque
    data:
      connection-string-secret: <SERVICE_BUS_CONNECTION_STRING> ⬅️
    ---
    apiVersion: keda.sh/v1alpha1
    kind: TriggerAuthentication
    metadata:
      name: azure-servicebus-auth
    spec:
      secretTargetRef:
      - parameter: connection         ⬅️
        name: my-secrets              ⬅️
        key: connection-string-secret ⬅️
    ---
    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
      name: azure-servicebus-queue-rule
      namespace: default
    spec:
      scaleTargetRef:
        name: my-scale-target
      triggers:
      - type: azure-servicebus
        metadata:
          queueName: my-queue
          namespace: service-bus-namespace
          messageCount: "5"
        authenticationRef:
            name: azure-servicebus-auth
    
  3. ARM şablonunda, her gizli için:

    1. Gizli adını ve değerini içeren bir gizli öğeyi kapsayıcı uygulamasının secrets dizisine ekleyin.

    2. Ölçek kuralının auth dizisine bir girdi ekleyin.

      1. triggerParameter özelliğinin değerini, secretTargetRef özelliğindeki parameter değerine ayarlayın.

      2. secretRef özelliğinin değerini, secretTargetRef öğesinin key adı olarak ayarlayın.

    {
      ...
      "resources": {
        ...
        "properties": {
          ...
          "configuration": {
            ...
            "secrets": [
              {                                            ⬅️
                "name": "connection-string-secret",        ⬅️
                "value": "<SERVICE_BUS_CONNECTION_STRING>" ⬅️
              }                                            ⬅️
            ]
          },
          "template": {
            ...
            "scale": {
              "minReplicas": 0,
              "maxReplicas": 5,
              "rules": [
                {
                  "name": "azure-servicebus-queue-rule",
                  "custom": {
                    "type": "azure-servicebus",
                    "metadata": {
                      "queueName": "my-queue",
                      "namespace": "service-bus-namespace",
                      "messageCount": "5"
                    },
                    "auth": [
                      {                                          ⬅️
                        "secretRef": "connection-string-secret", ⬅️
                        "triggerParameter": "connection"         ⬅️
                      }                                          ⬅️
                    ]
                  }
                }
              ]
            }
          }
        }
      }
    }
    

    Bazı ölçekleyiciler, ortam değişkenindeki FromEnv bir değere başvurmak için sonek içeren meta verileri destekler. Container Apps, ortam değişkeni için ARM şablonunda listelenen ilk kapsayıcıya bakar.

    Güvenlikle ilgili daha fazla bilgi için dikkat edilmesi gerekenler bölümüne bakın.

Yönetilen kimliği kullanma

Container Apps ölçek kuralları, Azure hizmetleriyle kimlik doğrulaması yapmak için yönetilen kimliği kullanabilir. Aşağıdaki ARM şablonu, Azure Kuyruk ölçeklendiricisinin kimliğini doğrulamak için sistem tarafından atanan yönetilen kimliği geçirir.

Aşağıdaki kodu kullanmadan önce, <> ile çevrelenmiş yer tutucuları kendi değerlerinizle değiştirin.

"scale": {
  "minReplicas": 0,
  "maxReplicas": 4,
  "rules": [
    {
      "name": "azure-queue",
      "custom": {
        "type": "azure-queue",
        "metadata": {
          "accountName": "<ACCOUNT_NAME>",
          "queueName": "<QUEUE_NAME>",
          "queueLength": "1"
        },
        "identity": "system"
      }
    }
  ]
}

Yönetilen kimliği ölçek kurallarıyla kullanma hakkında daha fazla bilgi edinmek için bkz . Yönetilen kimlik.

  1. KEDA ölçeklendirici belirtiminden type değerini bulun.

    triggers:
    - type: azure-servicebus ⬅️
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  2. CLI komutunda parametresini --scale-rule-type belirtim type değerine ayarlayın.

    az containerapp create \
      --name <CONTAINER_APP_NAME> \
      --resource-group <RESOURCE_GROUP> \
      --environment <ENVIRONMENT_NAME> \
      --image <CONTAINER_IMAGE_LOCATION>
      --min-replicas 0 \
      --max-replicas 5 \
      --secrets "connection-string-secret=<SERVICE_BUS_CONNECTION_STRING>" \
      --scale-rule-name azure-servicebus-queue-rule \
      --scale-rule-type azure-servicebus \ ⬅️
      --scale-rule-metadata "queueName=my-queue" \
                            "namespace=service-bus-namespace" \
                            "messageCount=5" \
      --scale-rule-auth "connection=connection-string-secret"
    
  3. KEDA ölçekleyici belirtiminden metadata değerleri bulun.

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue              ⬅️
        namespace: service-bus-namespace ⬅️
        messageCount: "5"                ⬅️
    
  4. CLI komutunda parametresini --scale-rule-metadata meta veri değerlerine ayarlayın.

    Değerleri yaml biçiminden komut satırında kullanılmak üzere anahtar/değer çiftine dönüştürün. Her anahtar/değer çiftlerini bir boşlukla ayırın.

    az containerapp create \
      --name <CONTAINER_APP_NAME> \
      --resource-group <RESOURCE_GROUP> \
      --environment <ENVIRONMENT_NAME> \
      --image <CONTAINER_IMAGE_LOCATION>
      --min-replicas 0 \
      --max-replicas 5 \
      --secrets "connection-string-secret=<SERVICE_BUS_CONNECTION_STRING>" \
      --scale-rule-name azure-servicebus-queue-rule \
      --scale-rule-type azure-servicebus \
      --scale-rule-metadata "queueName=my-queue" \              ⬅️
                            "namespace=service-bus-namespace" \ ⬅️
                            "messageCount=5" \                  ⬅️
      --scale-rule-auth "connection=connection-string-secret"
    

Kimlik Doğrulaması

Container Apps ölçek kuralları gizli dizi tabanlı kimlik doğrulamayı destekler. Azure Kuyruk Depolama, Azure Service Bus ve Azure Event Hubs gibi Azure kaynakları için ölçeklendirme kuralları da yönetilen kimliği destekler. Mümkün olduğunda, uygulama içinde gizli dizileri depolamaktan kaçınmak için yönetilen kimlik kimlik doğrulamasını kullanın.

Gizli dizileri kullanma

Kapsayıcı Uygulamaları ölçek kuralı için gizli dizi tabanlı kimlik doğrulamasını yapılandırmak için kapsayıcı uygulamasında gizli dizileri yapılandırın ve ölçek kuralında bunlara başvurun.

KEDA ölçeklendiricisi, özelliğin başvuru için kullandığı TriggerAuthentication içindeki gizli dizileri authenticationRef destekler. Container Apps ölçek kuralına nesneyi TriggerAuthentication eşleyebilirsiniz.

  1. KEDA belirtimi tarafından referans verilen TriggerAuthentication nesneyi bulun. Nesnenin secretTargetRef her TriggerAuthentication birini tanımlayın.

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-secrets
      namespace: my-project
    type: Opaque
    data:
      connection-string-secret: <SERVICE_BUS_CONNECTION_STRING> ⬅️
    ---
    apiVersion: keda.sh/v1alpha1
    kind: TriggerAuthentication
    metadata:
      name: azure-servicebus-auth
    spec:
      secretTargetRef:
      - parameter: connection         ⬅️
        name: my-secrets              ⬅️
        key: connection-string-secret ⬅️
    ---
    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
      name: azure-servicebus-queue-rule
      namespace: default
    spec:
      scaleTargetRef:
        name: my-scale-target
      triggers:
      - type: azure-servicebus
        metadata:
          queueName: my-queue
          namespace: service-bus-namespace
          messageCount: "5"
        authenticationRef:
            name: azure-servicebus-auth
    
  2. Kapsayıcı uygulamanızda özelliklerle uyumlu secretTargetRef oluşturun.

  3. CLI komutunda, her secretTargetRef girdi için parametreleri ayarlayın.

    1. --secrets parametresiyle bir gizli giriş oluşturun. Birden fazla sır varsa, bunları bir boşlukla ayırın.

    2. parametresiyle bir kimlik doğrulama girdisi --scale-rule-auth oluşturun. Birden çok girdi varsa, bunları bir boşlukla ayırın.

    az containerapp create \
      --name <CONTAINER_APP_NAME> \
      --resource-group <RESOURCE_GROUP> \
      --environment <ENVIRONMENT_NAME> \
      --image <CONTAINER_IMAGE_LOCATION>
      --min-replicas 0 \
      --max-replicas 5 \
      --secrets "connection-string-secret=<SERVICE_BUS_CONNECTION_STRING>" \ ⬅️
      --scale-rule-name azure-servicebus-queue-rule \
      --scale-rule-type azure-servicebus \
      --scale-rule-metadata "queueName=my-queue" \
                            "namespace=service-bus-namespace" \
                            "messageCount=5" \
      --scale-rule-auth "connection=connection-string-secret"                ⬅️
    

Yönetilen kimliği kullanma

Container Apps ölçek kuralları, Azure hizmetleriyle kimlik doğrulaması yapmak için yönetilen kimliği kullanabilir. Aşağıdaki komut, kullanıcı tarafından atanan yönetilen kimliğe sahip bir kapsayıcı uygulaması oluşturur ve Azure Kuyruk ölçeklendiricisi için kimlik doğrulaması yapmak için bunu kullanır.

Aşağıdaki kodu kullanmadan önce, <> ile çevrelenmiş yer tutucuları kendi değerlerinizle değiştirin.

az containerapp create \
  --resource-group <RESOURCE_GROUP> \
  --name <APP_NAME> \
  --environment <ENVIRONMENT_ID> \
  --user-assigned <USER_ASSIGNED_IDENTITY_ID> \
  --scale-rule-name azure-queue \
  --scale-rule-type azure-queue \
  --scale-rule-metadata "accountName=<AZURE_STORAGE_ACCOUNT_NAME>" "queueName=queue1" "queueLength=1" \
  --scale-rule-identity <USER_ASSIGNED_IDENTITY_ID>
  1. Azure portal kapsayıcı uygulamanıza gidin.

  2. Ölçek'i seçin.

  3. Düzenle ve dağıt'ı seçin.

  4. Ölçek ve çoğaltmalar sekmesini seçin.

  5. En düşük ve en yüksek replika aralığını seçin.

    >Azure Container Apps ölçek aralığı kaydırıcısının ekran görüntüsü.

  6. Ekle'yi seçin.

  7. Kural adı kutusuna bir kural adı girin.

  8. Tür açılan listesinde Özel'i seçin.

  9. KEDA ölçeklendirici belirtiminden type değerini bulun.

    triggers:
    - type: azure-servicebus ⬅️
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  10. Özel kural türü kutusuna ölçekleyici type değerini girin.

  11. KEDA ölçekleyici belirtiminden metadata değerleri bulun.

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue              ⬅️
        namespace: service-bus-namespace ⬅️
        messageCount: "5"                ⬅️
    
  12. Portalda Meta Veriler bölümünü bulun ve Ekle'yi seçin. KEDA ScaledObject belirtimi meta verileri bölümünde her öğenin adını ve değerini girin.

Kimlik Doğrulaması

Container Apps ölçek kuralları gizli dizi tabanlı kimlik doğrulamayı destekler. Azure Kuyruk Depolama, Azure Service Bus ve Azure Event Hubs gibi Azure kaynakları için ölçeklendirme kuralları da yönetilen kimliği destekler. Mümkün olduğunda, uygulama içinde gizli dizileri depolamaktan kaçınmak için yönetilen kimlik kimlik doğrulamasını kullanın.

Gizli dizileri kullanma

  1. Kapsayıcı uygulamanızda, başvurmak istediğiniz gizli bilgileri oluşturun.

  2. KEDA belirtimi tarafından referans verilen TriggerAuthentication nesneyi bulun. Nesnenin secretTargetRef her TriggerAuthentication birini tanımlayın.

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-secrets
      namespace: my-project
    type: Opaque
    data:
      connection-string-secret: <SERVICE_BUS_CONNECTION_STRING>
    ---
    apiVersion: keda.sh/v1alpha1
    kind: TriggerAuthentication
    metadata:
      name: azure-servicebus-auth
    spec:
      secretTargetRef:
      - parameter: connection         ⬅️
        name: my-secrets              ⬅️
        key: connection-string-secret ⬅️
    ---
    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
      name: azure-servicebus-queue-rule
      namespace: default
    spec:
      scaleTargetRef:
        name: my-scale-target
      triggers:
      - type: azure-servicebus
        metadata:
          queueName: my-queue
          namespace: service-bus-namespace
          messageCount: "5"
        authenticationRef:
            name: azure-servicebus-auth
    
  3. Kimlik Doğrulaması bölümünde Ekle'yi seçerek her KEDA secretTargetRef parametresi için bir girdi oluşturun.

Yönetilen kimliği kullanma

Azure Portal'da yönetilen kimlik kimlik doğrulaması desteklenmez. Yönetilen kimlik kullanarak kimlik doğrulaması yapmak için Azure CLI veya Azure Resource Manager kullanın.

Varsayılan ölçek kuralı

Ölçek kuralı oluşturmazsanız, varsayılan ölçek kuralı kapsayıcı uygulamanıza uygulanır.

Tetikle En az çoğaltma En fazla kopya
HTTP 0 10

Önemli

Girişi etkinleştirmediyseniz, bir ölçek kuralı oluşturduğunuzdan veya minReplicas öğesini 1 ya da daha yüksek bir değere ayarladığınızdan emin olun. Giriş devre dışı bırakılırsa ve bir minReplicas veya özel ölçek kuralı tanımlamazsanız kapsayıcı uygulamanız sıfıra ölçeklendirilir ve yedeklemeyi başlatmanın hiçbir yolu yoktur.

Ölçeklendirme davranışı

Ölçeklendirme aşağıdaki davranışlara sahiptir:

Davranış Değer
Yoklama aralığı 30 saniye
Bekleme süresi 300 saniye
Dengeleme penceresinin ölçeğini artırma 0 saniye
Dengeleme penceresinin ölçeğini azaltma 300 saniye
Adım adım ölçek büyütme 1, 4, 8, 16, 32, ... yapılandırılan en fazla kopya sayısına kadar
Azaltma adımı (ölçeği) Kapatılması gereken 100% replika
Ölçeklendirme algoritması desiredReplicas = ceil(currentMetricValue / targetMetricValue)
  • Yoklama aralığı , KEDA'nın olay kaynaklarını sorgulama sıklığıdır. Bu değer HTTP ve TCP ölçek kuralları için geçerli değildir.
  • Soğuma süresi, son olaydan sonra KEDA'nın uygulamayı en düşük replika sayısına indirmeden önce ne kadar beklediğini ifade eder.
  • Ölçeği artırma sabitleme penceresi , ölçeği artırma koşulları karşılandığında KEDA'nın ölçeği artırma kararı vermeden önce ne kadar bekleyeceğidir.
  • Ölçeği azaltma sabitleme penceresi , ölçeği azaltma koşulları karşılandığında KEDA'nın ölçeği azaltma kararı vermeden önce beklediği süredir.
  • Ölçeği artırma adımı, kapsayıcı uygulamanızın ölçeği genişletildikçe kaç çoğaltmanın eklendiğini belirtir. Başlangıçta 1 ile başlar, ardından belirtilen maksimum çoğaltma sayısına kadar sırasıyla 4, 8, 16, 32 vb. katlanarak artar.
  • Ölçeği küçültme adımı, kapsayıcı uygulamanızın ölçeği küçültüldüğünde kaç replikanın kaldırılacağını belirtir. KEDA, kapatılması gereken replikaların %100’ünü ortadan kaldırır.
  • Ölçeklendirme algoritması , istenen geçerli çoğaltma sayısını hesaplamak için kullanılan formüldür.

Örnek

Aşağıdaki ölçek kuralı için:

"minReplicas": 0,
"maxReplicas": 20,
"rules": [
  {
    "name": "azure-servicebus-queue-rule",
    "custom": {
      "type": "azure-servicebus",
      "metadata": {
        "queueName": "my-queue",
        "namespace": "service-bus-namespace",
        "messageCount": "5"
      }
    }
  }
]

Uygulamanızın ölçeği genişlettikten sonra KEDA boş bir kuyrukla başlar ve aşağıdaki adımları gerçekleştirir:

  1. 30 saniyede bir kontrol edin my-queue .
  2. Kuyruk uzunluğu 0'a eşitse 1. adıma geri dönün.
  3. Kuyruk uzunluğu 0'dan büyükse, uygulamayı 1'e ölçeklendirin.
  4. Kuyruk uzunluğu 50 ise değerini hesaplayın desiredReplicas = ceil(50/5) = 10.
  5. Uygulamayı min(maxReplicaCount, desiredReplicas, max(4, 2*currentReplicaCount)) olarak ölçeklendirin.
  6. 1. adıma geri dönün.

Uygulama en fazla 20 çoğaltma sayısına ölçeklendirilirse ölçeklendirme aynı önceki adımlardan geçer. Aşağı ölçekleme, yalnızca koşul 300 saniye boyunca sağlandığında gerçekleşir (aşağı ölçekleme stabilizasyon penceresi). Kuyruk uzunluğu 0 olduğunda, KEDA uygulamayı 0'a ölçeklendirmeden önce 300 saniye (bekleme süresi) bekler.

Dikkat edilmesi gereken noktalar

  • "Birden çok düzeltme" modunda, yeni bir ölçek tetikleyicisi eklemek uygulamanızın yeni bir düzeltmesini oluşturur, ancak eski düzeltmeniz eski ölçek kurallarıyla kullanılabilir durumda kalır. Trafik ayırmalarını yönetmek için Düzeltme yönetimi sayfasını kullanın.

  • Bir uygulama sıfıra ölçeklendiğinde kullanım ücreti ödemezsiniz. Daha fazla fiyatlandırma bilgisi için bkz. billing in Azure Container Apps.

  • Azure Container Apps'da tüm .NET uygulamaları için veri korumayı etkinleştirmeniz gerekir. Ayrıntılar için bkz. ASP.NET Core uygulamasını Azure Container Apps üzerinde dağıtma ve ölçeklendirme.

Bilinen sınırlamalar

  • Dikey ölçeklendirme desteklenmez.

  • Çoğaltma miktarları, hedeflenen bir tutardır, garanti değildir.

  • Durumları yönetmek için Dapr aktörleri kullanıyorsanız, sıfıra ölçeklendirmenin desteklenmediğini unutmayın. Dapr, zaman uyumsuz çağrıları yönetmek için sanal aktörleri kullanır; bu da bellek içi gösterimlerinin kimliklerine veya yaşam sürelerine bağlı olmadığı anlamına gelir.

  • KEDA proxy'lerini proxies ayarları üzerinden değiştirmek desteklenmez. Trafiği inceleyebileceğiniz veya bir ara sunucudan geçirebileceğiniz bir ağ cihazına trafik göndermek için NAT ağ geçidi ya da Kullanıcı Tanımlı Rota (UDR) ile İş Yükü Profillerini kullanmayı değerlendirin.

Sonraki adımlar