Aan de slag met de CI/CD-pijplijnen van AWS

Inhoudsopgave:

Aan de slag met de CI/CD-pijplijnen van AWS
Aan de slag met de CI/CD-pijplijnen van AWS
Anonim

Als je momenteel worstelt aan de sysadmin-kant om al je servers up-to-date te houden, is het misschien tijd om wat van je schouders te nemen en je leveringsproces te automatiseren met een continue implementatiepijplijn.

Wat is CI/CD?

Continuous Integration, Continuous Deployment (CI/CD) draait om het maken van frequente (vaak dagelijkse) code-updates, het bouwen en testen van nieuwe releases en het snel en efficiënt uitrollen van de wijzigingen in uw productieservers.

Het is een zeer brede term die de kern van de DevOps-cultuur omvat: het stroomlijnen van de stroom van nieuwe code van de hersenen van uw ontwikkelaar naar uw servers. Gewoonlijk wordt CI/CD geïmplementeerd met een toolkit die een pijplijn wordt genoemd, een set tools die het hele proces van bron tot implementatie automatiseert.

Dit is wat AWS biedt met hun CodeSuite-tools, en ze bevinden zich op een bijzonder goede plek om zo'n pijplijn te implementeren, aangezien u uw productieservers meestal op EC2 zult draaien, waardoor de implementatiefase veel eenvoudiger en beter wordt geïntegreerd.

AWS's CodeSuite Tools

CodeSuite bestaat uit een paar verschillende tools. Het begint met CodeCommit, de beheerde bronbeheerservice van AWS. Het is een beetje onhandiger en minder rijk aan functies dan de concurrentie, maar het is gemakkelijk genoeg om Git in te stellen met meerdere afstandsbedieningen die je net zo goed kunt gebruiken als je van plan bent de rest van de pijplijn te gebruiken. CodeCommit heeft een zeer royale gratis laag, dus je zult er waarschijnlijk niet veel kosten voor maken.

Vervolgens komt CodeBuild, dat de broncontrole overneemt van CodeCommit (of GitHub/BitBucket) en bouwt vanaf de bron, waarbij alle tests worden uitgevoerd die u in het proces levert. Deze gebruikt een EC2-server voor het bouwen, waarvoor u moet betalen terwijl de build wordt uitgevoerd. Complexe projecten kunnen een krachtige machine vereisen voor snelle builds.

Zodra de build is voltooid, is uw applicatie klaar voor implementatie. Deze fase wordt afgehandeld met CodeDeploy; u maakt een "implementatiegroep", die een willekeurig aantal EC2-instanties of hele groepen voor automatisch schalen kan bevatten. Dit is waar de pijplijn van AWS echt uitblinkt.

Met CodeDeploy kun je nauwkeurig afstemmen hoe de implementatie wordt afgehandeld - er zijn voorinstellingen voor iedereen tegelijk, de helft van de groep, 10% om de paar minuten en nog veel meer, die allemaal zijn ontworpen om de uitv altijd van applicaties als gevolg van onverwachte fouten in de productie. Het is leuk genoeg om al uw servers automatisch te laten updaten, maar CodeDeploy kan zelfs verbinding maken met uw load balancer en verkeer verminderen naar instanties die worden bijgewerkt. Gecombineerd met een gespreide uitrolstrategie om een minimum aantal gezonde hosts te garanderen, maakt dit productie-updates stressvrij.

Dit alles is samengepakt in een enkele pijplijn, die je bronbeheer bewaakt en de pijplijn automatisch activeert wanneer je wijzigingen in de release-tak pusht, je code bouwt, test en implementeert op al je servers.

Een pijplijn opzetten

Eerst moet je je code in CodeCommit krijgen. We raden aan om CodeCommit in te stellen als een aparte release-afstandsbediening naast je primaire bronbeheer. Als u Github of BitBucket gebruikt, kunt u in plaats daarvan rechtstreeks verbinding maken met uw repository, maar CodeCommit is een volledig AWS-oplossing en stelt u in staat de toegang van de organisatie tot serverupdates te beheren via de IAM-console.

Ga vervolgens naar de CodePipeline-console om aan de slag te gaan. Klik op 'Pijplijn maken' en geef het een naam en beschrijving.

Elke fase van de pijplijn heeft enige configuratie nodig. De eerste is de bronfase, die verbinding maakt met CodeCommit, Github en BitBucket. Voor de laatste twee moet je je accounts verbinden via OAuth, maar CodeCommit maakt rechtstreeks verbinding. Kies de repository die je gebruikt, en de branch voor releases. Als je CodeCommit als secundaire afstandsbediening gebruikt, zul je hier waarschijnlijk master kiezen, maar als je een externe provider gebruikt, wil je misschien een aparte release-branch instellen.

CodePipeline Bronfase
CodePipeline Bronfase

Onder de vertakkingsopties vindt u de instellingen voor hoe deze pijplijn automatisch wordt uitgevoerd. Standaard wordt het uitgevoerd elke keer dat een nieuwe commit wordt gepusht naar de release-branch die je hebt opgegeven. Je kunt dit veranderen, maar dit is waarschijnlijk wat je wilt.

Volgende, de bouwfase. CodePipeline ondersteunt Jenkins en de ingebouwde CodeBuild voor het bouwen van code. Als je Jenkins al gebruikt om te bouwen, moet je de CodePipeline-plug-in installeren om deze met AWS te verbinden. Anders kunt u CodeBuild instellen door op "Project maken" te klikken om een dialoogvenster te openen.

Bouwfase codepipeline
Bouwfase codepipeline

CodeBuild heeft veel dingen om te configureren, dus je kunt onze handleiding voor het instellen ervan lezen voor meer informatie. Als je klaar bent, zou het dialoogvenster moeten sluiten en je terug moeten brengen naar de CodePipeline-setup.

De volgende fase is de implementatie. CodePipeline ondersteunt een paar verschillende implementatie-opties; met name, als u AWS CloudFormation of Elastic Container Service gebruikt, kunt u updates rechtstreeks daarop implementeren. Voor algemene EC2- en Lambda-implementaties moet u CodeDeploy gebruiken.

Kies onder Developer Tools, CodePipeline, Pipelines, CodeDeploy om een implementatiefase toe te voegen
Kies onder Developer Tools, CodePipeline, Pipelines, CodeDeploy om een implementatiefase toe te voegen

CodeDeploy vereist ook veel configuratie, dus je kunt onze complete handleiding lezen om het in te stellen. Kortom, u maakt een implementatiegroep die bestaat uit uw EC2-servers, een Auto-Scaling-groep of Lambda-functies en kiest een implementatieconfiguratie - alles tegelijk, de helft tegelijk, enz. CodeDeploy regelt al het andere, past uw load balancer aan zodat het verkeer niet wordt omgeleid naar het bijwerken van servers en onderhoudt altijd een bepaald aantal gezonde hosts, zodat uw service nooit uitv alt voor updates.

Als je klaar bent, ga je terug naar CodePipeline en selecteer je de implementatie die je zojuist hebt ingesteld. Dat zou alle configuratie als voltooid moeten markeren, en u kunt op volgende klikken om uw pijplijn te bekijken voordat u deze in gang zet.

Zodra u de pijplijn hebt gemaakt, wordt de eerste build automatisch uitgevoerd. Als er fouten in de build optreden, stopt de pijplijn en worden uw servers niet bijgewerkt.

codepipeline-release
codepipeline-release

Je kunt de updatedetectie van de pijplijn testen door een nieuwe commit te maken in je bronbeheer. De pijplijn zou automatisch opnieuw moeten beginnen en wijzigingen op uw servers moeten doorvoeren als alles er goed uitziet.

Je kunt op elk moment teruggaan en de pijplijn bewerken, of de CodeBuild- of CodeDeploy-configuraties aanpassen. Als je buildfouten tegenkomt, moet je ervoor zorgen dat je buildspec-bestand alles correct afhandelt.

Populair onderwerp