Citrix ADC Ingress Controller

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.

canary-deployment

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.

kubernetes_configs

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.

deployment_configs

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.

pipeline_configs

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:

  1. Klonen Sie das GitHub-Repository und gehen Sie zum Verzeichnis cd/canary-azure-devops.

  2. Platzieren Sie die anwendungsspezifischen YAMLs (mit der Eingangsdatei) unter einem versionierten Ordner v1 im kubernetes_configs Verzeichnis.
  3. Erstellen Sie drei Azure-Pipelines mit den vorhandenen YAML-Dateien und teardown.yamlfür die Bereitstellung von Citrix Ingress Controller und das Bereitstellen und Abreißen der Anwendungen. deploy_cic.yamldeploy.yaml Siehe Azure-Pipelines zum Erstellen einer Pipeline.
  4. Aktualisieren Sie das Abonnement, den Agentenpool, die Dienstverbindung und die Citrix ADC-Details in der Pipeline-YAML.
  5. Speichern Sie die Pipeline.
  6. 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"
    
    }
    
  7. 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.

  8. Greifen Sie über Citrix ADC auf die Anwendung zu.
  9. Stellen Sie die Version v2 der Anwendung vor, indem Sie das v2 Verzeichnis unter erstellen kubernetes_configs. Stellen Sie sicher, dass der Ingress unter dieser Version die Canary Anmerkung mit dem richtigen Gewicht für die Verkehrsaufteilung angegeben hat.
  10. 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")

  11. 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.

Canary- und Blau/Grün-Bereitstellung mit Citrix ADC VPX und Azure-Pipelines für Kubernetes-basierte Anwendungen