Grundlegendes zu Umgebungen
Mit Bereitstellungspipelines können Sie die Schritte in Ihrem Bereitstellungsprozess automatisieren. Häufig müssen Sie die Schritte in mehreren separaten Umgebungen ausführen. In Ihrem Spielzeugunternehmen möchten Sie die Änderungen am Code überprüfen, bevor Sie die Änderungen in Ihrer Produktionsumgebung bereitstellen.
In dieser Lerneinheit erfahren Sie, wie Umgebungen in Azure Pipelines Ihnen helfen, Ihren eigenen Workflow zu unterstützen.
Warum verfügen Sie über mehrere Umgebungen?
Bereitstellungsprozesse nehmen Änderungen an Ihren Azure-Ressourcen vor, einschließlich der verwendeten Ressourcen. Das Ändern von Ressourcen birgt ein gewisses Risiko, da sich die von Ihnen bereitgestellten Änderungen möglicherweise nicht wie erwartet verhalten. Möglicherweise stellen Sie sogar fest, dass die Änderungen das aktuelle Setup unterbrechen.
Zum Minimieren des Risikos von Problemen ist es eine bewährte Methode, Ihre Änderungen auf sichere Weise auszuprobieren, bevor Sie sie in Ihrer Produktionsumgebung bereitstellen. Sie können die Änderungen z. B. in einer Nicht-Produktionsumgebung bereitstellen.
Viele Organisationen richten mehrere Nicht-Produktionsumgebungen ein, in denen sie ihre Änderungen schrittweise bereitstellen, bevor diese in der Produktion freigegeben werden. Jede Nicht-Produktionsumgebung erfüllt einen bestimmten Zweck und verfügt häufig über bestimmte Qualitätsprüfpunkte, deren Anforderungen erfüllt werden müssen, um mit der nächsten Umgebung fortzufahren. Wenn etwas misslingt, z. B. ein Test nicht erfolgreich ist, wird die Bereitstellung beendet. Während Ihre Bereitstellung die einzelnen Umgebungen durchläuft, wächst Ihr Vertrauen in die Änderungen.
Zu den gängigen Umgebungen gehören:
Entwicklung:Eine Entwicklungsumgebung wird in der Regel von Entwicklern verwendet, um ihre Änderungen zu testen und ihre Arbeit schnell zu wiederholen.
Entwicklungsumgebungen verfügen häufig über minimale Kontrollen, sodass Teammitglieder leicht Ideen ausprobieren können. Sie können eine Entwicklungsumgebung verwenden, um eine bestimmte Konfigurationseinstellung für eine Ressource zu testen oder um zu erfahren, wie Sie eine neue Website mit einer Back-End-Datenbank auf sichere Weise einrichten können. Viele dieser Änderungen und Testversionen kommen in Ihrem Bereitstellungsprozess möglicherweise nicht weiter, da Sie Ideen, die nicht erfolgreich sind, nicht weiterverfolgen.
In einigen Teams können Sie sogar eine separate Entwicklungsumgebung für jedes Teammitglied einrichten, damit sie sich nicht gegenseitig im Weg stehen, während sie an neuen Features arbeiten.
Entwicklungsumgebungen werden manchmal auch als Sandboxumgebungen bezeichnet.
Test: Eine Testumgebung ist so konzipiert, dass manuelle oder automatisierte Tests für Ihre Änderungen ausgeführt werden.
Testumgebungen können in einem Continuous Integration-Prozess verwendet werden. Nachdem Sie eine Änderung in einer Testumgebung bereitgestellt haben, können automatisierte Tests dafür ausgeführt werden. Wenn alle automatisierten Tests erfolgreich sind, kann die Änderung sicher mit dem Mainbranch des Projekts zusammengeführt werden. Automatisierte Tests überprüfen in der Regel die Kernfunktionen des Systems sowie Richtlinienverstöße in den neu bereitgestellten Ressourcen.
Sie können auch dedizierte Testumgebungen für bestimmte Testtypen wie Leistungs- und Sicherheitstests erstellen.
Integration: Eine Integrationsumgebung kann Ihnen helfen, Integrationspunkte mit anderen Systemen zu testen.
Sie können End-to-End-Transaktionen in einer Integrationsumgebung simulieren. Diese Tests werden häufig automatisch ausgeführt, aber viele Organisationen führen auch manuelle Tests für diese Umgebung durch.
Integrationsumgebungen werden manchmal auch als SIT-Umgebungen (System Integration Test) bezeichnet.
Benutzerakzeptanztest: Eine Umgebung für den Benutzerakzeptanztest (User Acceptance Test, UAT) wird für die manuelle Überprüfung verwendet, in der Regel von Projektbeteiligten des Unternehmens und nicht von Entwicklern. Bei der manuellen Überprüfung geht jemand die Lösung durch und überprüft, ob sie sich wie erwartet verhält und die erforderlichen Geschäftsanforderungen erfüllt. Diese Person genehmigt dann die Änderungen, damit die Bereitstellung fortgesetzt werden kann.
Präproduktion: Eine Präproduktionsumgebung ist häufig ein Spiegel der Produktionsumgebung mit denselben Ressourcen-SKUs und der gleichen Konfiguration. Sie wird für die abschließende Überprüfung verwendet, wie sich die Produktionsbereitstellung während und nach der Anwendung der Änderung verhält. Mit der Umgebung kann auch überprüft werden, ob während der Produktionsbereitstellung Ausfallzeiten zu erwarten sind.
Präproduktionsumgebungen werden manchmal auch als Stagingumgebungen bezeichnet.
Produktion: Ihre Produktionsumgebung wird von Endbenutzern der Anwendung verwendet. Es ist Ihre Liveumgebung, die Sie schützen und so weit wie möglich in Betrieb halten möchten.
In einigen Organisationen verfügen Sie möglicherweise über mehrere Produktionsumgebungen. Beispielsweise können Produktionsumgebungen in verschiedenen geografischen Regionen oder für verschiedene Kundengruppen verwendet werden.
Demo: Ihr Team kann auch Demonstrationsumgebungen (Demoumgebungen) erstellen, um die Anwendung Endbenutzern zu zeigen, zur Verwendung beim Training oder für Vertriebsteams, um potenziellen Kunden bestimmte Funktionen zu zeigen. Möglicherweise verfügen Sie sogar über mehrere Demoumgebungen, die verschiedenen Zwecken dienen. Eine Demoumgebung ist häufig ein abgespecktes Replikat Ihrer Produktionsumgebung mit fingierten Kundendaten.
Umgebungen in Ihrer Organisation
Möglicherweise sehen Sie Variationen dieser Umgebungen. Einige Organisationen verwenden nur wenige Umgebungen, andere viele weitere. Die Anzahl und Art der Umgebungen, die Sie verwenden, hängen von der Lösung ab, die Sie bereitstellen, der Größe des Teams, das die Lösung entwickelt, und der Wichtigkeit der Workload.
Manchmal übernimmt eine einzelne Umgebung die Rolle mehrerer der zuvor aufgeführten Umgebungen. In anderen Fällen verfügen Sie möglicherweise über eine komplexe Pipeline, die in mehreren Umgebungen bereitgestellt wird, in einigen parallel und einige sequenziell. Einige Organisationen löschen Umgebungen sogar automatisch oder heben ihre Bereitstellung automatisch auf, wenn sie nicht mehr verwendet werden, und stellen sie dann noch mal bereit, wenn sie in Zukunft benötigt werden.
Unabhängig davon, was Ihre Organisation als Liste der Umgebungen auswählt, besteht das Ziel darin, das Vertrauen in eine Änderung zu erhöhen, während sie Ihre Bereitstellungspipeline durchläuft. Wenn eine Änderung Ihre Qualitätsanforderungen nicht erfüllt, möchten Sie die Bereitstellung dieser Änderung in allen nachfolgenden Umgebungen in der Kette beenden können.
In Ihrem Spielzeugunternehmen entscheiden Sie sich, mit einer Reihe von grundlegenden Umgebungen für Ihre Website zu beginnen. Zusätzlich zu Ihrer Produktionsumgebung erstellen Sie eine Nicht-Produktionsumgebung mit dem Namen Test:
Sie aktualisieren Ihre Pipeline, um Ihren Bicep-Code in Ihrer Testumgebung bereitzustellen und einige grundlegende Tests dafür durchzuführen. Wenn dieser Vorgang erfolgreich ist, wird der Code in Ihrer Produktionsumgebung bereitgestellt.
Pipelineumgebungen
Azure Pipelines verfügt auch über das Konzept einer Umgebung. Sie erstellen eine Azure Pipelines-Umgebung, um die Umgebung darzustellen, über die Sie in Azure verfügen. Wenn Sie Ihre Pipeline in einer YAML-Datei definieren, verknüpfen Sie Ihre Bereitstellungsaufträge mit einer bestimmten Umgebung. Durch die Verwendung von Umgebungen erhalten Sie einige weitere Features in Ihrer Pipeline.
Überprüfungen und Genehmigungen
In einer Umgebung in Azure DevOps können Überprüfungen und Genehmigungen konfiguriert sein. Jedes Mal, wenn die Umgebung in einem Auftrag in Ihrer Pipeline verwendet wird, stellt Azure DevOps sicher, dass diese Überprüfungen und Genehmigungen erfolgreich sind, bevor der Auftrag ausgeführt wird.
Beispielsweise können Sie manuelle Genehmigungen in Ihrer Produktionsumgebung konfigurieren. Bevor eine Produktionsbereitstellung gestartet wird, erhält die angegebene genehmigende Person eine E-Mail-Benachrichtigung. Diese Person kann manuell überprüfen, ob Ihre Richtlinien und Verfahren erfüllt sind, bevor die Bereitstellung beginnt. Beispielsweise kann die genehmigende Person überprüfen, ob alles wie erwartet in der Präproduktionsumgebung funktioniert, bevor sie die Bereitstellung genehmigt.
Darüber hinaus können Sie eine automatisierte Überprüfung ausführen, um die Protokolle und Fehlerraten in Ihrer Präproduktionsumgebung nach Ihrer letzten Bereitstellung zu überprüfen. Wenn die Überprüfung bestätigt, dass sich die Anzahl der Fehler nicht wesentlich erhöht hat, kann die Bereitstellung fortgesetzt werden.
Bereitstellungsverlauf
Azure Pipelines verfolgt den Verlauf der Bereitstellungen in einer Umgebung nach. Mit diesem Verlauf können Sie ganz einfach nachverfolgen, was in der Umgebung im Laufe der Zeit geschieht. Sie können sogar eine Bereitstellung bis zu einer bestimmten Featureanforderung in Ihren Azure Boards-Arbeitselementen oder bis zu einem Commit in Ihrem Repository nach verfolgen. Dieses Feature kann nützlich sein, wenn Sie ein Problem mit einer Bereitstellung haben und die Änderung identifizieren müssen, die zum Problem geführt hat.
Sicherheit
Sie können weitere Sicherheitskontrollmaßnahmen auf Umgebungen anwenden. Sie können die Pipelines einschränken, die eine bestimmte Umgebung verwenden dürfen. Sie können auch verhindern, dass jemand versehentlich eine sekundäre Pipeline erstellt, die mit Ihrer Produktionsumgebung interagiert.
Sie können auch Benutzerberechtigungen anwenden, um die Benutzer zu steuern, die Umgebungen verwalten können. Mit bestimmten Berechtigungen können Benutzer neue Umgebungen erstellen, Umgebungen ändern und Umgebungen und den Verlauf der Bereitstellungen für sie anzeigen.
Hinweis
Wenn Ihre Pipeline auf eine Umgebung verweist, die noch nicht vorhanden ist, erstellt Azure Pipelines sie automatisch für Sie. Dieses Feature kann sich auf die Sicherheit Ihres Azure DevOps-Projekts auswirken, da Sie automatisch Administratorberechtigungen für die Umgebung erhalten. Es ist am besten, selbst eine Umgebung über die Azure DevOps-Webschnittstelle zu erstellen, damit Sie die vollständige Kontrolle über die Sicherheit haben und nicht versehentlich Berechtigungen erhalten, die Sie nicht benötigen.
Verknüpfen eines Bereitstellungsauftrags mit einer Umgebung
In der Definition Ihrer Bereitstellungspipeline erstellen Sie eine deployment
-Eigenschaft, um einen Bereitstellungsauftrag festzulegen, und Sie geben den Namen der Umgebung an, in der dieser Auftrag bereitgestellt wird:
- stage: DeployTest
displayName: Deploy (Test Environment)
jobs:
- deployment: DeployWebsite
environment: Test
strategy:
runOnce:
deploy:
steps:
- checkout: self
Im Beispiel ist der Auftrag mit dem Namen DeployWebsite
mit der Umgebung Test
verknüpft.
Tipp
Aufträge verfügen zudem über weitere Eigenschaften, darunter die Bereitstellungsstrategie. Eine Behandlung dieser Eigenschaften würde jedoch über den Rahmen dieses Moduls hinausgehen. Links zu weiteren Informationen finden Sie in der Zusammenfassung.
Umgebungen und Dienstverbindungen
Wenn Sie mehrere Umgebungen verwenden, sollten Sie jede Umgebung von den anderen unabhängig machen. Beispielsweise sollte die Website Ihrer Entwicklungsumgebung nicht auf eine Datenbank in Ihrer Produktionsumgebung zugreifen können.
Dasselbe Prinzip gilt auch für die Bereitstellungspipeline. Die Dienstverbindung, die Sie für die Bereitstellung in Ihrer Entwicklungsumgebung verwenden, sollte nicht auf Ihre Produktionsumgebung zugreifen können. Die Einhaltung dieses Prinzips fügt eine weitere Schutzebene hinzu, um sicherzustellen, dass sich Ihre Nicht-Produktionsbereitstellungen nicht auf Ihre Produktionsumgebung auswirken.
Sie sollten separate Dienstverbindungen für jede Umgebung erstellen. Jede Dienstverbindung sollte einen eigenen dedizierten Dienstprinzipal mit spezifischen Berechtigungen verwenden, um die Bereitstellung nur für das Abonnement und die Ressourcengruppe auszuführen, die von dieser Umgebung verwendet werden:
Wichtig
Verwenden Sie für jede Umgebung, in der Sie die Bereitstellung planen, einen separaten Dienstprinzipal und eine separate Dienstverbindung. Erteilen Sie dem Dienstprinzipal die Mindestberechtigungen, die er für die Bereitstellung in seiner Umgebung benötigt, und keine anderen.
Es ist auch eine gute Idee, Ihre Umgebungen in Azure zu trennen. Sie sollten mindestens eine separate Ressourcengruppe für jede Umgebung erstellen. In vielen Situationen ist es besser, separate Azure-Abonnements für jede Umgebung zu erstellen. Anschließend können Sie mehrere Ressourcengruppen innerhalb des Abonnements jeder Umgebung erstellen.
Wenden Sie Azure-Rollenzuweisungen an, damit Benutzer und Dienstprinzipale nur auf die Umgebungen zugreifen können, auf die sie zugreifen müssen. Achten Sie darauf, den Zugriff auf Ihre Produktionsumgebung auf eine kleine Gruppe von Personen und den Bereitstellungsdienstprinzipal für diese Umgebung zu beschränken.