A Google 7 konténer bevált gyakorlata

Jegyzet. ford.: Az eredeti cikk szerzője Théo Chamley, a Google Cloud Solutions Architect. Ebben a Google Cloud blog bejegyzésében összefoglalja cége részletesebb útmutatóját, az úgynevezett "A konténerek üzemeltetésének legjobb gyakorlatai" Ebben a Google szakértői összegyűjtötték a konténerek üzemeltetésére vonatkozó bevált gyakorlatokat a Google Kubernetes Engine és egyebek kontextusában, számos témakört érintve: a biztonságtól a megfigyelésig és a naplózásig. Tehát melyek a legfontosabb konténeres gyakorlatok a Google szerint?

A Google 7 konténer bevált gyakorlata

Kubernetes motor (Kubernetes-alapú szolgáltatás konténeres alkalmazások futtatásához a Google Cloudon - kb. ford.) az egyik legjobb módja a skálázandó munkaterhelések futtatásának. Kubernetes biztosítja a legtöbb alkalmazás zökkenőmentes működését, ha konténerben vannak. De ha azt szeretné, hogy alkalmazása könnyen kezelhető legyen, és teljes mértékben ki akarja használni a Kubernetes előnyeit, kövesse a legjobb gyakorlatokat. Leegyszerűsítik az alkalmazás működését, figyelését és hibakeresését, valamint növelik a biztonságot.

Ebben a cikkben felsoroljuk azokat a dolgokat, amelyeket tudnia kell és meg kell tennie a konténerek hatékony futtatásához a Kubernetesen. Azok, akik mélyebben szeretnének belemenni a részletekbe, olvassák el az anyagot A konténerek üzemeltetésének legjobb gyakorlatai, és figyeljen a mi korábbi bejegyzés konténerek összeszereléséről.

1. Használjon natív konténernaplózási mechanizmusokat

Ha az alkalmazás Kubernetes-fürtön fut, nem sok kell a naplókhoz. A központi naplózási rendszer valószínűleg már be van építve a használt fürtbe. A Kubernetes Engine használata esetén ez a felelős Stackdriver naplózás. (Jegyzet. ford.: Ha pedig saját Kubernetes-telepítést használ, javasoljuk, hogy nézze meg közelebbről nyílt forráskódú megoldásunkat - faház.) Legyen egyszerű az élete, és használjon natív konténernaplózási mechanizmusokat. Írjon naplókat az stdout és az stderr programokba – a rendszer automatikusan fogadja, elmenti és indexeli.

Ha szükséges, naplókat is írhat JSON formátum. Ez a megközelítés megkönnyíti a metaadatok hozzáadását. És velük együtt a Stackdriver Logging képes lesz keresni a naplókban ezen metaadatok segítségével.

2. Győződjön meg arról, hogy a tárolók állapottelenek és változtathatatlanok

Ahhoz, hogy a tárolók megfelelően működjenek a Kubernetes-fürtben, állapot nélkülinek és megváltoztathatatlannak kell lenniük. Ha ezek a feltételek teljesülnek, a Kubernetes elvégezheti a feladatát, amikor és ahol szükséges, alkalmazás entitásokat hozhat létre és semmisíthet meg.

hontalan azt jelenti, hogy bármely állapot (bármilyen állandó adat) a tárolón kívül van tárolva. Ehhez az igényektől függően különböző típusú külső tárolók használhatók: Cloud Storage, Tartós lemezek, Feleinek, Felhő SQL vagy más menedzselt adatbázisok. (Jegyzet. ford.: Tudjon meg többet erről cikkünkben "Kubernetes operátorok: állapottartó alkalmazások futtatása".)

Változhatatlan azt jelenti, hogy a tároló nem módosul az élettartama során: nincs frissítés, javítás, konfigurációs változás. Ha frissítenie kell az alkalmazás kódját vagy javítania kell, hozzon létre egy új lemezképet, és telepítse azt. Javasoljuk, hogy a konténer konfigurációját (hallgató port, futási környezet beállításai stb.) kívülről helyezze át - ide Secrets и ConfigMaps. Frissíthetők anélkül, hogy új tárolóképet kellene létrehozni. A képösszeállítással csővezetékek egyszerű létrehozásához használhatja Cloud Build. (Jegyzet. ford.: Nyílt forráskódú eszközt használunk erre a célra DAPP.)

A Google 7 konténer bevált gyakorlata
Példa a Kubernetes telepítési konfigurációjának frissítésére a pod-okba csatolt ConfigMap használatával konfigurációként

3. Kerülje a privilegizált konténereket

Nem rootként futtatsz alkalmazásokat a szervereiden, igaz? Ha egy támadó bejut az alkalmazásba, root hozzáférést kap. Ugyanezek a megfontolások vonatkoznak arra is, ha nem futtatnak kiemelt tárolókat. Ha módosítania kell a gazdagép beállításait, megadhatja a tárolót képességek opció használatával securityContext Kubernetesben. Ha változtatni kell sysctls, Kubernetes rendelkezik külön absztrakt ezért. Általában próbálja meg a legtöbbet kihozni benne- és oldalkocsis konténerek hasonló kiemelt műveletek elvégzésére. Nem kell hozzáférni sem a belső, sem a külső forgalom számára.

Ha fürtöt adminisztrál, használhatja Pod biztonsági szabályzat a kiemelt konténerek használatának korlátozására.

4. Kerülje a rootként való futtatást

A privilegizált konténerekről már volt szó, de még jobb lesz, ha ezen felül nem rootként futtatsz alkalmazásokat a tárolón belül. Ha a támadó egy távoli sebezhetőséget talál egy root joggal rendelkező alkalmazásban, amely lehetővé teszi a kód futtatását, amely után egy még ismeretlen biztonsági rés révén elhagyhatja a tárolót, akkor root jogot szerez a gazdagépen.

A legjobb módja ennek elkerülésére, ha nem futtat semmit rootként. Ehhez használhatja az irányelvet USER в Dockerfile vagy runAsUser Kubernetesben. A fürt adminisztrátora a betartatási viselkedést a használatával is konfigurálhatja Pod biztonsági szabályzat.

5. Tegye könnyen ellenőrizhetővé az alkalmazást

A naplózáshoz hasonlóan a monitorozás is az alkalmazáskezelés szerves része. A Kubernetes közösség egyik népszerű megfigyelési megoldása Prométheusz - olyan rendszer, amely automatikusan felismeri a felügyeletet igénylő podokat és szolgáltatásokat. (Jegyzet. ford.: Lásd még a mi részletes jelentést a Prometheus és Kubernetes segítségével történő monitorozás témakörében.) Stackdriver képes a Kubernetes-fürtök figyelésére, és tartalmazza a Prometheus saját verzióját az alkalmazások figyeléséhez.

A Google 7 konténer bevált gyakorlata
Kubernetes Dashboard a Stackdriveren

A Prometheus elvárja, hogy az alkalmazás a metrikákat a HTTP-végponthoz továbbítsa. Ehhez elérhető Prometheus ügyfélkönyvtárak. Ugyanezt a formátumot használják más eszközök, mint pl OpenCensus и Azonos.

6. Tegye elérhetővé az alkalmazás egészségi állapotát

Az alkalmazáskezelést a termelésben segíti, hogy képes kommunikálni állapotát a teljes rendszerrel. Fut az alkalmazás? Rendben van? Készen állsz a forgalom fogadására? Hogyan viselkedik? A probléma megoldásának leggyakoribb módja az egészségügyi ellenőrzések végrehajtása (egészségügyi ellenőrzés). A Kubernetesnek két típusa van: életerő és készenléti szondák.

Életesség szondához (vitalitás ellenőrzések) az alkalmazásnak rendelkeznie kell egy HTTP-végponttal, amely "200 OK" választ ad vissza, ha működik, és az alapvető függőségei teljesülnek. Készenléti szondához (szerviz készenléti ellenőrzések) az alkalmazásnak rendelkeznie kell egy másik HTTP-végponttal, amely "200 OK" választ ad vissza, ha az alkalmazás egészséges állapotban van, az inicializálási lépések befejeződtek, és egyetlen érvényes kérés sem eredményez hibát. A Kubernetes csak akkor irányítja a forgalmat a tárolóba, ha az alkalmazás készen áll ezen ellenőrzések szerint. Két végpont összevonható, ha nincs különbség az élesség és a készenléti állapot között.

Erről bővebben Sandeep Dinesh, a Google Developer Advocate kapcsolódó cikkében olvashat: “Kubernetes bevált gyakorlatok: Egészségügyi ellenőrzések beállítása készenléti és életképességi szondákkal".

7. Gondosan válassza ki a kép verzióját

A legtöbb nyilvános és privát kép az itt leírthoz hasonló címkézési rendszert használ Bevált gyakorlatok konténerépítéshez. Ha a kép közeli rendszert használ szemantikai verziószámítás, figyelembe kell venni a címkézés sajátosságait. Például címke latest gyakran mozoghat képről képre – nem lehet rá támaszkodni, ha kiszámítható és megismételhető építményekre és telepítésekre van szüksége.

Használhatja a címkét X.Y.Z (szinte mindig változatlanok), de ebben az esetben kövesse nyomon a kép összes javítását és frissítését. Ha a használt képen van címke X.Y, ez egy jó lehetőség az arany középúthoz. Ha ezt választja, akkor automatikusan megkapja a javításokat, és ezzel egyidejűleg az alkalmazás stabil verziójára támaszkodik.

PS a fordítótól

Olvassa el blogunkon is:

Forrás: will.com

Hozzászólás