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.
Innholdsfortegnelse
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å:
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:
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.
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.
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.