Kubernetes: mitä se on ja miksi tarvitsen sitä?

Kubernetes(K8s) on avoimen lähdekoodin alusta, jota käytetään laajamittaiseen konttien hallintaan. Nimi tulee kreikan kielestä ”κυβερνήτης”, joka tarkoittaa ”ohjaajaa”, mikä ilmaisee täydellisesti alustan tarkoituksen. Työkalun loi Google lähes 20 vuotta sitten hoitamaan yrityksen tuotantokuormitusta. Vuonna 2014 projekti siirrettiin Cloud Native Computing Foundationille ja julkistettiin – siitä lähtien alustaa on kehitetty edelleen.
K8s tukee käyttöönottojen automatisointia, sovellusten skaalautumista, konttien hallintaa sekä työkuorman ja muutosten seurantaa. Alustaa käyttävät sovellusten omistajat ja kehitystiimit voivat keskittyä enemmän tuotteensa kehittämiseen kuin DevOps-toimintoihin (infrastruktuurin hallinta ja tuotteen sovittaminen sen vaatimuksiin). Lisäksi Kubernetes voi helposti hallita klusteria (ryhmä yhdessä toimivia palvelimia) orkestrointiominaisuuksiensa ansiosta. Kun K8s hyväksyy käyttöönoton, se jakaa sen työtehtäviin ja jakaa sen klusterin palvelimille. K8esin työmäärät luodaan konteina ja pakataan vakioklusteriresursseihin, joita kutsutaan Podeiksi. Monimutkaiset sovellukset toimivat usein monimutkaisessa hajautetussa infrastruktuurissa, ja Kubernetes tarjoaa enemmän tietoa siitä, mitä sovelluksessa tapahtuu, mikä helpottaa tietoturvaongelmien tunnistamista ja korjaamista.
7 periaatteet
Jotta Kubernetesin avulla saavutetaan parhaat mahdolliset tulokset, on noudatettava 7 periaatetta, jotka on lueteltu puolustusministeriön Enterprise DevSecOps Reference Design-julkaisussa.
- Poista pullonkaulat ja manuaaliset toimet
Kubernetesin avulla kehittäjät, testaajat ja ylläpitäjät voivat työskennellä käsi kädessä, mikä helpottaa vikojen ratkaisemista nopeasti ja tarkasti. Kubernetesin avulla pääset eroon pitkistä viiveistä, jotka liittyvät kehitys- ja testiympäristöjen replikointiin. Lisäksi standardoitujen instanssien ansiosta Kubernetes auttaa testaajia ja kehittäjiä vaihtamaan nopeasti tarkkaa tietoa. - Automatisoi mahdollisimman paljon
Kubernetesin ansiosta voit automatisoida monia aikaa vieviä kehitykseen ja käyttöönottoon liittyviä tehtäviä. Manuaalisten toimintojen poistaminen tarkoittaa vähemmän työtä ja vähemmän virheitä, mikä tarkoittaa lyhyempää markkinoille tuloaikaa. - Ota käyttöön yhteisiä työkaluja suunnittelusta ja vaatimuksista käyttöönottoon ja toimintaan
Kubernetes tarjoaa monia ominaisuuksia, joiden avulla yksi kontti voi tukea monia ympäristön konfiguraatiokonteksteja.Tällöin ei tarvita erityisiä kontteja eri ympäristökonfiguraatioita varten. Lisäksi configmaps-objekti tukee ajoaikana käytettäviä konfiguraatiotietoja. Tärkeintä on, että se yksinkertaistaa koko käyttöönottoprosessin hallintaa kunkin tarvittavan käyttöönoton kuvaamiseen käytetyn deklaratiivisen syntaksin ansiosta . - Hyödynnä ketteriä ohjelmistoperiaatteita tiheillä päivityksillä
Rakenteen ansiosta mikropalvelut hyötyvät eniten Kubernetesista.Sanotaan, että kahdentoista faktorin sovellusmenetelmällä suunnitellut ja API:iden kautta kommunikoivat ohjelmistot toimivat parhaiten skaalautuvissa käyttöönotoissa klustereissa. Kubernetes on siis paras valinta pilvipohjaisten sovellusten orkestrointiin, sillä modulaariset hajautetut palvelut suosivat skaalautumista ja nopeaa palautumista vioista. - Sovelletaan kehityksen, kyberturvallisuuden ja käytön monialaisia taitoja koko ohjelmiston elinkaaren ajan
Kubernetes on rakennettu terveysraportointimittareilla, jotta alusta pystyy hallitsemaan elinkaaren tapahtumia, jos instanssi muuttuu epäterveeksi. Vankan telemetriatiedon ansiosta operaattorit hälyttävät, ja he voivat tehdä päätöksiä välittömästi. Kannattaa myös huomata, että Kubernetes tukee liveness- ja readiness-luotaimia, jotka tarjoavat selkeän näkymän konttipohjaisten työmäärien tilasta. - Taustalla olevan infrastruktuurin turvallisuusriskit on mitattava ja kvantifioitava
Kubernetes tarjoaa monia eri kerroksia ja komponentteja, jotka varmistavat korkeimmat turvallisuusstandardit, mukaan lukien aikatauluttaja, joka hallinnoi työtaakkojen jakamista, kontrollerit, jotka hallinnoivat itse Kubernetesin tilaa, agentit, jotka toimivat klusterin jokaisessa solmussa, ja avainarvosäilö, johon klusterin konfiguraatiotiedot tallennetaan.Tietenkin, jotta pysyttäisiin immuuneina kaikentyyppisille haavoittuvuuksille, on otettava käyttöön yhtenäinen puolustusstrategia, joka koostuu seuraavista kohdista.
Ensinnäkin on käytettävä turvakoodin skannaustyökaluja sen tarkistamiseksi, onko haavoittuvuuksia itse konttikoodissa. Kubernetes-solmut (palvelimet) on myös eristettävä erilliseen verkkoon, jotta ne voidaan eristää julkisista verkoista. Puhumattakaan klusterin resurssien käyttöoikeuksien rajoittamisesta RBAC-käytännöillä (role-based access control) sekä resurssikiintiöiden käytöstä, joiden avulla voit lieventää mahdollisia häiriöitä.
On muistettava rajoittaa podien välistä liikennettä käyttämällä Kubernetesin ydintietotyyppejä podien välisten verkkoyhteyksien valvonnan määrittämiseksi ja otettava käyttöön verkkorajojen valvonta joidenkin sisään- ja ulostulon valvonnan toteuttamiseksi verkon rajalla. Lisäksi sovelluskerroksen pääsynvalvontaa voidaan koventaa vahvalla sovelluskerroksen todennuksella, kuten keskinäisillä kuljetustason tietoturvaprotokollien
avulla.
Edellä mainitun lisäksi segmentoi Kubernetes-klusterisi eheystason mukaan, mikä tarkoittaa, että dev- ja testiympäristöt sijaitsevat eri klusterissa kuin tuotantoympäristö. Suosittelemme myös tietoturvaseurannan ja -auditoinnin hyödyntämistä sovelluslokien, isäntätason lokien, Kubernetesin API-auditointilokien ja pilvipalveluntarjoajan lokien keräämiseksi. Harkitse kuitenkin tietoturvatarkastusta
varten lokien suoratoistamista ulkoiseen paikkaan, johon on pääsy vain liitteenä klusterin sisällä.
Jotkut saattavat pitää sitä itsestäänselvyytenä, mutta muista pitää Kubernetes-versiot ajan tasalla ja käyttää prosessien valkoluettelointia, jonka avulla voit havaita odottamattomat käynnissä olevat prosessit.
- Ota käyttöön muuttumaton infrastruktuuri, kuten kontit
Kubernetes edistää skenaarioita, joissa käyttöönotetut komponentit korvataan kokonaan sen sijaan, että niitä päivitettäisiin. Tällöin standardoinnin ja yleisten infrastruktuurikomponenttien emuloinnin hyödyntäminen mahdollistaa ennustettavien tulosten saavuttamisen.
Yhteenveto
Sovellusten kasvaessa suuremmiksi niiden ylläpito monimutkaistuu, kun ne ulottuvat useisiin kontteihin, jotka on sijoitettu useille palvelimille. Tämän monimutkaisuuden hallitsemiseksi Kubernetes tarjoaa avoimen lähdekoodin API:n, jonka avulla voidaan hallita sitä, miten ja missä näitä kontteja ajetaan. Tämän alustan ansiosta voit suorittaa täysin automatisoidun sovellusten käyttöönoton ja antaa K8s:n skaalata kontit haluttuun tilaan. Haasteita on tietysti jonkin verran, mutta noudattamalla puolustusministeriön julkaiseman Enterprise DevSecOps Reference Designin sääntöjä voit kuitenkin kohdata ne kaikki helposti.
Haluatko tietää lisää DevOpsista ja siitä, miksi se on avain alan huippusuorittajaksi?