7 plej bonaj praktikoj por uzi ujojn laŭ Guglo

Notu. transl.: La verkinto de la originala artikolo estas Théo Chamley, Google Cloud Solutions Architect. En ĉi tiu afiŝo por la blogo de Google Cloud, li provizas resumon de la pli detala gvidilo de sia kompanio, nomata "Plej bonaj Praktikoj por Funkciado de Ujoj" En ĝi, Guglo-fakuloj kolektis plej bonajn praktikojn por funkciigado de ujoj en la kunteksto de uzado de la Google Kubernetes Engine kaj pli, tuŝante ampleksan gamon de temoj: de sekureco ĝis monitorado kaj registrado. Do kio estas la plej gravaj ujpraktikoj laŭ Guglo?

7 plej bonaj praktikoj por uzi ujojn laŭ Guglo

Kubernetes Motoro (Kubernetes-bazita servo por ruli konteneritajn aplikojn sur Google Cloud - ĉ. traduko) estas unu el la plej bonaj manieroj ruli laborkvantojn, kiuj bezonas skali. Kubernetoj certigos glatan funkciadon de la plej multaj aplikoj se ili estas konteneritaj. Sed se vi volas, ke via aplikaĵo estu facile administrebla kaj volas plene utiligi Kubernetes, vi devas sekvi plej bonajn praktikojn. Ili simpligos la funkciadon de la aplikaĵo, ĝian monitoradon kaj elpurigon, kaj ankaŭ pliigos sekurecon.

En ĉi tiu artikolo, ni trarigardos liston de aferoj, kiujn vi devus scii kaj fari por efike ruli ujojn en Kubernetes. Tiuj, kiuj volas enprofundiĝi en detalojn, legu la materialon Plej bonaj Praktikoj por Funkciado de Ujoj, kaj ankaŭ atentu nian pli frua afiŝo pri muntado de ujoj.

1. Uzu denaskajn ujajn registradmekanismojn

Se la aplikaĵo funkcias sur Kubernetes-areto, ne multe necesas por protokoloj. Alcentrigita registradsistemo verŝajne jam estas konstruita en la areton, kiun vi uzas. En la kazo de uzado de Kubernetes Engine, ĉi tio estas respondeca Stackdriver Logging. (Notu. transl.: Kaj se vi uzas vian propran instaladon de Kubernetes, ni rekomendas rigardi pli detale nian Malfermfontan solvon - ŝtipdomo.) Simpligu vian vivon kaj uzu denaskajn ujajn registradmekanismojn. Skribu protokolojn al stdout kaj stderr - ili estos aŭtomate ricevitaj, konservitaj kaj indeksitaj.

Se vi volas, vi ankaŭ povas skribi protokolojn al JSON formato. Ĉi tiu aliro faciligos aldoni metadatumojn al ili. Kaj kun ili, Stackdriver Logging havos la kapablon serĉi tra protokoloj uzante ĉi tiujn metadatumojn.

2. Certiĝu, ke ujoj estas sennaciaj kaj neŝanĝeblaj

Por ke ujoj funkciu ĝuste en Kubernetes-areto, ili devas esti sennaciaj kaj neŝanĝeblaj. Post kiam ĉi tiuj kondiĉoj estas plenumitaj, Kubernetes povas fari sian laboron, kreante kaj detruante aplikajn entojn kiam kaj kie necesas.

Senŝtata signifas, ke ajna stato (daŭraj datumoj de ajna speco) estas konservita ekster la ujo. Por tio, laŭ la bezonoj, malsamaj specoj de ekstera stokado povas esti uzataj: Cloud Storage, Daŭraj Diskoj, Redis, Nubo SQL aŭ aliaj administritaj datumbazoj. (Notu. transl.: Legu pli pri tio en nia artikolo "Funkciistoj por Kubernetes: kiel ruli ŝtatajn aplikojn".)

Neŝanĝebla signifas, ke la ujo ne estos modifita dum sia vivo: neniuj ĝisdatigoj, diakiloj, agordaj ŝanĝoj. Se vi bezonas ĝisdatigi vian aplikan kodon aŭ apliki flikilon, kreu novan bildon kaj disfaldu ĝin. Oni rekomendas movi la konteneran agordon (aŭskulta haveno, rultempaj medio-opcioj ktp.) eksteren - al sekretoj и ConfigMaps. Ili povas esti ĝisdatigitaj sen devi konstrui novan ujbildon. Por facile krei duktoj kun bilda asembleo, vi povas uzi Nuba Konstruo. (Notu. transl.: Ni uzas Malfermfontan ilon por ĉi tiuj celoj paĉjo.)

7 plej bonaj praktikoj por uzi ujojn laŭ Guglo
Ekzemplo de ĝisdatigo de la Deploja agordo en Kubernetes uzante ConfigMap muntitan en podoj kiel agordo

3. Evitu privilegiajn ujojn

Vi ne rulas aplikojn kiel radiko sur viaj serviloj, ĉu ne? Se atakanto eniras la aplikaĵon, li akiros radikan aliron. La samaj konsideroj validas por ne funkcii privilegiitajn ujojn. Se vi bezonas ŝanĝi agordojn sur la gastiganto, vi povas doni la ujon specifa Kapabloj uzante la opcion securityContext en Kubernetes. Se vi bezonas ŝanĝi sysctls, Kubernetes havas aparta abstraktaĵo por ĉi tio. Ĝenerale, provu profiti en ĝi- kaj kromĉaroj ujoj por plenumi similajn privilegiajn operaciojn. Ili ne bezonas esti alireblaj al interna aŭ ekstera trafiko.

Se vi administras areton, vi povas uzi Pod Sekureca Politiko por limigoj pri uzado de privilegiaj ujoj.

4. Evitu kuri kiel radiko

Privilegiaj ujoj jam estis diskutitaj, sed estos eĉ pli bone se, krom tio, vi ne rulu aplikojn ene de la ujo kiel radiko. Se atakanto trovas foran vundeblecon en aplikaĵo kun radikrajtoj, kiu permesas kodan ekzekuton, post kio li povas forlasi la ujon tra ankoraŭ nekonata vundebleco, li akiros radikon sur la gastiganto.

La plej bona maniero eviti ĉi tion estas unue ne funkcii kiel radiko. Por fari tion, vi povas uzi la direktivon USER в DockerfilerunAsUser en Kubernetes. La administranto de la grapo ankaŭ povas agordi la plenuman konduton uzante Pod Sekureca Politiko.

5. Faru la aplikaĵon facile kontroli

Kiel arbohakado, monitorado estas integra parto de aplika administrado. Populara monitora solvo en la komunumo Kubernetes estas Prometeo - sistemo, kiu aŭtomate detektas podojn kaj servojn, kiuj postulas monitoradon. (Notu. transl.: Vidu ankaŭ nian detala raporto pri la temo de monitorado uzante Prometheus kaj Kubernetes.) Stackdriver kapablas monitori Kubernetes-aretojn kaj inkluzivas sian propran version de Prometheus por monitorado de aplikaĵoj.

7 plej bonaj praktikoj por uzi ujojn laŭ Guglo
Kubernetes Dashboard sur Stackdriver

Prometheus atendas ke la aplikaĵo plusendas metrikojn al la HTTP-finpunkto. Disponebla por ĉi tio Prometheus-klientbibliotekoj. La sama formato estas uzata de aliaj iloj kiel Malferma Censo и Istio.

6. Disponigu la sanan staton de la programo

Aplikadministrado en produktado estas helpita de ĝia kapablo komuniki sian staton al la tuta sistemo. Ĉu la aplikaĵo funkcias? Ĉu estas bone? Ĉu vi pretas ricevi trafikon? Kiel li kondutas? La plej ofta maniero solvi ĉi tiun problemon estas efektivigi sankontrolojn (sankontroloj). Kubernetes havas du tipojn: sondoj pri viveco kaj preteco.

Por viveco-sondilo (viveckontroloj) la aplikaĵo devas havi HTTP-finpunkton kiu resendas "200 OK" respondon se ĝi estas funkcia kaj ĝiaj bazaj dependecoj estas kontentigitaj. Por preteca sondilo (kontroloj pri preteco de servo) la aplikaĵo devas havi alian HTTP-finpunkton, kiu resendas "200 OK" respondon se la aplikaĵo estas en sana stato, la komencaj paŝoj estis kompletigitaj kaj ajna valida peto ne rezultigas eraron. Kubernetes nur direktos trafikon al la ujo se la aplikaĵo estas preta laŭ ĉi tiuj kontroloj. Du finpunktoj povas esti kunfanditaj se ekzistas neniu diferenco inter la viveco kaj preteca statoj.

Vi povas legi pli pri tio en la rilata artikolo de Sandeep Dinesh, Developer Advocate de Google: "Kubernetes Plej bonaj Praktikoj: Agordi sankontrolojn kun pretecaj kaj vivecaj sondoj".

7. Elektu vian bildoversion zorge

Plej publikaj kaj privataj bildoj uzas etikedsistemon similan al tiu priskribita en Plej bonaj Praktikoj por Konstruado de Ujoj. Se la bildo uzas sistemon proksima al semantika versio, necesas konsideri la specifaĵojn de etikedado. Ekzemple, etikedo latest povas moviĝi ofte de bildo al bildo - ne povas esti fidinda se vi bezonas antaŭvideblajn kaj ripeteblajn konstruojn kaj instalaĵojn.

Vi povas uzi la etikedon X.Y.Z (ili estas preskaŭ ĉiam senŝanĝaj), sed en ĉi tiu kazo, konservu ĉiujn flikojn kaj ĝisdatigojn de la bildo. Se la bildo, kiun vi uzas, havas etikedon X.Y, ĉi tio estas bona elekto por la ora meznombro. Elektante ĝin, vi aŭtomate ricevas diakilojn kaj samtempe dependas de la stabila versio de la aplikaĵo.

PS de tradukisto

Legu ankaŭ en nia blogo:

fonto: www.habr.com

Aldoni komenton