Datenverkehrsaufteilung in Azure Container Apps
Wenn der Eingang aktiviert ist, wird standardmäßig der gesamte Datenverkehr an die neueste bereitgestellte Überarbeitung weitergeleitet. Wenn Sie in Ihrer Container-App den Modus für mehrere Überarbeitungen aktivieren, können Sie eingehenden Datenverkehr zwischen aktiven Überarbeitungen aufteilen.
Die Datenverkehrsteilung ist nützlich zum Testen von Updates für Ihre Container-App. Sie können die Datenverkehrsteilung verwenden, um schrittweise eine Phase in einer neuen Überarbeitung in Blau-Grün-Bereitstellungen oder in A/B-Tests einzuführen.
Die Datenverkehrsteilung basiert auf der Gewichtung (Prozent) des Datenverkehrs, der an jede Überarbeitung weitergeleitet wird. Die kombinierte Gewichtung aller Datenverkehrsteilungsregeln muss 100 % betragen. Sie können die Überarbeitung nach Überarbeitungsnamen oder Überarbeitungsbezeichnung angeben.
In diesem Artikel erfahren Sie, wie Sie Regeln für die Datenverkehrsteilung für Ihre Container-App konfigurieren. Zum Ausführen der folgenden Beispiele benötigen Sie eine Container-App mit mehreren Überarbeitungen.
Konfigurieren der Datenverkehrsaufteilung
Konfigurieren Sie die Datenverkehrsteilung zwischen Überarbeitungen mithilfe des az containerapp ingress traffic set
-Befehls. Sie können die Überarbeitungen anhand des Namens mit dem --revision-weight
-Parameter oder der Überarbeitungsbezeichnung mit dem --label-weight
-Parameter angeben.
Mit dem folgenden Befehl wird die Datenverkehrsgewichtung für jede Überarbeitung auf 50 % festgelegt:
az containerapp ingress traffic set \
--name <APP_NAME> \
--resource-group <RESOURCE_GROUP> \
--revision-weight <REVISION_1>=50 <REVISION_2>=50
Ersetzen Sie unbedingt die Platzhalterwerte, die von <>
mit Ihren eigenen Werten umgeben sind.
Mit diesem Befehl wird die Datenverkehrsgewichtung für die Überarbeitung <LABEL_1> auf 80 % festgelegt und die Überarbeitung <LABEL_2> auf 20 %:
az containerapp ingress traffic set \
--name <APP_NAME> \
--resource-group <RESOURCE_GROUP> \
--label-weight <LABEL_1>=80 <LABEL_2>=20
- Navigieren Sie im Azure-Portal zu Ihrer Container-App.
- Wählen Sie im linken Menü Überarbeitungsverwaltung aus.
- Wenn der Überarbeitungsmodus Einfach ist, legen Sie den Modus auf mehrere fest.
- Wählen Sie Überarbeitungsmodus auswählen aus.
- Wählen Sie Mehrere: Mehrere gleichzeitig aktive Überarbeitungen aus.
- Wählen Sie Übernehmen.
- Warten Sie, bis der Überarbeitungsmodus auf Mehrfach aktualisiert wird.
- Wählen Sie Inaktive Überarbeitungen anzeigen aus.
- Wenn Sie nicht über mehrere Überarbeitungen verfügen, können Sie eine neue Überarbeitung erstellen.
- Wählen Sie Create new revision (Neue Revision erstellen) aus.
- Sie können die Standardeinstellungen verwenden oder die Überarbeitung anpassen.
- Geben Sie einen Name/Suffix für die Überarbeitung ein.
- Klicken Sie auf Erstellen.
- Warten Sie, bis die Überarbeitung bereitgestellt wird.
- Wählen Sie Aktiv für die Überarbeitungen aus, an die der Datenverkehr weitergeleitet werden soll.
- Geben Sie den Prozentsatz des Datenverkehrs in der Spalte Datenverkehr ein, den Sie an jede Überarbeitung weiterleiten möchten. Der kombinierte Prozentsatz des gesamten Datenverkehrs muss 100 % betragen.
- Wählen Sie Speichern.
Aktivieren Sie die Datenverkehrsteilung, indem Sie die configuration.ingress.traffic
-Eigenschaften zum ingress
Abschnitt Ihrer Container-App-Vorlage hinzufügen. Sie können die Überarbeitungen mithilfe der revisionName
-Eigenschaft oder der Überarbeitungsbezeichnung mit der label
-Eigenschaft angeben.
Im folgenden Beispiel werden 100 % des Datenverkehrs auf die neueste bereitgestellte Überarbeitung festgelegt:
{
...
"configuration": {
"ingress": {
"external": true,
"targetPort": 80,
"allowInsecure": false,
"traffic": [
{
"latestRevision": true,
"weight": 100
}
]
},
},
Das folgende Beispiel zeigt die Aufteilung des Datenverkehrs zwischen zwei Überarbeitungen anhand des Namens:
{
...
"configuration": {
"ingress": {
"external": true,
"targetPort": 80,
"allowInsecure": false,
"traffic": [
{
"revisionName": "my-example-app--5g3ty20",
"weight": 50
},
{
"revisionName": "my-example-app--qcfkbsv",
"weight": 50
}
],
},
},
Das folgende Beispiel zeigt die Aufteilung des Datenverkehrs zwischen zwei Überarbeitungen nach Bezeichnung:
{
...
"configuration": {
"ingress": {
"external": true,
"targetPort": 80,
"allowInsecure": false,
"traffic": [
{
"weight": 50,
"label": "v-2"
},
{
"weight": 50,
"label": "v-1"
}
],
},
},
Anwendungsfälle
In den folgenden Szenarien werden Konfigurationseinstellungen für häufige Anwendungsfälle beschrieben. Die Beispiele werden im JSON-Format gezeigt, sie können aber auch das Azure-Portal oder die Azure CLI verwenden, um die Datenverkehrsteilung zu konfigurieren.
Schnelle Iteration
In Situationen, in denen Sie häufig die Entwicklung Ihrer Container-App iterieren, können Sie Datenverkehrsregeln festlegen, um immer den gesamten Datenverkehr auf die neueste bereitgestellte Revision zu verschieben.
In der folgenden Beispielvorlage wird der gesamte Datenverkehr an die neueste bereitgestellte Überarbeitung weitergeleitet:
"ingress": {
"traffic": [
{
"latestRevision": true,
"weight": 100
}
]
}
Sobald Sie mit der neuesten Revision zufrieden sind, können Sie den Datenverkehr auf diese Überarbeitung sperren, indem Sie die ingress
-Einstellungen aktualisieren auf:
"ingress": {
"traffic": [
{
"latestRevision": false, // optional
"revisionName": "myapp--knowngoodrevision",
"weight": 100
}
]
}
Vorhandene Revision aktualisieren
Stellen Sie sich eine Situation vor, in der Sie über eine bekannte gute Revision verfügen, die 100 % Ihres Datenverkehrs bedient, Sie aber ein Update für Ihre App herausgeben möchten. Sie können neue Revisionen mithilfe ihrer direkten Endpunkte bereitstellen und testen, ohne dass sich dies auf die Hauptrevision auswirkt, die die App versorgt.
Sobald Sie mit der aktualisierten Revision zufrieden sind, können Sie einen Teil des Datenverkehrs auf die neue Revision zum Testen und Überprüfen verschieben.
Die folgende Vorlage verschiebt 20 % des Datenverkehrs in die aktualisierte Überarbeitung:
"ingress": {
"traffic": [
{
"revisionName": "myapp--knowngoodrevision",
"weight": 80
},
{
"revisionName": "myapp--newerrevision",
"weight": 20
}
]
}
Staging von Microservices
Beim Erstellen von Microservices können Sie Produktions- und Stagingendpunkte für dieselbe App verwalten. Verwenden Sie Bezeichnungen, um sicherzustellen, dass der Datenverkehr nicht zwischen verschiedenen Revisionen wechselt.
Die folgende Beispielvorlage wendet Bezeichnungen auf verschiedene Überarbeitungen an.
"ingress": {
"traffic": [
{
"revisionName": "myapp--knowngoodrevision",
"weight": 100
},
{
"revisionName": "myapp--98fdgt",
"weight": 0,
"label": "staging"
}
]
}