Verkeer splitsen in Azure Container Apps

Wanneer inkomend verkeer is ingeschakeld, wordt standaard al het verkeer doorgestuurd naar de meest recente geïmplementeerde revisie. Wanneer u meerdere revisiemodus inschakelt in uw container-app, kunt u binnenkomend verkeer splitsen tussen actieve revisies.

Het splitsen van verkeer is handig voor het testen van updates voor uw container-app. U kunt verkeer splitsen om geleidelijk in een nieuwe revisie te faseren in blauw-groene implementaties of in A/B-tests.

Verkeer splitsen is gebaseerd op het gewicht (percentage) verkeer dat naar elke revisie wordt doorgestuurd. Het gecombineerde gewicht van alle regels voor het splitsen van verkeer moet gelijk zijn aan 100%. U kunt revisie opgeven op revisienaam of revisielabel.

In dit artikel leest u hoe u regels voor het splitsen van verkeer voor uw container-app configureert. Als u de volgende voorbeelden wilt uitvoeren, hebt u een container-app met meerdere revisies nodig.

Verkeer splitsen configureren

Configureer verkeer splitsen tussen revisies met behulp van de az containerapp ingress traffic set opdracht. U kunt de revisies op naam opgeven met de --revision-weight parameter of op revisielabel met de --label-weight parameter.

Met de volgende opdracht wordt het verkeersgewicht voor elke revisie ingesteld op 50%:

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

Zorg ervoor dat u de tijdelijke aanduidingen vervangt die door uw eigen waarden worden omgeven <> .

Met deze opdracht wordt het verkeersgewicht voor revisie <LABEL_1 ingesteld op> 80% en revisie <LABEL_2> op 20%:

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

  1. Ga naar uw container-app in Azure Portal.
  2. Selecteer Revisiebeheer in het menu aan de linkerkant.
  3. Als de revisiemodus Single is, stelt u de modus in op meerdere.
    1. Selecteer Revisiemodus kiezen.
    2. Selecteer Meerdere: Meerdere revisies tegelijk actief.
    3. Selecteer Toepassen.
    4. Wacht totdat de revisiemodus is bijgewerkt naar Meerdere. Screenshot of the revision management revision mode setting.
  4. Selecteer Inactieve revisies weergeven.
  5. Als u niet meerdere revisies hebt, kunt u een nieuwe revisie maken.
    1. Selecteer Nieuwe revisie maken.
    2. U kunt de standaardinstellingen gebruiken of de revisie aanpassen.
    3. Voer een naam/achtervoegsel in voor de revisie.
    4. Selecteer Maken. Screenshot of Create and deploy new revision.
    5. Wacht tot de revisie is geïmplementeerd.
  6. Selecteer Actief voor de revisies waarnaar u verkeer wilt routeren.
  7. Voer het percentage verkeer in dat u wilt routeren naar elke revisie in de kolom Verkeer . Het gecombineerde percentage van al het verkeer moet gelijk zijn aan 100%.
  8. Selecteer Opslaan. Screenshot of traffic splitting in Revision management.

Schakel verkeer splitsen in door de configuration.ingress.traffic eigenschappen toe te voegen aan de sectie van uw ingress container-app-sjabloon. U kunt de revisies opgeven op naam met de revisionName eigenschap of op revisielabel met de label eigenschap.

In het volgende voorbeeld wordt 100% van het verkeer ingesteld op de meest recente geïmplementeerde revisie:

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

In het volgende voorbeeld ziet u hoe verkeer wordt gesplitst tussen twee revisies op naam:

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

In het volgende voorbeeld ziet u hoe verkeer wordt gesplitst tussen twee revisies per label:

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

Gebruiksgevallen

In de volgende scenario's worden configuratie-instellingen beschreven voor veelvoorkomende gebruiksvoorbeelden. De voorbeelden worden weergegeven in JSON-indeling, maar u kunt ook De Azure-portal of Azure CLI gebruiken om verkeer splitsen te configureren.

Snelle iteratie

In situaties waarin u regelmatig de ontwikkeling van uw container-app doorloopt, kunt u verkeersregels instellen om altijd al het verkeer te verplaatsen naar de meest recente geïmplementeerde revisie.

Met de volgende voorbeeldsjabloon wordt al het verkeer doorgestuurd naar de meest recente geïmplementeerde revisie:

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

Zodra u tevreden bent met de meest recente revisie, kunt u verkeer naar die revisie vergrendelen door de ingress instellingen bij te werken naar:

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

Bestaande revisie bijwerken

Overweeg een situatie waarin u een bekende goede revisie hebt die 100% van uw verkeer bedient, maar u een update naar uw app wilt uitgeven. U kunt nieuwe revisies implementeren en testen met behulp van hun directe eindpunten zonder dat dit van invloed is op de belangrijkste revisie van de app.

Zodra u tevreden bent met de bijgewerkte revisie, kunt u een deel van het verkeer verplaatsen naar de nieuwe revisie voor testen en verificatie.

Met de volgende sjabloon wordt 20% van het verkeer verplaatst naar de bijgewerkte revisie:

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

Microservices faseren

Bij het bouwen van microservices wilt u mogelijk productie- en faseringseindpunten voor dezelfde app onderhouden. Gebruik labels om ervoor te zorgen dat verkeer niet tussen verschillende revisies schakelt.

Met de volgende voorbeeldsjabloon worden labels toegepast op verschillende revisies.

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

Volgende stappen