Googlen 7 konttien parasta käytäntöä

Huomautus. käännös: Alkuperäisen artikkelin kirjoittaja on Théo Chamley, Google Cloud Solutions -arkkitehti. Tässä Google Cloud -blogin viestissä hän tarjoaa yhteenvedon yrityksensä yksityiskohtaisemmasta oppaasta nimeltä "Parhaat käytännöt säiliöiden käyttöön" Siihen Googlen asiantuntijat keräsivät parhaita käytäntöjä säilöjen käyttämisestä Google Kubernetes Enginen ja muiden toimintojen yhteydessä, ja ne käsittelivät monenlaisia ​​aiheita: turvallisuudesta valvontaan ja kirjaamiseen. Mitkä ovat Googlen tärkeimmät konttikäytännöt?

Googlen 7 konttien parasta käytäntöä

Kubernetes -moottori (Kubernetes-pohjainen palvelu konttisovellusten suorittamiseen Google Cloudissa - noin käännös) on yksi parhaista tavoista suorittaa skaalautuvia työkuormia. Kubernetes varmistaa useimpien sovellusten moitteettoman toiminnan, jos ne on säiliöissä. Mutta jos haluat, että sovelluksesi on helppo hallita ja haluat saada täyden hyödyn Kubernetesista, sinun on noudatettava parhaita käytäntöjä. Ne yksinkertaistavat sovelluksen toimintaa, sen valvontaa ja virheenkorjausta sekä lisäävät turvallisuutta.

Tässä artikkelissa käymme läpi luettelon asioista, jotka sinun pitäisi tietää ja tehdä, jotta voit käyttää säilöjä tehokkaasti Kubernetesissa. Niiden, jotka haluavat mennä syvemmälle yksityiskohtiin, kannattaa lukea materiaali Parhaat käytännöt säiliöiden käyttöön, ja kiinnitä myös huomiota meidän aikaisempi postaus konttien kokoamisesta.

1. Käytä alkuperäisiä säilön kirjausmekanismeja

Jos sovellus on käynnissä Kubernetes-klusterissa, lokeja ei tarvita paljon. Keskitetty lokijärjestelmä on todennäköisesti jo sisäänrakennettu käyttämääsi klusteriin. Kubernetes Enginen käytön tapauksessa tämä on vastuussa Stackdriver-kirjaus. (Huomautus. käännös: Ja jos käytät omaa Kubernetes-asennustasi, suosittelemme tutustumaan tarkemmin avoimen lähdekoodin ratkaisuumme - hirsimökki.) Pidä elämäsi yksinkertaisena ja käytä alkuperäisiä kontin kirjausmekanismeja. Kirjoita lokit stdout- ja stderr-tiedostoihin - ne vastaanotetaan, tallennetaan ja indeksoidaan automaattisesti.

Halutessasi voit myös kirjoittaa lokeja JSON-muoto. Tämä lähestymistapa helpottaa metatietojen lisäämistä niihin. Ja niiden avulla Stackdriver Logging pystyy hakemaan lokeista näiden metatietojen avulla.

2. Varmista, että säiliöt ovat valtiottomia ja muuttumattomia

Jotta säilöt toimivat oikein Kubernetes-klusterissa, niiden on oltava tilattomia ja muuttumattomia. Kun nämä ehdot täyttyvät, Kubernetes voi tehdä työnsä ja luoda ja tuhota sovelluskokonaisuuksia milloin ja missä sitä tarvitaan.

kansalaisuudeton tarkoittaa, että mikä tahansa tila (kaikenlaiset pysyvät tiedot) on tallennettu säilön ulkopuolelle. Tätä varten voidaan käyttää erityyppisiä ulkoisia tallennusvälineitä tarpeista riippuen: Cloud Storage, Pysyvät levyt, Redis, Pilvinen SQL tai muut hallitut tietokannat. (Huomautus. käännös: Lue lisää tästä artikkelistamme "Operaattorit Kubernetesille: kuinka ajaa tilallisia sovelluksia".)

Muuttumaton tarkoittaa, että säilöä ei muokata sen käyttöiän aikana: ei päivityksiä, korjauksia, konfiguraatiomuutoksia. Jos sinun on päivitettävä sovelluskoodi tai asennettava korjaustiedosto, luo uusi näköistiedosto ja ota se käyttöön. On suositeltavaa siirtää säilön kokoonpano (kuunteluportti, ajonaikaisen ympäristön asetukset jne.) ulkoisesti - kohteeseen Secrets и ConfigMaps. Ne voidaan päivittää ilman, että tarvitsee rakentaa uutta säilökuvaa. Voit helposti luoda liukuhihnat kuvakokoonpanolla käyttämällä Pilvirakennus. (Huomautus. käännös: Käytämme avoimen lähdekoodin työkalua näihin tarkoituksiin DAPP.)

Googlen 7 konttien parasta käytäntöä
Esimerkki käyttöönottomäärityksen päivittämisestä Kubernetesissa käyttämällä kokoonpanona poddeihin asennettua ConfigMapia

3. Vältä etuoikeutettuja säiliöitä

Et käytä sovelluksia pääkäyttäjänä palvelimillasi, vai mitä? Jos hyökkääjä pääsee sovellukseen, hän saa pääkäyttäjän oikeudet. Samat seikat koskevat etuoikeutettujen säilöjen käyttämättä jättämistä. Jos sinun on muutettava isännän asetuksia, voit määrittää säilökohtaisen kyvyt käyttämällä vaihtoehtoa securityContext Kubernetesissa. Jos sinun on vaihdettava sysctls, Kubernetes on erillinen abstrakti tätä varten. Yleensä yritä saada kaikki irti sen sisällä- ja sivuvaunukontteja vastaavien etuoikeutettujen toimintojen suorittamiseen. Niiden ei tarvitse olla sisäisen tai ulkoisen liikenteen ulottuvilla.

Jos hallinnoit klusteria, voit käyttää Pod-turvakäytäntö etuoikeutettujen säiliöiden käytön rajoituksista.

4. Vältä ajamista pääkäyttäjänä

Etuoikeutetuista säilöistä on jo keskusteltu, mutta on vielä parempi, jos et tämän lisäksi suorita sovelluksia kontin sisällä pääkäyttäjänä. Jos hyökkääjä löytää etähaavoittuvuuden sovelluksesta, jolla on pääkäyttäjän oikeudet ja joka sallii koodin suorittamisen, minkä jälkeen hän voi poistua säilöstä vielä tuntemattoman haavoittuvuuden kautta, hän saa pääkäyttäjän oikeudet isäntään.

Paras tapa välttää tämä on olla suorittamatta mitään pääkäyttäjänä. Voit tehdä tämän käyttämällä direktiiviä USER в Dockerfile tai runAsUser Kubernetesissa. Klusterin järjestelmänvalvoja voi myös määrittää valvontakäyttäytymisen käyttämällä Pod-turvakäytäntö.

5. Tee sovelluksesta helppo seurata

Kuten kirjaaminen, seuranta on olennainen osa sovellusten hallintaa. Suosittu seurantaratkaisu Kubernetes-yhteisössä on Prometheus - järjestelmä, joka tunnistaa automaattisesti valvontaa vaativat podit ja palvelut. (Huomautus. käännös: Katso myös meidän yksityiskohtainen raportti Aiheesta seuranta Prometheuksen ja Kubernetesin avulla.) Stackdriver pystyy valvomaan Kubernetes-klustereita ja sisältää oman versionsa Prometheuksesta sovellusten valvontaa varten.

Googlen 7 konttien parasta käytäntöä
Kubernetes Dashboard Stackdriverissä

Prometheus odottaa sovelluksen välittävän mittareita HTTP-päätepisteeseen. Saatavilla tähän Prometheus-asiakaskirjastot. Samaa muotoa käyttävät muut työkalut, kuten OpenCensus и Sama.

6. Aseta sovelluksen terveydentila saataville

Sovellusten hallintaa tuotannossa auttaa sen kyky viestiä tilastaan ​​koko järjestelmälle. Onko sovellus käynnissä? Onko se ok? Oletko valmis vastaanottamaan liikennettä? Kuinka hän käyttäytyy? Yleisin tapa ratkaista tämä ongelma on suorittaa terveystarkastukset (terveystarkastukset). Kubernetesilla on kaksi tyyppiä: elävyyttä ja valmiutta mittaavat.

Elävyyden mittaamiseen (elinvoimatarkastukset) sovelluksella on oltava HTTP-päätepiste, joka palauttaa "200 OK" -vastauksen, jos se toimii ja sen perusriippuvuudet täyttyvät. Valmiusmittaukseen (huoltovalmiustarkastukset) sovelluksella on oltava toinen HTTP-päätepiste, joka palauttaa "200 OK" -vastauksen, jos sovellus on kunnossa, alustusvaiheet on suoritettu ja mikään kelvollinen pyyntö ei aiheuta virhettä. Kubernetes reitittää liikenteen säilöön vain, jos sovellus on valmis näiden tarkistusten mukaan. Kaksi päätepistettä voidaan yhdistää, jos elävyys- ja valmiustilojen välillä ei ole eroa.

Voit lukea tästä lisää vastaavasta artikkelista Sandeep Dineshiltä, ​​Googlen kehittäjäedustajalta: "Kubernetesin parhaat käytännöt: Terveystarkastusten määrittäminen valmius- ja elävyysantureilla'.

7. Valitse kuvaversiosi huolellisesti

Useimmissa julkisissa ja yksityisissä kuvissa käytetään samanlaista merkintäjärjestelmää kuin kohdassa kuvattu Parhaat käytännöt konttien rakentamiseen. Jos kuva käyttää järjestelmää lähellä semanttinen versiointi, on tarpeen ottaa huomioon merkitsemisen erityispiirteet. Esimerkiksi tag latest voi liikkua usein kuvasta toiseen - siihen ei voi luottaa, jos tarvitset ennakoitavia ja toistettavia rakennelmia ja asennuksia.

Voit käyttää tunnistetta X.Y.Z (ne ovat melkein aina ennallaan), mutta tässä tapauksessa pidä kirjaa kaikista kuvan korjauksista ja päivityksistä. Jos käyttämässäsi kuvassa on tunniste X.Y, tämä on hyvä vaihtoehto kultaiselle keskiviivalle. Valitsemalla sen saat automaattisesti korjaustiedostoja ja luotat samalla sovelluksen vakaaseen versioon.

PS kääntäjältä

Lue myös blogistamme:

Lähde: will.com

Lisää kommentti