DevTest och DevOps för mikrotjänstlösningar

Boards
Container Registry
Kubernetes Service
Pipelines
GitHub

Mikrotjänst arkitekturer design program som samlingar av löst kopplade tjänster.Microservice architectures design applications as collections of loosely coupled services. I en arkitektur för mikrotjänster är tjänsterna detaljerade och protokollen är lätta att använda.In a microservices architecture, services are fine-grained and protocols are lightweight. Mikrotjänster erbjuder fördelar, till exempel tydliga separeringar av problem och koppling av beroenden.Microservices offer benefits such as clear separation of concerns and decoupling of dependencies.

Mikrotjänster introducerar komplexa funktioner i utvecklings cykeln jämfört med traditionella monolitisk-program.Microservices introduce complexities in the development cycle compared to traditional monolithic applications. Traditionellt sker utvecklingen i en lokal eller virtuell replik av program stacken, som konfigurerar och kör beräknings-och lagrings komponenter lokalt i isoleringen.Traditionally, development occurs in a local or virtual replica of the application stack, which configures and runs compute and storage components locally in isolation. I en mikrotjänst modell behöver utvecklare testa sina tjänster mot den befintliga arkitekturen, fångade integrations problem tidigt för att spara vid bygge och distributions tid och hålla integrerade versioner rena under programmets livs cykel.In a microservice model, developers need to test their services against the existing architecture, catch integration issues early to save on build and deployment time, and keep integrated builds clean over the lifecycle of the application.

Utvecklings testning (DevTest) är en metod för program varu utveckling som integrerar testning tidigt i utvecklings fasen för att påskynda utvecklingen.Development testing (DevTest) is a software development approach that integrates testing early in the development phase to speed development. DevOps är en uppsättning metoder som kombinerar program utveckling och IT-åtgärder för att förkorta utvecklings cykeln och tillhandahålla kontinuerlig leverans av hög kvalitet.DevOps is a set of practices that combine software development and IT operations to shorten the development cycle and provide high-quality continuous delivery. Kubernetes är ett Dirigerings system för behållare med öppen källkod för automatisering av program distributioner.Kubernetes is an open-source container orchestration system for automating application deployments.

Den här lösnings arkitekturen modellerar en utvecklings-och distributions miljö som använder DevOps i DevTest för snabb iterativ utveckling av ett program i Azure Kubernetes service (AKS) .This solution architecture models a development and deployment environment that uses DevOps in DevTest for rapid iterative development of an Azure Kubernetes Service (AKS) microservice application.

ArkitekturArchitecture

Diagram som visar konfigurationen av DevTest och DevOps för ett program för mikrotjänster.

  1. Utvecklare använder lokala processer med Kubernetes för att köra sina lokala mikrotjänst versioner inom ramen för Development Kubernetes-klustret.Developers use Local Process with Kubernetes to run their local microservice versions within the context of the development Kubernetes cluster. Att ansluta till klustret och felsöka tjänsten möjliggör snabb testning och utveckling i den fullständiga program kontexten.Connecting to the cluster while debugging the service allows quick testing and development in the full application context.

  2. Varje kodbas för mikrotjänster använder sig av en separat GitHub kod lagrings plats för käll kontroll.Each microservice codebase uses a separate GitHub code repository for source control.

  3. GitHub-åtgärder skapar mikrotjänstens behållar avbildningar och skickar dem till Azure Container register.GitHub Actions builds the microservice container images and pushes them to Azure Container Registries. GitHub-åtgärder uppdaterar också den senaste taggen i lagrings platsen för kontinuerlig integrering (CI) eller tag-databaser för version.GitHub Actions also updates the latest tag of repositories for continuous integration (CI), or tags repositories for release.

  4. GitHub åtgärder automatiserad testning genererar arbets objekt för Azure-kort, vilket gör att alla arbets objekt kan hanteras på ett och samma ställe.GitHub Actions automated testing generates work items for Azure Boards, making all work items manageable in one place.

  5. Visual Studio Code Extensions stöder Azure-plattor och GitHub-integrering.Visual Studio Code extensions support Azure Boards and GitHub integration. Att koppla Azure-tavlor till arbets objekt med GitHub databaser ties-krav för kod, vilket kör utvecklings slingan framåt.Associating Azure Boards work items with GitHub repos ties requirements to code, driving the development loop forward.

  6. Genomför sammanfogning i integrerings gren utlösare GitHub åtgärder builds och Docker push-meddelanden till DevTest-behållar register.Commits merged into the integration branch trigger GitHub Actions builds and Docker pushes to the DevTest container registries. Varje mikrotjänst har sin egen lagrings plats i behållar register, som är parallellt med GitHub-databaserna.Each microservice has its own repository in Container Registries, paralleling the GitHub repositories. CI-versioner märks vanligt vis med senaste, som representerar de senaste lyckade mikroservice-build-versionerna.CI builds are usually tagged with latest, representing the most recent successful microservice builds.

  7. Azure-pipeliner kör apply kommandot Kubernetes för att utlösa distributionen av de uppdaterade container Registry avbildningarna till DevTest Kubernetes-kluster.Azure Pipelines runs the Kubernetes apply command to trigger deployment of the updated Container Registry images to the DevTest Kubernetes clusters. Azure kan autentisera AKS för att köra obevakade Container Registry hämtningar, vilket fören klar processen för kontinuerlig distribution (CD).Azure can authenticate AKS to run unattended Container Registry pulls, simplifying the continuous deployment (CD) process.

    Azure-pipelines använder Azure Key Vault för att på ett säkert sätt använda hemligheter som autentiseringsuppgifter och anslutnings strängar som krävs för att kunna släppa och distribuera konfigurationer.Azure Pipelines uses Azure Key Vault to securely consume secrets like credentials and connection strings required for release and deployment configurations.

  8. När en version av programmet är redo för testning av kvalitets säkring (frågor och svar) utlöser Azure pipelines en frågor och svars version.When a version of the application is ready for quality assurance (QA) testing, Azure Pipelines triggers a QA release. Pipelinen Taggar alla lämpliga avbildningar med nästa stegvisa version, uppdaterar Kubernetes-manifestet för att avspegla avbildnings taggarna och kör apply kommandot.The pipeline tags all appropriate images with the next incremental version, updates the Kubernetes manifest to reflect the image tags, and runs the apply command. I det här exemplet, medan en utvecklare kan gå igenom en tjänst i isoleringen, flyttas endast integrerade via CI/CD till distribution.In this example, while a developer may be iterating on a service in isolation, only builds integrated via CI/CD are moved over to deployment.

  9. När testet har godkänt en version av tjänsten för distribution, främjar GitHub-åtgärder en version från DevTest-Container Registry till en produktions Container Registry.After testing has approved a version of the service for deployment, GitHub Actions promotes a release from the DevTest Container Registry to a Production Container Registry. GitHub-åtgärder Taggar avbildningarna med rätt version och push-överför dem till produktions Container Registry, enligt metod tips för behållar registret.GitHub Actions tags the images with the appropriate version and pushes them into the Production Container Registry, following container registry best practices.

  10. Azure-pipeliner skapar en version för produktion.Azure Pipelines creates a release to Production. Pipelinen översätter godkännande portar och villkor för för-och-steg-fasen för att skydda produktions miljön från oavsiktlig eller felaktig distribution.The pipeline imposes approval gates and pre-stage and post-stage conditions to protect the Production environment from inadvertent or incorrect deployment.

Programmet använder Azure Cosmos DB för dess globalt distribuerade databas nivå.The application uses Azure Cosmos DB for its globally distributed database tier.

Alla tjänster och miljöer rapporterar mått till Azure Monitor.All services and environments report metrics to Azure Monitor.

I den här lösningen hanterar en enskild Azure Active Directory (Azure AD) identitet för både DevTest och produktions prenumerationer.In this solution, a single Azure Active Directory (Azure AD) manages identity for both the DevTest and Production subscriptions. Rollbaserad åtkomst kontroll i Azure (Azure RBAC) begränsar åtkomsten till skyddade resurser, vilket förhindrar otillåten eller oavsiktlig ändring av produktions resurser.Azure role-based access control (Azure RBAC) restricts access to protected resources, preventing unauthorized or inadvertent modification of Production resources. Utvecklare har inte samma åtkomst kontroll nivåer i produktionen som i deras DevTest-sand box.Developers don't have the same access control levels in Production as in their DevTest sandboxes.

KomponenterComponents

  • Azure DevTest Labs tillhandahåller labb som har alla verktyg och program som krävs för att skapa miljöer.Azure DevTest Labs provides labs that have all the necessary tools and software to create environments. Utvecklare kan effektivt sköta resurser utan att vänta på godkännanden.Developers can efficiently self-manage resources without waiting for approvals. Med DevTest Labs kan grupper styra kostnader och reglera resurser per labb, ge utvecklare behörighet och flexibilitet att använda sina sand boxar inom kostnads begränsningar.With DevTest Labs, teams can control costs and regulate resources per lab, granting developers permission and flexibility to operate their sandboxes within cost constraints.

  • GitHub är en kod värd plattform för versions kontroll och samarbete.GitHub is a code hosting platform for version control and collaboration. En GitHub- databas för käll kontroll innehåller alla projektfiler och deras revisions historik.A GitHub source-control repository contains all project files and their revision history. Utvecklare kan samar beta för att bidra, diskutera och hantera kod i lagrings platsen.Developers can work together to contribute, discuss, and manage code in the repository.

  • GitHub-åtgärder innehåller en uppsättning bygg-och release-arbetsflöden som täcker CI, automatiserad testning och behållar distributioner.GitHub Actions provides a suite of build and release workflows, covering CI, automated testing, and container deployments.

  • Azure-kort är en tjänst för att hantera arbete för program varu projekt.Azure Boards is a service for managing work for software projects. Azure-kort ger en omfattande uppsättning funktioner, inklusive inbyggt stöd för Scrum-och kanban-metoder, anpassningsbara instrument paneler och integrerad rapportering.Azure Boards brings a rich set of capabilities including native support for Scrum and Kanban methodologies, customizable dashboards, and integrated reporting.

  • Azure-pipelines är en helt aktuell CI/CD-tjänst som automatiskt kan distribuera uppdaterade container Registry avbildningar till Kubernetes-kluster.Azure Pipelines is a fully featured CI/CD service that can automatically deploy updated Container Registry images to Kubernetes clusters.

  • Azure Key Vault säkert lagrar och tätt styr åtkomsten till hemligheter som API-nycklar, lösen ord och certifikat.Azure Key Vault securely stores and tightly controls access to secrets like API keys, passwords, and certificates. Mer information om Key Vault i DevOps-scenarier finns i DevSecOps i Azure och DevSecOps i GitHub.For more information about Key Vault in DevOps scenarios, see DevSecOps in Azure and DevSecOps in GitHub.

  • Azure Container Registry har stöd för att skapa, lagra och hantera behållar avbildningar och artefakter i privata register för alla typer av behållar distributioner.Azure Container Registry supports building, storing, and managing container images and artifacts in private registries for all types of container deployments.

  • Med Azure Kubernetes service kan du enkelt distribuera hanterade Kubernetes-kluster genom att avlasta mycket av komplexiteten, ansvars området och drifts kostnaderna för Azure.Azure Kubernetes Service makes it simple to deploy managed Kubernetes clusters by offloading much of the complexity, responsibility, and operational overhead to Azure.

  • Azure Active Directory (Azure AD) Enterprise Identity Platform tillhandahåller enkel inloggning och multifaktorautentisering för att styra användar åtkomsten.Azure Active Directory (Azure AD) enterprise identity platform provides single sign-on and multifactor authentication to govern user access. En enda Azure AD kan hantera identiteter för alla miljöer över prenumerationer.A single Azure AD can manage identity for all environments across subscriptions. Rollbaserad åtkomst kontroll i Azure (Azure RBAC) begränsar åtkomsten till skyddade resurser, vilket förhindrar otillåten eller oavsiktlig ändring av produktions resurser.Azure role-based access control (Azure RBAC) restricts access to protected resources, preventing unauthorized or inadvertent modification of production resources.

  • Azure Cosmos DB är en fullständigt hanterad, distribuerad databas som en tjänst som stöder hög tillgänglighet, program med flera regioner och både SQL-och NoSQL-API: er.Azure Cosmos DB is a fully managed, widely distributed database-as-a-service that supports high availability, multi-region applications, and both SQL and NoSQL APIs. Azure Cosmos DB innehåller DevTest-funktioner som en lokal Cosmos DB-emulator som integreras med Azure DevOps och låg kostnads nivåer för hantering av kostnader i DevTest-sandbox.Azure Cosmos DB includes DevTest features like a local Cosmos DB emulator that integrates with Azure DevOps, and low-cost tiers for managing costs in DevTest sandboxes.

  • Azure Monitor kan övervaka både produktions-och DevTest miljöer.Azure Monitor can monitor both Production and DevTest environments. Azure Monitor samlar in loggdata från virtuella dator operativ system och krasch dum par och sammanställer dem för visning i Azure Security Center.Azure Monitor collects log data from VM operating systems and crash dump files, and aggregates them for viewing in Azure Security Center.

AlternativAlternatives

  • Azure databaser är ett alternativ till GitHub för git-lagringsplatsen.Azure Repos is an alternative to GitHub for Git repository hosting. Med Azure databaser, Azure-kort och Azure-pipeliner använder alla Azure DevOps-tjänster samma Portal och användar gränssnitt och konsoliderar tjänsterna som utvecklare behöver för DevOps-aktiviteter.With Azure Repos, Azure Boards, and Azure Pipelines, all Azure DevOps Services use the same portal and user interface, consolidating the services developers need for DevOps activities.

  • Vissa integreringar som är tillgängliga i Azure-pipeliner, till exempel tjänst anslutning eller autentisering direkt till Azure-stamnätet, finns för närvarande inte i GitHub-åtgärder.Some integrations available in Azure Pipelines, such as service connection or authentication directly into the Azure backbone, don't currently exist in GitHub Actions. För dessa behov bör du överväga att använda Azure-pipeliner i stället för GitHub-åtgärder för CI-och build-aktiviteter.For these needs, consider using Azure Pipelines instead of GitHub Actions for CI and build activities.

  • I ett vanligt distribuerat system finns det fördelar med att avgränsa mikrotjänster i enskilda databaser.In a widely distributed system, there are benefits to separating microservices into individual repositories. Separering av ägande rätt och behörighet är enklare och projekt på olika språk är enklare att underhålla än med en enda lagrings plats.Separation of ownership and permission is simpler, and projects in different languages are easier to maintain than with a single repository. Men i lösningar med färre mikrotjänster på samma språk eller kör tid kan det vara lättare att underhålla en enda git-lagringsplats för projektet.However, in solutions with fewer microservices all in the same language or runtime, maintaining a single Git repository for the project may be easier.

Nästa stegNext steps