Kubernetes och Docker för utvecklare
Vi sätter upp ett riktigt Kuberneteskluster med multinode webbsajt, lastbalanserare, databas och Redis-cache
Information
Längd | 2 dagar |
Kurstakt | 1d/vecka |
Pris per deltagare | 17 950 SEK ex moms |
Location | Distans (Zoom) |
Förkunskaper | Inte annat än att kunna bygga en enkel websajt/alt. api med databas. |
Kursbeskrivning
I den här kursen ska vi verkligen göra allt: lära oss att skapa Docker-images från våra applikationer (kör du .NET, Java, Golang, Python etc - spelar ingen roll!).
Vi kommer lära oss hur vi gör det manuellt (från kommandoprompt) och dessutom via automatiska byggen i Cloud (Azure Pipelines eller AWS Build).
Vi sätter upp ett eget Kubernetes-kluster med ett privat Docker-registry och ser till att våra automatiska byggen pushar den skapade Docker-imagen till registret.
Vi konfigurerar vår sajt så den körs på 3 noder med lastbalanserare och NGinx Ingress. Dessutom en databasserver och cache (ex Redis - perfekt för state management utan sticky sessions ).
Sen kan vi deploya nya versioner utan nedtid med s.k rollout deployments!
Kursmoment
Delar i denna utildning
Introduktion
Vad är Docker och varför ska vi använda det? Och vad är Kubernetes och varför är det så hett just nu?
Att köra lokalt
Vi installerar och kör lokalt
Att köra i molnet
Vi skapar och konfigurerar ett Kuberneteskluster i molnet med databas och Rediscache
Vår applikation
Vi skapar vår applikation som vi ska produktionssätta i Kubernetes
Kubectl
Hur kan man administrera sitt kluster och sina applikationer
Att skapa ett privat Docker-registry
Vi installerar ett privat registry inuti vårt Kuberneteskluster
Att bygga docker-images i molnet
Vi använer AWS Build och eller Azure Devops Pipelines för att bygga images
Deployment without downtime
Hur kan vi uppdatera webbsajten utan nedtid - Kubernetes har allt inbyggt
Mer information
Men vad är Kubernetes?
Kubernetes är i korthet en plattform som kör containers (många använder begreppet Docker Images men Docker är faktiskt bara ett sätt av många för att skapa s.k OCI standard container images, så javisst docker kubernetes används ofta tillsammans såtillvida att vi til exempel lokalt på vår egen dator skapar en OCI image med hjälp av docker. Eller så skapas en image på en byggserver, kanske kör man AWS Build, Azure Devops Pipelines. Men allt fler väljer att köra egna bygg-pipelines inuti sitt kluster och det är den vägen vi själva valt på Systementor även om vi självklart använder framförallt Azure Pipelines också.
Det coola med Kubernetes är dock sättet som den gör det på. Man installerar ett s.k Kubernetes-kluster och detta innebär att man installerar Kubernetes på tre (minimum för att säkerställa failover etc) eller fler datorer och sammankopplar dessa (virtuella maskiner funkar såklart).
Kubernetes kommer sen att kontrollera våra applikationer (tex websajter) och kan konfigureras att skala upp och ned applikationer vid behov osv. Om vi får mycket trafik kan alltså en till instans av webapplikationen startas upp (och "enlistas" i lastbalanseraren) automatiskt. För det ingår också: lastbalanserare, schemaläggning av batchkörningar,automatisk restart av tjänster när/om de går ner osv.
Vad kan man köra i Kubernetes? Egentligen vad som helst - era webbsajter, apier (autoskalande + med bevakning etc), databaser, docker registry, egen git server, egen byggserver osv.
Det var Google som skapade denna fantastiska produkt, för sina egna behov och laster, det kan man ju tänka sig att med tanke på alla servrar och system dom förmodligen innehar så är automatisk programdistribution, skalning och hantering/övervakning verkligen viktigt och kan göra enormt stor skillnad i pengar.
Som mycket annat från Google så är det open source (öppen källkod) men numera så ägs projektet av en stiftelse vid namn Cloud Native Computing Foundation.
Det som vi personligen tycker sticker ut och gör detta till en så spännande produkt är att vi får verkligen full valuta redan vid så lite som tre servrar (noder) och det innebär att med låga insatser kan sätta upp applikationer, med load balancing och allt, på samma sätt som de stora jättarna kan göra.
Det finns också andra, mer lättviktiga distributioner av Kubernetes, till exempel kan man välja att köra K3s lokalt på sin utvecklarmaskin i de fall man verkligen vill testa till exempel att en deploy görs så som man tänkt sig. Minikube är en annan variant som man som utvecklare kan använda att utnyttja på sin egen dator.
Att vi bör köra HTTPS idag (inte HTTP) är ju en självklarhet och jag kan ju bara säga som så: i Kubernetes är det enkelt att installera Lets Encrypt koppling, och man får då schemalagda jobb som automatiskt förnyar certifikaten åt dig.
Jag vill också nämna envoronment variabler, och s.k SECRETS, självklart ingår det en s.k VAULT där man kan lagra till exempel servicekonton och lösenord för våra applikationer och denna blir "global" för klustret, dvs oavsett vilken dator (nod) som Kubernetes väljer för att exekvera din applikation på så kommer alla settings och hemligheter vara tillgängliga där.
Hur jobbar man med Kubernetes. Jo det finns UI:s (användargränssnitt), både Kubernetes egna och andra tredjepartsprodukter men eftersom detta är en produkt i Devops-tiden så jobbar vi oftast med ett kommandoradsverktyg (kubectl) och konfigurationsfiler. Kubernetes är verkligen Infrastructure as Code, alla applikationer och all infrastruktur läggs i YAML-filer och källkodshanteras - detta gör att det är enormt enkelt att flytta hela sin infrastruktur till en annan leverantör.
Här kommer ett exempel (video) på hur till och med kan skapa batchjobb som Docker Images i Kubernetes och schemalägga dom. Just detta handlar om backup för SQL Server och MySQL