Nota. transl.: L'autore di l'articulu originale hè Théo Chamley, Google Cloud Solutions Architect. In questu post per u blog di Google Cloud, furnisce un riassuntu di a guida più dettagliata di a so cumpagnia, chjamata "" In questu, l'esperti di Google anu recullatu e migliori pratiche per l'operazione di cuntenituri in u cuntestu di l'usu di u Google Kubernetes Engine è più, toccu una larga gamma di temi: da a sicurità à u monitoraghju è u logging. Allora chì sò e pratiche più impurtanti di u containeru secondu Google?

(Serviziu basatu in Kubernetes per l'esecuzione di applicazioni containerizzate in Google Cloud - ca. transl.) hè unu di i migliori modi per eseguisce carichi di travagliu chì anu bisognu di scala. assicurerà u funziunamentu lisu di a maiò parte di l'applicazioni si sò containerizzati. Ma se vulete chì a vostra applicazione sia faciule da gestisce è vulete prufittà pienamente di Kubernetes, avete bisognu di seguità e migliori pratiche. Semplificheranu u funziunamentu di l'applicazione, u so monitoraghju è u debugging, è ancu aumentà a sicurità.
In questu articulu, andemu per una lista di e cose chì duvete sapè è fà per eseguisce cuntenituri in modu efficace in Kubernetes. Quelli chì vulianu approfondisce i dettagli duveranu leghje u materiale , è ancu attentu à i nostri circa l'assemblea di cuntenituri.
1. Aduprà miccanismi di logging di cuntainer nativu
Se l'applicazione hè in esecuzione nantu à un cluster Kubernetes, ùn hè micca necessariu assai per i logs. Un sistema di logu centralizatu hè probabilmente digià custruitu in u cluster chì site aduprate. In u casu di utilizà Kubernetes Engine, questu hè rispunsevule . (Nota. transl.: È se utilizate a vostra propria installazione Kubernetes, ricumandemu di guardà più attente à a nostra soluzione Open Source - .) Mantene a vostra vita simplice è aduprate miccanismi nativi di logging di container. Scrivite logs à stdout è stderr - seranu automaticamente ricevuti, salvati è indexati.
Se vulete, pudete ancu scrive logs . Stu approcciu vi farà fàciule à aghjunghje metadata à elli. È cun elli, Stackdriver Logging avarà a capacità di ricercà à traversu logs utilizendu sta metadata.
2. Assicuratevi chì i cuntenituri sò stateless è immutable
Per chì i cuntenituri funzionanu currettamente in un cluster Kubernetes, devenu esse senza statu è immutable. Una volta queste cundizioni sò scontri, Kubernetes pò fà u so travagliu, creendu è distrughjendu entità di l'applicazione quandu è induve necessariu.
Apatridi significa chì ogni statu (dati persistenti di ogni tipu) hè guardatu fora di u cuntinuu. Per questu, sicondu i bisogni, ponu esse utilizati diversi tipi di almacenamentu esternu: , , , o altre basa di dati gestite. (Nota. transl.: Leghjite più nantu à questu in u nostru articulu "".)
Immutabile significa chì u cuntinuu ùn serà micca mudificatu durante a so vita: senza aghjurnamenti, patch, cambiamenti di cunfigurazione. Sè avete bisognu di aghjurnà u vostru codice di l'applicazione o applicà un patch, crea una nova maghjina è implementa. Hè cunsigliatu di spustà a cunfigurazione di u containeru (portu d'ascolta, opzioni di l'ambiente di runtime, etc.) esternamente - à и . Puderanu esse aghjurnati senza avè bisognu di custruisce una nova maghjina di cuntainer. Per creà facilmente pipelines cù l'assemblea di l'imaghjini, pudete aduprà . (Nota. transl.: Usemu un strumentu Open Source per questi scopi .)

Un esempiu di aghjurnà a cunfigurazione di implementazione in Kubernetes usendu ConfigMap muntatu in pods cum'è cunfigurazione
3. Evite cuntenituri privilegiati
Ùn eseguite micca l'applicazioni cum'è root in i vostri servitori, nò? Se un attaccu entra in l'appiecazione, uttene accessu à a radica. E stesse considerazioni s'applicanu à ùn eseguisce cuntenituri privilegiati. Sè avete bisognu di cambià i paràmetri nantu à l'ospite, pudete dà u cuntinuu specificu capacità usendu l'opzione in Kubernetes. Sè avete bisognu di cambià sysctls, Kubernetes hà per questu. In generale, pruvate à fà u più è cuntenituri sidecar per fà operazioni privilegiate simili. Ùn deve micca esse accessibile à u trafficu internu o esternu.
Se amministra un cluster, pudete aduprà per restrizioni à l'usu di cuntenituri privilegiati.
4. Evitari corsa cum'è root
I cuntenituri privilegiati sò digià discututi, ma serà ancu megliu se, in più di questu, ùn eseguite micca applicazioni in u cuntinuu cum'è root. Se un attaccu trova una vulnerabilità remota in una applicazione cù diritti di root chì permette l'esekzione di codice, dopu à quale ellu hè capaci di lascià u cuntinuu attraversu una vulnerabilità ancu scunnisciuta, guadagnà a radica in l'ospite.
U megliu modu per evità questu hè di ùn eseguisce nunda cum'è root in u primu locu. Per fà questu, pudete aduprà a direttiva USER в Dockerfile o runAsUser in Kubernetes. L'amministratore di u cluster pò ancu cunfigurà u cumpurtamentu di l'infurzazioni utilizendu .
5. Fate l 'applicazzioni facile à monitorà
Cum'è u logu, u monitoraghju hè una parte integrante di a gestione di l'applicazioni. Una soluzione di monitoraghju populari in a cumunità Kubernetes hè - un sistema chì rileva automaticamente pods è servizii chì necessitanu monitoraghju. (Nota. transl.: Vede ancu i nostri nantu à u tema di u monitoraghju cù Prometheus è Kubernetes.) hè capace di monitorà i cluster Kubernetes è include a so propria versione di Prometheus per u monitoraghju di l'applicazioni.

Kubernetes Dashboard nantu à Stackdriver
Prometheus aspetta chì l'applicazione trasmette metriche à l'endpoint HTTP. Disponibile per questu . U listessu furmatu hè usatu da altri arnesi cum'è и .
6. Fate u statu di salute di l 'app disponibile
A gestione di l'applicazioni in a produzzione hè aiutata da a so capacità di cumunicà u so statu à tuttu u sistema. L'applicazione funziona? Hè bè? Sò prontu à riceve u trafficu? Cumu si cumporta ? U modu più cumuni per risolve stu prublema hè di implementà cuntrolli di salute (Controlli di salute). Kubernetes hà dui tipi: .
Per a sonda di vivacità (cuntrolli di vitalità) l'applicazione deve avè un endpoint HTTP chì torna una risposta "200 OK" s'ellu hè funziunale è e so dipendenze basi sò soddisfatte. Per sonda di prontezza (verificazioni di prontezza di serviziu) l'applicazione deve avè un altru endpoint HTTP chì torna una risposta "200 OK" se l'applicazione hè in un statu sanu, i passi di inizializazione sò stati cumpletati è ogni dumanda valida ùn hà micca risultatu in un errore. Kubernetes solu indirizzà u trafficu à u containeru se l'applicazione hè pronta secondu questi cuntrolli. Dui punti finali ponu esse uniti s'ellu ùn ci hè micca differenza trà i stati di vita è di prontezza.
Pudete leghje più nantu à questu in l'articulu cunnessu da Sandeep Dinesh, Developer Advocate da Google: "».
7. Sceglite a vostra versione imagine cun cura
A maiò parte di l'imaghjini publichi è privati utilizanu un sistema di tagging simile à quellu descrittu in . Se l'imaghjini usa un sistema vicinu à , hè necessariu di piglià in contu i specifichi di tagging. Per esempiu, tag latest pò passà spessu da l'imaghjini à l'imaghjini - ùn pò micca esse affidatu se avete bisognu di custruzzioni è installazioni prevedibili è ripetibili.
Pudete aduprà u tag X.Y.Z (sò quasi sempre invariati), ma in questu casu, seguite tutti i patch è l'aghjurnamenti di l'imaghjini. Se l'imaghjini chì utilizate hà una tag X.Y, Questa hè una bona opzione per u mediu d'oru. Sceltendu, riceve automaticamente patch è à u stessu tempu s'appoghjanu nantu à a versione stabile di l'applicazione.
PS da u traduttore
Leghjite puru nant'à u nostru blog:
- «";
- «";
- «";
- «» (recensione è video rapportu);
- «» (recensione è video rapportu);
- «» (recensione è video rapportu);
- «» (recensione è video rapportu);
- «».
Source: www.habr.com
