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?
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.
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.
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.)
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.
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.
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.