Pilvipalvelut 25.03.2024

Kuinka toteuttaa tehokas Kubernetes-palveluiden käyttöönotto ja ylläpito?

Pilvipalvelut ovat muuttaneet tapaa, jolla sovelluksia kehitetään, otetaan käyttöön ja hallitaan. Nykyään ajoalustat automatisoidaan täysimääräisesti, ympäristöt skaalataan dynaamisesti ja työkuormia hallitaan sekä sovelluksia päivitetään jatkuvasti uusilla versioilla samalla vanhoja poistaen. Tärkeä etu on kyky päivittää käyttöjärjestelmätasoja automaattisesti konttipohjaisen sovelluskerroksen alapuolella, mikä mahdollistaa käyttöjärjestelmän päivitykset ilman sovellusten toimintaa häiritseviä vaikutuksia. Pyrimme hallitsemaan ympäristöjä koodin avulla, välttäen tarpeetonta monimutkaisuutta. Tässä blogissa tarkastellaan, kuinka Kubernetes-ympäristöjä otetaan käyttöön ja ylläpidetään tehokkaasti.

Kubernetes-ympäristön käyttöönotto 

Nykyään Kubernetes-klustereita voi perustaa pilvipalveluista kuten Azuresta, Googlesta, AWS:stä ja Oracle Cloudista. Kubernetes-ympäristö ei kuitenkaan ole pelkkä klusteri, vaan siihen liittyy usein paljon muitakin palveluita, jotka mahdollistavat DevOps-käytännöt ja sovellusten jatkuvan julkaisun. Klusteriin yleensä integroidaan erilaisia palveluita, kuten verkot, tietokannat, levyjärjestelmät sekä salaisuuksien- ja käyttöoikeuksien hallintapalvelut. Kokonaisuudessaan ympäristöön tulee hyvin paljon erilaisia integraatioita ja konfiguraatioita. Lopulta ympäristö saattaa näyttää monimutkaisemmalta kuin perinteinen virtuaalikoneympäristö.

Siksi onkin suositeltavaa, että ympäristö toteutetaan Infra as Code -periaatteella ja kaikki konfiguraatiot saadaan versionhallinnan piiriin. Tällöin konfiguraation kokonaisuutta, integraatioita muihin palveluihin ja muutoshistoriaa on helppo tarkastella ja varmistaa palvelun laatu.

Seuraavassa on lueteltu tärkeimmät kohdat, miksi Kubernetes-ympäristö kannattaa luoda koodilla: 

  • Ympäristön konfiguraation voi palauttaa versionhallinnasta koodilla hätätilanteessa. 
  • Ympäristön kokonaiskuva ja dokumentaatio ovat samassa koodissa, josta voidaan helposti selvittää, miten eri palvelut liittyvät toisiinsa. 
  • Ympäristön muutoksenhallinta on auditoitavissa ja katselmoitavissa koodista ennen varsinaisten muutosten tekemistä.  
  • Ympäristöt ovat monistettavissa melko pienellä vaivalla koodin avulla.  
  • Koodin avulla testiympäristö voidaan pystyttää vain ajon aikaiseksi, mikä säästää merkittävästi kustannuksia. 

DevOps- ja Infra as Code -työkalut 

Ympäristön suunnitteluvaiheessa on hyvä ottaa huomioon millainen DevOps-ympäristö ja -työkalut valitaan. DevOps-ympäristö kattaa laajan valikoiman palveluita, kuten dokumentaation hallinnan, työtehtävien ohjauksen, koodin versionhallinnan, CI/CD jatkuvan kehityksen ja jatkuvan julkaisun kehitysputket, testausautomaation sekä koodikirjastohallinnan sovelluksille.

Palveluita on useita kuten Microsoft Azure DevOps, GitHub, Gitlab jne. Valintaan vaikuttaa paljolti, mitä kehittäjät ovat jo tottuneet käyttämään, ja toisaalta miten palvelu integroituu valittuun pilvipalveluun. Joka tapauksessa monet ympäristöt ovat integroitavissa ristiin, vaikka kaikki eivät olisikaan samasta tuoteperheestä. Hyvä periaate on kuitenkin yrittää pitää kaikki mahdollisimman yksinkertaisena, jotta ylläpito olisi helpompaa sekä voitaisiin varmistaa parempi tietoturva.   

Infra as Code -menetelmä tarkoittaa sitä, että ympäristöä ylläpidetään koodilla, jota toteutetaan erilaisten työkalujen avulla, kuten ARM-templatet, Bicep tai Terraform. Jokaiseen pilveen löytyy omat pilvinatiivit tavat julkaista ja ylläpitää resursseja koodilla. Näissä on otettava huomioon se, että myöhemmin näitä ei ole helppo siirtää toiseen pilveen, mikäli halutaan käyttää useampaa pilveä ja ympäristöä.

Terraform on taas pilviagnostinen työkalu, joka tarjoaa rajapinnat eri pilvipalveluihin sekä esimerkiksi oman konesalin VMware-ympäristöön. Tämä mahdollistaa joustavan ja helpon pilviresurssien hallinnan monessa eri ympäristöissä. Näin myös tiimien osaamistarve pystyy pienempänä ja resursseja voi ylläpitää helpommin missä tahansa pilvessä. Koodilla rakennettaessa ja ylläpidettäessä ympäristöjä kaikki konfikuraatiot saadaan versionhallintaan. Tämä tekee ympäristöjen tarkastelusta ja muutoshallinnasta helppoa ja varmistaa niiden auditoinnin ja laadun.    

Miten Kubernetes-klusteria ja -palveluita ylläpidetään? 

Vaikka Kubernetes tarjoaa monia etuja vanhoihin virtuaalikoneisiin verrattuna, sen käyttöön liittyy myös haasteita ja monimutkaisuutta. Kubernetes-klusterin hallinta voi olla haastavaa, varsinkin silloin kun käsitellään useita noodeja, kontteja, palveluita, käyttöönottoja tai muita resursseja. Lisäksi on huomioitava integroitavat liitännäispalvelut, kuten tietoliikenneverkot ja tietokantapalvelut.

Jos ympäristö on rakennettu kokonaan koodilla versionhallintaan, on tiedettävä mikä osa systeemistä toimii infrakoodin päivityksillä ja mikä osa kuuluu sovellusjulkaisuputkiin ja siihen liittyviin sovelluskohtaisiin konfiguraatioihin. Lisäksi on tarpeen valvoa, suorittaa vianmääritys ja suojata klusteria sekä varmistaa suorituskyky- ja saatavuusvaatimukset.

Kubernetes-klusterin versiot päivittyvät nopeasti, ja tuotantoklusteria ei voida aina voi päivittää automaattisesti uusiin versioihin. Päivitys edellyttää ensin testaamista testiympäristössä ja sitten muutos on tehtävä tuotantoympäristöön. Usein haasteena on, että Kubernetes-ympäristöt ovat jääneet ensimmäisen rakennusprojektin jälkeen päivittämättä ja ylläpitämättä. Ongelmat saattavat näissä tapauksissa tulla yllätyksenä. 

Onneksi Advanialla on olemassa useita palveluita, jotka auttavat hallitsemaan Kubernetes-ympäristöjä: 

  • Advania Cloud Care -palvelu on nopein ja helpoin tapa suojata omat ympäristöt, jossa asiakas saa käyttöönsä tukikanavan ja voi helposti tehdä tukipyyntöjä tarpeen mukaan. Advanian asiantuntijat käsittelevät tukipyynnöt toimistotyöaikana priorisoiden niiden kiireellisyysjärjestyksen.  
  • Advania Managed Kubernetes Service -palvelulla Kubernetes-ympäristöjen hallinta on vaivatonta: suoritamme katselmoinnit, laadimme ohjeistukset ja huolehdimme ylläpidosta 24/7. Palvelu kattaa valvonnan, viankorjauksen, säännölliset klusteripäivitykset, ympäristön arvioinnin sekä asiantuntevan neuvonnan tarvittaessa joustavasti tuntiperusteisesti. Tarjoamme palvelua monilla eri tasoilla. Konsultointipalvelun avulla suunnittelemme uusia ympäristöjä ja integroimme tarvittavat lisäpalvelut. Kaikki ympäristöt toteutetaan tarvittaessa koodilla, joka tallennetaan versionhallintaan. 

Yhteenveto 

Kubernetes-palveluiden avulla perinteiset virtuaalikonetyökuormat voidaan suorittaa merkittävästi tehokkaammin sekä kustannus- että energianäkökulmasta. Sovellusten kehitysprosessia voidaan automatisoida syvällisemmin ja hyödyntää joustavampia kehitysmenetelmiä koodipohjaisina toimituksina. Kubernetes tarjoaa myös mahdollisuuden ajaa samoja sovelluksia lähes millä tahansa käyttöjärjestelmällä tai pilvipalvelulla. Vaikka ketteryys ja automaatio saavuttavat uuden tason, ammattitaitoisen tiimin läsnäolo Kubernetes-palveluiden ylläpidossa on edelleen välttämätöntä. Laajoissa ympäristöissä Infa as Code -menetelmien käyttöönotto on suositeltavaa. 

Mikäli organisaationne hyödyntää jo nyt Kubernetes-teknologiaa, mutta tietoturva, toteutus tai kustannukset arveluttavat, niin Advania Kubernetes Health Check -palvelun avulla voimme tarkastaa tilanteenne ja antaa suositukset, miten ympäristöä ja toimintaa tulisi kehittää.  

Kun Kubernetes-teknologia kiinnostaa ja haluatte arvioida sen soveltumista tuotantoteknologiaksi, Advania Kubernetes Pilot Engagement -pilottityöpajan kautta toteutamme pilottiympäristön yhteistyössä henkilöstönne kanssa vuorovaikutuksessa. 

 

Katso myös