Ansible vs. Kubernetes: Forstå forskjellene –

Enhver diskusjon om automatisering i IT-drift kan ikke være komplett uten Ansible og Kubernetes. Selv om disse to verktøyene tjener forskjellige formål, har de virkelig revolusjonert programvareutviklingssyklusen. Så la oss komme til disse verktøyene i detalj.

Hva er Ansible?

Ansible, opprinnelig utviklet av Michael DeHaa, er for tiden rangert på GitHub som et av de 100 mest populære prosjektene. Den er godt likt for sitt enkle språk og brukervennlighet. I dag har Ansible fått utbredt bruk som de facto benchmark for IT-automatisering.

Verktøyet blomstrer i et åpen kildekodefellesskap og har gjennomgått en bemerkelsesverdig utvikling, og tilbyr løsninger til operatører, administratorer og IT-beslutningstakere på tvers av forskjellige tekniske miljøer.

Ansible

Følgelig bruker fremtredende organisasjoner som Twitter, eBay, Verizon, NASA, ILM, Rackspace og Electronic Arts i stor grad dette verktøyet. På grunn av suksessen kjøpte Red Hat Ansible i 2015.

Ansible gjør konfigurasjonsadministrasjon, applikasjonsdistribusjon og oppgaveautomatisering ukomplisert. I moderne digitale miljøer utnytter DevOps-profesjonelle det ofte til ressursforsyning for å utføre en infrastruktur-som-kode (IaC)-tilnærming for sømløs programvarelevering.

Her er noen av måtene Ansible kan brukes på:

  • Konfigurasjonsadministrasjon: Med Ansible er det en barnelek å definere de ønskede konfigurasjonene for servere, nettverksenheter og andre infrastrukturkomponenter. Den kan også automatisk og konsekvent spille disse konfigurasjonene på tvers av flere systemer, og dermed sikre en standardisert struktur og samsvar.
  • Applikasjonsdistribusjon: Ansible gjør applikasjonsdistribusjon til en lek ved å automatisere prosessen på tvers av forskjellige miljøer, fra utvikling til testing til produksjon. Oppgaver som å installere programvare, konfigurere databaser og sette opp nettverk blir tatt hånd om med noen få kommandoer.
  • Oppgaveautomatisering: Si farvel til manuelle, repeterende oppgaver! Ansible lar IT-team automatisere et bredt spekter av oppgaver, for eksempel oppdatering av systemer, administrering av sikkerhetskopier, opprettelse av brukerkontoer og omstart av tjenester. Dette frigjør teamet ditt til å fokusere på mer strategiske initiativer.
  • Infrastrukturklargjøring: Dynamisk klargjøring og konfigurasjon av ressurser, som virtuelle maskiner, skyforekomster og nettverksenheter, basert på etterspørsel kan være kjedelig. Imidlertid kommer Ansible til unnsetning igjen og kan skalere opp eller ned infrastrukturen din effektivt.
  • Orkestrering: Ansible stråler i å administrere komplekse distribusjoner som involverer flere systemer. Den kan iscenesette intrikate arbeidsflyter for å håndtere oppgaver som å distribuere flerlagsapplikasjoner og rulle ut oppdateringer over et distribuert miljø, og dermed administrere nettverksenheter på en koordinert måte.
  • Fordeler med Ansible

    • Enkle å lære og bruke: Ettersom lekebøkene bruker YAML, er de ganske enkle å skrive, slik at både amatører og eksperter kan ha det gøy med det. Den enkle og intuitive syntaksen forenkler rask bruk og jevne arbeidsflyter.
    • Skrevet i Python: Dette verktøyet handler om enkelhet. Det er skrevet i Python, et av de mest populære og usofistikerte programmeringsspråkene.
    • Agentløs arkitektur: Den er agentløs. Ansible kan regulere eksterne verter gjennom SSH uten å kreve programvareinstallasjon på dem. Ved å bruke playbooks og roller gjør Ansible det enklere å definere din ideelle infrastruktur og automatisere veien for å komme dit.
    • Forbedret sikkerhet: Med SSH prioriterer Ansible sikkerhet mellom systemene. Den beskytter applikasjonene og infrastrukturen mot potensielle trusler.
    • Integrasjon med administrasjonssystemer for autentisering: Ansible integreres med styringssystemer for autentisering som LDAP, Kerberos og mer for riktig tilgangskontroll og forbedret sikkerhet.
    • Pålitelighet: IT-infrastrukturer trenger stabilitet og pålitelighet. Ansible har lang erfaring med å tilby høy ytelse og pålitelighet.

    Dessuten er det som gjør Ansible spennende at den er virkelig brukervennlig. Å administrere både lokal og skybasert infrastruktur er absolutt, som Sherlock ville si, «elementært» med Ansible.

    Hvordan fungerer Ansible?

    Før vi fordyper oss i hvordan Ansible fungerer, la oss ta en titt på komponentene:

      Hvordan lage klosser i Minecraft

    Moduler: Hvis Ansible var en rett (måltid), ville moduler vært hovedingrediensen. De er forhåndsbygde små programmer som håndterer nesten alt – fra applikasjoner og pakker til filer på eksterne systemer. Ansible implementerer definerte instruksjoner på eksterne systemer og leverer samtidig moduler fra kommandocomputeren.

    Playbooks kjører den tilknyttede modulen og tar den ut av løkken når oppgaven er fullført. Ansible har over 750 (stadig voksende) innebygde moduler, noe som gjør automatisering enkelt med spill og oppgaver!

    Bildekilde: InterviewBit

    Playbooks: Playbooks er oppgaveorienterte brukermanualer som bruker YAML-formatet for å forenkle automatisering. Disse lekebøkene dikterer arbeidsflyten og utfører oppgavene på en ryddig måte. Playbooks kan utføre sekvensielle prosedyrer, definere miljøer og administrere ulike stadier av en oppgave.

    Plugins: Ansible plugins forbedrer både innebygd og tilpasset nettsidefunksjonalitet. Systemet kan utføre logging, hendelsesvisning, caching og front-end kontrollerfunksjoner, og det utfører dem før moduler på noder.

    Inventarer: Ansible inventarer inneholder lister over verter med deres IP-adresser, servere og databaser. SSH for UNIX, Linux eller nettverksenheter og WinRM for Windows-systemer hjelper til med å administrere dem.

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

    Slik fungerer Ansible sin magi:

    For det første har Ansible en inventarfil med en liste over verter eller maskiner. Brukere kan endre denne inventarfilen ved å legge til serverne de ønsker å kontrollere.

    Det neste trinnet er å lage spillebøker for å definere den ideelle infrastrukturen på de administrerte nodene. Nå, ettersom Ansible kjører på kontrollnoden som hjelper til med å utføre oppgaver på det eksterne systemet, vil den etablere en SSH-forbindelse med sistnevnte. Det gir mulighet for sikker kommunikasjon mellom nodene.

    Deretter sender og kjører den moduler for å utføre oppgavene som er definert i spillebøkene, og bringer systemene til ønsket tilstand.

    Etter å ha fullført oppgaven, fjerner Ansible modulene fra de administrerte nodene for å forhindre gjenværende moduler. Til slutt gir den rapporter om status for oppgaveimplementering, slik at brukerne kan overvåke fremdriften og resultatene av automatiseringsoppgaver. Dessuten kan Ansible kjøre regelmessig for å vedlikeholde og forbedre systemet over tid.

    Hva er Kubernetes?

    Joe Beda, Brendan Burns og Craig McLuckie er de geniale hodene bak Kubernetes. De jobbet som ingeniører hos Google og laget dette verktøyet, som nå er et kraftsenter for containeriserte applikasjoner.

    Opprinnelig ble Kubernetes utviklet av Google for å administrere sine egne containeriserte applikasjoner i produksjon, og det ble først utgitt som et åpen kildekode-prosjekt i 2014.

    I 2015 donerte Google Kubernetes til den leverandøruavhengige Cloud Native Computing Foundation (CNCF) for å fremme skybasert databehandlingsteknologi.

    Siden den gang har Kubernetes blitt et av CNCFs flaggskipprosjekter, med utbredt industriadopsjon, og har etablert seg som ledende innen containerorkestrering.

    Ifølge Gartner vil omtrent 85 % av organisasjonene bruke Kubernetes innen 2025. Og hvorfor skulle de ikke det? Det robuste økosystemet av tillegg, verktøy og tjenester gjør det til en allsidig plattform for å administrere containeriserte applikasjoner.

    Kubernetes har gått gjennom flere viktige oppdateringer, og har gitt ny funksjonalitet, forbedringer og feilrettinger med hver utgivelse. Det er i stadig utvikling og forbedring, takket være det lidenskapelige fellesskapet bak det!

    Fordeler med Kubernetes

    • Skalerbarhet: Enkel skaler applikasjoner basert på etterspørsel.
    • Portabilitet: Distribuer og administrer applikasjoner konsekvent på tvers av forskjellige miljøer.
    • Fleksibilitet: Støtte for ulike containerkjøringstider og formater.
    • Automatisering: Automatiser containerdistribusjon, skalering, overvåking og helbredelse.
    • Spenst: Innebygd feiltoleranse og selvhelbredende evner.
    • DevOps-aktivering: Fremmer samarbeid mellom utviklere og driftsteam.
    • Utvidbarhet: Tilpassbar og utvidbar arkitektur for integrasjon med andre verktøy.
    • Fellesskap og økosystem: Stort samfunn og økosystem for forbedrede kapasiteter.

    Hvordan fungerer Kubernetes?

    Siden Kubernetes er plattformen som hjelper med containerorkestrering, innebærer det første trinnet å pakke applikasjonen inn i containere ved hjelp av containeriseringsverktøy, som Docker. Disse beholderne er selvforsynte, med all nødvendig programvare og avhengigheter for å fungere feilfritt i forskjellige miljøer.

    Deretter, med YAML eller JSON, defineres applikasjonstilstanden, inkludert beholderbilder, ressurskrav, skaleringspolicyer, nettverks- og lagringskonfigurasjoner. Filene med instruksjoner kalles manifester.

      Legg til en flytende knapp på skjermen for å tweete fra hvilken som helst app

    I Kubernetes er en klynge som et team av datamaskiner, kalt noder, som jobber sammen for å kjøre applikasjonene dine. Tenk på noder som spillerne i et fotballag, og hver spiller kan kjøre flere containere, som er som spillernes utstyr eller utstyr som trengs for å spille spillet.

    Kubernetes-komponenter

    Den minste byggesteinen i Kubernetes kalles en Pod, som er som et koselig lite hjem for en eller flere containere. Poder er som spillernes garderober, hvor de henger og deler ting som nettverk og lagringsressurser. Hver Pod har sitt eget unike navn og adresse, slik at du enkelt kan identifisere og kommunisere med dem.

    Utplasseringer er som trenerne som styrer laget. De forteller Kubernetes hvor mange spillere (eller replikaer) av hver Pod som skal kjøres til enhver tid. Akkurat som en trener administrerer spillerne på banen, administrerer en Deployment opprettelse, skalering og sletting av Pods for å sikre at applikasjonen din alltid er i ønsket tilstand.

    Tjenester er som dommerne som hjelper spillere med å kommunisere med hverandre. De gir en stabil adresse, som et telefonnummer, som andre kan bruke for å få tilgang til applikasjonen din. Tjenester velger de riktige podene basert på etiketter, som spillerens posisjon, og fordeler trafikken jevnt mellom dem, slik at alle får en rettferdig sjanse til å spille.

    For å håndtere viktig informasjon som passord eller API-nøkler, tilbyr Kubernetes ConfigMaps og Secrets. De er som låsebokser der du kan lagre disse sensitive detaljene sikkert og deretter bruke dem i Pods og Deploymenter for å få tilgang til ressurser uten å eksponere dem i ren tekst.

    Endelig er Kubernetes API-serveren som lagets coaching-hotline. Det gir en enkel måte å administrere teamets tilstand ved å bruke en RESTful API, som du kan samhandle med ved å bruke kubectl eller andre Kubernetes-verktøy. Det er som å ha en direktelinje til trenerkontoret for å gi instruksjoner eller få oppdateringer om lagets prestasjoner.

    Funksjonssammenligning: Ansible vs. Kubernetes

    FeatureAnsibleKubernetesTypeKonfigurasjonsadministrasjons- og automatiseringsverktøyContainer-orkestreringsplattformFormålAutomatisere IT-oppgaver som konfigurasjonsadministrasjon, applikasjonsdistribusjon og systemproviseringAutomatisere distribusjon, skalering og administrasjon av containeriserte applikasjonerArchitectureAgentless, bruker SSH eller WinRM til å kommunisere med målsystemerContainerizedno,deW-arkitektenkonfigurert, språkSkrevet i YAML eller JSON, deklarativt språk Skalerbarhet Støtter både små og store infrastrukturer Designet for storskala distribusjoner Høy tilgjengelighet Pull-basert, hvor containere trekkes fra containerregisteret til målnoder Gir innebygde funksjoner med høy tilgjengelighet med automatisk containeromlegging og nodefailovernettverksfunksjoner Nettverksfunksjoner
    Tilbyr avanserte nettverksfunksjoner som tjenesteoppdagelse, lastbalansering og DNS-basert rutingDeploymentPush-basert, der konfigurasjonsendringer blir presset til målsystemer
    Bruker TLS for kommunikasjon, gir innebygd beholderisolasjon og RBAC for tilgangskontrollRullende oppdateringer
    Støtter rullende oppdateringer med minimal nedetid
    Støtter rullende oppdateringer med null nedetid Helsesjekker
    Gir grunnleggende helsesjekker for målsystemer
    Gir avanserte helsesjekker for containere og automatisk omstart av container.Security Bruker SSH eller WinRM for kommunikasjon, krever riktig autentisering og autorisasjon

    Moderat til bratt, krever forståelse av containerisering, nettverk og distribuerte systemkonsepter Utvidbarhet Gir tilpassede moduler for å utvide funksjonaliteten
    Tilbyr tilpassede ressurser og operatører for å utvide funksjonaliteten Læringskurve

    Moderat, krever kunnskap om YAML og grunnleggende skripting

    Moderat til bratt, krever forståelse av containerisering, nettverksbygging og distribuerte systemkonsepter

    Bruk av Kubernetes

    Applikasjonsimplementering

    Å administrere komplekse applikasjoner i produksjonsmiljøet krever utføring av en rekke oppgaver feilfritt innenfor en tidsramme. Hvis utviklere skulle utføre oppgaven manuelt, ville det ta dem uker før de distribuerte applikasjonen.

    Men ved å bruke Kubernetes og containerisere applikasjonene, kan de ikke bare distribuere og administrere dem på tvers av en klynge av maskiner, men også sikre konsistens og reproduserbarhet. De kan oppnå maksimal effektivitet ved å automatisere oppgaver som planlegging, skalering og oppdateringer.

    Skalerbarhet og lastbalansering

    For at en applikasjon skal lykkes, må den ha plass til høyere trafikkmengder uten at det går på bekostning av ytelsen. Kubernetes» innebygde funksjoner for skalerbarhet og lastbalansering gir det beste alternativet.

    Den fordeler arbeidsmengder på tvers av en klynge av maskiner og skalerer automatisk opp eller ned basert på etterspørsel, noe som sikrer høy tilgjengelighet. Dessuten hjelper det også med å fordele den innkommende trafikken på tvers av flere forekomster.

      Slik slår du på tofaktorautentisering for Amazon-kontoen din

    Tjenesteoppdagelse og nettverksbygging

    De fleste applikasjoner kan ikke fungere alene. De må koble til andre applikasjoner eller tjenester. Kubernetes tilbyr nettverksfunksjoner som hjelper til med å etablere kommunikasjon mellom containere i en klynge. Applikasjoner kan også oppdage og koble til andre tjenester som kjører i gruppen gjennom det DNS-baserte tjenesteverktøyet.

    Rullende oppdateringer og tilbakeføringer

    Med Kubernetes er det enkelt å oppdatere apper eller gå tilbake til tidligere versjoner. Den automatiserer prosessen og sikrer sømløse oppdateringer uten å forstyrre applikasjonens tilgjengelighet, og tillater rullende oppdateringer og tilbakeføringer med liten nedetid.

    Infrastrukturstyring

    Kubernetes bruker en deklarativ tilnærming for å forenkle infrastrukturadministrasjon. Den lar brukere definere infrastrukturressurser som lagring, nettverk og beregning som kode ved å bruke YAML- eller JSON-manifester. Disse manifestene eller konfigurasjonsfilene muliggjør versjonering, automatisering, administrasjon av IaC (Infrastructure as Code) og effektivisering av administrasjonen av komplekse infrastrukturkonfigurasjoner.

    Hybrid- og multisky-implementering

    Kubernetes er en game-changer for organisasjoner som leter etter tilpasningsevne og smidighet i deres distribusjoner. Ved å bruke et konsistent abstraksjonslag, blir distribusjon og administrasjon av applikasjoner på tvers av ulike skyleverandører eller lokale datasentre effektiv.

    Den lar brukere ta i bruk en hybrid- eller multiskystrategi, og utnytter fleksibiliteten og portabiliteten til containere for å distribuere og administrere applikasjoner på tvers av forskjellige miljøer.

    Ansible og Kubernetes – Livssyklus for programvareutvikling

    Stage in SDLC Ansible KubernetesDevelopmentGir automatisert konfigurasjonsadministrasjon og distribusjon av utviklingsmiljøer, muliggjør versjonskontroll for konfigurasjonsfiler og forenkler kodedistribusjoner
    N/ATestingGir automatisert klargjøring og konfigurasjon av testmiljøer, muliggjør enkel replikering av miljøer og støtter automatiserte testoppgaver
    N/ACkontinuerlig integrasjon/kontinuerlig distribusjon (CI/CD)
    Forenkler automatiserte distribusjoner av applikasjoner og konfigurasjonsendringer, muliggjør versjonskontroll for infrastrukturkode, og støtter kontinuerlig levering og distribusjonspipelines
    Tilrettelegger for containeriserte distribusjoner, skalering og administrasjon av applikasjoner, støtter rullende oppdateringer og null nedetidsdistribusjonerStaging/Pre-produksjon
    Gir automatisert klargjøring og konfigurasjon av oppsamlingsmiljøer, muliggjør konsistens på tvers av oppsetnings- og produksjonsmiljøer, og forenkler testing av produksjonslignende miljøer
    Forenkler containeriserte distribusjoner og skalering av applikasjoner i pre-produksjonsmiljøer, muliggjør testing av containeriserte applikasjoner i et isolert miljøProduksjonFasiliterer automatisert klargjøring, konfigurasjon og administrasjon av produksjonsmiljøer, muliggjør infrastruktur som kode (IaC) praksis, og støtter produksjonsdistribusjoner
    Gir containeriserte distribusjoner, skalering og administrasjon av produksjonsapplikasjoner, tilbyr innebygde funksjoner med høy tilgjengelighet og avanserte nettverksfunksjoner Drift/vedlikehold
    Automatiserer administrasjon av konfigurasjonsdrift, kontinuerlig overvåking og ønsket statlig håndhevelse. Støtter sikkerhetskopiering, oppgraderinger og driftsoppgaver. Strømlinjeformer appadministrasjon, skalering, oppgraderinger og driftsoppgaver som rullende oppdateringer og automatisk omstart for apper i container.
    Feilsøking/feilsøking
    Aktiverer konfigurasjonssynlighet, feilsøking og tilbakeføring for problemer. Aktiverer synlighet for containerapper, feilsøking, feilsøking og logger/diagnostikk.

    Ansible brukstilfeller

    IT-operasjonsteamet administrerer en stor infrastruktur med hundrevis av servere i flere datasentre. Med Ansible automatiserer de konsistente og sikre serveroppsett og prosesser som å administrere brukere, sette opp brannmurer og håndheve sikkerhetspolicyer.

    Servere er gruppert etter roller og miljøer, og regelmessige playbook-kjøringer holder dem oppdaterte og kompatible. Ansible forenkler konfigurasjonsadministrasjon, reduserer manuelt arbeid og forbedrer sikkerhetssamsvar.

    Kubernetes brukstilfeller

    Et utviklingsteam bygger en mikrotjenester-nettapplikasjon og distribuerer den med Kubernetes, konfigurerer nettverk, lagring og containere med Docker og manifester. Skalering, lastbalansering, selvhelbredelse og oppdateringer håndteres av Kubernetes. Det er enkelt å skalere opp eller ned, og dette garanterer feiltoleranse og høy tilgjengelighet.

    Denne Kubernetes Deployment-ressursen distribuerer en nettapp med 3 replikaer. Etiketter indikerer applikasjonsforekomster og beholderkonfigurasjoner er definert i malfeltet. Kubernetes administrerer skalering, lastbalansering, selvhelbredende og rullende oppgraderinger for en skalerbar, spenstig, feiltolerant og svært tilgjengelig app.

    Administrasjonen er enklere med containere og Kubernetes, noe som sikrer enhetlig distribusjon og enkel skalering. Flere konfigurasjoner kan legges til etter behov for nettverk, lagring og andre behov.

    For å konkludere

    Selv om Ansible og Kubernetes er automatiseringsverktøy, ville det ikke være helt rettferdig å sammenligne dem med hverandre direkte. Ansible hjelper til med å administrere konfigurasjoner og oppgaver på tvers av et bredt spekter av systemer, mens Kubernetes handler mer om containerorkestrering.

    Hvis vi vurderer en tradisjonell IT-infrastruktur, vil Ansible være det riktige valget for å håndtere konfigurasjoner og distribusjoner. Kubernetes er imidlertid utmerket for moderne, skybaserte miljøer og administrasjon av containeriserte applikasjoner.

    Begge verktøyene har også sine styrker og kan i stor grad forbedre IT-automatisering og distribusjonsarbeidsflyter innen deres respektive ekspertiseområder. Så å forstå deres unike formål og bruke dem deretter kan gi enorm verdi til virksomheten din.