Varför är containerorkestrering viktigt?

Slutförd

I den här lektionen kan du följa Tailspin-teamet när de utforskar strategier för att leverera ett nytt direktiv från ledningen. Teamet undersöker hur Kubernetes kan hjälpa till vid övergången till en arkitektur för mikrotjänster.

Framtiden är mindre

Saker tittar upp på Tailspin. Vid en nyligen genomförd hantering på annan plats presenterade Andy teamets senaste framgångar med Azure DevOps, som mottogs väl. Andy presenterade också en demo av teamets senaste proof-of-concept-projekt med Docker-containrar. Demonstrationerna ledde till en rad produktiva samtal om organisationens tekniska framtid. Nästa dag återvänder Andy för att dela nyheterna med Space Game-webbteamet.

Andy: Det gick riktigt bra på min offsite presentation igår. Ledningen är imponerad av det arbete vi har gjort hittills och har gett oss ett särskilt uppdrag.

Tim: Uh oh. Jag har varit med länge nog för att se en sån fälla komma från en mils avstånd.

Andy: Nej, det här är en stor möjlighet för oss. Ledningen älskade vår Docker-containerdemo och vill att vi ska utforska införandet av en arkitektur för mikrotjänster.

Amita: Mikrotjänster? Gillar du appar för telefoner och klockor?

Andy: Nej, mikrotjänster är typiska appar, som vår webbapp. Den största skillnaden är att vi i stället för att skapa och distribuera en enda monolitisk app omstrukturerar alla komponenter som skulle underhållas bättre och hanteras som autonoma tjänster. Sedan skapar vi dessa tjänster för att vara bra på vad de gör och distribuera dem för att fungera oberoende av varandra.

Tim: Jag är inte säker på att jag gillar ljudet av det. Jag har redan att göra med så många tjänster i våra miljöer. Jag vet inte om jag vill ha mer på min tallrik.

Andy: Det är ett förståeligt bekymmer. Lyckligtvis finns det några bra verktyg för att hantera en mängd containrar i en viss miljö. Vi har blivit ombedda att ta fram en lösning med flera containrar för vår webbapp som samordnas med Kubernetes. De vill också veta hur det kommer att påverka vår DevOps-process.

Mara: Jag har läst på Kubernetes. Azure har bra stöd för det via Azure Kubernetes Service, och jag vet att det finns pipelinestöd för det i Azure DevOps.

Amita: Den här processen låter som om den kommer att bli komplex. Hur kommer det att påverka testningen?

Mara: Det borde inte vara en betydande förändring. Kubernetes erbjuder ett sätt för oss att distribuera till olika namnområden. Detta gör att vi kan partitioneras våra distributioner så att vi kan ha hela miljöer dedikerade till testning kontra produktion. Och eftersom de alla körs i samma kluster och använder samma containrar bör testupplevelsen erbjuda det vi förväntar oss att se i produktion.

Amita: Kommer det att bli svårt att hålla reda på vilken miljö är var?

Mara: Nej, vi kan använda Azure DevOps-miljöer för att göra allt detta. Du kommer att kunna ta reda på var varje tjänst är och hur den kom dit med hjälp av portalen. Allt automatiseras via pipelinen, så det finns inget som vi behöver hålla reda på manuellt. Den enda oro jag har nu är hur stor inverkan det kommer att ha på vår utvecklingserfarenhet att bygga detta.

Andy: Den goda nyheten är att effekten är minimal. Förutsatt att vi har konfigurerat våra projekt för att skapa Docker-containrar behöver vi bara distribuera till Kubernetes några manifestfiler som beskriver tjänsterna och deras distributioner.

Mara: Har du tänkt på vad vi ska omstrukturera som den andra containern? Jag vet att det har varit flera team som bett oss att göra vår topplista tillgänglig via ett webb-API.

Andy: Jag är ett steg före dig. Jag förgrenade Docker-projektet igår kväll och omstrukturerade funktionen för topplistedata till sin egen mikrotjänst. Detta lämnar oss med en container för webbplatsen och en annan för en rankningslista API. Båda containrarna är konfigurerade för att ha egna offentliga slutpunkter som vi kan dela med alla som vill använda webbplatsen eller API:et, oavsett vilken teknikstack deras app använder. Om belastningen växer avsevärt för någon av dem kan vi skala dess containrar oberoende av varandra.

Mara: Det här projektet låter fantastiskt! Nu ska vi börja uppdatera versionspipelinen.

Vad är Kubernetes?

Kubernetes är en plattform för containerorkestrering med öppen källkod som automatiserar distribution, skalning och hantering av containerbaserade program. Det ger ett ramverk för att köra distribuerade system på ett deklarativt, dynamiskt sätt och kan köra containrar över flera värdar, vilket ger effektiv användning av resurser och ökad tillförlitlighet.

Tailspin-teamet valde Kubernetes för det här scenariot eftersom det uppfyllde alla deras behov:

  • Komplexiteten i distributioner med flera containrar: Kubernetes är först och främst utformat för att automatisera processerna kring distribution och underhåll av containerdistributioner.

  • Konsekvens mellan miljöer och faser: precis som containrar säkerställer en konsekvent distribution för de appar som de innehåller, säkerställer Kubernetes en konsekvent distribution för de containrar som ett kluster hanterar.

  • Stöd för Azure DevOps: Azure DevOps erbjuder förstklassigt stöd för att arbeta med Kubernetes.

  • Enkel utveckling: Kubernetes påverkan på ett källprojekt kan jämföras med att lägga till Docker-stöd, vilket är minimalt och begränsat till deklarativ konfiguration.

Att implementera Kubernetes förenklar drastiskt processen med att införa en arkitektur för mikrotjänster som använder flera Docker-containrar.

Testa dina kunskaper

1.

Vilket av följande är inte en bra anledning att använda mikrotjänster?

2.

Hur liknar Docker och Kubernetes?

3.

Anta att ditt team har flera .NET Core-projekt i en lösning som producerar flera Docker-containrar. Hur mycket omkostnader krävs det för att lägga till Kubernetes-stöd?