7 pi bon pratik pou itilize kontenè dapre Google

Remak. trad.: Otè atik orijinal la se Théo Chamley, Achitek Google Cloud Solutions. Nan pòs sa a pou blog Google Cloud, li bay yon rezime gid plis detay konpayi li a, ki rele "Pi bon pratik pou opere kontenè" Nan li, ekspè Google kolekte pi bon pratik pou opere kontenè nan yon kontèks lè l sèvi avèk Google Kubernetes Engine ak plis ankò, manyen sou yon pakèt sijè: soti nan sekirite nan siveyans ak antre. Se konsa, ki pratik veso ki pi enpòtan yo dapre Google?

7 pi bon pratik pou itilize kontenè dapre Google

Kubernetes motè (Sèvis ki baze sou Kubernetes pou kouri aplikasyon nan kontenè sou Google Cloud - approx. tradiksyon) se youn nan pi bon fason yo kouri chaj travay ki bezwen echèl. Kubernetes pral asire fonksyone lis nan pifò aplikasyon yo si yo nan containerized. Men, si ou vle aplikasyon ou a fasil pou jere epi ou vle pwofite anpil avantaj de Kubernetes, ou bezwen swiv pi bon pratik. Yo pral senplifye operasyon an nan aplikasyon an, siveyans li yo ak debogaj, epi tou ogmante sekirite.

Nan atik sa a, nou pral ale nan yon lis bagay ou ta dwe konnen ak fè pou kouri kontenè yo efektivman sou Kubernetes. Moun ki vle ale pi fon nan detay yo ta dwe li materyèl la Pi bon pratik pou opere kontenè, epi tou peye atansyon sou nou an pòs pi bonè sou rasanble veso yo.

1. Sèvi ak mekanis anrejistreman veso natif natal

Si aplikasyon an ap kouri sou yon gwoup Kubernetes, pa bezwen anpil pou mòso bwa. Gen anpil chans pou yon sistèm santralize anrejistreman deja bati nan gwoup w ap itilize a. Nan ka itilize Kubernetes Engine, sa a responsab Stackdriver Logging. (Remak. trad.: Men, si ou itilize pwòp enstalasyon Kubernetes ou, nou rekòmande pou w gade pi pre solisyon Open Source nou an - loghouse.) Kenbe lavi ou senp epi sèvi ak mekanis pou antre veso natif natal. Ekri mòso bwa nan stdout ak stderr - yo pral otomatikman resevwa, sove ak endis.

Si ou vle, ou ka ekri tou mòso bwa fòma JSON. Apwòch sa a pral fè li fasil pou ajoute metadata yo. Epi avèk yo, Stackdriver Logging pral gen kapasite pou fè rechèch nan mòso bwa lè l sèvi avèk metadata sa a.

2. Asire w ke resipyan yo apatrid epi yo pa chanje

Pou resipyan yo fonksyone kòrèkteman nan yon gwoup Kubernetes, yo dwe apatrid ak imuiabl. Yon fwa kondisyon sa yo satisfè, Kubernetes ka fè travay li, kreye ak detwi antite aplikasyon lè ak kote sa nesesè.

Apatrid vle di ke nenpòt eta (done ki pèsistan nenpòt kalite) yo estoke deyò veso a. Pou sa, depann sou bezwen yo, diferan kalite depo ekstèn ka itilize: Cloud Depo, Disk ki pèsistan, Redis, Nwaj SQL oswa lòt baz done jere. (Remak. trad.: Li plis sou sa a nan atik nou an "Operatè pou Kubernetes: ki jan yo kouri aplikasyon pou eta".)

imuiabl vle di ke veso a pa pral modifye pandan lavi li: pa gen okenn mizajou, plak, chanjman konfigirasyon. Si w bezwen mete ajou kòd aplikasyon w lan oswa aplike yon patch, kreye yon nouvo imaj epi deplwaye li. Li rekòmande pou deplase konfigirasyon veso a (pò pou koute, opsyon anviwònman ègzekutabl, elatriye) deyò - nan Sekrè и ConfigMaps. Yo ka mete ajou san yo pa bezwen bati yon nouvo imaj veso. Pou fasil kreye tuyaux ak asanble imaj, ou ka itilize Cloud Bati. (Remak. trad.: Nou itilize yon zouti Open Source pou rezon sa yo dapp.)

7 pi bon pratik pou itilize kontenè dapre Google
Yon egzanp mete ajou konfigirasyon deplwaman an nan Kubernetes lè l sèvi avèk ConfigMap monte nan gous kòm yon konfigirasyon

3. Evite kontenè privilejye yo

Ou pa kouri aplikasyon kòm rasin sou serveurs ou yo, dwa? Si yon atakè antre nan aplikasyon an, li pral jwenn aksè rasin. Konsiderasyon yo menm aplike pou pa kouri kontenè privilejye yo. Si ou bezwen chanje paramèt sou lame a, ou ka bay veso a espesifik kapasite lè l sèvi avèk opsyon an securityContext nan Kubernetes. Si ou bezwen chanje sysctls, Kubernetes gen separe abstrè pou sa. An jeneral, eseye fè pi plis nan nan li- ak veso sidecar pou fè operasyon privilejye menm jan an. Yo pa bezwen aksesib a swa entèn oswa ekstèn trafik.

Si ou administre yon gwoup, ou ka itilize Règ Sekirite Pod pou restriksyon sou itilizasyon resipyan privilejye yo.

4. Evite kouri kòm rasin

Kontenè privilejye yo te deja diskite, men li pral menm pi bon si, anplis sa a, ou pa kouri aplikasyon andedan veso a kòm rasin. Si yon atakè jwenn yon vilnerabilite aleka nan yon aplikasyon ki gen dwa rasin ki pèmèt ekzekisyon kòd, apre sa li kapab kite veso a atravè yon vilnerabilite ki poko konnen, li pral jwenn rasin sou lame a.

Pi bon fason pou evite sa a se pa kouri anyen kòm rasin an premye. Pou fè sa, ou ka itilize direktiv la USER в Dockerfile oswa runAsUser nan Kubernetes. Administratè gwoup la kapab tou configured konpòtman anfòsman lè l sèvi avèk Règ Sekirite Pod.

5. Fè aplikasyon an fasil pou kontwole

Menm jan ak antre, siveyans se yon pati entegral nan jesyon aplikasyon an. Yon solisyon siveyans popilè nan kominote Kubernetes se Prometheus - yon sistèm ki otomatikman detekte gous ak sèvis ki mande siveyans. (Remak. trad.: Gade tou nou rapò detaye sou sijè siveyans lè l sèvi avèk Prometheus ak Kubernetes.) Stackdriver se kapab kontwole grap Kubernetes epi li gen ladan pwòp vèsyon li yo nan Prometheus pou siveyans aplikasyon an.

7 pi bon pratik pou itilize kontenè dapre Google
Kubernetes Dashboard sou Stackdriver

Prometheus espere aplikasyon an pou voye mezi nan pwen final HTTP. Disponib pou sa Bibliyotèk kliyan Prometheus. Se fòma a menm itilize pa lòt zouti tankou OpenCensus и Istio.

6. Fè eta sante app a disponib

Jesyon aplikasyon nan pwodiksyon ede pa kapasite li pou kominike eta li nan tout sistèm lan. Èske aplikasyon an ap kouri? Èske li oke? Èske w pare pou resevwa trafik? Ki jan li konpòte? Fason ki pi komen pou rezoud pwoblèm sa a se aplike chèk sante (chèk sante). Kubernetes gen de kalite: sond lavi ak preparasyon.

Pou sonde liveness (chèk vitalite) aplikasyon an dwe gen yon pwen final HTTP ki retounen yon repons "200 OK" si li fonksyonèl epi depandans debaz li yo satisfè. Pou sonde preparasyon pou (chèk preparasyon pou sèvis) aplikasyon an dwe gen yon lòt pwen final HTTP ki retounen yon repons "200 OK" si aplikasyon an nan yon eta an sante, etap inisyalizasyon yo te konplete epi nenpòt demann valab pa lakòz yon erè. Kubernetes pral sèlman dirije trafik nan veso a si aplikasyon an pare dapre chèk sa yo. De pwen final yo ka fizyone si pa gen okenn diferans ant eta vivan ak preparasyon.

Ou ka li plis sou sa a nan atik ki gen rapò ak Sandeep Dinesh, Developer Advocate nan Google: "Pi bon pratik Kubernetes: Mete kanpe chèk sante ak sond preparasyon pou ak lavi'.

7. Chwazi vèsyon imaj ou ak anpil atansyon

Pifò imaj piblik ak prive sèvi ak yon sistèm tagging ki sanble ak sa ki dekri nan Pi bon pratik pou bati kontenè. Si imaj la sèvi ak yon sistèm tou pre vèsyon semantik, li nesesè pran an kont spesifik yo nan balisage. Pou egzanp, tag latest ka deplase souvan soti nan imaj an imaj - pa ka konte sou si ou bezwen bati ak enstalasyon previzib ak repete.

Ou ka itilize tag la X.Y.Z (yo prèske toujou chanje), men nan ka sa a, kenbe tras tout plak ak mizajou nan imaj la. Si imaj w ap itilize a gen yon tag X.Y, sa a se yon bon opsyon pou vle di an lò. Lè w chwazi li, ou otomatikman resevwa plak epi an menm tan an konte sou vèsyon ki estab nan aplikasyon an.

PS soti nan tradiktè

Li tou sou blog nou an:

Sous: www.habr.com

Add nouvo kòmantè