Neuerstellen einer lokalen App in AzureRebuild an on-premises app on Azure

Dieser Artikel zeigt, wie das fiktive Unternehmen Contoso einer zweistufigen Windows-.NET-App, die auf VMware-VMs ausgeführt wird, als Teil einer Migration der App-VMs zu Azure neu erstellt.This article demonstrates how the fictional company Contoso rebuilds a two-tier Windows .NET app running on VMware VMs as part of a migration to Azure. Contoso migriert die Front-End-VM der App zu einer Azure App Services-Web-App.Contoso migrates the app's front-end VM to an Azure App Service web app. Das Back-End der App wird mithilfe von Microservices erstellt, die für Container bereitgestellt werden, die von Azure Kubernetes Service (AKS) verwaltet werden.The app back end is built using microservices deployed to containers managed by Azure Kubernetes Service (AKS). Die Website interagiert mit Azure Functions zum Bereitstellen der Funktionalität für Fotos von Haustieren.The site interacts with Azure Functions to provide pet photo functionality.

Die in diesem Beispiel verwendet SmartHotel360-App wird als Open Source bereitgestellt.The SmartHotel360 app used in this example is provided as open source. Wenn Sie diese App für Ihre eigenen Tests verwenden möchten, können Sie sie von GitHub herunterladen.If you'd like to use it for your own testing purposes, you can download it from GitHub.

Business-TreiberBusiness drivers

Das IT Leadership-Team hat eng mit den Geschäftspartnern zusammengearbeitet, um zu verstehen, was das Unternehmen mit dieser Migration erreichen möchte:The IT leadership team has worked closely with business partners to understand what they want to achieve with this migration:

  • Unternehmenswachstum.Address business growth. Contoso wächst und möchte für seine Kunden differenzierte Funktionen auf seinen Websites bereitstellen.Contoso is growing, and wants to provide differentiated experiences for customers on Contoso websites.
  • Mehr Flexibilität.Be agile. Contoso muss schneller reagieren als die Änderungen im Marketplace geschehen, um den Erfolg in einer globalen Wirtschaft zu garantieren.Contoso must be able to react faster than the changes in the marketplace, to enable the success in a global economy.
  • Skalierung.Scale. Da das Unternehmen erfolgreich wächst, muss das Contoso-IT-Team Systeme bereitstellen, die mit der gleichen Geschwindigkeit wachsen können.As the business grows successfully, the Contoso IT team must provide systems that can grow at the same pace.
  • Senken Sie Kosten.Reduce costs. Contoso möchte die Lizenzierungskosten minimieren.Contoso wants to minimize licensing costs.

MigrationszieleMigration goals

Das Cloudteam von Contoso hat folgende App-Anforderungen für diese Migration gestellt.The Contoso cloud team has pinned down app requirements for this migration. Anhand dieser Anforderungen wird die beste Migrationsmethode bestimmt:These requirements were used to determine the best migration method:

  • Die App wird in Azure so wichtig bleiben wie bisher.The app in Azure is still as critical as it is today. Sie sollte reibungslos laufen und sich mühelos skalieren lassen.It should perform well and scale easily.
  • Die App darf nicht auf IaaS-Komponenten basieren.The app shouldn't use IaaS components. Sie sollte für die Verwendung von PaaS- oder serverlosen Diensten ausgelegt sein.Everything should be built to use PaaS or serverless services.
  • Die App-Builds sollten in Clouddiensten ausgeführt werden und Container sollten sich in einer privaten unternehmensweiten Containerregistrierung in der Cloud befinden.The app builds should run in cloud services, and containers should reside in a private Enterprise-wide container registry in the cloud.
  • Die API-Dienst für Fotos von Haustieren sollte in der Praxis präzise und zuverlässig sein, da die von der App getroffenen Entscheidungen in den Hotels berücksichtigt werden müssen.The API service used for pet photos should be accurate and reliable in the real world, since decisions made by the app must be honored in their hotels. Haustiere, denen der Zutritt erlaubt ist, dürfen in den Hotels bleiben.Any pet granted access is allowed to stay at the hotels.
  • Um die Anforderungen einer DevOps-Pipeline zu erfüllen, verwendet Contoso Azure DevOps für die Quellcodeverwaltung mit Git-Repositorys.To meet requirements for a DevOps pipeline, Contoso will use Azure DevOps for source code management (SCM), with Git Repos. Mithilfe automatisierter Builds und Releases wird der Code erstellt und in Azure App Service, Azure Functions und AKS bereitgestellt.Automated builds and releases will be used to build code and deploy to Azure App Service, Azure Functions, and AKS.
  • Für Microservices im Back-End und für die Website im Front-End sind unterschiedliche CI/CD-Pipelines erforderlich.Different CI/CD pipelines are needed for microservices on the back end, and for the web site on the front end.
  • Für die Back-End-Dienste gelten andere Releasezyklen als für die Front-End-Web-App.The back-end services have a different release cycle from the front-end web app. Zur Erfüllung dieser Anforderung werden zwei verschiedene Pipelines bereitgestellt.To meet this requirement, they will deploy two different pipelines.
  • Contoso benötigt eine Verwaltungsgenehmigung für die gesamte Front-End-Websitebereitstellung, die von der CI/CD-Pipeline bereitgestellt werden muss.Contoso needs management approval for all front-end website deployment, and the CI/CD pipeline must provide this.

LösungsentwurfSolution design

Nachdem die Ziele und Anforderungen formuliert wurden, entwirft und überprüft Contoso eine Bereitstellungslösung und identifiziert den Migrationsprozess sowie die für die Migration genutzten Azure-Dienste.After pinning down goals and requirements, Contoso designs and review a deployment solution, and identifies the migration process, including the Azure services that will be used for the migration.

Aktuelle AppCurrent app

  • Die lokale App SmartHotel360 ist auf zwei VMs aufgeteilt (WEBVM und SQLVM).The SmartHotel360 on-premises app is tiered across two VMs (WEBVM and SQLVM).
  • Die VMs befinden sich auf dem VMware ESXi-Host contosohost1.contoso.com (Version 6.5)The VMs are located on VMware ESXi host contosohost1.contoso.com (version 6.5)
  • Die VMware-Umgebung wird von der vCenter Server 6.5-Software (vcenter.contoso.com) auf einer VM verwaltet.The VMware environment is managed by vCenter Server 6.5 (vcenter.contoso.com), running on a VM.
  • Contoso verfügt über ein lokales Rechenzentrum (contoso-datacenter) mit einem lokalen Domänencontroller (contosodc1).Contoso has an on-premises datacenter (contoso-datacenter), with an on-premises domain controller (contosodc1).
  • Die lokalen VMs im Rechenzentrum von Contoso werden nach Abschluss der Migration außer Betrieb gesetzt.The on-premises VMs in the Contoso datacenter will be decommissioned after the migration is done.

Vorgeschlagene ArchitekturProposed architecture

  • Das Front-End der App wird als Azure App Service-Web-App in der primären Azure-Region bereitgestellt.The front end of the app is deployed as an Azure App Service web app in the primary Azure region.

  • Eine Azure-Funktion bietet Uploads von Fotos von Haustieren, und die Website interagiert mit dieser Funktionalität.An Azure function provides uploads of pet photos, and the site interacts with this functionality.

  • Die Haustierfotofunktion nutzt die maschinelles Sehen-API von Azure Cognitive Services und Cosmos DB.The pet photo function uses the Azure Cognitive Services Vision API and Cosmos DB.

  • Das Back-End der Website wird mithilfe von Microservices erstellt.The back end of the site is built using microservices. Diese werden in Containern bereitgestellt, die in Azure Kubernetes Service (AKS) verwaltet werden.These will be deployed to containers managed on the Azure Kubernetes service (AKS).

  • Container werden mithilfe von Azure DevOps erstellt und mithilfe von Push an Azure Container Registry (ACR) übertragen.Containers will be built using Azure DevOps, and pushed to the Azure Container Registry (ACR).

  • Vorerst stellt Contoso die Web-App und den Funktionscode mithilfe von Visual Studio manuell bereit.For now, Contoso will manually deploy the web app and function code using Visual Studio.

  • Microservices werden mithilfe eines PowerShell-Skripts bereitgestellt, das Kubernetes-Befehlszeilentools aufruft.Microservices will be deployed using a PowerShell script that calls Kubernetes command-line tools.

    Szenarioarchitektur

Überprüfung der LösungSolution review

Contoso bewertet den vorgeschlagen Entwurf anhand einer Liste mit Vor- und Nachteilen.Contoso evaluates the proposed design by putting together a pros and cons list.

AspektConsideration DetailsDetails
VorteilePros Durch den Einsatz von PaaS- und serverlosen Lösungen für die End-to-End-Bereitstellung verkürzt sich die Verwaltungszeit, die Contoso aufwenden muss, um ein Vielfaches.Using PaaS and serverless solutions for the end-to-end deployment significantly reduces management time that Contoso must provide.

Die Migration auf eine Microservicearchitektur bietet Contoso die Möglichkeit, die Lösung ganz einfach im Laufe der Zeit zu erweitern.Moving to a microservices architecture allows Contoso to easily extend the solution over time.

Neue Funktionalität kann online geschaltet werden, ohne dass vorhandene Codebasen von Lösungen beeinträchtigt werden.New functionality can be brought online without disrupting any of the existing solutions code bases.

Die Web-App wird mit mehreren Instanzen ohne Single Point of Failure konfiguriert.The web app will be configured with multiple instances with no single point of failure.

Die automatische Skalierung wird aktiviert, damit die App unterschiedliche hohe Datenverkehrsvolumen verarbeiten kann.Autoscaling will be enabled so that the app can handle differing traffic volumes.

Mit dem Wechsel zu PaaS-Diensten kann Contoso veraltete Lösungen, die unter dem Betriebssystem Windows Server 2008 R2 ausgeführt werden, außer Betrieb nehmen.With the move to PaaS services, Contoso can retire out-of-date solutions running on Windows Server 2008 R2 operating system.

Cosmos DB weist eine integrierte Fehlertoleranz auf, die keinen Konfigurationsaufwand seitens Contoso erfordert.Cosmos DB has built-in fault tolerance, which requires no configuration by Contoso. Dies bedeutet, dass die Datenschicht kein Single Point of Failover mehr ist.This means that the data tier is no longer a single point of failover.
NachteileCons Container sind komplexer als andere Migrationsoptionen.Containers are more complex than other migration options. Die Lernkurve könnte für Contoso ein Problem darstellen.The learning curve could be an issue for Contoso. Der Grad der Komplexität steigt und bietet trotz der Kurve einen hohen Nutzen.They introduce a new level of complexity that provides a lot of value in spite of the curve.

Das Betriebsteam von Contoso muss eingearbeitet werden, um Azure, Container und Microservices für die App verstehen und unterstützen zu können.The operations team at Contoso needs to ramp up to understand and support Azure, containers and microservices for the app.

Contoso hat noch nicht vollständig DevOps für die gesamte Lösung implementiert.Contoso hasn't fully implemented DevOps for the entire solution. Dies muss Contoso bei der Bereitstellung von Diensten für AKS, Azure Functions und Azure App Service berücksichtigen.Contoso needs to consider that for the deployment of services to AKS, Azure Functions, and Azure App Service.

MigrationsprozessMigration process

  1. Contoso stellt ACR, AKS und Cosmos DB bereit.Contoso provision the ACR, AKS, and Cosmos DB.

  2. Es stellt die Infrastruktur für die Bereitstellung bereit, wie etwa Azure App Service-Web-App, Speicherkonto, Funktionen und APIs.They provision the infrastructure for the deployment, including Azure App Service web app, storage account, function, and API.

  3. Sobald die Infrastruktur eingerichtet ist, erstellt Contoso Microservicecontainerimages mithilfe der Azure DevOps-Lösung, die diese mithilfe von Push an ACR überträgt.After the infrastructure is in place, they'll build their microservices container images using Azure DevOps, which pushes them to the ACR.

  4. Contoso stellt diese Microservices mithilfe eines PowerShell-Skripts in AKS bereit.Contoso will deploy these microservices to AKS using a PowerShell script.

  5. Abschließend stellt Contoso die Funktion und die Web-App bereit.Finally, they'll deploy the function and web app.

    Migrationsprozess

Azure-DiensteAzure services

ServiceService BeschreibungDescription KostenCost
AKSAKS Vereinfacht die Verwaltung, die Bereitstellung und den Betrieb von Kubernetes.Simplifies Kubernetes management, deployment, and operations. Nutzt einen vollständig verwalteten Orchestrierungsdienst für Kubernetes-Container.Provides a fully managed Kubernetes container orchestration service. AKS ist ein kostenloser Dienst.AKS is a free service. Nur die virtuellen Computer sowie die entsprechenden verbrauchten Speicher- und Netzwerkressourcen müssen bezahlt werden.Pay for only the virtual machines, and associated storage and networking resources consumed. Weitere InformationenLearn more.
Azure-FunktionenAzure Functions Beschleunigt die Entwicklung mit einer ereignisbasierten, serverlosen Computeumgebung.Accelerates development with an event-driven, serverless compute experience. Die Skalierung erfolgt bedarfsabhängig.Scale on demand. Nur verbrauchte Ressourcen müssen bezahlt werden.Pay only for consumed resources. Der Plan wird basierend auf dem Ressourcenverbrauch und den Ausführungen pro Sekunde berechnet.Plan is billed based on per-second resource consumption and executions. Weitere InformationenLearn more.
Azure Container RegistryAzure Container Registry Speichert Images für alle Arten von Containerbereitstellungen.Stores images for all types of container deployments. Die Kosten ergeben sich aus Features, Speicher und Nutzungsdauer.Cost based on features, storage, and usage duration. Weitere InformationenLearn more.
Azure App ServiceAzure App Service Es können schnell Web-Apps, mobile Apps und API-Apps der Unternehmensklasse auf jeder Plattform erstellt, bereitgestellt und skaliert werden.Quickly build, deploy, and scale enterprise-grade web, mobile, and API apps running on any platform. App Service-Pläne werden sekundengenau abgerechnet.App Service plans are billed on a per second basis. Weitere InformationenLearn more.

VoraussetzungenPrerequisites

Für dieses Szenario benötigt Contoso Folgendes:Here's what Contoso needs for this scenario:

AnforderungenRequirements DetailsDetails
Azure-AbonnementAzure subscription Contoso hat in einem früheren Artikel Abonnements erstellt.Contoso created subscriptions during an earlier article. Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen.If you don't have an Azure subscription, create a free account.

Wenn Sie ein kostenloses Konto erstellen, sind Sie der Administrator Ihres Abonnements und können alle Aktionen durchführen.If you create a free account, you're the administrator of your subscription and can perform all actions.

Falls Sie ein vorhandenes Abonnement verwenden und nicht der Administrator sind, müssen Sie mit dem Administrator zusammenarbeiten, damit er Ihnen Berechtigungen vom Typ „Besitzer“ oder „Mitwirkender“ zuweist.If you use an existing subscription and you're not the administrator, you need to work with the admin to assign you Owner or Contributor permissions.
Azure-InfrastrukturAzure infrastructure Weitere Informationen zur Vorgehensweise von Contoso beim Einrichten einer Azure-Infrastruktur.Learn how Contoso set up an Azure infrastructure.
Voraussetzungen für EntwicklerDeveloper prerequisites Contoso benötigt die folgenden Tools auf einer Entwicklerarbeitsstation:Contoso needs the following tools on a developer workstation:

- Visual Studio 2017 Community Edition: Version 15.5- Visual Studio 2017 Community Edition: Version 15.5

.NET-Workload aktiviert.NET workload enabled.

Git-ClientGit

Azure PowerShellAzure PowerShell

Azure-BefehlszeilenschnittstelleAzure CLI

Docker CE (Windows 10) oder Docker EE (Windows Server) für die Verwendung von Windows-Containern festgelegtDocker CE (Windows 10) or Docker EE (Windows Server) set to use Windows Containers.

SzenarioschritteScenario steps

Contoso geht bei der Ausführung der Migration wie folgt vor:Here's how Contoso will run the migration:

  • Schritt 1: Bereitstellen von AKS und ACR:Step 1: Provision AKS and ACR. Contoso stellt mithilfe von PowerShell den verwalteten AKS-Cluster und Azure Container Registry bereit.Contoso provisions the managed AKS cluster and Azure container registry using PowerShell.
  • Schritt 2: Erstellen von Docker-Containern:Step 2: Build Docker containers. Das Unternehmen richtet CI für Docker-Container mithilfe von Azure DevOps ein und überträgt diese mithilfe von Push an ACR.They set up CI for Docker containers using Azure DevOps, and push them to the ACR.
  • Schritt 3: Bereitstellen von Back-End-Microservices:Step 3: Deploy back-end microservices. Es stellt die restliche Infrastruktur bereit, die von Back-End-Microservices genutzt wird.They deploy the rest of the infrastructure that will be used by back-end microservices.
  • Schritt 4: Bereitstellen der Front-End-Infrastruktur:Step 4: Deploy front-end infrastructure. Es stellt die Front-End-Infrastruktur bereit, einschließlich Blob Storage für Fotos von Haustieren, Cosmos DB und der Maschinelles Sehen-API.They deploy the front-end infrastructure, including blob storage for the pet phones, the Cosmos DB, and Vision API.
  • Schritt 5: Migrieren des Back-Ends:Step 5: Migrate the back end. Es stellt Microservices bereit und führt diese in AKS aus, um das Back-End zu migrieren.They deploy microservices and run on AKS, to migrate the back end.
  • Schritt 6: Veröffentlichen des Front-Ends:Step 6: Publish the front end. Es veröffentlicht die App SmartHotel360 in App Service und die Funktions-App, die vom Haustierdienst aufgerufen wird.They publish the SmartHotel360 app to the App Service, and the function app that will be called by the pet service.

Schritt 1: Bereitstellen von Back-End-RessourcenStep 1: Provision back-end resources

Contoso-Administratoren führen ein Bereitstellungsskript zum Erstellen des Managed Kubernetes-Clusters mit AKS und Azure Container Registry (ACR) aus.Contoso admins run a deployment script to create the managed Kubernetes cluster using AKS and the Azure Container Registry (ACR).

  • In den Anweisungen für diesen Abschnitt wird das Repository SmartHotel360-Azure-backend verwendet.The instructions for this section use the SmartHotel360-Azure-backend repository.
  • Das GitHub-Repository SmartHotel360-Azure-backend enthält die gesamte Software für diesen Teil der Bereitstellung.The SmartHotel360-Azure-backend GitHub repository contains all of the software for this part of the deployment.

Erfüllen der VoraussetzungenEnsure prerequisites

  1. Vor Beginn stellen Contoso-Administratoren sicher, dass auf dem Entwicklungscomputer, den sie für die Bereitstellung verwenden, die erforderliche Software installiert ist.Before they start, Contoso admins ensure that all prerequisite software in installed on the dev machine they're using for the deployment.
  2. Sie klonen das Repository mithilfe von Git lokal auf dem Entwicklungscomputer: git clone https://github.com/Microsoft/SmartHotel360-Azure-backend.gitThey clone the repository local to the dev machine using Git: git clone https://github.com/Microsoft/SmartHotel360-Azure-backend.git

Bereitstellen von AKS und ACRProvision AKS and ACR

Die Contoso-Administratoren führen die Bereitstellung wie folgt durch:The Contoso admins provision as follows:

  1. Sie öffnen den Ordner mit Visual Studio Code und verschiebt diesen in das Verzeichnis /deploy/k8s, das das Skript gen-aks-env.ps1 enthält.They open the folder using Visual Studio Code, and moves to the /deploy/k8s directory, which contains the script gen-aks-env.ps1.

  2. Sie führen das Skript zum Erstellen des Managed Kubernetes-Clusters mit AKS und ACR aus.They run the script to create the managed Kubernetes cluster, using AKS and ACR.

    AKS

  3. Bei geöffneter Datei aktualisiert Contoso den $location-Parameter in eastus2 und speichert die Datei.With the file open, they update the $location parameter to eastus2, and save the file.

    AKS

  4. Sie wählen die Optionen Ansicht > Integriertes Terminal aus, um das integrierte Terminal in Visual Studio Code zu öffnen.They select View > Integrated Terminal to open the integrated terminal in Visual Studio Code.

    AKS

  5. In dem in PowerShell integrierten Terminal meldet Contoso sich bei Azure mit dem Befehl „Connect-AzureRmAccount“ an.In the PowerShell Integrated terminal, they sign into Azure using the Connect-AzureRmAccount command. Weitere Informationen zu den ersten Schritten mit PowerShell finden Sie hier.Learn more about getting started with PowerShell.

    AKS

  6. Contoso authentifiziert die Azure CLI, indem es den Befehl az login ausführt und die Anweisungen für die Authentifizierung mithilfe eines Webbrowsers befolgt.They authenticate Azure CLI by running the az login command, and following the instructions to authenticate using their web browser. Weitere Informationen zur Anmeldung bei der Azure CLI finden Sie hier.Learn more about logging in with Azure CLI.

    AKS

  7. Contoso führt den folgenden Befehl aus, übergibt den Ressourcengruppennamen von ContosoRG, den Namen des AKS-Clusters „smarthotel-aks-eus2“ und den Namen der neuen Registrierung.They run the following command, passing the resource group name of ContosoRG, the name of the AKS cluster smarthotel-aks-eus2, and the new registry name.

    .\gen-aks-env.ps1  -resourceGroupName ContosoRg -orchestratorName smarthotelakseus2 -registryName smarthotelacreus2
    

    AKS

  8. Azure erstellt eine andere Ressourcengruppe, die die Ressourcen für den AKS-Cluster enthält.Azure creates another resource group, containing the resources for the AKS cluster.

    AKS

  9. Nachdem die Bereitstellung abgeschlossen ist, installieren sie das Befehlszeilentool kubectl.After the deployment is finished, they install the kubectl command-line tool. Das Tool ist bereits in Azure Cloud Shell installiert.The tool is already installed on the Azure CloudShell.

    az aks install-cli
    
  10. Contoso überprüft die Verbindung mit dem Cluster, indem es den Befehl kubectl get nodes ausführt.They verify the connection to the cluster by running the kubectl get nodes command. Der Knoten weist den gleichen Namen wie die VM in der automatisch erstellten Ressourcengruppe auf.The node is the same name as the VM in the automatically created resource group.

    AKS

  11. Contoso führt den folgenden Befehl zum Starten des Kubernetes-Dashboards aus:They run the following command to start the Kubernetes Dashboard:

    az aks browse --resource-group ContosoRG --name smarthotelakseus2
    
  12. Eine Browserregisterkarte wird auf dem Dashboard geöffnet.A browser tab opens to the Dashboard. Hierbei handelt es sich um eine getunnelte Verbindung, die auf die Azure CLI zurückgreift.This is a tunneled connection using the Azure CLI.

    AKS

Schritt 2: Konfigurieren der Back-End-PipelineStep 2: Configure the back-end pipeline

Erstellen eines Azure DevOps-Projekts und -BuildsCreate an Azure DevOps project and build

Contoso-Administratoren erstellen ein Azure DevOps-Projekt und konfigurieren einen CI-Build zum Erstellen des Containers und übertragen es dann mithilfe von Push an ACR.Contoso creates an Azure DevOps project, and configures a CI Build to create the container and then pushes it to the ACR. In den Anweisungen in diesem Abschnitt wird das Repository SmartHotel360-Azure-Backend verwendet.The instructions in this section use the SmartHotel360-Azure-Backend repository.

  1. Unter „visualstudio.com“ erstellen sie eine neue Organisation (contosodevops360.visualstudio.com) und konfigurieren sie für die Verwendung von Git.From visualstudio.com, they create a new organization (contosodevops360.visualstudio.com), and configure it to use Git.

  2. Sie erstellen ein neues Projekt (SmartHotelBackend) mithilfe von Git für die Versionskontrolle und Agile für den Workflow.They create a new project (SmartHotelBackend) using Git for version control, and Agile for the workflow.

    Azure DevOps

  3. Sie importieren das GitHub-Repository.They import the GitHub repo.

    Azure DevOps

  4. Sie wählen unter Pipelines die Option Build aus und erstellen mit Azure Repos Git als Quelle aus dem Repository eine neue Pipeline.In Pipelines, they select Build, and create a new pipeline using Azure Repos Git as a source, from the repository.

    Azure DevOps

  5. Sie legen fest, dass mit einem leeren Auftrag begonnen wird.They select to start with an empty job.

    Azure DevOps

  6. Sie klicken auf Gehostete Linux-Vorschau für die Buildpipeline.They select Hosted Linux Preview for the build pipeline.

    Azure DevOps

  7. Unter Phase 1 fügt Contoso einen Docker Compose-Task hinzu.In Phase 1, they add a Docker Compose task. Dieser Task erstellt Docker Compose.This task builds the Docker compose.

    Azure DevOps

  8. Contoso wiederholt den Docker Compose-Task und fügt einen weiteren Task hinzu.They repeat and add another Docker Compose task. Dieser überträgt die Container mithilfe von Push an ACR.This one pushes the containers to ACR.

    Azure DevOps

  9. Contoso wählt den ersten Task (für die Erstellung) aus und konfiguriert den Build mit dem Azure-Abonnement, der Autorisierung und ACR.They select the first task (to build), and configure the build with the Azure subscription, authorization, and the ACR.

    Azure DevOps

  10. Sie geben den Pfad der Datei docker-compose.yaml im Ordner src des Repositorys an.They specify the path of the docker-compose.yaml file, in the src folder of the repo. Sie legen fest, dass Dienstimages erstellt werden und dass das aktuelle Tag eingebunden wird.They select to build service images and include the latest tag. Wenn die Aktion zu Dienstimages erstellen wechselt, ändert sich der Name des Azure DevOps-Tasks in Dienste automatisch erstellen.When the action changes to Build service images, the name of the Azure DevOps task changes to Build services automatically.

    Azure DevOps

  11. Nun konfigurieren sie den zweiten Docker-Task (für die Übertragung mithilfe von Push).Now, they configure the second Docker task (to push). Das Unternehmen wählt das Abonnement und die ACR-Instanz smarthotelacreus2 aus.They select the subscription and the smarthotelacreus2 ACR.

    Azure DevOps

  12. Es gibt erneut die Datei für die Datei „docker-compose.yaml“ ein, klickt anschließend auf Dienstimages mithilfe von Push übertragen und schließt das aktuelle Tag ein.Again, they enter the file to the docker-compose.yaml file, then select Push service images and include the latest tag. Wenn die Aktion zu Dienstimages mithilfe von Push übertragen wechselt, ändert sich der Name des Azure DevOps-Tasks in Dienste automatisch mithilfe von Push übertragen.When the action changes to Push service images, the name of the Azure DevOps task changes to Push services automatically.

    Azure DevOps

  13. Nachdem die Azure DevOps-Tasks konfiguriert wurden, speichern Contoso-Administratoren die Buildpipeline und beginnt mit dem Buildprozess.With the Azure DevOps tasks configured, Contoso saves the build pipeline, and starts the build process.

    Azure DevOps

  14. Sie wählen den Buildauftrag aus, um den Status zu überprüfen.They select the build job to check progress.

    Azure DevOps

  15. Wenn der Build fertiggestellt ist, zeigt ACR die neuen Repositorys an, die mit den von den Microservices verwendeten Containern aufgefüllt werden.After the build finishes, the ACR shows the new repos, which are populated with the containers used by the microservices.

    Azure DevOps

Bereitstellen der Back-End-InfrastrukturDeploy the back-end infrastructure

Mithilfe des erstellten AKS-Clusters und der Docker-Imagebuilds stellen Contoso-Administratoren nun die restliche Infrastruktur bereit, die von Back-End-Microservices genutzt wird.With the AKS cluster created and the Docker images built, Contoso admins now deploy the rest of the infrastructure that will be used by back-end microservices.

  • In den Anweisungen in diesem Abschnitt wird das Repository SmartHotel360-Azure-Backend verwendet.Instructions in the section use the SmartHotel360-Azure-Backend repo.
  • Im Ordner /deploy/k8s/arm gibt es ein einziges Skript zum Erstellen aller Elemente.In the /deploy/k8s/arm folder, there's a single script to create all items.

Die Bereitstellung erfolgt wie folgt:They deploy as follows:

  1. Sie öffnen eine Developer-Eingabeaufforderung und verwenden den Befehl az login als Anmeldung für das Azure-Abonnement.They open a developer command prompt, and use the command az login for the Azure subscription.

  2. Sie verwenden die Datei „deploy.cmd“, um die Azure-Ressourcen in der Ressourcengruppe „ContosoRG“ und in der Region „USA, Osten 2“ (EUS2) bereitzustellen, indem sie den folgenden Befehl eingeben:They use the deploy.cmd file to deploy the Azure resources in the ContosoRG resource group and EUS2 region, by typing the following command:

    .\deploy.cmd azuredeploy ContosoRG -c eastus2
    

    Bereitstellen des Back-Ends

  3. Im Azure-Portal erfassen sie die Verbindungszeichenfolge für die einzelnen Datenbanken, die später verwendet werden.In the Azure portal, they capture the connection string for each database, to be used later.

    Bereitstellen des Back-Ends

Erstellen der Back-End-ReleasepipelineCreate the back-end release pipeline

Contoso-Administratoren gehen nun wie folgt vor:Now, Contoso admins do the following:

  • Sie stellen den NGINX-Eingangscontroller bereit, um eingehenden Datenverkehr für die Dienste zuzulassen.Deploy the NGINX ingress controller to allow inbound traffic to the services.
  • Sie stellen die Microservices für den AKS-Cluster bereit.Deploy the microservices to the AKS cluster.
  • In einem ersten Schritt aktualisieren sie die Verbindungszeichenfolgen zu den Microservices mithilfe von Azure DevOps.As a first step they update the connection strings to the microservices using Azure DevOps. Sie konfigurieren eine neue Azure DevOps-Releasepipeline, um die Microservices bereitzustellen.They then configure a new Azure DevOps Release pipeline to deploy the microservices.
  • In den Anweisungen in diesem Abschnitt wird das Repository SmartHotel360-Azure-Backend verwendet.The instructions in this section use the SmartHotel360-Azure-Backend repo.
  • Einige der Konfigurationseinstellungen (z.B. Active Directory B2C) werden nicht in diesem Artikel behandelt.Some of the configuration settings (for example Active Directory B2C) aren't covered in this article. Weitere Informationen zu diesen Einstellungen finden Sie im Repository weiter oben.For more information about these settings, review the repo above.

Sie erstellen die Pipeline:They create the pipeline:

  1. Mithilfe von Visual Studio aktualisieren sie die Datei /deploy/k8s/config_local.yml anhand der zuvor notierten Informationen zur Datenverbindung.Using Visual Studio they update the /deploy/k8s/config_local.yml file with the database connection information they noted earlier.

    Datenbankverbindungen

  2. Sie öffnen Azure DevOps und wählen im Projekt „SmartHotel360“ in Releases die Option +Neue Pipeline aus.They open Azure DevOps, and in the SmartHotel360 project, in Releases, they select +New Pipeline.

    Neue Pipeline

  3. Sie wählen Leere Stufe aus, um die Pipeline ohne Vorlage zu starten.They select Empty Job to start the pipeline without a template.

  4. Sie geben den Phasen- und Pipelinenamen an.They provide the stage and pipeline names.

    Phasenname

    Pipelinename

  5. Sie fügen ein Artefakt hinzu.They add an artifact.

    Hinzufügen des Artefakts

  6. Sie wählen Git als Quelltyp aus und geben Projekt, Quelle und Masterbranch für die App SmartHotel360 an.They select Git as the source type, and specify the project, source, and master branch for the SmartHotel360 app.

    Artefakteinstellungen

  7. Sie wählen den Tasklink aus.They select the task link.

    Aufgabenlink

  8. Sie fügen eine neue Azure PowerShell-Aufgabe hinzu, sodass sie ein PowerShell-Skript in einer Azure-Umgebung ausführen können.They add a new Azure PowerShell task so that they can run a PowerShell script in an Azure environment.

    PowerShell in Azure

  9. Sie wählen zunächst das Azure-Abonnement für die Aufgabe und anschließend das Skript deploy.ps1 im Git-Repository aus.They select the Azure subscription for the task, and select the deploy.ps1 script from the Git repo.

    Ausführen des Skripts

  10. Sie fügen dem Skript Argumente hinzu.They add arguments to the script. Das Skript löscht den gesamten Clusterinhalt (außer den eingehenden Daten und dem Eingangscontroller) und stellt die Microservices bereit.The script will delete all cluster content (except ingress and ingress controller), and deploy the microservices.

    Skriptargumente

  11. Sie legen die bevorzugte Azure PowerShell-Version als neueste fest und speichern die Pipeline.They set the preferred Azure PowerShell version to the latest, and save the pipeline.

  12. Sie kehren zur Seite Release zurück, und erstellen manuell ein neues Release.They move back to the Release page, and manually create a new release.

    Neues Release

  13. Nach dem Erstellen wählen sie das Release und anschließend in Aktionen die Option Bereitstellen aus.They select the release after creating it, and in Actions, they select Deploy.

    Release bereitstellen

  14. Nach Abschluss der Bereitstellung führen sie mithilfe der Azure Cloud Shell folgenden Befehl aus, um den Status von Diensten zu überprüfen: kubectl get services.When the deployment is complete, they run the following command to check the status of services, using the Azure Cloud Shell: kubectl get services.

Schritt 3: Bereitstellen von Front-End-DienstenStep 3: Provision front-end services

Contoso-Administratoren müssen die Infrastruktur bereitstellen, die von den Front-End-Apps verwendet wird.Contoso admins need to deploy the infrastructure that will be used by the front-end apps. Sie erstellen einen Blobspeichercontainer zum Speichern der Bilder der Haustiere, die Cosmos DB-Datenbank zum Speichern von Dokumenten mit den Informationen zu den Haustieren und die Maschinelles Sehen-API für die Website.They create a blob storage container for storing the pet images; the Cosmos database to store documents with the pet information; and the Vision API for the website.

In den Anweisungen für diesen Abschnitt wird das Repository SmartHotel360-public-web verwendet.Instructions for this section use the SmartHotel360-public-web repo.

Erstellen von Blob Storage-ContainernCreate blob storage containers

  1. Sie öffnen im Azure-Portal das erstellte Speicherkonto und wählen anschließend Blobs aus.In the Azure portal, they open the storage account that was created, then select Blobs.

  2. Es erstellt einen neuen Container (Haustiere), bei dem die öffentliche Zugriffsebene auf Container festgelegt ist.They create a new container (Pets) with the public access level set to container. Benutzer laden ihre Fotos von Haustieren in diesen Container hoch.Users will upload their pet photos to this container.

    Speicherblob

  3. Es erstellt einen zweiten neuen Container namens Einstellungen.They create a second new container named settings. Eine Datei mit allen Front-End-App-Einstellungen wird in diesen Container platziert.A file with all the front-end app settings will be placed in this container.

    Speicherblob

  4. Es speichert die Zugriffsdetails für das Speicherkonto in einer Textdatei zur späteren Verwendung.They capture the access details for the storage account in a text file, for future reference.

    Speicherblob

Bereitstellen einer Cosmos DB-DatenbankProvision a Cosmos database

Contoso-Administratoren stellen eine Cosmos DB-Datenbank bereit, die für Informationen zu Haustieren verwendet wird.Contoso admins provision a Cosmos database to be used for pet information.

  1. Contoso erstellt eine Azure Cosmos DB-Instanz im Azure Marketplace.They create an Azure Cosmos DB in the Azure Marketplace.

    Cosmos DB

  2. Contoso gibt einen Namen (contososmarthotel) an, wählt die SQL-API aus und fügt sie in die Produktionsressourcengruppe „ContosoRG“ in der Hauptregion „USA, Osten 2“ ein.They specify a name (contososmarthotel), select the SQL API, and place it in the production resource group ContosoRG, in the main East US 2 region.

    Cosmos DB

  3. Contoso fügt eine neue Sammlung zur Datenbank mit Standardkapazität und -durchsatz hinzu.They add a new collection to the database, with default capacity and throughput.

    Cosmos DB

  4. Contoso nimmt die Verbindungsinformationen für die Datenbank für die zukünftige Verwendung zur Kenntnis.They note the connection information for the database, for future reference.

    Cosmos DB

Bereitstellen der Maschinelles Sehen-APIProvision Computer Vision

Contoso-Administratoren stellen die Maschinelles Sehen-API bereit.Contoso admins provision the Computer Vision API. Die API wird von der Funktion zum Auswerten der Bilder aufgerufen, die von den Benutzern hochgeladen wurden.The API will be called by the function, to evaluate pictures uploaded by users.

  1. Contoso erstellt im Azure Marketplace eine Maschinelles Sehen-Instanz.They create a Computer Vision instance in the Azure Marketplace.

    Maschinelles Sehen

  2. Contoso stellt die API (smarthotelpets) in der Produktionsressourcengruppe „ContosoRG“ in der Hauptregion „USA, Osten 2“ bereit.They provision the API (smarthotelpets) in the production resource group ContosoRG, in the main East US 2 region.

    Maschinelles Sehen

  3. Contoso speichert die Verbindungseinstellungen für die API in einer Textdatei zur späteren Verwendung.They save the connection settings for the API to a text file for later reference.

    Maschinelles Sehen

Bereitstellen der Azure-Web-AppProvision the Azure web app

Contoso-Administratoren stellen die Web-App mithilfe des Azure-Portals bereit.Contoso admins provision the web app using the Azure portal.

  1. Das Unternehmen wählt Web-App im Portal aus.They select Web App in the portal.

    Web-App

  2. Sie geben einen App-Namen an (smarthotelcontoso), führen die App unter Windows aus und platzieren sie in der Produktionsressourcengruppe ContosoRG.They provide an app name (smarthotelcontoso), run it on Windows, and place it in the production resources group ContosoRG. Sie erstellen eine neue Application Insights-Instanz zur App-Überwachung.They create a new Application Insights instance for app monitoring..

    Web-App-Name

  3. Anschließend navigieren sie zur Adresse der Apps, um zu überprüfen, ob diese erfolgreich erstellt wurden.After they're done, they browse to the address of the app to check it's been created successfully.

  4. Im Azure-Portal erstellen sie nun einen Stagingslot für den Code.Now, in the Azure portal they create a staging slot for the code. Die Pipeline wird für diesen Slot bereitgestellt.The pipeline will deploy to this slot. Dadurch wird sichergestellt, dass Code erst in die Produktionsumgebung gelangt, wenn Administratoren ein Release ausführen.This ensures that code isn't put into production until admins perform a release.

    Web-App-Stagingslot

Bereitstellen der Azure-Funktionen-AppProvision the Azure function app

Contoso-Administratoren stellen im Azure-Portal die Funktionen-App bereit.In the Azure portal, Contoso admins provision the Function App.

  1. Sie wählen Funktionen-App aus.They select Function App.

    Erstellen einer Funktionen-App

  2. Sie geben einen App-Namen an (smarthotelpetchecker).They provide an app name (smarthotelpetchecker). Sie fügen die App in die Produktionsressourcengruppe ContosoRG ein. Sie legen den Hostingort auf Verbrauchstarif fest und fügen die App in die Region „USA, Osten 2“ ein.They place the app in the production resource group ContosoRG.They set the hosting place to Consumption Plan, and place the app in the East US 2 region. Daraufhin wird neben einem neuen Speicherkonto auch eine Application Insights-Instanz für die Überwachung erstellt.A new storage account is created, along with an Application Insights instance for monitoring.

    Einstellungen für Funktions-Apps

  3. Nach der Bereitstellung der App navigieren sie zur Adresse der App, um zu überprüfen, ob diese erfolgreich erstellt wurde.After the app is deployed, they browse to the app address to check it's been created successfully.

Schritt 4: Einrichten der Front-End-PipelineStep 4: Set up the front-end pipeline

Contoso-Administratoren erstellen zwei verschiedene Projekte für die Front-End-Website.Contoso admins create two different projects for the front-end site.

  1. In Azure DevOps erstellen sie ein SmartHotelFrontend-Projekt.In Azure DevOps, they create a project SmartHotelFrontend.

    Front-End-Projekt

  2. Sie importieren das Git-Repository SmartHotel360 front end in das neue Projekt.They import the SmartHotel360 front end Git repository into the new project.

  3. Für die Funktions-App erstellen sie ein weiteres Azure DevOps-Projekt (SmartHotelPetChecker) und importieren das Git-Repository PetChecker in dieses Projekt.For the function app, they create another Azure DevOps project (SmartHotelPetChecker), and import the PetChecker Git repository into this project.

Konfigurieren der Web-AppConfigure the web app

Contoso-Administratoren konfigurieren nun die Web-App zur Verwendung von Contoso-Ressourcen.Now Contoso admins configure the web app to use Contoso resources.

  1. Sie stellen eine Verbindung mit dem Azure DevOps-Projekt her und klonen das Repository lokal auf dem Entwicklungscomputer.They connect to the Azure DevOps project, and clone the repository locally to the development machine.

  2. In Visual Studio öffnet Contoso den Ordner, um alle Dateien im Repository anzuzeigen.In Visual Studio, they open the folder to show all the files in the repo.

    Repositorydateien

  3. Sie aktualisieren ggf. die Konfigurationsänderungen.They update the configuration changes as required.

    • Wenn die Web-App gestartet wird, sucht es nach der App-Einstellung SettingsUrl.When the web app starts up, it looks for the SettingsUrl app setting.
    • Diese Variable muss eine URL enthalten, die auf eine Konfigurationsdatei zeigt.This variable must contain a URL pointing to a configuration file.
    • Standardmäßig wird die Einstellung als öffentlicher Endpunkt verwendet.By default, the setting used is a public endpoint.
  4. Sie aktualisieren die Datei „/config-sample.json/sample.json“.They update the /config-sample.json/sample.json file.

    • Dies ist die Konfigurationsdatei für das Web, wenn der öffentliche Endpunkt verwendet wird.This is the configuration file for the web when using the public endpoint.
    • Sie bearbeiten die Abschnitte urls und pets_config mit den Werten für die AKS-API-Endpunkte, die Speicherkonten und die Cosmos DB-Datenbank.They edit the urls and pets_config sections with the values for the AKS API endpoints, storage accounts, and Cosmos database.
    • Die URLs sollten dem DNS-Namen der neuen Web-App entsprechen, die von Contoso erstellt wird.The URLs should match the DNS name of the new web app that Contoso will create.
    • Bei Contoso lautet dieser smarthotelcontoso.eastus2.cloudapp.azure.com.For Contoso, this is smarthotelcontoso.eastus2.cloudapp.azure.com.

    JSON-Einstellungen

  5. Nachdem die Datei aktualisiert wurde, benennen sie diese in smarthotelsettingsurl um und laden sie in den Blobspeicher hoch, den sie zuvor erstellt haben.After the file is updated, they rename it smarthotelsettingsurl, and upload it to the blob storage they created earlier.

    Umbenennen und hochladen

  6. Sie wählen die Datei aus, um die URL abzurufen.They select the file to get the URL. Diese URL wird von der App beim Abrufen der Konfigurationsdatei verwendet.The URL is used by the app when it pulls down the configuration files.

    URL der App

  7. Sie aktualisieren SettingsUrl in der Datei appsettings.Production.json in die URL der neuen Datei.In the appsettings.Production.json file, they update the SettingsURL to the URL of the new file.

    URL für das Update

Bereitstellen der Website in Azure App ServiceDeploy the website to Azure App Service

Contoso-Administratoren können die Website jetzt veröffentlichen.Contoso admins can now publish the website.

  1. Sie öffnen Azure DevOps und wählen im Projekt SmartHotelFrontend in Builds and Releases (Builds und Releases) die Option +Neue Pipeline aus.They open Azure DevOps, and in the SmartHotelFrontend project, in Builds and Releases, they select +New Pipeline.

  2. Sie wählen Azure DevOps-Git als Quelle aus.They select Azure DevOps Git as a source.

  3. Sie wählen die Vorlage ASP.NET Core aus.They select the ASP.NET Core template.

  4. Sie überprüfen in der Pipeline, ob die Optionen Webprojekte veröffentlichen und Veröffentlichte Projekte komprimieren ausgewählt wurden.They review the pipeline, and check that Publish Web Projects and Zip Published Projects are selected.

    Pipelineeinstellungen

  5. Unter Trigger aktivieren sie Continuous Integration und fügen den Masterbranch hinzu.In Triggers, they enable continuous integration, and add the master branch. Dadurch wird sichergestellt, dass die Buildpipeline jedes Mal startet, wenn die Lösung neuen Code für den Masterbranch committet.This ensures that each time the solution has new code committed to the master branch, the build pipeline starts.

    Continuous Integration

  6. Sie wählen Speichern und in Warteschlange einreihen aus, um einen Buildvorgang zu starten.They select Save & Queue to start a build.

  7. Nach Abschluss des Buildvorgangs konfigurieren sie eine Releasepipeline mithilfe der Azure App Service-Bereitstellung.After the build completes, they configure a release pipeline using Azure App Service Deployment.

  8. Sie geben den Phasennamen Staging an.They provide a Stage name Staging.

    Umgebungsname

  9. Sie fügen ein Artefakt hinzu und wählen den eben konfigurierten Build aus.They add an artifact and select the build they just configured.

    Hinzufügen des Artefakts

  10. Sie wählen das Blitzsymbol des Artefakts aus, um Continuous Deployment zu aktivieren.They select the lightning bolt icon on the artifact, and enable continuous deployment.

    Kontinuierliche Bereitstellung

  11. Sie wählen in Umgebung unter Staging die Option 1 job, 1 task (1 Auftrag, 1 Aufgabe) aus.In Environment, they select 1 job, 1 task under Staging.

  12. Nachdem sie das Abonnement und den App-Namen ausgewählt haben, öffnen sie die Aufgabe Deploy Azure App Service (Azure App Service bereitstellen).After selecting the subscription, and app name, they open the Deploy Azure App Service task. Die Bereitstellung wurde für die Verwendung des Bereitstellungsslots Staging konfiguriert.The deployment is configured to use the staging deployment slot. Dadurch wird automatisch Code zur Überprüfung und Genehmigung in diesem Slot erstellt.This automatically builds code for review and approval in this slot.

    Slot

  13. In der Pipeline fügen sie eine neue Phase hinzu.In the Pipeline, they add a new stage.

    Neue Umgebung

  14. Sie wählen Azure App Service-Bereitstellung mit Slot aus und geben der Umgebung den Namen Prod.They select Azure App Service deployment with slot, and name the environment Prod.

  15. Sie wählen 1 job, 2 tasks (1 Auftrag, 2 Aufgaben) und dann das Abonnement, den App Service-Namen und den Slot Staging aus.They select 1 job, 2 tasks, then select the subscription, app service name, and the staging slot.

    Umgebungsname

  16. Sie entfernen Deploy Azure App Service to Slot (Azure App Service in Slot bereitstellen) aus der Pipeline.They remove the Deploy Azure App Service to Slot from the pipeline. Diese Aufgabe wurde in den vorherigen Schritten dort eingefügt.It was placed there by the previous steps.

    Aus Pipeline entfernen

  17. Sie speichern die Pipeline.They save the pipeline. Sie wählen in der Pipeline Bedingungen nach der Bereitstellung aus.On the pipeline, they select Post-deployment conditions.

    Nach der Bereitstellung

  18. Sie aktivieren Genehmigungen nach der Bereitstellung und fügen eine Entwicklungsleitung als genehmigende Person hinzu.They enable Post-deployment approvals, and add a dev lead as the approver.

    Genehmigung nach der Bereitstellung

  19. Sie starten in der Buildpipeline einen Build.In the Build pipeline, they manually kick off a build. Dadurch wird die neue Releasepipeline ausgelöst, wodurch wiederum die Website im Stagingslot bereitgestellt wird.This triggers the new release pipeline, which deploys the site to the staging slot. Bei Contoso lautet die URL für den Slot https://smarthotelcontoso-staging.azurewebsites.net/.For Contoso, the URL for the slot is https://smarthotelcontoso-staging.azurewebsites.net/.

  20. Nach Abschluss des Buildvorgangs und nachdem das Release im Slot bereitgestellt wurde, sendet Azure DevOps für die Genehmigung eine E-Mail an die Entwicklungsleitung.After the build finishes, and the release deploys to the slot, Azure DevOps emails the dev lead for approval.

  21. Die Entwicklungsleitung wählt Genehmigung anzeigen aus und kann dann die Anforderung im Azure DevOps-Portal genehmigen oder ablehnen.The dev lead selects View approval, and can approve or reject the request in the Azure DevOps portal.

    Genehmigungs-E-Mail

  22. Die Leitung erstellt einen Kommentar und genehmigt die Anforderung.The lead makes a comment and approves. Dadurch beginnt der Austausch der Slots Staging und Prod. Zudem wird der Build in die Produktionsumgebung verschoben.This starts the swap of the staging and prod slots, and moves the build into production.

    Genehmigen und austauschen

  23. Der Austausch wird durch die Pipeline abgeschlossen.The pipeline completes the swap.

    Vollständiger Austausch

  24. Das Team überprüft den Slot prod, um sicherzustellen, dass sich die Web-App in der Produktionsumgebung unter https://smarthotelcontoso.azurewebsites.net/ befindet.The team checks the prod slot to verify that the web app is in production at https://smarthotelcontoso.azurewebsites.net/.

Bereitstellen der Funktions-App PetCheckerDeploy the PetChecker Function app

Contoso-Administratoren stellen die App wie folgt bereit.Contoso admins deploy the app as follows.

  1. Sie klonen das Repository lokal auf dem Entwicklungscomputer, indem sie eine Verbindung mit dem Azure DevOps-Projekt herstellen.They clone the repository locally to the development machine by connecting to the Azure DevOps project.

  2. In Visual Studio öffnet Contoso den Ordner, um alle Dateien im Repository anzuzeigen.In Visual Studio, they open the folder to show all the files in the repo.

  3. Sie öffnen die Datei src/PetCheckerFunction/local.settings.json und fügen die App-Einstellungen für Speicher, Cosmos-Datenbank und Maschinelles Sehen-API hinzu.They open the src/PetCheckerFunction/local.settings.json file, and add the app settings for storage, the Cosmos database, and the Computer Vision API.

    Bereitstellen der Funktion

  4. Sie führen für den Code einen Commit aus, synchronisieren ihn mit Azure DevOps und übertragen so ihre Änderungen mithilfe von Push.They commit the code, and sync it back to Azure DevOps, pushing their changes.

  5. Sie fügen eine neue Buildpipeline hinzu und wählen anschließend Azure DevOps-Git für die Quelle aus.They add a new Build pipeline, then select Azure DevOps Git for the source.

  6. Sie wählen die Vorlage ASP.NET Core (.NET Framework) aus.They select the ASP.NET Core (.NET Framework) template.

  7. Sie übernehmen die Standardwerte für die Vorlage.They accept the defaults for the template.

  8. In Trigger wählen sie Continuous Integration aktivieren und anschließend Speichern und in Warteschlange einreihen aus, um einen Buildvorgang zu starten.In Triggers, then select to Enable continuous integration, then select Save & Queue to start a build.

  9. Nach dem erfolgreichen Ausführen des Buildvorgangs erstellen sie eine Releasepipeline, indem sie Azure App Service-Bereitstellung mit Slot hinzufügen.After the build succeeds, they build a Release pipeline, adding Azure App Service deployment with slot.

  10. Sie geben der Umgebung den Namen Prod und wählen anschließend das Abonnement aus.They name the environment Prod, then select the subscription. Sie legen den App-Typ auf Funktionen-App und den App Service-Namen auf smarthotelpetchecker fest.They set the App type to Function App, and the app service name as smarthotelpetchecker.

    Funktionen-App

  11. Sie fügen einen Artefakt-Build hinzu.They add an artifact Build.

    Artefakt

  12. Sie aktivieren Continuous Deployment-Trigger und wählen anschließend Speichern aus.They enable Continuous deployment trigger, then select Save.

  13. Sie wählen Neuen Build in Warteschlange aus, um die ganze CI/CD-Pipeline auszuführen.They select Queue new build to run the full CI/CD pipeline.

  14. Nachdem die Funktion bereitgestellt wurde, wird sie im Azure-Portal mit dem Status Wird ausgeführt angezeigt.After the function is deployed, it appears in the Azure portal, with the Running status.

    Bereitstellen der Funktion

  15. Contoso navigiert zur App unter http://smarthotel360public.azurewebsites.net/Pets, um zu testen, ob die Pet Checker-App wie erwartet funktioniert.They browse to the app to test that the Pet Checker app is working as expected, at http://smarthotel360public.azurewebsites.net/Pets.

  16. Sie wählen den Avatar aus, um ein Bild hochzuladen.They select the avatar to upload a picture.

    Bereitstellen der Funktion

  17. Das erste Foto, das überprüft werden soll, ist das eines kleinen Hundes.The first photo they want to check is of a small dog.

    Bereitstellen der Funktion

  18. Die App gibt eine Meldung zur Bestätigung zurück.The app returns a message of acceptance.

    Bereitstellen der Funktion

Überprüfen der BereitstellungReview the deployment

Da die migrierten Ressourcen in Azure enthalten sind, muss Contoso nun die neue Infrastruktur vollständig operationalisieren und sichern.With the migrated resources in Azure, Contoso now needs to fully operationalize and secure the new infrastructure.

SicherheitSecurity

  • Contoso muss sicherstellen, dass die neuen Datenbanken geschützt sind.Contoso needs to ensure that the new databases are secure. Weitere InformationenLearn more.
  • Die App muss für die Verwendung von SSL mit Zertifikaten aktualisiert werden.The app needs to be updated to use SSL with certificates. Die Containerinstanz sollte erneut bereitgestellt werden, um auf 443 zu antworten.The container instance should be redeployed to answer on 443.
  • Zum Schutz von Geheimnissen für die Service Fabric-Apps sollte Contoso die Verwendung von Key Vault in Erwägung ziehen.Contoso should consider using Key Vault to protect secrets for their Service Fabric apps. Weitere InformationenLearn more.

Sicherungen und NotfallwiederherstellungBackups and disaster recovery

  • Contoso muss die Sicherungsanforderungen für Azure SQL-Datenbank überprüfen.Contoso needs to review backup requirements for the Azure SQL Database. Weitere InformationenLearn more.
  • Contoso sollte die Implementierung von SQL-Failovergruppen berücksichtigen, um ein regionales Failover für die Datenbank bereitzustellen.Contoso should consider implementing SQL failover groups to provide regional failover for the database. Weitere InformationenLearn more.
  • Contoso kann die Georeplikation für die Premium-SKU von ACR nutzen.Contoso can use geo-replication for the ACR premium SKU. Weitere InformationenLearn more.
  • Cosmos DB führt automatisch Sicherungen durch.Cosmos DB backs up automatically. Contoso kann sich über diesen Prozess informieren.Contoso can learn more about this process.

Lizenzierung und KostenoptimierungLicensing and cost optimization

  • Nachdem alle Ressourcen bereitgestellt wurden, sollte Contoso Azure-Tags basierend auf seiner Infrastrukturplanung zuweisen.After all resources are deployed, Contoso should assign Azure tags based on their infrastructure planning.
  • Die gesamte Lizenzierung ist in die Kosten für die PaaS-Dienste integriert, die Contoso verwendet.All licensing is built into the cost of the PaaS services that Contoso is consuming. Dies wird über EA verrechnet.This will be deducted from the EA.
  • Contoso aktiviert Azure Cost Management. Es ist durch Cloudyn lizenziert, ein Tochterunternehmen von Microsoft.Contoso will enable Azure Cost Management licensed by Cloudyn, a Microsoft subsidiary. Dabei handelt es sich um eine Cost Management-Lösung mit mehreren Clouds, die Ihnen das Verwenden und Verwalten von Azure und anderen Cloudressourcen erleichtert.It's a multicloud cost management solution that helps you use and manage Azure and other cloud resources. Erfahren Sie mehr über die Azure Cost Management.Learn more about Azure Cost Management.

ZusammenfassungConclusion

In diesem Artikel wurde die App SmartHotel360 in Azure von Contoso neu erstellt.In this article, Contoso rebuilds the SmartHotel360 app in Azure. Die lokale VM für das App-Front-End wurde in Azure App Service-Web-Apps neu erstellt.The on-premises app front-end VM is rebuilt to Azure App Service web apps. Das Back-End der Anwendung wird mithilfe von Microservices erstellt, die für Container bereitgestellt werden, die von Azure Kubernetes Service (AKS) verwaltet werden.The application back end is built using microservices deployed to containers managed by Azure Kubernetes Service (AKS). Die App-Funktionalität hat Contoso durch eine App für Fotos von Haustieren verbessert.Contoso enhanced app functionality with a pet photo app.

Empfohlene QualifikationenSuggested skills

Microsoft Learn ist ein neuer Lernansatz.Microsoft Learn is a new approach to learning. Die Bereitschaft zu den neuen Qualifikationen und Aufgaben, die mit der Cloudeinführung verbunden sind, entsteht nicht problemlos.Readiness for the new skills and responsibilities that come with cloud adoption doesn't come easily. Microsoft Learn bietet einen lohnenderen Ansatz für praktisches Lernen, der Ihnen hilft, Ihre Ziele schneller zu erreichen.Microsoft Learn provides a more rewarding approach to hands-on learning that helps you achieve your goals faster. Punkte sammeln, zu höheren Stufen aufsteigen und mehr erreichen.Earn points and levels, and achieve more!

Hier finden Sie einige Beispiele für maßgeschneiderte Lernpfade auf Microsoft Learn, die auf die App Contoso SmartHotel360 in Azure abgestimmt sind.Here are a couple of examples of tailored learning paths on Microsoft Learn that align with the Contoso SmartHotel360 app in Azure.

Bereitstellen einer Website in Azure mithilfe von Azure App Service: Mit Web-Apps in Azure können Sie Ihre Website leicht veröffentlichen und verwalten, ohne dass Sie mit den zugrunde liegenden Servern, Speicher oder Netzwerkressourcen arbeiten müssen.Deploy a website to Azure with Azure App Service: Web apps in Azure allow you to publish and manage your website easily without having to work with the underlying servers, storage, or network assets. Stattdessen können Sie sich auf Ihre Websitefeatures konzentrieren und die stabile Azure-Plattform verwenden, um sicheren Zugriff auf Ihre Site bereitzustellen.Instead, you can focus on your website features and rely on the robust Azure platform to provide secure access to your site.

Verarbeiten und Klassifizieren von Images mit der Bildanalyse von Azure Cognitive Services: Azure Cognitive Services bietet vorgefertigte Funktionen, um die Funktionalität für maschinelles Sehen in Ihren Anwendungen zu aktivieren.Process and classify images with the Azure Cognitive Vision Services: Azure Cognitive Services offers prebuilt functionality to enable computer vision functionality in your applications. Erfahren Sie, wie Sie die Bildanalyse von Cognitive Services verwenden, um Gesichter zu erkennen, Bilder mit Tags zu versehen und zu klassifizieren und Objekte zu identifizieren.Learn how to use the Cognitive Vision Services to detect faces, tag and classify images, and identify objects.