Tarvitsetko tutkimukseesi palvelimen? Kokeile OpenShift-konttipalvelua!

Virtuaalipalvelimet ovat olleet yliopistolla pitkään käytössä. Niiden rinnalle on tullut uusi kevytvirtualisointi, eli kontti. Viime syksynä yliopistolla otettiin tuotantokäyttöön avoimeen lähdekoodiin pohjautuva OpenShift-konttipalvelu, joka on nyt yliopistolaisten käytössä. Tietotekniikkakeskuksen asiantuntija Ronja Koistinen kertoo artikkelissaan, mistä oikein on kyse ja millaisiin tarpeisiin konttipalvelu soveltuu.

Palvelinteknologia elää koko IT-alan tavoin jatkuvassa muutoksessa. Viimeisen 20 vuoden johtavana trendinä on ollut tietokoneresurssien jakaminen osiin yhä dynaamisemmin ja monipuolisemmin. Avainsana tässä kehityksessä on virtualisointi.

Termi palvelin ei enää useinkaan ole tarkoittanut fyysistä konesalissa hurisevaa tietokonetta. Palvelin on olennaisimmiltaan loihtimansa abstrakti maailma – käyttöjärjestelmän, muistia, suorittimia ja rajapintoja tarjoava ohjelmistollinen ympäristö. Käyttäjän näkökulmasta on yleensä melko yhdentekevää, onko kyseessä oikea fyysinen palvelin vai ainoastaan tietokoneen haamu, virtuaalipalvelin.

Virtuaalipalvelimet ovat olleet yliopistolla käytössä jo pitkään. Kun yliopiston projektissa tai ryhmässä on tarvittu palvelin, tietotekniikkakeskuksen palvelinylläpito on likimain nappia painamalla lohkaissut pyytäjälle pienen virtuaalisen siivun suuresta fyysisten resurssien kakusta. Yhdellä fyysisellä palvelimella voidaan ajaa rinnakkain useita virtuaalisia palvelimia, joilla kullakin on oma käyttöjärjestelmänsä, käyttäjänsä, asetuksensa, levytilansa, IP-osoitteensa ja muut asetukset.

Mikä ihmeen kontti?

Virtualisoinnin periaatteet ovat viime vuosikymmenellä kokeneet murroksen, ja perinteisen virtuaalikoneen rinnalle on noussut niin sanottu kevytvirtualisointi eli kontti (container). Virtuaalipalvelin on usein tarpeettoman raskas kokonaisuus, sillä siinä toteutetaan kokonainen käyttöjärjestelmä jokaiselle aidatulle ohjelmistokokonaisuudelle. Resursseja menee hukkaan, sillä jokaisella palvelimella on tällöin oma kopionsa Linux-järjestelmäytimestä. Jos jokaisella virtuaaliympäristöllä on oma, muiden ympäristöjen kanssa identtinen ytimensä, eikö voitaisi pärjätä vain yhdellä ytimellä? Konttien avulla voidaan!

Kontissa ei ole mitään ylimääräistä, ainoastaan sovelluskehittäjän hyötykuormaohjelma sekä sen tarvitsemat riippuvuudet. Säästöä tulee jo levytilan määrässäkin. Perinteinen virtuaalipalvelin vie helposti kymmeniä gigatavuja tilaa, kun yksi konttikuva on tyypillisesti vain joitain satoja, ellei kymmeniä megatavuja. Linux-ydintä ja monia muita yleiskäyttöisen käyttöjärjestelmän osia ei oteta mukaan konttiin, sillä ne ovat muualla.

Konttien parhaita puolia ovat standardointi ja uhrattavuus

Kontti-termi on varsin nerokas kielikuva – sillä viitataan valtamerikontteihin. Ne ovat standardikokoisia yksiköitä, jotka aikoinaan mullistivat koko logistiikka-alan. Rahtaajien ei tarvitse välittää mitään kuorman sisällöstä, vaan riittää, että he laittavat kontit pinoihin ja nostavat ankkurin.

Samaan tapaan standardiformaatti Linux-kevytvirtualisoinnissa takaa sen, että mikä tahansa konttimuotoon paketoitu ohjelmisto toimii missä tahansa kontteja ajavassa palvelinympäristössä. Käyttäjän ei tarvitse välittää Linux-jakelun versiosta, koodikirjastojen versioista tai muusta ylimääräisestä, koska kaikki tarvittava on kontissa mukana.

Standardiformaatti Linux-kevytvirtualisoinnissa takaa sen, että mikä tahansa konttimuotoon paketoitu ohjelmisto toimii missä tahansa kontteja ajavassa palvelinympäristössä.

Konttien standardimuotoisuuden etuihin lukeutuvat myös niiden kertakäyttöisyys ja pienuus. Aiemmin palvelimelle täytyi asentaa ohjelmisto yksityiskohtaisten ohjeiden mukaan, viilata asetustiedostoja, virittää tietokantayhteyksiä ja tehdä paljon muuta ”käsityötä”. Konttiin ei sen sijaan enää tuotantoympäristössä tehdä mitään muutoksia. Kontti avataan pakettitiedostostaan (container image) ja käynnistetään, eikä sen sisältämään ohjelmistoon tämän jälkeen kajota ajon aikana. Versiopäivitys tehdään heittämällä vanha kontti pois ja käynnistämällä uudesta paketista toinen tilalle. Yliheittoon ei tarvita lainkaan käsityötä.

Konttien parhaita puolia onkin eräänlainen datahygienia. Ohjelmiston versio, asetukset, ajoympäristö ja muu tila ovat aina tarkkaan tiedossa. Kontin sisältämä ohjelmisto kaikkine riippuvuuksineen on aina pakettitiedostossa, ja kaikki kokonaisuuteen liittyvä metatieto taas tekstitiedostoissa versionhallinnassa.

Kontteja hallinnoidaan orkestraattorilla

Monet konttivirtualisoinnin työkalut ja apuvälineet on niin ikään nimetty meriteeman mukaisesti. Tärkein väline konteilla rakennettujen järjestelmien hallinnointiin eli orkestrointiin on nimeltään Kubernetes. Sana on kreikkaa (κυβερνήτης) ja tarkoittaa muun muassa luotsia, kapteenia tai navigoijaa. Etymologisesti läheltä liippavia sanoja ovat esimerkiksi kyberneettinen ja kuvernööri.

Useasta kontista, niiden välisestä verkkoliikenteestä, kontteihin liitettävistä tallennustiloista, palomuureista ynnä muusta syntyy helposti ylläpitäjälle paljon puuhaa, jota tässä yhteydessä kutsutaan orkestroinniksi. Viimeisen vuosikymmenen aikana syntyi ja kuoli paljon kilpailevia tuotteita automatisoimaan ja jäsentämään konttien orkestrointia, ja voittajaksi näyttää selviytyneen Kubernetes-niminen avoimen lähdekoodin tuote.

Konttien pienuus ja yksinkertaisuus yhdistettynä orkestraattorin tehokkaisiin järjestelyominaisuuksiin mahdollistaa helpon skaalautuvuuden. Kun yksi kontti hoitaa palvelun kokonaisuudesta itsenäisesti oman osuutensa, koko palvelun kapasiteettia on helppo lisätä käynnistämällä lisää kontteja. Orkestraattori voidaan jopa virittää tarkkailemaan kuorman nousuja ja laskuja automaattisesti, sekä reagoimaan reaaliaikaisesti tarpeeseen käynnistämällä ja sulkemalla kontteja itsekseen – tietysti ylläpitäjän määrittämissä resurssirajoissa. Samaten kuormantasaus ja vikasietoisuus on helppoa toteuttaa konteilla ja osaavasti hyödynnetyllä orkestraattorilla.

Konttien pienuus ja yksinkertaisuus yhdistettynä orkestraattorin tehokkaisiin järjestelyominaisuuksiin mahdollistaa helpon skaalautuvuuden. Kun yksi kontti hoitaa palvelun kokonaisuudesta itsenäisesti oman osuutensa, koko palvelun kapasiteettia on helppo lisätä käynnistämällä lisää kontteja.

Yliopiston konttiratkaisu on keskitetty Red Hat OpenShift

Yliopisto on suuri, monia toisiinsa liittymättömiä ryhmiä sisältävä organisaatio, eikä Kubernetes sellaisenaan riittänyt tarpeisiimme. Alustalle on voitava kirjautua yliopiston olemassa olevilla käyttäjätunnuksilla, eivätkä eri tiimit saa nähdä tai varsinkaan sotkea toistensa projekteja järjestelmän sisällä. Tähän pelkkä Kubernetes ei riitä.

Siispä tarvitsimme jotakin järeämpää ja valitsimme omaksi orkestrointiratkaisuksemme Red Hat OpenShiftin. Sen pohjana on avoimen lähdekoodin Kubernetes, jonka lisukkeiksi on rakennettu runsaasti lisätoiminnallisuutta, kuten tuki useille tiimeille, monipuolinen pääsynhallinta, automaattiset tietoturvahälytykset ja paljon muita laajennuksia.

Tietotekniikkakeskus työskenteli uuden palvelun parissa uutterasti koronaviruspandemian asettamista haasteista huolimatta, ja uusi OpenShift-pohjainen konttialusta saatiin tuotantokäyttöön syksyllä 2020. Talven aikana kokemusta ylläpidosta ja käyttäjäneuvonnasta on saatu paljon, ja toivotammekin lämpimästi lisää yliopistolaisia tervetulleiksi käyttämään uutta palvelua!

Red Hat OpenShiftin pohjana on avoimen lähdekoodin Kubernetes, jonka lisukkeiksi on rakennettu runsaasti lisätoiminnallisuutta, kuten tuki useille tiimeille, monipuolinen pääsynhallinta, automaattiset tietoturvahälytykset ja paljon muita laajennuksia.

Mihin konttipalvelua voi käyttää?

Konttiympäristössä voi ajaa periaatteessa mitä tahansa Linux-pohjaista palvelua, mutta erityisen hyvin se soveltuu mikropalveluille. Siis sellaisille järjestelmille, jotka on jo pilkottu useampaan pieneen, enemmän tai vähemmän itsenäiseen osaan, joista kukin hoitaa yhtä toimintoa. Toisaalta koko järjestelmää ei tarvitse kerralla muuntaa konteiksi, vaan työn voi aloittaa jostakin osakokonaisuudesta.

Olemme tietotekniikkakeskuksen verkkopalvelut-ryhmässä aloittaneet työn pienistä, helposti hahmotettavista komponenteista. Esimerkiksi eräitä Flamma-intranetin käyttämiä rajapintoja on siirretty OpenShift-konteiksi. Alkuvuodesta siirsimme osoitteessa mot.it.helsinki.fi palvelevan MOT-sanakirjapalvelun OpenShift-kontiksi. Kyseessä on hyvin yksinkertainen käänteinen välityspalvelin, joka yksinkertaisesti varmistaa, että käyttäjällä on voimassaoleva tunnus yliopistolle. Kirjautumisen jälkeen liikenne välitetään eteenpäin Kielikone Oy:lle, joka tuottaa yliopistolaisille varsinaisen sanakirjapalvelun omalla palvelimellaan.

Aiemmin mot.it.helsinki.fi oli kokonainen oma virtuaalikoneensa, jolla ei ollut mitään muita tehtäviä. Konttiratkaisun avulla yksinkertaistimme palvelun ylläpitoa ja kevensimme resurssitarvetta. Pääsimme samalla eroon myös huoltokatkoista, sillä OpenShift mahdollistaa palvelun vikasietoisen kahdentamisen vaivattomasti.

Konttityyppinen työskentely tukee hyvin myös ketterää ohjelmistokehittämistä. OpenShiftin avulla projekti voidaan tehokkaasti kytkeä monenlaisiin automaattisiin integraatio- ja testaustyökaluihin. Versiopäivityksistä ja julkaisemisesta saa sujuvaa hyödyntämällä esimerkiksi Githubin tai yliopiston Gitlabin (version.helsinki.fi) eCI/CD-työkaluja.

Tule kokeilemaan konttia!

Sytyttikö OpenShift? Tutustu konttipalveluun tarkemmin ja tule juttelemaan! Yliopiston OpenShiftin ylläpito sekä joukko käyttäjiä ovat tavattavissa Slackissä #kontit-kanavalla. Voit ottaa meihin yhteyttä myös sähköpostitse: grp-openshift-owner@helsinki.fi.

Kerro meille tarpeistasi ja haaveistasi, niin mietitään yhdessä, olisiko OpenShift tiimillesi hyvä suunta edetä. Kuulemme mielellämme erilaisista hankkeista, jotta opimme itsekin uutta siitä, mihin OpenShift sopisi ja miten voimme kehittää palveluamme vastaamaan paremmin yliopistolaisten tarpeita!

Lue myös OpenShift-konttialustan yleiskuvaus Helsingin yliopiston wiki-sivulta.


Ronja Koistinen työskentelee Helsingin yliopiston tietotekniikkakeskuksen Verkkopalvelut-ryhmässä tietotekniikka-asiantuntijana.