Konteynerler inşa etmek için zaman harcadıysanız, bu sürpriz olmamalı. Docker görüntüleri için "latest" etiketini kullanmak başlı başına kötü bir uygulamadır çünkü "latest" sadece etiketin bir adıdır ve aslında "en yeni" veya "son olarak inşa edilmiş" anlamına gelmez. Bir kapsayıcı görüntüsünden bahsederken bir tane belirtmezseniz, en son varsayılan etikettir. Bir Kubernetes dağıtımında "latest" etiketini kullanmak daha da kötü bir yçeivioldur, çünkü bunu yaparak artık kümenizde nelerin dağıtıldığını bilmiyorsunuzdur.
Bu dağıtımı uygularsanız, artık hangi kapsayıcı etiketinin gerçekte dağıtıldığına dair tüm bilgileri kaybetmiş olursunuz. Konteyner etiketleri değiştirilebilir, bu nedenle "latest" etiketi kimse için gerçekten bir şey ifade etmiyor. Belki bu konteyner görüntüsü 3 dakika önce oluşturuldu, belki 3 ay önceydi. Hangi sürümü içerdiğini bilmek için CI sisteminiz için tüm günlüklerinizi yakalamanız veya hatta incelemek için görüntüyü yerel olarak indirmeniz gerekecektir.
"latest" etiketi, her zaman çekme politikasıyla birleştirirseniz daha da tehlikelidir. Diyelim ki bölmeniz öldü ve Kubernetes onu sağlıklı hale getirmek için yeniden başlatmaya karar verdi (ilk etapta Kubernetes'i bu yüzden kullandığınızı unutmayın).
Kubernetes bölmeyi yeniden planlayacak ve çekme politikanız buna izin veriyorsa, Docker kayıt defterinizden "latest" görüntüyü tekrar çekecektir! Bu, bu arada "latest" etiketi değiştiyse, artık bu özel bölmede diğer bölmelerin sahip olduğundan farklı yeni bir sürümünüz olduğu anlamına gelir. Çoğu durumda, istediğiniz bu değildir.
Ayrıca, bölmeleri manuel olarak öldürerek ve "latest" resminizi tekrar çekmelerini bekleyerek "dağıtımlar" yapmanın başarı için bir reçete olduğunu söylemeye gerek yok (eğer bu "dağıtım" biçimini kullanırsanız).
Kubernetes'teki doğru dağıtım biçimi uygun bir etiketleme stratejisi izlemelidir. Belirli bir stratejiye sahip olduğunuz sürece sorun oluşmayacaktır.
Yararlı Öneriler:
Git karmalarıyla etiketleri kullanmak (örn. docker.io/myusername/my-app:acef3e). Bunun uygulanması kolaydır, ancak bir Git karması teknik olmayan kişiler tarafından kolayca okunamadığı için abartılı olabilir.
Semantik sürümleri takip eden uygulama sürümüyle etiketler kullanmak (örn. docker.io/ myusername/my-app:v1.0.1). Bu yöntemin hem geliştiriciler hem de geliştirici olmayanlar için birçok avantajı vardır.
Yapı numarası veya yapım tarihi/saati gibi ardışık bir sayıyı gösteren etiketleri kullanmak. Bu formatla çalışmak çok zordur, ancak eski uygulamalarla benimsenmesi kolay olabilir.
Önemli olan, konteyner etiketlerinin değişmez olarak ele alınması gerektiği konusunda hemfikir olmanız gerektiğidir. V2.0.5 olarak işaretlenmiş bir Docker görüntüsü yalnızca bir kez oluşturulmalı ve bir ortamdan diğerine yükseltilmelidir.
V2.0.5 etiketli görüntüyü kullanan bir dağıtım görürseniz, şunları yapabilmelisiniz...
• Bu görüntüyü yerel olarak çekin ve kümede çalışanla aynı olduğundan emin olun;
• Oluşturduğu Git karmasını kolayca takip edin.
Dağıtım iş akışlarınız herhangi bir şekilde "latest" etiketleri kullanmaya bağlıysa, bir saatli bombanın üzerinde oturuyorsunuz.


