7 parimat tava konteinerite kasutamiseks vastavalt Google'ile

Märge. tõlge: Algse artikli autor on Théo Chamley, Google'i pilvelahenduste arhitekt. Selles Google Cloudi ajaveebi postituses esitab ta kokkuvõtte oma ettevõtte üksikasjalikumast juhendist nimega "Konteinerite kasutamise parimad tavad" Selles kogusid Google'i eksperdid parimaid tavasid konteinerite käitamiseks Google Kubernetes Engine'i ja muu kasutamise kontekstis, puudutades paljusid teemasid: turvalisusest jälgimise ja logimiseni. Millised on Google'i hinnangul kõige olulisemad konteinerite tavad?

7 parimat tava konteinerite kasutamiseks vastavalt Google'ile

Kubernetes mootor (Kubernetese-põhine teenus konteinerrakenduste käitamiseks Google Cloudis – u. tõlge) on üks parimaid viise skaleerimist vajavate töökoormuste käitamiseks. Kubernetes tagab enamiku rakenduste tõrgeteta toimimise, kui need on konteineris. Kuid kui soovite, et teie rakendust oleks lihtne hallata ja soovite Kubernetese kõiki eeliseid kasutada, peate järgima parimaid tavasid. Need lihtsustavad rakenduse tööd, selle jälgimist ja silumist ning suurendavad ka turvalisust.

Selles artiklis käsitleme loendit asjadest, mida peaksite teadma ja tegema, et Kubernetes konteinereid tõhusalt käitada. Need, kes soovivad detailidesse süveneda, peaksid materjali läbi lugema Konteinerite kasutamise parimad tavad, ja pöörake tähelepanu ka meie varasem postitus konteinerite kokkupanemise kohta.

1. Kasutage natiivseid konteinerite logimise mehhanisme

Kui rakendus töötab Kubernetese klastris, pole logide jaoks palju vaja. Tsentraliseeritud logisüsteem on tõenäoliselt juba teie kasutatavasse klastris sisse ehitatud. Kubernetes Engine'i kasutamise korral vastutab see Stackdriveri logimine. (Märge. tõlge: Ja kui kasutate oma Kubernetese installi, soovitame meie avatud lähtekoodiga lahendust lähemalt uurida - palkmaja.) Hoidke oma elu lihtsana ja kasutage natiivseid konteinerite logimise mehhanisme. Kirjutage logid stdout ja stderr - need võetakse automaatselt vastu, salvestatakse ja indekseeritakse.

Soovi korral saab ka logisid kirjutada JSON-vormingus. See lähenemine muudab metaandmete lisamise neile lihtsaks. Ja koos nendega saab Stackdriver Logging neid metaandmeid kasutades logides otsida.

2. Veenduge, et konteinerid oleksid kodakondsuseta ja muutumatud

Et konteinerid Kubernetese klastris õigesti töötaksid, peavad need olema olekuta ja muutumatud. Kui need tingimused on täidetud, saab Kubernetes teha oma tööd, luues ja hävitades rakendusüksuseid, kui ja kus vaja.

Kodakondsuseta tähendab, et mis tahes olek (mis tahes liiki püsivad andmed) salvestatakse väljaspool konteinerit. Selleks saab sõltuvalt vajadustest kasutada erinevat tüüpi välismälu: Cloud Storage, Püsivad kettad, Redis, Pilv SQL või muud hallatavad andmebaasid. (Märge. tõlge: Lisateavet selle kohta leiate meie artiklist "Kubernetese operaatorid: kuidas käitada olekupõhiseid rakendusi".)

Muutumatu tähendab, et konteinerit selle eluea jooksul ei muudeta: uuendusi, parandusi, konfiguratsioonimuudatusi ei tehta. Kui teil on vaja rakenduse koodi värskendada või plaastrit rakendada, looge uus pilt ja juurutage see. Soovitatav on konteineri konfiguratsioon (kuulamisport, käituskeskkonna valikud jne) teisaldada väliselt - to saladused и ConfigMaps. Neid saab värskendada ilma uut konteineri kujutist koostamata. Torujuhtmete hõlpsaks loomiseks kujutise kokkupanekuga saate kasutada Pilve ehitamine. (Märge. tõlge: Nendel eesmärkidel kasutame avatud lähtekoodiga tööriista dapp.)

7 parimat tava konteinerite kasutamiseks vastavalt Google'ile
Näide juurutamise konfiguratsiooni värskendamisest Kubernetesis, kasutades konfiguratsioonina kaustadesse paigaldatud ConfigMapi

3. Vältige privilegeeritud konteinereid

Te ju ei käivita oma serverites rakendusi root kasutajana, eks? Kui ründaja satub rakendusse, saab ta juurjuurdepääsu. Samad kaalutlused kehtivad privilegeeritud konteinerite mittetöötamise kohta. Kui teil on vaja hostis sätteid muuta, saate määrata konteineri konkreetse võimeid kasutades valikut securityContext Kubernetesis. Kui teil on vaja muuta sysctls, Kubernetes on eraldi abstraktne selle jaoks. Üldiselt proovige sellest maksimumi võtta selles- ja külgkorvi konteinerid sarnaste privilegeeritud toimingute tegemiseks. Need ei pea olema sise- ega välisliikluse jaoks ligipääsetavad.

Kui haldate klastrit, saate kasutada Podi turvapoliitika privilegeeritud konteinerite kasutamise piirangute eest.

4. Vältige rootina töötamist

Privilegeeritud konteineritest on juba juttu olnud, kuid veelgi parem on, kui lisaks sellele ei käivitata konteineri sees rakendusi root kasutajana. Kui ründaja leiab koodi täitmist võimaldavas juurõigustega rakenduses kaughaavatavuse, misjärel saab ta veel tundmatu haavatavuse kaudu konteinerist lahkuda, omandab ta hostis juurõiguse.

Parim viis selle vältimiseks on mitte käivitada midagi rootina. Selleks saate kasutada käskkirja USER в Dockerfile või runAsUser Kubernetesis. Klastri administraator saab jõustamiskäitumist konfigureerida ka kasutades Podi turvapoliitika.

5. Muutke rakendus hõlpsasti jälgitavaks

Sarnaselt logimisega on jälgimine rakenduste haldamise lahutamatu osa. Kubernetese kogukonna populaarne jälgimislahendus on Prometheus - süsteem, mis tuvastab automaatselt jälgimist vajavad kaunad ja teenused. (Märge. tõlge: Vaata ka meie üksikasjalik aruanne jälgimise teemal Prometheuse ja Kubernetese abil.) Stackdriver on võimeline jälgima Kubernetese klastreid ja sisaldab rakenduste jälgimiseks oma Prometheuse versiooni.

7 parimat tava konteinerite kasutamiseks vastavalt Google'ile
Kubernetese armatuurlaud Stackdriveris

Prometheus eeldab, et rakendus edastab mõõdikud HTTP lõpp-punkti. Selle jaoks saadaval Prometheuse klienditeegid. Sama vormingut kasutavad ka muud tööriistad nagu Avatud loendus и Istio.

6. Tehke rakenduse tervislik seisund kättesaadavaks

Rakenduste haldamist tootmises aitab selle võime edastada oma olek kogu süsteemile. Kas rakendus töötab? Kas see on okei? Kas olete valmis liiklust vastu võtma? Kuidas ta käitub? Kõige tavalisem viis selle probleemi lahendamiseks on tervisekontrolli läbiviimine (tervisekontroll). Kubernetes on kahte tüüpi: elavuse ja valmisoleku sondid.

Elavduse proovimiseks (elujõu kontrollid) rakendusel peab olema HTTP lõpp-punkt, mis tagastab vastuse "200 OK", kui see töötab ja selle põhisõltuvused on täidetud. Valmisoleku sondeerimiseks (teenindusvalmiduse kontrollid) rakendusel peab olema teine ​​HTTP-otspunkt, mis tagastab vastuse "200 OK", kui rakendus on terves olekus, lähtestamisetapid on lõpule viidud ja ükski kehtiv päring ei põhjusta viga. Kubernetes suunab liikluse konteinerisse ainult siis, kui rakendus on nende kontrollide kohaselt valmis. Kaks lõpp-punkti saab liita, kui elujõulisuse ja valmisoleku olekute vahel pole vahet.

Lisateavet selle kohta saate lugeda Google'i arendajaadvokaadi Sandeep Dineshi seotud artiklist: "Kubernetese parimad tavad: tervisekontrollide seadistamine valmisoleku- ja elavussondidega'.

7. Valige hoolikalt pildi versioon

Enamik avalikke ja privaatseid pilte kasutab märgistamissüsteemi, mis sarnaneb artiklis kirjeldatule Konteinerite ehitamise parimad tavad. Kui pilt kasutab süsteemi lähedal semantiline versioonimine, on vaja arvestada märgistamise eripäradega. Näiteks silt latest võib liikuda sageli pildilt pildile – sellele ei saa loota, kui vajate etteaimatavaid ja korratavaid konstruktsioone ja installatsioone.

Saate kasutada silti X.Y.Z (need on peaaegu alati muutumatud), kuid sel juhul jälgige kõiki pildi plaastreid ja värskendusi. Kui teie kasutataval pildil on silt X.Y, see on hea valik kuldse keskmise jaoks. Selle valides saate automaatselt plaastrid ja samal ajal tuginete rakenduse stabiilsele versioonile.

PS tõlkijalt

Loe ka meie blogist:

Allikas: www.habr.com

Lisa kommentaar