๐Ÿ”™Rollout & Rollback

Deployment yaml dosyalarฤฑmฤฑzda spec altฤฑnda, strategy argรผmanฤฑ ile bizler, bu Deployment 'ฤฑ gรผncellediฤŸimiz zaman, rollout iลŸlemlerinin nasฤฑl yapฤฑlabileceฤŸini belirleriz. KullanabileceฤŸimiz 2 tip rollout tipi mevcuttur.

1-Recreate : Deployment 'da bir deฤŸiลŸiklik yaptฤฑฤŸฤฑmฤฑzda, รถncelikle tรผm mevcut pod 'larฤฑ siler ve ardฤฑndan yeni podlarฤฑ oluลŸturur. Genellikle, uygulamanฤฑn, yeni versiyonu ve eski versiyonunun kฤฑsa bir sรผre iรงin bile olsa, bir arada รงalฤฑลŸmamasฤฑ iรงin kullanฤฑlฤฑr.

2-RollingUpdate : Bu seรงenek DEFAULT olarak gelir. Yaml dosyamฤฑzda herhangi bir deฤŸiลŸiklik yaptฤฑฤŸฤฑmฤฑz zaman, gidip tรผm podlarฤฑ silip yenisi oluลŸturmak yerine, bu iลŸi aลŸamalฤฑ olarak yapar. Bu aลŸamalarฤฑn nasฤฑl olacaฤŸฤฑnฤฑ belirlediฤŸimiz 2 opsiyonumuz mevcut.

2a : MaxUnavailable : Deployment 'da deฤŸiลŸiklik yapฤฑldฤฑฤŸฤฑnda, en fazla burada belirttiฤŸim miktarda pod silinir. Misal 10 pod'lu ortamlarlarda, bir gรผncelleme yaptฤฑฤŸฤฑmฤฑzฤฑ varsayalฤฑm. Bir gรผncelleme yaptฤฑฤŸฤฑmฤฑzda bu gรผncellemeye baลŸladฤฑฤŸฤฑ anda, en fazla 2 tanesini siler. sonra yeni podlarฤฑ oluลŸturur. Ardฤฑndan 2 eski pod daha siler. Yeni 2 pod daha oluลŸturur. gibi. Dรถngรผ bu ลŸekilde devam eder. Pod sayฤฑmฤฑz 8 'in altฤฑna dรผลŸmez.

2b : MaxSurge : Gรผncelleme sฤฑrasฤฑnda toplam pod sayฤฑsฤฑnฤฑn en fazla kaรง olacaฤŸฤฑnฤฑ belirler. Misal bizim desired state 'imiz 10 pod ama, bu geรงiลŸ sฤฑrasฤฑnda 12 pod 'a kadar รงฤฑkabilir. Deployment 'ฤฑ gรผncellediฤŸimiz de, kubernetes yeni bir replicaset oluลŸturacak, yeni tanฤฑmda 2 pod ayaฤŸa kalkacak, dolayฤฑsฤฑyla eski 10 pod + 2 yeni pod toplamda 12 pod olacak. Sonrasฤฑnda eski pod'lardan 2 tane silinecek ve ardฤฑndan yeni replicaset 2 pod daha yaratarak, dรถngรผ devam edecek. Toplam pod sayฤฑsฤฑ 12 'yi geรงmeyecek ve 8 'in altฤฑna dรผลŸmeyecek. Bir deฤŸer girmezsek MaxSurge ve Maxunavailable %25 olarak รงalฤฑลŸฤฑr.

Deployment objesini dรผzenlerken "kubectl edit" komutunu da kullanabiliriz.

--record : kullandฤฑฤŸฤฑmฤฑz komutlarฤฑn ardฤฑna --record parametresi eklersek, tรผm yapฤฑlan iลŸlemleri bir history 'de tutar.

Komutunu kullanarak deployment 'da yaลŸanan tรผm deฤŸiลŸiklikleri gรถrebiliriz.

kubectl rollout history deployment rolldeployment

Liste de bulunan 2. deฤŸiลŸikliฤŸin detaylarฤฑnฤฑ gรถster diyoruz.

kubectl rollout history deployment rolldeployment --revision=2

Bir รถnceki deฤŸiลŸikliฤŸe dรถnmek iรงin kullanฤฑrฤฑz.

kubectl rollout undo deployment rolldeployment

Deployment 'da yapฤฑlan 1. deฤŸiลŸikliฤŸe dรถner. Bir รถncekine dรถnmekle sฤฑnฤฑrlฤฑ deฤŸiliz.

kubectl rollout undo deployment rolldeployment --to-revision=1

Bu sayede deployment รผzerinde yaptฤฑฤŸฤฑmฤฑz deฤŸiลŸiklikler, kataloglama ve sonrasฤฑnda geri dรถnme imkanฤฑna kavuลŸuruz.

Bir deployment oluลŸturur oluลŸturmaz hangi aลŸamalardan geรงtiฤŸini gรถrmek iรงin,

kubectl rollout status rolldeployment -w

Deployment ortamฤฑnda bir gรผncelleme yapฤฑp, bir sorun gรถzlemlediฤŸimizde durdurmak istersek;

kubectl rollout pause deployment rolldeployment

EฤŸer sorunu tespit edip, giderdikten sonra kaldฤฑฤŸฤฑ yerden devam etmek istersek,

kubectl rollout resume deployment rolldeployment

Last updated