Ansible vs. Kubernetes: Forstå forskellene –

Enhver diskussion om automatisering i IT-drift kan ikke være komplet uden Ansible og Kubernetes. Selvom disse to værktøjer tjener forskellige formål, har de virkelig revolutioneret softwareudviklingscyklussen. Så lad os komme til disse værktøjer i detaljer.

Hvad er Ansible?

Ansible, oprindeligt udtænkt af Michael DeHaa, er i øjeblikket rangeret på GitHub som et af de 100 mest populære projekter. Det er vellidt for dets enkle sprog og brugervenlighed. I dag har Ansible vundet udbredt anvendelse som de facto benchmark for IT-automatisering.

Værktøjet trives i et open source-fællesskab og har oplevet en bemærkelsesværdig udvikling og tilbyder løsninger til operatører, administratorer og it-beslutningstagere på tværs af forskellige tekniske miljøer.

Ansible

Fremtrædende organisationer som Twitter, eBay, Verizon, NASA, ILM, Rackspace og Electronic Arts anvender derfor i vid udstrækning dette værktøj. På grund af sin succes købte Red Hat Ansible i 2015.

Ansible gør konfigurationsstyring, applikationsimplementering og opgaveautomatisering ukompliceret. I moderne digitale miljøer udnytter DevOps-professionelle det ofte til ressourceforsyning til at udføre en infrastruktur-som-kode (IaC) tilgang til problemfri softwarelevering.

Her er nogle af måderne, Ansible kan bruges på:

  • Konfigurationsstyring: Med Ansible er det en barneleg at definere de ønskede konfigurationer for servere, netværksenheder og andre infrastrukturkomponenter. Den kan også automatisk og konsekvent afspille disse konfigurationer på tværs af flere systemer, og derved sikre en standardiseret struktur og compliance.
  • Applikationsimplementering: Ansible gør applikationsimplementering til en leg ved at automatisere processen på tværs af forskellige miljøer, fra udvikling til test til produktion. Opgaver som installation af software, konfiguration af databaser og opsætning af netværk klares med nogle få kommandoer.
  • Opgaveautomatisering: Sig farvel til manuelle, gentagne opgaver! Ansible giver it-teams mulighed for at automatisere en bred vifte af opgaver, såsom patchsystemer, administration af sikkerhedskopier, oprettelse af brugerkonti og genstart af tjenester. Dette frigør dit team til at fokusere på mere strategiske initiativer.
  • Infrastrukturprovisionering: Dynamisk klargøring og konfiguration af ressourcer, såsom virtuelle maskiner, cloud-instanser og netværksenheder, baseret på efterspørgsel kan være trættende. Ansible kommer dig dog til undsætning igen og kan skalere op eller ned i din infrastruktur effektivt.
  • Orkestrering: Ansible brillerer i styring af komplekse implementeringer, der involverer flere systemer. Det kan iscenesætte komplicerede arbejdsgange til at håndtere opgaver såsom implementering af multi-tier applikationer og udrulning af opdateringer på tværs af et distribueret miljø og dermed administrere netværksenheder på en koordineret måde.
  • Fordele ved Ansible

    • Enkle at lære og bruge: Da playbooks bruger YAML, er de ret nemme at skrive, så amatører såvel som eksperter kan have det sjovt med det. Den ligetil og intuitive syntaks letter hurtig overtagelse og glatte arbejdsgange.
    • Skrevet i Python: Dette værktøj handler om enkelhed. Det er skrevet i Python, et af de mest populære og usofistikerede programmeringssprog.
    • Agentløs arkitektur: Den er agentløs. Ansible kan regulere fjernværter gennem SSH uden at kræve softwareinstallation på dem. Ved at bruge playbooks og roller letter Ansible at definere din ideelle infrastruktur og automatisere vejen dertil.
    • Forbedret sikkerhed: Med SSH prioriterer Ansible sikkerhed mellem systemer. Det beskytter applikationerne og infrastrukturen mod potentielle trusler.
    • Integration med autentificeringsstyringssystemer: Ansible integreres med autentificeringsstyringssystemer som LDAP, Kerberos og mere for korrekt adgangskontrol og forbedret sikkerhed.
    • Pålidelighed: IT-infrastrukturer har brug for stabilitet og pålidelighed. Ansible har en track record med at tilbyde høj ydeevne og pålidelighed.

    Desuden er det, der gør Ansible spændende, at det virkelig er brugervenligt. At administrere både lokal og cloud-baseret infrastruktur er absolut, som Sherlock ville sige, “elementært” med Ansible.

    Hvordan virker Ansible?

    Før vi dykker ned i, hvordan Ansible fungerer, lad os tage et kig på dets komponenter:

      Sådan ser du, hvilket program der bruger hele din CPU på Mac

    Moduler: Hvis Ansible var en ret (måltid), ville moduler være hovedingrediensen. De er præbyggede små programmer, der håndterer næsten alt – fra applikationer og pakker til filer på eksterne systemer. Ansible implementerer definerede instruktioner på eksterne systemer og leverer samtidig moduler fra kommandocomputeren.

    Playbooks kører det tilhørende modul og tager det ud af løkken, når opgaven er udført. Ansible har over 750 (stadigt voksende) indbyggede moduler, hvilket gør automatisering let med dens spil og opgaver!

    Billedkilde: InterviewBit

    Playbooks: Playbooks er opgaveorienterede brugervejledninger, der bruger YAML-formatet til at forenkle automatisering. Disse spillebøger dikterer arbejdsgangen og udfører opgaverne på en overskuelig måde. Playbooks kan udføre sekventielle procedurer, definere miljøer og styre forskellige stadier af en opgave.

    Plugins: Ansible plugins forbedrer både indbygget og tilpasset hjemmesidefunktionalitet. Systemet kan udføre logning, hændelsesvisning, caching og front-end controller-funktioner, og det udfører dem før moduler på noder.

    Beholdninger: Ansible beholdninger indeholder lister over værter med deres IP-adresser, servere og databaser. SSH til UNIX, Linux eller netværksenheder og WinRM til Windows-systemer hjælper med at administrere dem.

    De andre Ansible-komponenter er API, Cloud, Host, Networking og CMD (Configuration Management Database).

    Sådan virker Ansible sin magi:

    For det første har Ansible en inventarfil med en liste over værter eller maskiner. Brugere kan ændre denne inventarfil ved at tilføje de servere, de ønsker at kontrollere.

    Det næste trin er at oprette playbooks for at definere den ideelle infrastruktur på de administrerede noder. Nu, da Ansible kører på kontrolnoden, der hjælper med at udføre opgaver på fjernsystemet, vil den etablere en SSH-forbindelse med sidstnævnte. Det giver mulighed for sikker kommunikation mellem noderne.

    Den sender og udfører derefter moduler for at udføre de opgaver, der er defineret i playbooks, og bringer systemerne til den ønskede tilstand.

    Efter at have fuldført opgaven fjerner Ansible modulerne fra de administrerede noder for at forhindre eventuelle resterende moduler. Endelig giver det rapporter om status for opgaveimplementering, hvilket giver brugerne mulighed for at overvåge fremskridt og resultater af automatiseringsopgaver. Desuden kan Ansible køre regelmæssigt for at vedligeholde og forbedre systemet over tid.

    Hvad er Kubernetes?

    Joe Beda, Brendan Burns og Craig McLuckie er de geniale hoveder bag Kubernetes. De arbejdede som ingeniører hos Google og skabte dette værktøj, som nu er et kraftcenter for containeriserede applikationer.

    Oprindeligt blev Kubernetes udviklet af Google til at administrere deres egne containeriserede applikationer i produktion, og det blev først udgivet som et open source-projekt i 2014.

    I 2015 donerede Google Kubernetes til den leverandøruafhængige Cloud Native Computing Foundation (CNCF) for at fremme cloud-native computing-teknologi.

    Siden da er Kubernetes blevet et af CNCF’s flagskibsprojekter med udbredt industrianvendelse og har etableret sig som førende inden for containerorkestrering.

    Ifølge Gartner vil omkring 85 % af organisationerne bruge Kubernetes i 2025. Og hvorfor skulle de ikke? Dets robuste økosystem af tilføjelser, værktøjer og tjenester gør det til en alsidig platform til styring af containeriserede applikationer.

    Kubernetes har gennemgået adskillige vigtige opdateringer, hvilket bringer ny funktionalitet, forbedringer og fejlrettelser med hver udgivelse. Det udvikler sig konstant og forbedres, takket være det passionerede fællesskab bag det!

    Fordele ved Kubernetes

    • Skalerbarhed: Skaler nemt applikationer baseret på efterspørgsel.
    • Portabilitet: Implementer og administrer applikationer konsekvent på tværs af forskellige miljøer.
    • Fleksibilitet: Understøttelse af forskellige containerkørselstider og formater.
    • Automatisering: Automatiser containerimplementering, skalering, overvågning og healing.
    • Modstandsdygtighed: Indbygget fejltolerance og selvhelbredende egenskaber.
    • DevOps-aktivering: Fremmer samarbejde mellem udviklere og driftsteams.
    • Udvidbarhed: Tilpasselig og udvidelsesbar arkitektur til integration med andre værktøjer.
    • Fællesskab og økosystem: Stort fællesskab og økosystem for forbedrede kapaciteter.

    Hvordan virker Kubernetes?

    Da Kubernetes er platformen, der hjælper med containerorkestrering, involverer det første trin at pakke applikationen ind i containere ved hjælp af containeriseringsværktøjer, såsom Docker. Disse containere er selvforsynende, med al den nødvendige software og afhængigheder til at udføre fejlfrit i forskellige miljøer.

    Dernæst, med YAML eller JSON, defineres applikationstilstanden, inklusive containerbilleder, ressourcekrav, skaleringspolitikker, netværks- og lagerkonfigurationer. Filerne med instruktioner kaldes manifester.

      Se cachelagrede billeder fra alle webbrowsere på din pc på ét sted

    I Kubernetes er en klynge som et team af computere, kaldet noder, der arbejder sammen om at køre dine applikationer. Tænk på noder som spillerne i et fodboldhold, og hver spiller kan køre flere containere, som er ligesom spillernes udstyr eller udstyr, der er nødvendigt for at spille spillet.

    Kubernetes komponenter

    Den mindste byggeklods i Kubernetes kaldes en Pod, som er som et hyggeligt lille hjem til en eller flere containere. Pods er ligesom spillernes omklædningsrum, hvor de hænger ud og deler ting som netværk og lagerressourcer. Hver Pod har sit eget unikke navn og adresse, så du nemt kan identificere og kommunikere med dem.

    Indsættelser er ligesom trænerne, der styrer holdet. De fortæller Kubernetes, hvor mange spillere (eller replikaer) af hver Pod der skal køre til enhver tid. Ligesom en træner administrerer spillerne på banen, administrerer en Deployment oprettelsen, skaleringen og sletningen af ​​Pods for at sikre, at din applikation altid er i den ønskede tilstand.

    Tjenester er ligesom dommerne, der hjælper spillere med at kommunikere med hinanden. De giver en stabil adresse, som et telefonnummer, som andre kan bruge til at få adgang til din applikation. Tjenester vælger de rigtige pods baseret på etiketter, f.eks. spillerens position, og fordeler trafikken jævnt mellem dem, så alle får en fair chance for at spille.

    For at håndtere vigtige oplysninger som adgangskoder eller API-nøgler leverer Kubernetes ConfigMaps og Secrets. De er som låsebokse, hvor du kan opbevare disse følsomme detaljer sikkert og derefter bruge dem i dine Pods og implementeringer for at få adgang til ressourcer uden at afsløre dem i almindelig tekst.

    Endelig er Kubernetes API-serveren som holdets coaching-hotline. Det giver en nem måde at administrere teamets tilstand ved hjælp af en RESTful API, som du kan interagere med ved hjælp af kubectl eller andre Kubernetes-værktøjer. Det er som at have en direkte linje til trænerens kontor for at give instruktioner eller få opdateringer om holdets præstationer.

    Funktionssammenligning: Ansible vs. Kubernetes

    FeatureAnsibleKubernetesTypeKonfigurationsstyrings- og automatiseringsværktøjContainer-orkestreringsplatformFormålAutomatisere it-opgaver såsom konfigurationsstyring, applikationsimplementering og systemprovisionAutomatisering, skalering og styring af containeriserede applikationerArchitectureAgentless, bruger SSH eller WinRM til at kommunikere med målsystemerContainerizedno,deWRM-deklareret,brugs-konfigureret sprogSkrevet i YAML eller JSON, deklarativt sprogSkalerbarhed Understøtter både små og store infrastrukturer Designet til storskala implementeringer High AvailabilityPull-baseret, hvor containere trækkes fra containerregistret til målknudepunkter Giver indbyggede funktioner med høj tilgængelighed med automatisk containeromlægning og nodefailovernetværksfunktioner.
    Giver avancerede netværksfunktioner såsom serviceopdagelse, belastningsbalancering og DNS-baseret routingDeploymentPush-baseret, hvor konfigurationsændringer skubbes til målsystemer
    Bruger TLS til kommunikation, giver indbygget beholderisolering og RBAC til adgangskontrolRolling opdateringer
    Understøtter rullende opdateringer med minimal nedetid
    Understøtter rullende opdateringer med ingen nedetid Sundhedstjek
    Giver grundlæggende sundhedstjek for målsystemer
    Giver avancerede sundhedstjek for containere og automatisk containergenstart.SecurityUses SSH eller WinRM til kommunikation, kræver korrekt godkendelse og autorisation

    Moderat til stejl, kræver en forståelse af containerisering, netværk og distribuerede systemkoncepter Udvidelse Giver tilpassede moduler til udvidelse af funktionalitet
    Giver brugerdefinerede ressourcer og operatører til udvidelse af funktionalitet Læringskurve

    Moderat, kræver kendskab til YAML og grundlæggende scripting

    Moderat til stejl, kræver forståelse af containerisering, netværk og distribuerede systemkoncepter

    Anvendelser af Kubernetes

    Applikationsimplementering

    Håndtering af komplekse applikationer i produktionsmiljøet kræver udførelse af adskillige opgaver fejlfrit inden for en tidsramme. Hvis udviklere skulle udføre opgaven manuelt, ville det tage dem uger, før de implementerede applikationen.

    Men ved at bruge Kubernetes og containerisering af applikationerne kan de ikke kun implementere og administrere dem på tværs af en klynge af maskiner, men også sikre konsistens og reproducerbarhed. De kan opnå maksimal effektivitet ved at automatisere opgaver som planlægning, skalering og opdateringer.

    Skalerbarhed og belastningsbalancering

    For at en ansøgning skal lykkes, skal den rumme højere trafikmængder uden at gå på kompromis med ydeevnen. Kubernetes’ indbyggede funktioner med skalerbarhed og belastningsbalancering tilbyder den bedste mulighed.

    Den fordeler arbejdsbelastninger på tværs af en klynge af maskiner og skalerer automatisk op eller ned baseret på efterspørgsel, hvilket sikrer høj tilgængelighed. Desuden hjælper det også med at allokere den indgående trafik på tværs af flere tilfælde.

      10 træningsudstyr til hjemmet, der gør dig fra sofakartoffel til fitnessentusiast

    Tjenesteopdagelse og netværk

    De fleste applikationer kan ikke fungere alene. De skal oprette forbindelse til andre applikationer eller tjenester. Kubernetes tilbyder netværksfunktioner, der hjælper med at etablere kommunikation mellem containere i en klynge. Applikationer kan også opdage og oprette forbindelse til andre tjenester, der kører i gruppen via det DNS-baserede serviceværktøj.

    Rullende opdateringer og tilbageførsler

    Med Kubernetes er det nemt at opdatere apps eller vende tilbage til tidligere versioner. Det automatiserer processen og sikrer problemfri opdateringer uden at forstyrre applikationens tilgængelighed, hvilket giver mulighed for rullende opdateringer og tilbagerulninger med lidt nedetid.

    Infrastrukturstyring

    Kubernetes har en deklarativ tilgang til at forenkle infrastrukturstyring. Det giver brugerne mulighed for at definere infrastrukturressourcer som lagring, netværk og beregning som kode ved hjælp af YAML- eller JSON-manifester. Disse manifester eller konfigurationsfiler muliggør versionering, automatisering, styring af IaC (Infrastructure as Code) og strømlining af styringen af ​​komplekse infrastrukturkonfigurationer.

    Hybrid- og multisky-implementering

    Kubernetes er en game-changer for organisationer, der søger tilpasningsevne og smidighed i deres implementeringer. Ved at anvende et konsistent abstraktionslag bliver implementering og administration af applikationer på tværs af forskellige cloud-udbydere eller lokale datacentre effektiv.

    Det giver brugerne mulighed for at vedtage en hybrid- eller multi-cloud-strategi, der udnytter containernes fleksibilitet og portabilitet til at implementere og administrere applikationer på tværs af forskellige miljøer.

    Ansible og Kubernetes – Softwareudviklings livscyklus

    Stage i SDLC Ansible KubernetesDevelopment Giver automatiseret konfigurationsstyring og implementering af udviklingsmiljøer, muliggør versionskontrol for konfigurationsfiler og letter kodeimplementeringer
    N/ATesting Giver automatiseret klargøring og konfiguration af testmiljøer, giver mulighed for nem replikering af miljøer og understøtter automatiserede testopgaver
    N/ACkontinuerlig integration/kontinuerlig implementering (CI/CD)
    Faciliterer automatiserede implementeringer af applikationer og konfigurationsændringer, muliggør versionskontrol for infrastrukturkode og understøtter kontinuerlig levering og implementeringspipelines
    Faciliterer containeriserede implementeringer, skalering og administration af applikationer, understøtter rullende opdateringer og nul-downtime-implementeringerStaging/Pre-production
    Giver automatiseret klargøring og konfiguration af iscenesættelsesmiljøer, giver mulighed for konsistens på tværs af iscenesættelses- og produktionsmiljøer og letter test af produktionslignende miljøer
    Faciliterer containeriserede udrulninger og skalering af applikationer i præproduktionsmiljøer, muliggør test af containeriserede applikationer i et isoleret miljø. ProduktionFaciliterer automatiseret klargøring, konfiguration og styring af produktionsmiljøer, muliggør infrastruktur som kode (IaC) praksis og understøtter produktionsimplementeringer
    Giver containeriserede implementeringer, skalering og administration af produktionsapplikationer, tilbyder indbyggede funktioner med høj tilgængelighed og avancerede netværksfunktioner Drift/vedligeholdelse
    Automatiserer styring af konfigurationsdrift, kontinuerlig overvågning og ønsket statshåndhævelse. Understøtter sikkerhedskopier, opgraderinger og operationelle opgaver. Strømliner appadministration, skalering, opgraderinger og driftsopgaver som rullende opdateringer og automatisk genstart for containeriserede apps.
    Fejlfinding/fejlfinding
    Aktiverer konfigurationssynlighed, fejlfinding og rollback for problemer. Aktiverer synlighed af containerapp, fejlfinding, fejlfinding og logfiler/diagnostik.

    Ansible Use Cases

    IT-ops-teamet administrerer en stor infrastruktur med hundredvis af servere i flere datacentre. Med Ansible automatiserer de konsekvente og sikre serveropsætninger og processer, såsom administration af brugere, opsætning af firewalls og håndhævelse af sikkerhedspolitikker.

    Servere er grupperet efter roller og miljøer, og regelmæssige playbook-kørsler holder dem opdaterede og kompatible. Ansible forenkler konfigurationsstyring, reducerer manuelt arbejde og forbedrer sikkerhedsoverholdelse.

    Kubernetes Use Cases

    Et udviklingsteam bygger en mikroservice-webapplikation og implementerer den med Kubernetes, konfigurerer netværk, opbevaring og containere med Docker og manifester. Skalering, belastningsbalancering, selvhelbredelse og opdateringer håndteres af Kubernetes. Det er nemt at skalere op eller ned, og det garanterer fejltolerance og høj tilgængelighed.

    Denne Kubernetes Deployment-ressource implementerer en webapp med 3 replikaer. Etiketter angiver applikationsforekomster, og containerkonfigurationer er defineret i skabelonfeltet. Kubernetes administrerer skalering, belastningsbalancering, selvhelbredende og rullende opgraderinger til en skalerbar, modstandsdygtig, fejltolerant og yderst tilgængelig app.

    Administrationen er nemmere med containere og Kubernetes, hvilket sikrer ensartet implementering og nem skalering. Flere konfigurationer kan tilføjes efter behov til netværk, lagring og andre behov.

    Afslutningsvis

    Selvom Ansible og Kubernetes er automatiseringsværktøjer, ville det ikke være helt fair at sammenligne dem direkte med hinanden. Ansible hjælper med at administrere konfigurationer og opgaver på tværs af en lang række systemer, mens Kubernetes handler mere om containerorkestrering.

    Hvis vi overvejer en traditionel it-infrastruktur, ville Ansible være det rigtige valg til at håndtere konfigurationer og implementeringer. Kubernetes er dog fremragende til moderne, cloud-native miljøer og administration af containeriserede applikationer.

    Begge værktøjer har også deres styrker og kan i høj grad forbedre IT-automatisering og implementeringsarbejdsgange inden for deres respektive ekspertiseområder. Så at forstå deres unikke formål og bruge dem i overensstemmelse hermed kan give enorm værdi til dine operationer.