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 verziójának horizontális felskálázása során a verzió új példányai igény szerint jönnek létre. Ezeket a példányokat replikáknak nevezzük.

Ennek a skálázási viselkedésnek a támogatásához Azure Container Apps a KEDA (Kubernetes eseményvezérelt automatikus skálázás) működteti. 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.

A skálázási szabályok hozzáadása vagy szerkesztése a tárolóalkalmazás új változatát hozza létre. 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 fontos figyelembe venni 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.
  • Előfordulhat, hogy a nem feldolgozott, de a memóriában maradó replikák számlázása alacsonyabb "tétlenségi" díjszabással történik. 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 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 elkezd skálázni.

Megjegyzés

Ha a Functionst a Container Appsben használja, a skálázási szabályok automatikusan konfigurálódnak a függvény eseményindítói és kötései alapján. Ennek eredményeképpen az Azure portal "Méretezési szabályok hozzáadása" gombja le lesz tiltva ezekhez az alkalmazásokhoz. Ebben a forgatókönyvben a manuális méretezési szabály konfigurálása nem kötelező vagy támogatott.

HTTP

HTTP-skálázási szabály esetén 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, a rendszer hozzáad egy másik replikát. A replikák továbbra is növelik a készletet az maxReplicas összeg erejéig. 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 tulajdonságát a tárolóalkalmazásban single-ra/ré, amikor nem HTTP eseményméretezési szabályokat használ.

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, a rendszer hozzáad egy másik replikát. A replikák továbbra is növelik a készletet az maxReplicas összeg erejéig. 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 tulajdonságát a tárolóalkalmazásban single-ra/ré, amikor nem HTTP eseményméretezési szabályokat használ.

HTTP-méretezési szabály definiálása a --scale-rule-http-concurrency vagy create parancsok update paraméterével.

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, a rendszer hozzáad egy másik replikát. A replikák továbbra is növelik a készletet az max-replicas összeg erejéig. 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. Lépjen be a tárolóalkalmazásához 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 tartozó egyidejű kérések kívánt számát.

TCP

TCP-skálázási szabályokkal szabályozhatja az egyidejű TCP-kapcsolatok küszöbértékét, amely meghatározza az alkalmazás skálázását. Az egyidejű kapcsolatok száma 15 másodpercenként az elmúlt 15 másodpercben lévő kapcsolatok számának 15-ével való hányadosaként lesz kiszámítva. 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ának skálázása legfeljebb öt replikára terjed ki, és nullára skálázható. 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, egy másik replika lesz hozzáadva. A replikákat folyamatosan hozzáadják, amíg el nem érik az maxReplicas mennyiségét, mivel az egyidejű kapcsolatok száma növekszik. 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, egy másik replika lesz hozzáadva. A replikákat folyamatosan hozzáadják, amíg el nem érik az maxReplicas mennyiségét, mivel az egyidejű kapcsolatok száma növekszik. 10 1 n.a.
{
  ...
  "resources": {
    ...
    "properties": {
      ...
      "template": {
        ...
        "scale": {
          "minReplicas": 0,
          "maxReplicas": 5,
          "rules": [{
            "name": "tcp-rule",
            "tcp": {
              "metadata": {
                "concurrentConnections": "100"
              }
            }
          }]
        }
      }
    }
  }
}

TCP-méretezési szabály definiálása a --scale-rule-tcp-concurrency vagy create parancsok update paraméterével.

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, egy másik replika lesz hozzáadva. Az egyidejű kapcsolatok számának növekedésével a replikák folyamatosan hozzáadódnak a 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 \
  --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

Az Azure portálon nem támogatott. TCP-méretezési szabály konfigurálásához használja a Azure CLI, Azure Resource Manager vagy Bicep.

Egyéni

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

Alapértelmezések 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 az utolsó másolatról 0-ra leskálázás történik. 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 létrehozhat 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

Ha titkos kulcsokat szeretne használni a hitelesítéshez, létre kell hoznia egy titkos kulcsot a tárolóalkalmazás tömbjében secrets . A titkos érték a auth méretezési szabály tömbjében használatos.

A KEDA-skálázók titkokat használhatnak egy TriggerAuthentication-ban, 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

Ha titkos kulcsokat szeretne használni a hitelesítéshez, létre kell hoznia egy titkos kulcsot a tárolóalkalmazás tömbjében secrets . A titkos érték a auth méretezési szabály tömbjében használatos.

A KEDA-skálázók titkokat használhatnak egy TriggerAuthentication-ban, 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. 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 felügyelt identitással hitelesíthetnek az Azure-szolgáltatásokkal. A következő ARM-sablon rendszeralapú felügyelt identitást használ hitelesítéshez egy Azure Üzenetsor skálázóhoz.

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.

    A parancssorban való használathoz yaML-formátumból kulcs/érték párdá kell alakítania az értékeket. 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 felügyelt identitással hitelesítéshez használhatóak 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 a bejövő forgalom le van tiltva, és nem határoz meg minReplicas vagy egyéni méretezési szabályt, akkor a tárolóalkalmazás nullára skálázható, és nem tud újraindulni.

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és időtartama az utolsó esemény megfigyelése után, mielőtt az alkalmazás leskálázható a minimális replikaszámra.
  • A felskálázási stabilizálási időszak az az időtartam, amelyet várni kell, mielőtt felskálázási döntést hozunk, ha a felskálázási feltételek teljesülnek.
  • A leskálázási stabilizálási időablak azt az időtartamot jelenti, ameddig várni kell, mielőtt a leskálázási feltételek teljesülése után döntés születik a leskálázás végrehajtásáról.
  • 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. 100% a leállításra szoruló replikák törlődnek.
  • 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 a sor hossza 0, menj vissza az (1) ponthoz.
  3. Ha az üzenetsor hossza > 0, 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. Alkalmazás méretezése min(maxReplicaCount, desiredReplicas, max(4, 2*currentReplicaCount))
  6. Menj vissza az (1) ponthoz.

Ha az alkalmazást a replikák maximális száma 20-ra skálázták, a skálázás ugyanazokat az előző lépéseket kell elvégeznie. A leskálázás csak akkor történik, ha a feltétel 300 másodpercig teljesült (a leskálázási stabilizálási időszak). 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.

  • Nem merülnek fel használati díjak, ha egy alkalmazás nullára skáláz. 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 proxy beállítások általi módosítása nem támogatott. Fontolja meg a Workload Profiler használatát NAT-átjáróval vagy felhasználói útvonallal (UDR), hogy a forgalmat egy hálózati eszközhöz irányítsa, ahol a forgalom megvizsgálható vagy proxyn keresztül továbbítható.

Következő lépések