Rozdělení provozu v Azure Container Apps

Ve výchozím nastavení se při povolení příchozího přenosu dat veškerý provoz směruje na nejnovější nasazenou revizi. Když v aplikaci kontejneru povolíte více revizí , můžete příchozí provoz rozdělit mezi aktivní revize.

Rozdělení provozu je užitečné pro testování aktualizací kontejnerové aplikace. Rozdělení provozu můžete použít k postupné fázi nové revize v modrých nasazeních nebo v testování A/B.

Rozdělení provozu je založené na hmotnosti (procento) provozu, který je směrován na každou revizi. Kombinovaná váha všech pravidel rozdělení provozu se musí rovnat 100 %. Revizi můžete zadat podle názvu revize nebo popisku revize.

V tomto článku se dozvíte, jak nakonfigurovat pravidla rozdělení provozu pro vaši aplikaci kontejneru. Ke spuštění následujících příkladů potřebujete aplikaci typu kontejner s několika revizemi.

Konfigurace rozdělení provozu

Pomocí příkazu nakonfigurujte rozdělení provozu mezi revizemi az containerapp ingress traffic set . Revize můžete zadat podle názvu pomocí parametru --revision-weight nebo podle popisku revize s parametrem --label-weight .

Následující příkaz nastaví váhu provozu pro každou revizi na 50 %:

az containerapp ingress traffic set \
    --name <APP_NAME> \
    --resource-group <RESOURCE_GROUP> \
    --revision-weight <REVISION_1>=50 <REVISION_2>=50

Nezapomeňte nahradit zástupné hodnoty obklopené <> vlastními hodnotami.

Tento příkaz nastaví váhu provozu pro revizní <LABEL_1> na 80 % a revizní <LABEL_2> na 20 %:

az containerapp ingress traffic set \
    --name <APP_NAME> \
    --resource-group <RESOURCE_GROUP> \
    --label-weight <LABEL_1>=80 <LABEL_2>=20

  1. Přejděte do aplikace kontejneru na webu Azure Portal.
  2. V nabídce na levé straně vyberte Správa revizí.
  3. Pokud je režim revize single, nastavte režim na více.
    1. Vyberte režim revize.
    2. Vyberte Více: Několik revizí aktivních současně.
    3. Vyberte Použít.
    4. Počkejte, než se režim revize aktualizuje na více. Screenshot of the revision management revision mode setting.
  4. Vyberte Zobrazit neaktivní revize.
  5. Pokud nemáte více revizí, můžete vytvořit novou revizi.
    1. Vyberte Vytvořit novou revizi.
    2. Můžete použít výchozí nastavení nebo upravit revizi.
    3. Zadejte název/příponu revize.
    4. Vyberte Vytvořit. Screenshot of Create and deploy new revision.
    5. Počkejte, až se revize nasadí.
  6. U revizí, do které chcete směrovat provoz, vyberte Aktivní .
  7. Zadejte procento provozu, který chcete směrovat na každou revizi ve sloupci Provoz . Kombinované procento všech přenosů se musí rovnat 100 %.
  8. Zvolte Uložit. Screenshot of traffic splitting in Revision management.

Povolte rozdělení provozu přidáním configuration.ingress.traffic vlastností do ingress oddílu šablony aplikace kontejneru. Revize můžete zadat podle názvu s revisionName vlastností nebo podle popisku revize s label vlastností.

Následující příklad nastaví 100 % provozu na nejnovější nasazenou revizi:

{
  ...
  "configuration": {
    "ingress": {
      "external": true,
      "targetPort": 80,
      "allowInsecure": false,
      "traffic": [
        {
          "latestRevision": true,
          "weight": 100
        }
      ]
    },
  },

Následující příklad ukazuje rozdělení provozu mezi dvě revize podle názvu:

{
  ...
  "configuration": {
    "ingress": {
      "external": true,
      "targetPort": 80,
      "allowInsecure": false,
      "traffic": [
          {
              "revisionName": "my-example-app--5g3ty20",
              "weight": 50
          },
          {
              "revisionName": "my-example-app--qcfkbsv",
              "weight": 50
            }
        ],
    },
  },

Následující příklad ukazuje rozdělení provozu mezi dvě revize podle popisku:

{
  ...
  "configuration": {
    "ingress": {
      "external": true,
      "targetPort": 80,
      "allowInsecure": false,
      "traffic": [
          {
              "weight": 50,
              "label": "v-2"
          },
          {
              "weight": 50,
              "label": "v-1"
          }
        ],
    },
  },

Případy použití

Následující scénáře popisují nastavení konfigurace pro běžné případy použití. Příklady se zobrazují ve formátu JSON, ale k konfiguraci rozdělení provozu můžete použít také Azure Portal nebo Azure CLI.

Rychlá iterace

V situacích, kdy často iterujete vývoj vaší aplikace kontejneru, můžete nastavit pravidla provozu tak, aby vždy přesunula veškerý provoz na nejnovější nasazenou revizi.

Následující příklad šablony směruje veškerý provoz na nejnovější nasazenou revizi:

"ingress": { 
  "traffic": [
    {
      "latestRevision": true,
      "weight": 100
    }
  ]
}

Jakmile budete s nejnovější revizí spokojeni, můžete provoz do této revize uzamknout tak ingress , že aktualizujete nastavení na:

"ingress": { 
  "traffic": [
    {
      "latestRevision": false, // optional
      "revisionName": "myapp--knowngoodrevision",
      "weight": 100
    }
  ]
}

Aktualizace existující revize

Představte si situaci, kdy máte známou dobrou revizi, která obsluhuje 100 % provozu, ale chcete vydat aktualizaci aplikace. Nové revize můžete nasadit a otestovat pomocí jejich přímých koncových bodů, aniž by to mělo vliv na hlavní revizi obsluhující aplikaci.

Jakmile budete s aktualizovanou revizí spokojeni, můžete část provozu přesunout do nové revize pro účely testování a ověření.

Následující šablona přesune 20 % provozu na aktualizovanou revizi:

"ingress": {
  "traffic": [
    {
      "revisionName": "myapp--knowngoodrevision",
      "weight": 80
    },
    {
      "revisionName": "myapp--newerrevision",
      "weight": 20
    }
  ]
}

Pracovní mikroslužby

Při vytváření mikroslužeb můžete chtít udržovat produkční a přípravné koncové body pro stejnou aplikaci. Pomocí popisků se ujistěte, že se provoz mezi různými revizemi nepřepíná.

Následující příklad šablony používá popisky na různé revize.

"ingress": { 
  "traffic": [
    {
      "revisionName": "myapp--knowngoodrevision",
      "weight": 100
    },
    {
      "revisionName": "myapp--98fdgt",
      "weight": 0,
      "label": "staging"
    }
  ]
}

Další kroky