Méretezési szabályok beállítása a Azure Container Apps

Azure Container Apps deklaratív skálázási szabályokon keresztül kezeli az automatikus horizontális skálázást. A tárolóalkalmazások változatának vertikális felskálázása során a platform igény szerint új példányokat hoz létre a változatból. Ezeket a példányokat replikáknak nevezzük.

A skálázási viselkedés támogatásához Azure Container Apps KEDA-t (Kubernetes eseményvezérelt automatikus skálázást) használ. A KEDA számos metrika, például HTTP-kérések, üzenetsor-üzenetek, PROCESSZOR- és memóriaterhelés, valamint eseményforrások( például Azure Service Bus, Azure Event Hubs, Apache Kafka és Redis) skálázását támogatja. További információ: Skálázók a KEDA dokumentációjában.

Skálázási szabályok hozzáadásakor vagy szerkesztésekor létre kell hoznia a tárolóalkalmazás új változatát. A revízió a tárolóalkalmazás nem módosítható pillanatképe. Ha tudni szeretné, hogy mely típusú módosítások váltanak ki új változatot, tekintse meg a változatmódosítások típusait.

Az eseményvezérelt Container Apps-feladatok skálázási szabályokkal aktiválják az eseményeken alapuló végrehajtásokat.

Méretezési definíció

A skálázás a korlátok, szabályok és viselkedés kombinációja.

  • A korlátok határozzák meg a replikák minimális és maximális számát változatonként a tárolóalkalmazás skálázása során.

    Méretkorlát Alapértelmezett érték Minimális érték Maximális érték
    A másolatok minimális száma módosításonként 0 0 A maximálisan konfigurálható replikák száma 1000.
    Replikák maximális száma verziónként 10 1 A maximálisan konfigurálható replikák száma 1000.
  • A Container Apps által használt szabályok határozzák meg, hogy mikor kell replikákat hozzáadni vagy eltávolítani.

    A méretezési szabályok HTTP, TCP (Transmission Control Protocol) vagy egyéniként vannak implementálva.

  • A viselkedés a szabályok és korlátok kombinációja, amelyek meghatározzák a skálázási döntéseket az idő függvényében.

    A méretezési viselkedés ismerteti a méretezési döntések meghozatalát.

A méretezési szabályok meghatározásakor vegye figyelembe a következő elemeket:

  • Nem számítunk fel használati díjakat, ha a tárolóalkalmazás nullára van skálázva.
  • Azokért a replikákért, amelyek nem végeznek feldolgozást, de a memóriában maradnak, alacsonyabb, „üresjárati” díjat számíthatnak fel. További információ: Számlázás.
  • Ha meg szeretné győződni arról, hogy a változat egy példánya mindig fut, állítsa a replikák minimális számát 1-re vagy magasabbra.
  • A platformfrissítések vagy -karbantartások során előfordulhat, hogy átmenetileg több replika jelenik meg a vártnál. A Container Apps biztosítja, hogy az üzemi munkafolyamatra ne legyen hatással az új példányok előmelegítése a forgalom áthelyezése előtt, hasonlóan a Kubernetes alapértelmezett viselkedéséhez. A további replikák a művelet befejeződése után automatikusan törlődnek.

Skálázási szabályok

Az eseményindítók három kategóriája határozza meg a skálázás módját:

  • HTTP: A korrektúra egyidejű HTTP-kéréseinek száma alapján.
  • TCP: A módosítás egyidejű TCP-kapcsolatainak száma alapján.
  • Egyéni: Egyéni metrikák alapján, például:
    • CPU
    • Memória
    • Támogatott eseményvezérelt adatforrások:
      • Azure Service Bus
      • Azure Event Hubs
      • Apache Kafka
      • Redis

Ha egynél több skálázási szabályt határoz meg, a tárolóalkalmazás a szabályok első feltételének teljesülése után skálázni kezd.

Megjegyzés

Ha a Functionst a Container Appsben használja, az alapértelmezett felület automatikusan konfigurálja a méretezési szabályokat a függvény eseményindítói és kötései alapján. A Azure portál letiltja a A méretezési szabályok hozzáadása gombot ezekhez az alkalmazásokhoz. Ha ügyfél által meghatározott szabályokra van szüksége, használja a allowScalingRuleOverride elemet az Azure Functions automatikusan létrehozott KEDA-méretezési szabályainak felülbírálása a Container Appsben című témakörben leírtak szerint.

HTTP

HTTP-skálázási szabály használatakor szabályozhatja az egyidejű HTTP-kérések küszöbértékét, amely meghatározza a tárolóalkalmazás változatának méretezését. Az egyidejű kérések számát 15 másodpercenként úgy számítjuk ki, hogy az elmúlt 15 másodpercben érkezett kérések számát elosztjuk 15-tel. A Container Apps-feladatok nem támogatják a HTTP-skálázási szabályokat.

A következő példában a rendszer akár öt példányig kiterjeszthető, és visszaállítható nullára. A méretezési tulajdonság másodpercenként 100 egyidejű kérésre van beállítva.

Példa

A http szakasz egy HTTP-méretezési szabályt határoz meg.

Skálázási tulajdonság Leírás Alapértelmezett érték Minimális érték Maximális érték
concurrentRequests Ha a HTTP-kérelmek száma meghaladja ezt az értéket, az alkalmazás hozzáad egy másik replikát. Az alkalmazás továbbra is hozzáad replikákat az maxReplicas összeghez. 10 1 n.a.
resource symbolicname 'Microsoft.App/containerApps@2025-02-02-preview' = {
  ...
  properties: {
    ...
    template: {
      ...
      scale: {
        maxReplicas: 0
        minReplicas: 5
        rules: [
          {
            name: 'http-rule'
            http: {
              metadata: {
                concurrentRequests: '100'
              }
            }
          }
        ]
      }
    }
  }
}

Megjegyzés

Állítsa be a properties.configuration.activeRevisionsMode tárolóalkalmazás single tulajdonságát a nem HTTP-eseményméretezési szabályok használatakor.

A http szakasz egy HTTP-méretezési szabályt határoz meg.

Skálázási tulajdonság Leírás Alapértelmezett érték Minimális érték Maximális érték
concurrentRequests Ha a HTTP-kérelmek száma meghaladja ezt az értéket, az alkalmazás hozzáad egy másik replikát. Az alkalmazás továbbra is hozzáad replikákat az maxReplicas összeghez. 10 1 n.a.
{
  ...
  "resources": {
    ...
    "properties": {
      ...
      "template": {
        ...
        "scale": {
          "minReplicas": 0,
          "maxReplicas": 5,
          "rules": [{
            "name": "http-rule",
            "http": {
              "metadata": {
                "concurrentRequests": "100"
              }
            }
          }]
        }
      }
    }
  }
}

Megjegyzés

Állítsa be a properties.configuration.activeRevisionsMode tárolóalkalmazás single tulajdonságát a nem HTTP-eseményméretezési szabályok használatakor.

HTTP-méretezési szabály definiálása a --scale-rule-http-concurrency paraméterrel a create parancsokban.update

parancssori felület paraméter Leírás Alapértelmezett érték Minimális érték Maximális érték
--scale-rule-http-concurrency Ha az egyidejű HTTP-kérelmek száma meghaladja ezt az értéket, az alkalmazás újabb replikát ad hozzá. Az alkalmazás továbbra is hozzáad replikákat az max-replicas összeghez. 10 1 n.a.
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. Keresse meg a tárolóalkalmazást az Azure portálon.

  2. Válassza a Méretezés lehetőséget.

  3. Válassza a Szerkesztés és üzembe helyezés lehetőséget.

  4. Válassza a Méretezés lapot.

  5. Válassza ki a replika minimális és maximális tartományát.

    Az Azure Container Apps skálázási tartományának csúszkája.

  6. Válassza a Hozzáadás lehetőséget.

  7. A Szabálynév mezőbe írjon be egy szabálynevet.

  8. A Típus legördülő listában válassza a HTTP-méretezés lehetőséget.

  9. Az Egyidejű kérések mezőben adja meg a tárolóalkalmazáshoz használni kívánt egyidejű kérések számát.

TCP

TCP-skálázási szabály használatakor ön határozza meg az egyidejű TCP-kapcsolatok küszöbértékét, amely meghatározza az alkalmazás skálázását. A rendszer 15 másodpercenként kiszámítja az egyidejű kapcsolatok számát úgy, hogy az elmúlt 15 másodpercben mért kapcsolatok számát elosztja 15-tel. A Container Apps-feladatok nem támogatják a TCP-skálázási szabályokat.

A következő példában a tárolóalkalmazás-változat legfeljebb öt replikára skálázódhat, és nullára is visszaskálázódhat. A méretezési küszöbérték másodpercenként 100 egyidejű kapcsolatra van beállítva.

Példa

A tcp szakasz egy TCP-méretezési szabályt határoz meg.

Skálázási tulajdonság Leírás Alapértelmezett érték Minimális érték Maximális érték
concurrentConnections Ha az egyidejű TCP-kapcsolatok száma meghaladja ezt az értéket, a rendszer egy másik replikát ad hozzá. A rendszer a párhuzamos kapcsolatok számának növekedésével tovább növeli a replikák számát, egészen a(z) maxReplicas mennyiségig. 10 1 n.a.
resource symbolicname 'Microsoft.App/containerApps@2025-02-02-preview' = {
  ...
  properties: {
    ...
    template: {
      ...
      scale: {
        maxReplicas: 0
        minReplicas: 5
        rules: [
          {
            name: 'tcp-rule'
            http: {
              metadata: {
                concurrentConnections: '100'
              }
            }
          }
        ]
      }
    }
  }
}

A tcp szakasz egy TCP-méretezési szabályt határoz meg.

Skálázási tulajdonság Leírás Alapértelmezett érték Minimális érték Maximális érték
concurrentConnections Ha az egyidejű TCP-kapcsolatok száma meghaladja ezt az értéket, a rendszer egy másik replikát ad hozzá. A rendszer a replikák számát folyamatosan növeli egészen a(z) maxReplicas mennyiségig, ahogy az egyidejű kapcsolatok száma nő. 10 1 n.a.
{
  ...
  "resources": {
    ...
    "properties": {
      ...
      "template": {
        ...
        "scale": {
          "minReplicas": 0,
          "maxReplicas": 5,
          "rules": [{
            "name": "tcp-rule",
            "tcp": {
              "metadata": {
                "concurrentConnections": "100"
              }
            }
          }]
        }
      }
    }
  }
}

TCP-skálázási szabály megadása a create vagy a update parancsban a --scale-rule-tcp-concurrency paraméter használatával.

parancssori felület paraméter Leírás Alapértelmezett érték Minimális érték Maximális érték
--scale-rule-tcp-concurrency Ha az egyidejű TCP-kapcsolatok száma meghaladja ezt az értéket, a rendszer egy másik replikát ad hozzá. A rendszer egyre több replikát ad hozzá egészen a(z) max-replicas mennyiségig, ahogy nő az egyidejű kapcsolatok száma. 10 1 n.a.
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

A Azure portál nem támogatja ezt a funkciót. TCP-méretezési szabály konfigurálásához használja a Azure CLI, Azure Resource Manager vagy Bicep.

Egyéni

Hozzon létre egy egyéni Container Apps skálázási szabályt bármely ScaledObject-alapúKEDA-skálázó alapján az alábbi alapértelmezett értékekkel:

Alapértelmezett érték Másodperc
Lekérdezési időköz 30
Lehűlési időszak 300

Megjegyzés

A lehűlési időszak csak akkor lép érvénybe, ha a végső replikáról 0-ra skáláz. A lehűlési időszak nem befolyásolja a skálázást, mivel a többi replika el lesz távolítva.

Eseményvezérelt Container Apps-feladatokhoz hozzon létre egy egyéni skálázási szabályt bármely ScaledJob-alapú KEDA-skálázó alapján.

Az alábbi példa bemutatja, hogyan hozhat létre egyéni méretezési szabályt.

Példa

Ez a példa bemutatja, hogyan konvertálhat egy Azure Service Bus skálázót Tárolóalkalmazások méretezési szabálysá, de ugyanezt a folyamatot használja bármely más ScaledObject-alapú KEDA-méretezési specifikációhoz.

A hitelesítéshez a KEDA méretező hitelesítési paraméterei a Container Apps titkos adatait vagy a felügyelt identitást veszik figyelembe.

Az alábbi eljárás bemutatja, hogyan konvertálhat egy KEDA-skálázót egy tárolóalkalmazás-méretezési szabállyá. Ez a kódrészlet egy Bicep-sablon részlete, amely bemutatja, hogy az egyes szakaszok hol illeszkednek a teljes sablon kontextusába.

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>'
                }
              ]
            }
          }
        ]
      }
    }
  }
}

Ebből a részletből megtudhatja, hogyan illeszkednek az alábbi példák a Bicep sablonba.

Először határozza meg a méretezési szabály típusát és metaadatait.

  1. A KEDA-méretezési specifikációban keresse meg az type értéket.

    triggers:
     - type: azure-servicebus ⬅️
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  2. A Bicep-sablonban adja meg a skálázási type értéket a custom.type méretezési szabály tulajdonságába.

    ...
    rules: [
      {
        name: 'azure-servicebus-queue-rule'
        custom: {
          type: 'azure-servicebus' ⬅️
          metadata: {
            queueName: 'my-queue'
            namespace: 'service-bus-namespace'
            messageCount: '5'
          }
        }
      }
    ]
    ...
    
  3. A KEDA-méretezési specifikációban keresse meg az metadata értékeket.

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue              ⬅️
        namespace: service-bus-namespace ⬅️
        messageCount: "5"                ⬅️
    
  4. A Bicep-sablonban adja hozzá az összes metaadat-értéket a custom.metadata méretezési szabály szakaszához.

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

Hitelesítés

A Container Apps skálázási szabályai támogatják a titkos kódokon alapuló hitelesítést. Az Azure erőforrásokra vonatkozó skálázási szabályok , beleértve a Azure Queue Storage, a Azure Service Bus és a Azure Event Hubs, szintén támogatják a felügyelt identitást. Ha lehetséges, használjon felügyelt identitáshitelesítést a titkos kódok alkalmazáson belüli tárolásának elkerülése érdekében.

Titkos kódok használata

A titkos kódok hitelesítéshez való használatához hozzon létre egy titkos kulcsot a tárolóalkalmazás tömbjében secrets . Használja a titkos értéket a auth méretezési szabály tömbjében.

A KEDA-skálázók használhatnak titkos adatokat egy olyan TriggerAuthentication elemben, amelyre a authenticationRef tulajdonság hivatkozik. A TriggerAuthentication objektumot a Container Apps méretezési szabályához rendelheti.

  1. Keresse meg a TriggerAuthentication KEDA ScaledObject specifikációja által hivatkozott objektumot.

  2. Az TriggerAuthentication objektumban keresse meg minden egyes secretTargetRef és a hozzá tartozó titkot.

    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. A Bicep-sablonban minden titkos kódhoz:

    1. Adjon hozzá egy titkos kulcsot a tárolóalkalmazás tömbhöz secrets , amely tartalmazza a titkos kód nevét és értékét.

    2. Adjon hozzá egy elemet a auth méretezési szabály tömbjéhez.

      1. Állítsa be a triggerParameter tulajdonság értékét a secretTargetRefparameter tulajdonságának értékére.

      2. Állítsa a secretRef tulajdonság értékét a secretTargetRefkey tulajdonság nevére.

        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'
                        }
                      ]
                    }
                  }
                ]
              }
            }
          }
        }
        

    Egyes skálázók támogatják az FromEnv utótaggal rendelkező metaadatokat egy környezeti változó értékére való hivatkozáshoz. A Container Apps a környezeti változó ARM-sablonjában szereplő első tárolót tekinti meg.

    További biztonsági információkért tekintse meg a megfontolandó szempontokat ismertető szakaszt .

Felügyelt identitás használata

A Container Apps skálázási szabályai a felügyelt identitást használják hitelesítéshez az Azure szolgáltatásokkal. Az alábbi Bicep-sablon a rendszeralapú felügyelt identitást használja az Azure-üzenetsor-skálázó hitelesítéséhez.

A következő kód használata előtt cserélje le az értékekkel körülvett <> helyőrzőket.

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

A felügyelt identitás méretezési szabályokkal való használatáról további információt a Felügyelt identitás című témakörben talál.

Az alábbi eljárás bemutatja, hogyan konvertálhat egy KEDA-skálázót egy tárolóalkalmazás-méretezési szabállyá. Ez a kódrészlet egy ARM-sablon részlete, amely megmutatja, hogy az egyes szakaszok hol illeszkednek a teljes sablon kontextusába.

{
  ...
  "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>"
                  }
                ]
              }
            }
          ]
        }
      }
    }
  }
}

Ebből a részletből megtudhatja, hogyan illeszkednek az alábbi példák az ARM-sablonba.

Először határozza meg a méretezési szabály típusát és metaadatait.

  1. A KEDA-méretezési specifikációban keresse meg az type értéket.

    triggers:
    - type: azure-servicebus ⬅️
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  2. Az ARM-sablonban írja be a méretezési szabály tulajdonságába a type skálázási custom.type értéket.

    ...
    "rules": [
      {
        "name": "azure-servicebus-queue-rule",
        "custom": {
          "type": "azure-servicebus",  ⬅️
          "metadata": {
            "queueName": "my-queue",
            "namespace": "service-bus-namespace",
            "messageCount": "5"
          }
        }
      }
    ]
    ...
    
  3. A KEDA-méretezési specifikációban keresse meg az metadata értékeket.

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue              ⬅️
        namespace: service-bus-namespace ⬅️
        messageCount: "5"                ⬅️
    
  4. Az ARM-sablonban adja hozzá az összes metaadat-értéket a custom.metadata méretezési szabály szakaszához.

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

Hitelesítés

A Container Apps skálázási szabályai támogatják a titkos kódokon alapuló hitelesítést. Az Azure erőforrásokra vonatkozó skálázási szabályok , beleértve a Azure Queue Storage, a Azure Service Bus és a Azure Event Hubs, szintén támogatják a felügyelt identitást. Ha lehetséges, használjon felügyelt identitáshitelesítést a titkos kódok alkalmazáson belüli tárolásának elkerülése érdekében.

Titkos kódok használata

A titkos kódok hitelesítéshez való használatához hozzon létre egy titkos kulcsot a tárolóalkalmazás tömbjében secrets . Használja a titkos értéket a auth méretezési szabály tömbjében.

A KEDA-skálázók a authenticationRef tulajdonság által hivatkozott TriggerAuthentication objektumban lévő titkos adatokat használhatják. A TriggerAuthentication objektumot a Container Apps méretezési szabályához rendelheti.

  1. Keresse meg a TriggerAuthentication KEDA ScaledObject specifikációja által hivatkozott objektumot.

  2. Az TriggerAuthentication objektumban keresse meg minden egyes secretTargetRef és a hozzá tartozó titkot.

    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. Az ARM-sablonban minden titkos kódhoz:

    1. Adjon hozzá egy titkos kulcsot a tárolóalkalmazás tömbhöz secrets , amely tartalmazza a titkos kód nevét és értékét.

    2. Adjon hozzá egy elemet a auth méretezési szabály tömbjéhez.

      1. Állítsa be a triggerParameter tulajdonság értékét a secretTargetRefparameter tulajdonságának értékére.

      2. Állítsa a secretRef tulajdonság értékét a secretTargetRefkey tulajdonság nevére.

    {
      ...
      "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"         ⬅️
                      }                                          ⬅️
                    ]
                  }
                }
              ]
            }
          }
        }
      }
    }
    

    Egyes skálázók támogatják az FromEnv utótaggal rendelkező metaadatokat egy környezeti változó értékére való hivatkozáshoz. A Container Apps a környezeti változó ARM-sablonjában szereplő első tárolót tekinti meg.

    További biztonsági információkért tekintse meg a megfontolandó szempontokat ismertető szakaszt .

Felügyelt identitás használata

A Container Apps skálázási szabályai a felügyelt identitást használják hitelesítéshez az Azure szolgáltatásokkal. A következő ARM-sablon az Azure Queue-skalázó hitelesítéséhez a rendszer által hozzárendelt felügyelt identitást adja meg.

A következő kód használata előtt cserélje le az értékekkel körülvett <> helyőrzőket.

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

A felügyelt identitás méretezési szabályokkal való használatáról további információt a Felügyelt identitás című témakörben talál.

  1. A KEDA-méretezési specifikációban keresse meg az type értéket.

    triggers:
    - type: azure-servicebus ⬅️
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  2. A CLI parancsban állítsa a paramétert --scale-rule-type a specifikáció type értékére.

    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. A KEDA-méretezési specifikációban keresse meg az metadata értékeket.

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue              ⬅️
        namespace: service-bus-namespace ⬅️
        messageCount: "5"                ⬅️
    
  4. A CLI parancsban állítsa a paramétert --scale-rule-metadata a metaadat-értékekre.

    Alakítsa át az értékeket YAML-formátumból kulcs/érték párká a parancssorban való használatra. Különítse el az egyes kulcs-/értékpárokat szóközzel.

    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"
    

Hitelesítés

A Container Apps skálázási szabályai támogatják a titkos kódokon alapuló hitelesítést. Az Azure erőforrásokra vonatkozó skálázási szabályok , beleértve a Azure Queue Storage, a Azure Service Bus és a Azure Event Hubs, szintén támogatják a felügyelt identitást. Ha lehetséges, használjon felügyelt identitáshitelesítést a titkos kódok alkalmazáson belüli tárolásának elkerülése érdekében.

Titkos kódok használata

A Tárolóalkalmazások méretezési szabály titkos kulcsalapú hitelesítésének konfigurálásához konfigurálja a tárolóalkalmazás titkos kulcsait, és hivatkozzon rájuk a méretezési szabályban.

A KEDA-skálázók támogatják a triggerAuthentication titkos kulcsokat, amelyeket a authenticationRef tulajdonság referenciaként használ. Az objektum megfeleltethető a TriggerAuthentication Container Apps méretezési szabályának.

  1. Keresse meg a TriggerAuthentication KEDA ScaledObject specifikációja által hivatkozott objektumot. Azonosítsa az secretTargetRef objektum minden egyes TriggerAuthentication elemét.

    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. A tárolóalkalmazásban hozza létre a .

  3. A CLI-parancsban állítsa be az egyes secretTargetRef bejegyzések paramétereit.

    1. Hozzon létre egy titkos bejegyzést a --secrets paraméterrel. Ha több titkos kulcs is van, különítse el őket egy szóközzel.

    2. Hozzon létre egy hitelesítési bejegyzést a --scale-rule-auth paraméterrel. Ha több bejegyzés is van, különítse el őket szóközzel.

    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"                ⬅️
    

Felügyelt identitás használata

A Container Apps skálázási szabályai a felügyelt identitást használják hitelesítéshez az Azure szolgáltatásokkal. Az alábbi parancs létrehoz egy felhasználó által hozzárendelt felügyelt identitással rendelkező tárolóalkalmazást, és azt használja a Azure Üzenetsor-skálázó hitelesítéséhez.

A következő kód használata előtt cserélje le az értékekkel körülvett <> helyőrzőket.

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. Keresse meg a tárolóalkalmazást az Azure portálon.

  2. Válassza a Méretezés lehetőséget.

  3. Válassza a Szerkesztés és üzembe helyezés lehetőséget.

  4. Válassza a Méretezés és replikák lapot.

  5. Válassza ki a replika minimális és maximális tartományát.

    Az Azure Container Apps skálázási tartományának csúszkája.

  6. Válassza a Hozzáadás lehetőséget.

  7. A Szabálynév mezőbe írjon be egy szabálynevet.

  8. A Típus legördülő listában válassza az Egyéni lehetőséget.

  9. A KEDA-méretezési specifikációban keresse meg az type értéket.

    triggers:
    - type: azure-servicebus ⬅️
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  10. Az Egyéni szabály típusa mezőbe írja be a skálázó type értékét.

  11. A KEDA-méretezési specifikációban keresse meg az metadata értékeket.

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue              ⬅️
        namespace: service-bus-namespace ⬅️
        messageCount: "5"                ⬅️
    
  12. A portálon keresse meg a Metaadatok szakaszt, és válassza a Hozzáadás lehetőséget. Adja meg az egyes elemek nevét és értékét a KEDA ScaledObject specifikáció metaadatai szakaszban.

Hitelesítés

A Container Apps skálázási szabályai támogatják a titkos kódokon alapuló hitelesítést. Az Azure erőforrásokra vonatkozó skálázási szabályok , beleértve a Azure Queue Storage, a Azure Service Bus és a Azure Event Hubs, szintén támogatják a felügyelt identitást. Ha lehetséges, használjon felügyelt identitáshitelesítést a titkos kódok alkalmazáson belüli tárolásának elkerülése érdekében.

Titkos kódok használata

  1. A tárolóalkalmazásban hozza létre a hivatkozni kívánt titkos kulcsokat .

  2. Keresse meg a TriggerAuthentication KEDA ScaledObject specifikációja által hivatkozott objektumot. Azonosítsa az secretTargetRef objektum minden egyes TriggerAuthentication elemét.

    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. A Hitelesítés szakaszban válassza a Hozzáadás lehetőséget az egyes KEDA-paraméterek secretTargetRef bejegyzésének létrehozásához.

Felügyelt identitás használata

Az Azure Portal nem támogatja a felügyelt identitás hitelesítést. A Azure CLI vagy Azure Resource Manager használatával hitelesíthet felügyelt identitással.

Alapértelmezett méretezési szabály

Ha nem hoz létre méretezési szabályt, a rendszer az alapértelmezett méretezési szabályt alkalmazza a tárolóalkalmazásra.

Eseményindító Minimális replikák Replikák maximális kihasználása
HTTP 0 10

Fontos

Ha nem engedélyezi a bejövő forgalmat, hozzon létre egy skálázási szabályt, vagy állítsa be minReplicas-t 1 vagy annál nagyobbra. Ha az ingress le van tiltva, és nem ad meg egy minReplicas elemet vagy egyéni skálázási szabályt, a tárolóalkalmazás nullára skálázódik, és nem tud újra elindulni.

Skálázási viselkedés

A skálázás a következő viselkedésekkel rendelkezik:

Magatartás Érték
Lekérdezési időköz 30 másodperc
Lehűlési időszak 300 másodperc
Stabilizáló ablak vertikális felskálázása 0 másodperc
Stabilizálási ablak méretének csökkentése 300 másodperc
Felskálázási lépés 1, 4, 8, 16, 32, ... a replikák maximális számának konfigurálásához
Leskálázási lépés 100% a replikák közül, amelyeket le kell állítani
Skálázási algoritmus desiredReplicas = ceil(currentMetricValue / targetMetricValue)
  • A lekérdezési időköz az, hogy a KEDA milyen gyakran kérdezi le az eseményforrásokat. Ez az érték nem vonatkozik a HTTP- és TCP-méretezési szabályokra.
  • A lehűlési időszak az, hogy az utolsó esemény után a KEDA mennyi ideig várakozik, mielőtt az alkalmazás leskálázódik a minimális replikaszámra.
  • A felskálázási stabilizálási időszak azt jelzi, hogy a KEDA mennyi ideig várakozik, mielőtt vertikális felskálázási döntést hoz a felskálázási feltételek teljesülése után.
  • A leskálázási stabilizálási időszak azt jelzi, hogy a KEDA mennyi ideig várakozik, mielőtt leskálázási döntést hoz a leskálázási feltételek teljesülése után.
  • A vertikális felskálázási lépés az, hogy hány replika lesz hozzáadva a tárolóalkalmazás felskálázásakor. 1-nél kezdődik, majd 4, 8, 16, 32 és így tovább, a konfigurált maximális replikaszámig.
  • A leskálázási lépés azt jelzi, hogy hány replika lesz eltávolítva a tárolóalkalmazás méretezése során. A KEDA eltávolítja a leállítandó replikák 100%-át.
  • A skálázási algoritmus a replikák aktuális kívánt számának kiszámításához használt képlet.

Példa

A következő méretezési szabály esetén:

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

Ahogy az alkalmazás felskálázható, a KEDA üres üzenetsorsal kezdődik, és végrehajtja a következő lépéseket:

  1. Ellenőrizze my-queue 30 másodpercenként.
  2. Ha az üzenetsor hossza 0-val egyenlő, térjen vissza az 1. lépéshez.
  3. Ha az üzenetsor hossza 0-nál nagyobb, skálázza az alkalmazást 1-re.
  4. Ha a várakozási sor hossza 50, számítsa desiredReplicas = ceil(50/5) = 10.
  5. Méretezze át az alkalmazást erre: min(maxReplicaCount, desiredReplicas, max(4, 2*currentReplicaCount)).
  6. Térjen vissza az 1. lépéshez.

Ha az alkalmazás a 20-ra skálázható maximális replikaszámra skálázható, a skálázás ugyanazokon az előző lépéseken megy keresztül. A leskálázás csak akkor történik meg, ha a feltétel 300 másodpercig teljesül (a leskálázási stabilizációs ablak). Ha az üzenetsor hossza 0, a KEDA 300 másodpercig (lehűlési ideig) vár, mielőtt 0-ra skálázhatja az alkalmazást.

Megfontolások

  • "Több változat" módban egy új méretezési eseményindító hozzáadása új változatot hoz létre az alkalmazáshoz, de a régi változat továbbra is elérhető marad a régi skálázási szabályokkal. Használja a Változatkezelés lapot a forgalomelosztások kezeléséhez.

  • Ha egy alkalmazás nullára skáláz, nem kell használati díjat fizetnie. További díjszabási információkért lásd: Billing in Azure Container Apps.

  • Engedélyeznie kell az adatvédelem használatát az Azure Container Apps összes .NET alkalmazásához. Részletekért lásd: A ASP.NET Core-alkalmazások üzembe helyezése és skálázása Azure Container Apps.

Ismert korlátozások

  • A függőleges skálázás nem támogatott.

  • A replikamennyiségek célösszegek, nem garancia.

  • Ha Dapr-szereplőkkel kezeli az állapotokat, vegye figyelembe, hogy a nullára történő skálázás nem támogatott. A Dapr virtuális szereplőkkel kezeli az aszinkron hívásokat, ami azt jelenti, hogy a memóriában való ábrázolásuk nem kapcsolódik az identitásukhoz vagy az élettartamukhoz.

  • A KEDA-proxyk proxies beállításokon keresztüli módosítása nem támogatott. Fontolja meg a munkaterhelési profilok NAT-átjáróval vagy felhasználó által definiált útvonallal (UDR) való használatát, hogy a forgalmat egy hálózati eszközre irányítsa, ahol ellenőrizheti vagy proxyként továbbíthatja azt.

Következő lépések