Canary- und Blau/Grün-Bereitstellung mit Citrix ADC VPX und Azure-Pipelines für Kubernetes-basierte Anwendungen
Dieses Thema enthält Informationen zum Erreichen einer Canary und blaugrünen Bereitstellung für Kubernetes-Anwendungen mithilfe von Citrix ADC VPX und Azure-Pipelines.
Canary-Bereitstellung mit Citrix ADC VPX und Azure-Pipelines für Kubernetes-basierte Anwendungen
Canary ist eine Bereitstellungsstrategie, bei der neue Versionen einer Anwendung in kleinen und schrittweisen inkrementellen Schritten bereitgestellt werden. Die Idee von Canary ist es, die neuen Änderungen zunächst für eine kleine Gruppe von Benutzern bereitzustellen, um zu entscheiden, ob die neuen Bereitstellungen abgelehnt oder beworben werden sollen, und dann die Änderungen für den Rest der Benutzer bereitzustellen. Diese Strategie begrenzt das Risiko, das mit der Bereitstellung einer neuen Version der Anwendung in der Produktionsumgebung verbunden ist.
Azure-Pipelines sind ein von Azure DevOps bereitgestellter Cloud-Dienst, mit dem Sie Builds automatisch ausführen, Tests durchführen und Code in verschiedenen Entwicklungs- und Produktionsumgebungen bereitstellen können.
Dieser Abschnitt enthält Informationen zum Erreichen der Canary Bereitstellung für Kubernetes-basierte Anwendungen mithilfe von Citrix ADC VPX und Citrix Ingress Controller mit Azure-Pipelines.
Vorteile des Einsatzes von Canary
- Die Canary-Version der Anwendung dient als Frühwarnung für potenzielle Probleme, die im neuen Code und den Bereitstellungsproblemen auftreten könnten.
- Sie können die Canary-Version für Rauchtests und A/B-Tests verwenden.
- Canary bietet ein einfaches Rollback und Upgrades ohne Ausfallzeiten.
- Sie können mehrere Versionen von Anwendungen gleichzeitig ausführen.
In dieser Lösung wird Citrix ADC VPX auf der Azure-Plattform bereitgestellt, um den Lastenausgleich einer Anwendung zu ermöglichen und eine Canary Bereitstellung mit Citrix ADC VPX zu erreichen. Weitere Informationen zum Bereitstellen von Citrix ADC auf Microsoft Azure finden Sie im Link zur Citrix Dokumentation.
Canary Bereitstellung mit Citrix ADC
Sie können eine Canary Bereitstellung mit Citrix ADC mit Ingress-Anmerkungen erreichen, einer regelbasierten Canary-Bereitstellung. Bei diesem Ansatz müssen Sie ein zusätzliches Ingress-Objekt mit spezifischen Anmerkungen definieren, um anzugeben, dass die Anwendungsanfrage basierend auf der regelbasierten Canary-Bereitstellungsstrategie bedient werden muss. In der Citrix Lösung kann Canary-basiertes Traffic-Routing auf Ingress-Ebene erreicht werden, indem verschiedene Regelsätze wie folgt definiert werden:
- Anwendung der Canary Regeln basierend auf dem Gewicht
- Anwendung der Canary-Regeln basierend auf dem HTTP-Request-Header
- Anwenden der Canary-Regeln basierend auf dem HTTP-Header-Wert
Weitere Informationen finden Sie unter Vereinfachte Canary–Bereitstellung mit Ingress-Anmerkungen
Canary Bereitstellung mit Citrix ADC VPX mit Azure-Pipelines
Citrix schlägt eine Lösung für die Canary Bereitstellung mit Citrix ADC VPX und Citrix Ingress Controller mit Azure-Pipelines für Kubernetes-basierte Anwendungen vor.
In dieser Lösung gibt es drei Konfigurationsverzeichnisse:
kubernetes_configs
deployment_configs
pipeline_configs
kubernetes_configs
Dieses Verzeichnis enthält die versionsbasierten anwendungsspezifischen Bereitstellungs-YAML-Dateien und die Helm-basierten Konfigurationsdateien zum Bereitstellen von Citrix Ingress Controller, der dafür verantwortlich ist, die Citrix ADC-Konfiguration voranzutreiben, um eine Canary Bereitstellung zu erreichen.
Hinweis:
Sie können die neuesten Helm-Diagramme aus dem Helm-Diagramm-Repository des Citrix Ingress Controller herunterladen und im
cic_helm
Verzeichnis ablegen .
deployment_configs
Dieses Verzeichnis enthält die setup_config
und teardown_config
JSON-Dateien, die den Pfad der YAML-Dateien angeben, die für die spezifische Version der Anwendung verfügbar sind, die während der Canary-Bereitstellung bereitgestellt oder heruntergefahren werden soll.
pipeline_configs
Dieses Verzeichnis enthält das Azure-Pipeline-Skript und das Python-Skript, das die Benutzerkonfigurationen liest und die Pipeline basierend auf der Benutzeranforderung auslöst, um eine neue Version der Anwendung einzuführen oder eine Version einer Anwendung abzubauen. Die Änderung des prozentualen Verkehrsgewichts bei der Anwendungseingangs-YAML würde die Pipeline veranlassen, den Datenverkehr zwischen der verfügbaren Version der Anwendungen umzuschalten.
Wenn alle drei Konfigurationsdateien vorhanden sind, würde jedes Update der Dateien unter deployment_configs
und kubernetes_configs
Verzeichnissen in GitHub die Pipeline in Azure auslösen.
Der Prozentsatz der Verkehrsaufteilung kann mithilfe der ingress.citrix.com/canary-weight
Anmerkung in der Eingangs-YAML der Anwendung angepasst werden.
Eine Beispielanwendung auf Canary in Azure-Pipelines
In diesem Thema wird erläutert, wie eine Beispielanwendung mit Citrix ADC- und Azure-Pipelines im Canary-Modus bereitgestellt wird.
Voraussetzungen
Stellen Sie Folgendes sicher:
- Citrix ADC VPX ist bereits auf der Azure-Plattform bereitgestellt und kann von unserer Beispielanwendung verwendet werden.
- AKS-Cluster mit für die Azure-Pipeline konfigurierter Kubernetes-Dienstverbindung .
Gehen Sie wie folgt vor:
-
Klonen Sie das GitHub-Repository und gehen Sie zum Verzeichnis
cd/canary-azure-devops
. - Platzieren Sie die anwendungsspezifischen YAMLs (mit der Eingangsdatei) unter einem versionierten Ordner
v1
imkubernetes_configs
Verzeichnis. - Erstellen Sie drei Azure-Pipelines mit den vorhandenen YAML-Dateien und
teardown.yaml
für die Bereitstellung von Citrix Ingress Controller und das Bereitstellen und Abreißen der Anwendungen.deploy_cic.yaml
deploy.yaml
Siehe Azure-Pipelines zum Erstellen einer Pipeline. - Aktualisieren Sie das Abonnement, den Agentenpool, die Dienstverbindung und die Citrix ADC-Details in der Pipeline-YAML.
- Speichern Sie die Pipeline.
-
Aktualisieren Sie den Pfad in
deploy_config.json
mit dem Pfad, der das Verzeichnis angibt, in dem die Anwendungs-YAMLs abgelegt werden.{ "K8S_CONFIG_PATH" : "cd/canary-azure-devops/kubernetes_configs/v1" }
-
Geben Sie die
deploy_config.json
Datei und das v1-Verzeichnis mithilfe von Git fest, um die Pipeline zur Bereitstellung der v1-Version der Anwendung auszulösen. - Greifen Sie über Citrix ADC auf die Anwendung zu.
- Stellen Sie die Version v2 der Anwendung vor, indem Sie das
v2
Verzeichnis unter erstellenkubernetes_configs
. Stellen Sie sicher, dass der Ingress unter dieser Version die Canary Anmerkung mit dem richtigen Gewicht für die Verkehrsaufteilung angegeben hat. -
Stellen Sie die Version v2 der Anwendung bereit, indem Sie
deploy_config.json
mit dem Pfad aktualisieren, der das v2-Verzeichnis angibt. Jetzt wird der Datenverkehr basierend auf dem in der Ingress-Annotation festgelegten Canary-Gewichtung zwischen Version v1 und v2 aufgeteilt (z. B.ingress.citrix.com/canary-weight: "40"
) - Erhöhen Sie das Verkehrsgewicht in der Ingress-Annotation schrittweise, bis die neue Version für den gesamten Datenverkehr bereit ist.
Blau-grüne Bereitstellung mit Citrix ADC VPX und Azure-Pipelines für Kubernetes-basierte Anwendungen
Die Blue-Green-Bereitstellung ist eine Technik, die Ausfallzeiten und Risiken reduziert, indem zwei identische Produktionsumgebungen namens Blau und Grün ausgeführt werden. Zu jeder Zeit ist nur eine der Umgebungen live, die den gesamten Produktionsverkehr bedient. Die Grundlage der Blau-Grün-Methode ist die Side-by-Side-Bereitstellung von zwei getrennten, aber identischen Umgebungen. Die Bereitstellung einer Anwendung in beiden Umgebungen kann mithilfe von Jobs und Aufgaben vollständig automatisiert werden. Dieser Ansatz erzwingt die Verdoppelung jeder Ressource einer Anwendung. Es gibt jedoch viele verschiedene Möglichkeiten, Blau-Grün-Bereitstellungen in verschiedenen Tools für die kontinuierliche Bereitstellung durchzuführen.
Bei Verwendung von Citrix ADC VPX mit Azure-Pipelines kann dieselbe Canary-Lösung verwendet werden, um eine Blau/Grün-Bereitstellung zu erreichen, indem die Verkehrsgewichtung auf Null oder 100 angepasst wird.