Doporučení pro označování a správu verzí imagí kontejnerů
Při odesílání imagí kontejnerů do registru kontejneru a jejich následném nasazení potřebujete strategii pro označování a správu verzí imagí. Tento článek popisuje dva přístupy a kde každý zapadá během životního cyklu kontejneru:
- Stabilní značky – značky , které znovu použijete, například k označení hlavní nebo podverze, například mycontainerimage:1.0.
- Jedinečné značky – jiná značka pro každou image, kterou nasdílíte do registru, například mycontainerimage:abc123.
Stabilní značky
Doporučení: Používejte stabilní značky k údržbě základních imagí pro sestavení kontejnerů. Vyhněte se nasazení se stabilními značkami, protože tyto značky nadále přijímají aktualizace a můžou v produkčních prostředích zavádět nekonzistence.
Stabilní značky znamenají, že vývojář nebo systém sestavení může pokračovat v načítání konkrétní značky, která bude i nadále získávat aktualizace. Stabilní neznamená, že se obsah zamrznul. Místo toho stabilní znamená, že image by měla být stabilní pro záměr této verze. Pokud chcete zůstat "stabilní", může být obsluhováno, aby se použily opravy zabezpečení nebo aktualizace architektury.
Příklad
Tým architektury se dodává verze 1.0. Vědí, že budou dodávat aktualizace, včetně dílčích aktualizací. Pro podporu stabilních značek pro danou hlavní a podverzi mají dvě sady stabilních značek.
:1
– stabilní značka pro hlavní verzi.1
představuje "nejnovější" nebo "nejnovější" 1.* verzi.:1.0
– stabilní značka pro verzi 1.0, která vývojářům umožňuje vytvořit vazbu na aktualizace verze 1.0 a při vydání se nepřeposílat na verzi 1.1.
Pokud jsou k dispozici aktualizace základní image nebo jakýkoli typ servisní verze architektury, image se stabilními značkami se aktualizují na nejnovější hodnotu hash, která představuje nejnovější stabilní verzi této verze.
V tomto případě se hlavní i vedlejší značky neustále obsluhují. Ze scénáře základní image to umožňuje vlastníkovi image poskytovat obsluhované image.
Odstranění neoznačené manifesty
Pokud se obrázek se stabilní značkou aktualizuje, dříve označený obrázek se neoznačí a výsledkem bude osamocený obrázek. Manifest předchozí image a jedinečná data vrstvy zůstanou v registru. Pokud chcete zachovat velikost registru, můžete pravidelně odstraňovat neoznačené manifesty, které jsou výsledkem stabilních aktualizací imagí. Například automatické vymazání neoznačené manifesty starší než zadaná doba trvání nebo nastavení zásad uchovávání pro neoznačené manifesty.
Jedinečné značky
Doporučení: Pro nasazení používejte jedinečné značky, zejména v prostředí, které by se mohlo škálovat na více uzlech. Pravděpodobně budete chtít záměrné nasazení konzistentní verze komponent. Pokud se váš kontejner restartuje nebo orchestrátor škáluje na více instancí, hostitelé nechtěně vyžádat novější verzi, nekonzistentní s ostatními uzly.
Jedinečné označování jednoduše znamená, že každá image vložená do registru má jedinečnou značku. Značky se znovu nepoužívají. K vygenerování jedinečných značek můžete použít několik vzorů, mezi které patří:
Razítko data a času – tento přístup je poměrně běžný, protože jasně poznáte, kdy byl obrázek vytvořen. Jak ho ale korelovat zpět se systémem sestavení? Potřebujete najít sestavení, které bylo dokončeno současně? V jakém časovém pásmu se nacházíte? Jsou všechny vaše buildové systémy kalibrované do UTC?
Potvrzení Gitu – Tento přístup funguje, dokud nezačnete podporovat aktualizace základních imagí. Pokud dojde k aktualizaci základní image, spustí se váš systém sestavení se stejným potvrzením Gitu jako předchozí sestavení. Základní image má ale nový obsah. Obecně platí, že potvrzení Gitu poskytuje částečně stabilní značku.
Hash manifestu – Každá image kontejneru vložená do registru kontejneru je přidružená k manifestu, který je identifikován jedinečnou hodnotou hash SHA-256 nebo hodnotou hash. I když je hodnota hash jedinečná, je dlouhá, obtížně čitelná a nesouvisející s prostředím sestavení.
ID sestavení – Tato možnost může být nejlepší, protože je pravděpodobně přírůstková a umožňuje korelovat zpět ke konkrétnímu sestavení a najít všechny artefakty a protokoly. Podobně jako přehled manifestu ale může být pro člověka obtížné číst.
Pokud má vaše organizace několik systémů sestavení, předpona značky s názvem systému sestavení je variantou této možnosti:
<build-system>-<build-id>
. Můžete například odlišit buildy od buildového systému Jenkinse týmu rozhraní API a od systému sestavení Azure Pipelines webového týmu.
Uzamčení nasazených značek imagí
Jako osvědčený postup doporučujeme uzamknout všechny nasazené značky image nastavením jeho write-enabled
atributu na false
. Tento postup vám brání neúmyslně odebrat image z registru a případně narušit vaše nasazení. Krok uzamčení můžete zahrnout do kanálu verze.
Zamknutí nasazené image vám stále umožňuje odebrat z registru jiné, neusazené image pomocí funkcí služby Azure Container Registry k údržbě registru. Například automaticky vyprázdnit neoznačené manifesty nebo odemknuté obrázky starší než zadaná doba trvání nebo nastavit zásady uchovávání informací pro neoznačené manifesty.
Další kroky
Podrobnější diskuzi o konceptech v tomto článku najdete v blogovém příspěvku Docker Tagging: Osvědčené postupy pro označování a správu verzí imagí Dockeru.
Informace o maximalizaci výkonu a nákladově efektivního využití registru kontejnerů Azure najdete v tématu Osvědčené postupy pro Azure Container Registry.