(INAKTUELL) Fullständig CI/CD-pipeline för att distribuera ett program med flera containrar i Azure Container Service med Docker Swarm med Hjälp av Azure DevOps Services
Varning
Azure Container Service (ACS) är inaktuell. Inga nya funktioner läggs till i ACS. Alla API:er, portalen, CLI-kommandon och dokumentationen är markerade som inaktuella.
Mer information finns i utfasningsmeddelandet för Azure Container Service på Azure.com.
Vi rekommenderar att du distribuerar någon av följande Azure Marketplace lösningar:
- Mesosphere DC/OS
Om du vill använda Kubernetes läser du Azure Kubernetes Service.
En av de största utmaningarna när du utvecklar moderna program för molnet är att kunna leverera dessa program kontinuerligt. I den här artikeln får du lära dig hur du implementerar en pipeline för fullständig kontinuerlig integrering och distribution (CI/CD) med Hjälp av Azure Container Service med Docker Swarm, Azure Container Registry och Azure Pipelines.
Målet är att leverera det här programmet kontinuerligt i ett Docker Swarm-kluster med hjälp av Azure DevOps Services. Följande bild beskriver den här pipelinen för kontinuerlig leverans:
Här är en kort förklaring av stegen:
- Kodändringar checkas in på källkodslagringsplatsen (här GitHub)
- GitHub utlöser en version i Azure DevOps Services
- Azure DevOps Services hämtar den senaste versionen av källorna och skapar alla avbildningar som utgör programmet
- Azure DevOps Services push-överför varje avbildning till ett Docker-register som skapats med hjälp av Azure Container Registry-tjänsten
- Azure DevOps Services utlöser en ny version
- Versionen kör vissa kommandon med hjälp av SSH på huvudnoden för Azure Container Service-klustret
- Docker Swarm i klustret hämtar den senaste versionen av avbildningarna
- Den nya versionen av programmet distribueras med Docker Compose
Förutsättningar
Innan du påbörjar den här självstudien måste du utföra följande uppgifter:
- Skapa ett Swarm-kluster i Azure Container Service
- Anslut till Swarm-klustret i Azure Container Service
- Skapa ett Azure-containerregister
- Skapa en Azure DevOps Services-organisation och ett projekt
- Förgrena GitHub-lagringsplatsen till ditt GitHub-konto
Anteckning
Docker Swarm Orchestrator i Azure Container Service använder äldre fristående versionen av Swarm. Det integrerade Swarm-läget (i Docker 1.12 och senare) är inte en orchestrator som stöds i Azure Container Service. Om du vill distribuera ett Swarm-lägeskluster i Azure använder du ACS Engine (öppen källkod), en snabbstartsmall (från communityn) eller en Docker-lösning på Azure Marketplace.
Du behöver också en Ubuntu-dator (14.04 eller 16.04) med Docker installerat. Den här datorn används av Azure DevOps Services under Azure Pipelines-processerna. Ett sätt att skapa den här datorn är att använda avbildningen som är tillgänglig i Azure Marketplace.
Steg 1: Konfigurera din Azure DevOps Services-organisation
I det här avsnittet konfigurerar du din Azure DevOps Services-organisation.
Konfigurera en Azure DevOps Services Linux-byggagent
Om du vill skapa Docker-avbildningar och push-överföra avbildningarna till ett Azure-containerregister från en Azure DevOps Services-version måste du registrera en Linux-agent. Du har följande installationsalternativ:
Installera Tillägget Docker Integration Azure DevOps Services
Microsoft tillhandahåller ett Azure DevOps Services-tillägg för att arbeta med Docker i Azure Pipelines-processer. Det här tillägget är tillgängligt på Azure DevOps Services Marketplace. Klicka på Installera för att lägga till det här tillägget i din Azure DevOps Services-organisation:
Du uppmanas att ansluta till din Azure DevOps Services-organisation med dina autentiseringsuppgifter.
Ansluta Azure DevOps Services och GitHub
Konfigurera en anslutning mellan ditt Azure DevOps Services-projekt och ditt GitHub-konto.
I Azure DevOps Services-projektet klickar du på ikonen Inställningar i verktygsfältet och väljer Tjänster.
Till vänster klickar du påGitHub för ny tjänstslutpunkt>.
Om du vill ge Azure DevOps Services behörighet att arbeta med ditt GitHub-konto klickar du på Auktorisera och följer proceduren i fönstret som öppnas.
Ansluta Azure DevOps Services till ditt Azure-containerregister och Azure Container Service-kluster
De sista stegen innan du kommer in i CI/CD-pipelinen är att konfigurera externa anslutningar till containerregistret och Docker Swarm-klustret i Azure.
I tjänstinställningarna för ditt Azure DevOps Services-projekt lägger du till en tjänstslutpunkt av typen Docker Registry.
I popup-fönstret som öppnas anger du URL:en och autentiseringsuppgifterna för ditt Azure-containerregister.
För Docker Swarm-klustret lägger du till en slutpunkt av typen SSH. Ange sedan SSH-anslutningsinformationen för Swarm-klustret.
All konfiguration är klar nu. I nästa steg skapar du CI/CD-pipelinen som skapar och distribuerar programmet till Docker Swarm-klustret.
Steg 2: Skapa bygg-pipelinen
I det här steget konfigurerar du en bygg-pipeline för ditt Azure DevOps Services-projekt och definierar byggarbetsflödet för dina containeravbildningar
Inledande pipelinekonfiguration
Om du vill skapa en bygg-pipeline ansluter du till ditt Azure DevOps Services-projekt och klickar på Skapa & version.
I avsnittet Build definitions (Byggdefinitioner ) klickar du på + Ny. Välj mallen Tom .
Konfigurera den nya versionen med en GitHub-lagringsplatskälla, kontrollera Kontinuerlig integrering och välj den agentkö där du registrerade din Linux-agent. Klicka på Skapa för att skapa bygg-pipelinen.
På sidan Build Definitions (Byggdefinitioner ) öppnar du först fliken Lagringsplats och konfigurerar versionen så att den använder förgreningen av MyShop-projektet som du skapade i förutsättningarna. Se till att du väljer acs-docs som standardgren.
På fliken Utlösare konfigurerar du bygget så att det utlöses efter varje incheckning. Välj Kontinuerlig integrering och Batch-ändringar.
Definiera byggarbetsflödet
Nästa steg definierar byggarbetsflödet. Det finns fem containeravbildningar att skapa för MyShop-programmet . Varje avbildning skapas med hjälp av Dockerfile som finns i projektmapparna:
- ProductsApi
- Proxy
- RatingsApi
- RekommendationerApi
- ShopFront
Du måste lägga till två Docker-steg för varje avbildning, ett för att skapa avbildningen och ett för att push-överföra avbildningen i Azure-containerregistret.
Om du vill lägga till ett steg i byggarbetsflödet klickar du på + Lägg till byggsteg och väljer Docker.
För varje avbildning konfigurerar du ett steg som använder
docker build
kommandot .För byggåtgärden väljer du ditt Azure-containerregister, åtgärden Skapa en avbildning och Den Dockerfile som definierar varje avbildning. Ange Build-kontexten som Dockerfile-rotkatalogen och definiera avbildningsnamnet.
Som du ser på föregående skärm startar du avbildningsnamnet med URI:n för ditt Azure-containerregister. (Du kan också använda en byggvariabel för att parameterisera taggen för avbildningen, till exempel byggidentifieraren i det här exemplet.)
För varje avbildning konfigurerar du ett andra steg som använder
docker push
kommandot .För push-åtgärden väljer du azure-containerregistret, åtgärden Pusha en avbildning och anger avbildningsnamnet som skapades i föregående steg.
När du har konfigurerat bygg- och push-stegen för var och en av de fem avbildningarna lägger du till ytterligare två steg i byggarbetsflödet.
a. En kommandoradsaktivitet som använder ett bash-skript för att ersätta BuildNumber-förekomsten i filen docker-compose.yml med det aktuella bygg-ID:t. Mer information finns på följande skärm.
b. En uppgift som tar bort den uppdaterade Compose-filen som en kompileringsartefakt så att den kan användas i versionen. Mer information finns på följande skärm.
Klicka på Spara och namnge bygg-pipelinen.
Steg 3: Skapa versionspipelinen
Med Azure DevOps Services kan du hantera versioner i olika miljöer. Du kan aktivera kontinuerlig distribution för att se till att programmet distribueras i olika miljöer (till exempel utveckling, testning, förproduktion och produktion) på ett smidigt sätt. Du kan skapa en ny miljö som representerar ditt Azure Container Service Docker Swarm-kluster.
Inledande versionskonfiguration
Om du vill skapa en versionspipeline klickar du på Versioner>+ Version
Om du vill konfigurera artefaktkällan klickar du på Artefakter>Länka en artefaktkälla. Här länkar du den nya versionspipelinen till den version som du definierade i föregående steg. Genom att göra detta är docker-compose.yml-filen tillgänglig i versionsprocessen.
Om du vill konfigurera versionsutlösaren klickar du på Utlösare och väljer Kontinuerlig distribution. Ange utlösaren på samma artefaktkälla. Den här inställningen säkerställer att en ny version startar så snart bygget har slutförts.
Definiera versionsarbetsflödet
Versionsarbetsflödet består av två uppgifter som du lägger till.
Konfigurera en uppgift för att på ett säkert sätt kopiera skrivfilen till en distributionsmapp på Docker Swarm-huvudnoden med hjälp av den SSH-anslutning som du konfigurerade tidigare. Mer information finns på följande skärm.
Konfigurera en andra uppgift för att köra ett bash-kommando för körning
docker
ochdocker-compose
kommandon på huvudnoden. Mer information finns på följande skärm.Kommandot som körs på huvudservern använder Docker CLI och Docker-Compose CLI för att utföra följande uppgifter:
Logga in på Azure-containerregistret (det använder tre byggvariabler som definieras på fliken Variabler )
Definiera variabeln DOCKER_HOST som ska fungera med Swarm-slutpunkten (:2375)
Navigera till den distributionsmapp som skapades av den föregående säkra kopieringsuppgiften och som innehåller filen docker-compose.yml
Kör
docker-compose
kommandon som hämtar de nya avbildningarna, stoppar tjänsterna, tar bort tjänsterna och skapar containrarna.Viktigt
Som du ser på föregående skärm lämnar du kryssrutan Fail on STDERR (Misslyckas på STDERR ) avmarkerad. Det här är en viktig inställning eftersom
docker-compose
utskrifter av flera diagnostikmeddelanden, till exempel containrar stoppas eller tas bort, på standardfelutdata. Om du markerar kryssrutan rapporterar Azure DevOps Services att fel uppstod under lanseringen, även om allt går bra.
Spara den här nya versionspipelinen.
Anteckning
Den här distributionen innehåller en del stilleståndstid eftersom vi stoppar de gamla tjänsterna och kör den nya. Du kan undvika detta genom att göra en blågrön distribution.
Steg 4. Testa CI/CD-pipelinen
Nu när du är klar med konfigurationen är det dags att testa den nya CI/CD-pipelinen. Det enklaste sättet att testa det är att uppdatera källkoden och checka in ändringarna i GitHub-lagringsplatsen. Några sekunder efter att du har push-överfört koden visas en ny version som körs i Azure DevOps Services. När det är klart utlöses en ny version och den nya versionen av programmet distribueras i Azure Container Service-klustret.
Nästa steg
- Mer information om CI/CD med Azure DevOps Services finns i artikeln Dokumentation om Azure Pipelines .