Doporučení pro označování a správu verzí imagí kontejnerů

Při nabízení imagí kontejneru 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 to, kde se každý z nich hodí během životního cyklu kontejneru:

  • Stabilní značky – značky, které opakovaně používáte například k označení hlavní verze nebo podverze, například mycontainerimage:1.0.
  • Jedinečné značky – jiná značka pro každou image, kterou odešlete do registru, například mycontainerimage:abc123.

Stabilní značky

Doporučení: K údržbě základních imagí pro sestavení kontejnerů použijte stabilní značky. Vyhněte se nasazení se stabilními značkami, protože tyto značky nadále dostávají aktualizace a můžou v produkčních prostředích způsobovat nekonzistence.

Stabilní značky znamenají, že vývojář nebo buildovací systém může i nadále získávat konkrétní značku, která bude dál dostávat aktualizace. Stabilní neznamená, že obsah je zmrazený. Stabilní znamená, že image by měla být stabilní pro záměr této verze. Aby byla "stabilní", může se provádět údržba, aby se nainstalovaly opravy zabezpečení nebo aktualizace architektury.

Příklad

Tým architektury dodává verzi 1.0. Vědí, že budou odesílat aktualizace, včetně menších aktualizací. Pro podporu stabilních značek pro danou hlavní verzi a podverzi mají dvě sady stabilních značek.

  • :1 – stabilní značka pro hlavní verzi. 1 představuje "nejnovější" nebo "nejnovější" verzi 1.*.
  • :1.0– stabilní značka pro verzi 1.0, která vývojáři umožňuje vytvořit vazbu na aktualizace verze 1.0 a při vydání se nepřevést 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 dané verze.

V tomto případě se hlavní i vedlejší značky průběžně obsluhují. Ve scénáři základní image to umožňuje vlastníkovi image poskytovat image s obsluhou.

Odstranění neoznačené manifesty

Pokud se aktualizuje obrázek se stabilní značkou, dříve označený obrázek se neoznačí, takže vznikne 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í. Můžete například automaticky vyprázdnit neoznačené manifesty starší než zadanou dobu trvání nebo nastavit zásady uchovávání informací 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 mohlo škálovat na více uzlech. Pravděpodobně budete chtít záměrně nasadit konzistentní verzi komponent. Pokud se váš kontejner restartuje nebo orchestrátor škáluje na více instancí, hostitelé nechtěně nenačte novější verzi, která je 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 sestaven. Jak ho ale zpětně korelovat se systémem sestavení? Musíte najít sestavení, které se dokončilo ve stejnou dobu? V jakém časovém pásmu se nacházíte? Jsou všechny vaše systémy sestavení kalibrované na UTC?

  • Potvrzení Gitu – Tento přístup funguje, dokud nezačnete podporovat aktualizace základních imagí. Pokud dojde k aktualizaci základní image, systém sestavení se spustí se stejným potvrzením Gitu jako předchozí build. Základní image ale obsahuje nový obsah. Obecně platí, že potvrzení Gitu poskytuje částečně stabilní značku.

  • Digest manifestu – každá image kontejneru vložená do registru kontejneru je přidružená k manifestu identifikovanému jedinečnou hodnotou hash SHA-256 nebo hodnotou hash. I když je přehled jedinečný, je dlouhý, obtížně čitelný a nesouvisí 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í, abyste našli všechny artefakty a protokoly. Stejně jako manifestní digest může být pro člověka obtížné ho přečíst.

    Pokud má vaše organizace několik systémů sestavení, je označení značky předponou názvem systému sestavení variantou této možnosti: <build-system>-<build-id>. Můžete například odlišit sestavení od sestavovacího systému Jenkinse z týmu ROZHRANÍ API a systému sestavení Azure Pipelines webového týmu.

Uzamčení značek nasazených imagí

Jako osvědčený postup doporučujeme zamknout všechny nasazené značky image nastavením jejího write-enabled atributu na false. Tento postup zabrání neúmyslným odebráním image z registru a případnému narušení nasazení. Krok uzamčení můžete zahrnout do kanálu verze.

Uzamčení nasazené image stále umožňuje odebrat z registru jiné nenasaděné image pomocí funkcí Azure Container Registry pro správu registru. Můžete například automaticky vyprázdnit neoznačené manifesty nebo odemknuté image, které jsou starší než zadaná doba trvání, nebo nastavit zásady uchovávání informací pro neoznačené manifesty.

Další kroky

Podrobnější popis konceptů v tomto článku najdete v blogovém příspěvku Označování Dockeru: Osvědčené postupy pro označování a správu verzí imagí Dockeru.

Pokud chcete maximalizovat výkon a nákladově efektivní využití registru kontejnerů Azure, projděte si téma Osvědčené postupy pro Azure Container Registry.