7 paraugprakse konteineru lietošanai saskaņā ar Google

Piezīme. tulk.: oriģinālā raksta autors ir Théo Chamley, Google Cloud Solutions arhitekts. Šajā Google Cloud emuāra ziņojumā viņš sniedz kopsavilkumu par sava uzņēmuma detalizētāku rokasgrāmatu ar nosaukumu "Paraugprakse konteineru ekspluatācijai" Tajā Google eksperti apkopoja konteineru darbības paraugpraksi saistībā ar Google Kubernetes Engine un daudz ko citu, pieskaroties plašam tēmu lokam: no drošības līdz uzraudzībai un reģistrēšanai. Tātad, kāda ir vissvarīgākā konteineru prakse saskaņā ar Google?

7 paraugprakse konteineru lietošanai saskaņā ar Google

Kubernetes dzinējs (Uz Kubernetes balstīts pakalpojums konteinerizētu lietojumprogrammu palaišanai pakalpojumā Google Cloud — apm. tulkojums) ir viens no labākajiem veidiem, kā izpildīt darba slodzes, kurām nepieciešams mērogot. Kubernetes nodrošinās nevainojamu lielāko daļu lietojumprogrammu darbību, ja tās ir konteineros. Bet, ja vēlaties, lai jūsu lietojumprogramma būtu viegli pārvaldāma un vēlaties pilnībā izmantot Kubernetes sniegtās priekšrocības, jums ir jāievēro paraugprakse. Tie vienkāršos lietojumprogrammas darbību, tās uzraudzību un atkļūdošanu, kā arī palielinās drošību.

Šajā rakstā mēs apskatīsim sarakstu ar lietām, kas jums jāzina un jādara, lai Kubernetes efektīvi palaistu konteinerus. Tiem, kas vēlas iedziļināties detaļās, vajadzētu izlasīt materiālu Paraugprakse konteineru ekspluatācijai, kā arī pievērsiet uzmanību mūsu agrāks ieraksts par konteineru komplektēšanu.

1. Izmantojiet vietējos konteineru reģistrēšanas mehānismus

Ja lietojumprogramma darbojas Kubernetes klasterī, žurnāliem nav nepieciešams daudz. Iespējams, ka jūsu izmantotajā klasterī jau ir iebūvēta centralizēta reģistrēšanas sistēma. Kubernetes Engine lietošanas gadījumā tas ir atbildīgs Stackdriver reģistrēšana. (Piezīme. tulk.: Un, ja izmantojat savu Kubernetes instalāciju, iesakām tuvāk apskatīt mūsu atvērtā pirmkoda risinājumu - guļbūve.) Saglabājiet savu dzīvi vienkāršu un izmantojiet vietējos konteineru reģistrēšanas mehānismus. Ierakstiet žurnālus stdout un stderr — tie tiks automātiski saņemti, saglabāti un indeksēti.

Ja vēlaties, varat arī rakstīt žurnālus JSON formātā. Šī pieeja atvieglos metadatu pievienošanu tiem. Un ar tiem Stackdriver Logging varēs meklēt žurnālos, izmantojot šos metadatus.

2. Pārliecinieties, vai konteineri ir bezvalsts un nemainīgi

Lai konteineri Kubernetes klasterī darbotos pareizi, tiem jābūt bezvalstniekiem un nemainīgiem. Kad šie nosacījumi ir izpildīti, Kubernetes var veikt savu darbu, izveidojot un iznīcinot lietojumprogrammu entītijas, kad un kur tas ir nepieciešams.

Bezvalstnieks nozīmē, ka jebkurš stāvoklis (jebkura veida pastāvīgi dati) tiek glabāts ārpus konteinera. Šim nolūkam atkarībā no vajadzībām var izmantot dažāda veida ārējo atmiņu: Cloud Storage, Noturīgi diski, Redis, Mākoņa SQL vai citas pārvaldītas datu bāzes. (Piezīme. tulk.: Lasiet vairāk par to mūsu rakstā "Kubernetes operatori: kā palaist statusa lietojumprogrammas".)

Nemainīgs nozīmē, ka konteiners tā dzīves laikā netiks pārveidots: nav atjauninājumu, ielāpu, konfigurācijas izmaiņu. Ja nepieciešams atjaunināt lietojumprogrammas kodu vai lietot ielāpu, izveidojiet jaunu attēlu un izvietojiet to. Ieteicams konteinera konfigurāciju (klausīšanās ports, izpildlaika vides opcijas utt.) pārvietot ārēji - uz Noslēpumi и ConfigMaps. Tos var atjaunināt, neveidojot jaunu konteinera attēlu. Lai viegli izveidotu cauruļvadus ar attēla montāžu, varat izmantot Cloud Build. (Piezīme. tulk.: šiem nolūkiem mēs izmantojam atvērtā pirmkoda rīku dapp.)

7 paraugprakse konteineru lietošanai saskaņā ar Google
Piemērs izvietošanas konfigurācijas atjaunināšanai Kubernetes, izmantojot ConfigMap, kas uzstādīts podiņos kā konfigurāciju

3. Izvairieties no priviliģētiem konteineriem

Jūs savos serveros nepalaižat lietojumprogrammas kā root, vai ne? Ja uzbrucējs nokļūst lietojumprogrammā, viņš iegūs root piekļuvi. Tie paši apsvērumi attiecas uz priviliģēto konteineru nedarbināšanu. Ja jums ir jāmaina saimniekdatora iestatījumi, varat norādīt konkrētu konteineru iespējas izmantojot opciju securityContext Kubernetes pilsētā. Ja jums ir nepieciešams mainīt sysctls, Kubernetes ir atsevišķs abstrakts priekš šī. Kopumā mēģiniet maksimāli izmantot tajā- un blakusvāģu konteineri, lai veiktu līdzīgas priviliģētas darbības. Tiem nav jābūt pieejamiem ne iekšējai, ne ārējai satiksmei.

Ja administrējat kopu, varat izmantot Pod drošības politika par priviliģēto konteineru lietošanas ierobežojumiem.

4. Izvairieties darboties kā root

Priviliģētie konteineri jau ir apspriesti, taču būs vēl labāk, ja papildus tam jūs nepalaižat lietojumprogrammas konteinerā kā root. Ja uzbrucējs lietojumprogrammā ar saknes tiesībām atrod attālu ievainojamību, kas ļauj izpildīt kodu, pēc kuras viņš var atstāt konteineru, izmantojot vēl nezināmu ievainojamību, viņš iegūs resursdatora saknes tiesības.

Labākais veids, kā no tā izvairīties, ir vispirms neko nedarbināt kā root. Lai to izdarītu, varat izmantot direktīvu USER в Dockerfile vai runAsUser in Kubernetes. Klastera administrators var arī konfigurēt izpildes darbību, izmantojot Pod drošības politika.

5. Padariet lietojumprogrammu viegli pārskatāmu

Tāpat kā reģistrēšana, arī uzraudzība ir lietojumprogrammu pārvaldības neatņemama sastāvdaļa. Populārs uzraudzības risinājums Kubernetes kopienā ir Prometejs - sistēma, kas automātiski nosaka podi un pakalpojumus, kuriem nepieciešama uzraudzība. (Piezīme. tulk.: Skatiet arī mūsu detalizēts ziņojums par monitoringu, izmantojot Prometheus un Kubernetes.) Stackdriver spēj uzraudzīt Kubernetes klasterus un ietver savu Prometheus versiju lietojumprogrammu uzraudzībai.

7 paraugprakse konteineru lietošanai saskaņā ar Google
Kubernetes informācijas panelis vietnē Stackdriver

Prometheus sagaida, ka lietojumprogramma pārsūtīs metriku uz HTTP galapunktu. Pieejams šim nolūkam Prometheus klientu bibliotēkas. To pašu formātu izmanto citi rīki, piemēram OpenCensus и Istio.

6. Padariet pieejamu lietotnes veselības stāvokli

Lietojumprogrammu pārvaldību ražošanā palīdz tās spēja paziņot par savu stāvokli visai sistēmai. Vai lietojumprogramma darbojas? Vai tas ir labi? Vai esat gatavs saņemt trafiku? Kā viņš uzvedas? Visizplatītākais veids, kā atrisināt šo problēmu, ir veikt veselības pārbaudes (veselības pārbaudes). Kubernetes ir divu veidu: dzīvīguma un gatavības zondes.

Par dzīvīguma zondi (vitalitātes pārbaudes) lietojumprogrammai ir jābūt HTTP galapunktam, kas atgriež atbildi "200 OK", ja tā ir funkcionāla un tās pamata atkarības ir izpildītas. Gatavības zondei (servisa gatavības pārbaudes) lietojumprogrammai ir jābūt citam HTTP galapunktam, kas atgriež atbildi "200 OK", ja lietojumprogramma ir labā stāvoklī, inicializācijas darbības ir pabeigtas un neviens derīgs pieprasījums neizraisa kļūdu. Kubernetes novirzīs trafiku uz konteineru tikai tad, ja lietojumprogramma ir gatava saskaņā ar šīm pārbaudēm. Divus galapunktus var apvienot, ja nav atšķirības starp dzīvīguma un gatavības stāvokļiem.

Vairāk par to varat izlasīt saistītajā rakstā no Sandeep Dinesh, Google izstrādātāja advokāta: “Kubernetes labākā prakse: veselības pārbaužu iestatīšana, izmantojot gatavības un dzīvības zondes'.

7. Rūpīgi izvēlieties attēla versiju

Lielākajai daļai publisko un privāto attēlu tiek izmantota atzīmēšanas sistēma, kas ir līdzīga tai, kas aprakstīta rakstā Konteineru veidošanas paraugprakse. Ja attēlā tiek izmantota sistēma, kas ir tuvu semantiskā versiju veidošana, ir jāņem vērā iezīmēšanas specifika. Piemēram, tag latest var bieži pārvietoties no attēla uz citu — uz to nevar paļauties, ja jums ir nepieciešamas paredzamas un atkārtojamas konstrukcijas un instalācijas.

Varat izmantot tagu X.Y.Z (tie gandrīz vienmēr ir nemainīgi), taču šajā gadījumā sekojiet līdzi visiem attēla ielāpiem un atjauninājumiem. Ja jūsu izmantotajam attēlam ir atzīme X.Y, tas ir labs risinājums zelta vidusceļam. Izvēloties to, jūs automātiski saņemat ielāpus un vienlaikus paļaujaties uz stabilo aplikācijas versiju.

PS no tulka

Lasi arī mūsu emuārā:

Avots: www.habr.com

Pievieno komentāru