Aşamalı Güncellemeler ve Geri Almalar
Sıfır kesintiyle uygulama güncellemeleri uygulayın ve sorunlar ortaya çıktığında önceki sürümlere dönün.
Aşamalı Güncellemeler ve Geri Almalar, CoddyKit'te ücretsiz bir DevOps Bootcamp dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, DevOps Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. DevOps Bootcamp kursu toplamda 4 dersten oluşur.
Sıfır Kesintili Güncellemeler: Neden?
Çalışan bir uygulamayı güncellediğinizi düşünün. Dikkatli bir planlama yapılmazsa kullanıcılar kesinti veya hatalarla karşılaşabilir. Kubernetes'teki kademeli güncellemeler tam da bu noktada öne çıkar!
Kademeli güncellemeler, hizmeti kesintiye uğratmadan uygulamanızı yeni bir sürüme güncellemenizi sağlar. Yeni sürümler kademeli olarak kullanıma sunulur ve uygulamanızın kullanılabilir kalması güvence altına alınır.
Dağıtımlar Güncellemeleri Nasıl Yönetir?
Bir Dağıtımın Pod şablonunu güncellediğinizde (örneğin kapsayıcı görüntüsünü değiştirdiğinizde) Kubernetes her şeyi kapatıp yeniden başlatmaz. Bunun yerine varsayılan olarak RollingUpdate stratejisini kullanır.
- Güncellenmiş yapılandırmaya sahip yeni Pod'lar oluşturur.
- Yeni Pod'lar hazır olduğunda eski Pod'ları kademeli olarak sonlandırır.
- Bu süreç, çok az kesintiyle veya hiç kesinti olmadan sorunsuz bir geçiş sağlar.
Yayınlama Hızını Denetleme
Kademeli güncellemelerin davranışını, Dağıtımınızın .spec.strategy.rollingUpdate bölümündeki iki temel parametreyi kullanarak hassas biçimde ayarlayabilirsiniz:
maxUnavailable: Güncelleme sırasında kullanılamayacak en fazla Pod sayısıdır. Mutlak sayı veya yüzde olabilir.maxSurge: İstenen Pod sayısının üzerine oluşturulabilecek en fazla Pod sayısıdır. Bu da mutlak sayı veya yüzde olabilir.
Varsayılan olarak her ikisi de %25'e ayarlanır.
İlk Dağıtımımız
Basit bir Nginx dağıtımıyla başlayalım. Bu YAML, nginx:1.14.2'nin 3 replikasını çalıştıran ilk uygulamamızı tanımlar.
Sonraki adımda kademeli bir güncelleme gerçekleştirmek için bunu temel olarak kullanacağız.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80Kademeli Güncelleme Gerçekleştirme
Şimdi Nginx sürümümüzü 1.14.2'den 1.15.0'a güncelleyelim. YAML'daki görüntüyü değiştirip uygulamamız yeterlidir.
Kubernetes değişikliği algılayacak ve kademeli güncellemeyi otomatik olarak başlatacaktır. Aşağıdaki image alanını gözlemleyin:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.15.0
ports:
- containerPort: 80Yayınlama Durumunu İzleme
Güncellenmiş YAML'ı uyguladıktan sonra kademeli güncellemenizin ilerlemesini kubectl rollout status komutunu kullanarak izleyebilirsiniz:
kubectl rollout status deployment/my-nginx
Güncelleme tamamlanana kadar yeni Pod'ların oluşturulduğunu ve eskilerin sonlandırıldığını belirten iletiler görürsünüz. Eski ve yeni ReplicaSet'leri görmek için kubectl get rs komutunu da kullanabilirsiniz.
Yayınlama Geçmişini Denetleme
Kubernetes, Dağıtımlarınızın revizyonlarının geçmişini tutar. Bu, değişiklikleri anlamak ve gerekirse geri alma işlemleri yapmak için son derece yararlıdır.
Geçmişi görmek için şu komutu kullanın:
kubectl rollout history deployment/my-nginx
Her biri Dağıtımınızın farklı bir durumunu temsil eden revizyonların listesini görürsünüz. CHANGE-CAUSE çoğunlukla komutu veya YAML değişikliğini yansıtır.
Geri Alma Ne Zaman Gerekir?
Dikkatli testlere rağmen bazen yeni bir uygulama sürümü, fark edilmeyen hatalar veya performans sorunları ortaya çıkarır. Bu tür kritik durumlarda, bilinen kararlı bir duruma hızla dönmenin bir yoluna ihtiyaç duyarsınız.
İşte geri alma işlemleri bu noktada devreye girer. Sorunlu bir güncellemeyi geri almanızı ve Dağıtımınızı geçmişindeki önceki, çalışan bir sürüme döndürmenizi sağlar.
Geri Alma İşlemi Gerçekleştirme
Hemen önceki revizyona geri dönmek için şunu kullanın:
kubectl rollout undo deployment/my-nginx
Belirli bir revizyona (örneğin 1. revizyona) geri dönmek istiyorsanız bunu belirtebilirsiniz:
kubectl rollout undo deployment/my-nginx --to-revision=1
Kubernetes, Pod'ları belirtilen geçmiş yapılandırmasına döndürmek için başka bir kademeli güncelleme gerçekleştirir.
Yayınlama Stratejisi Denetimi
Aşağıdaki parametrelerden hangisi Kubernetes Dağıtımının RollingUpdate stratejisinin davranışını denetlemek için kullanılabilir?
Özet: Sorunsuz Güncellemeler ve Güvenlik Ağları
Kubernetes Dağıtımlarının, uygulamalarınızı yeni sürümlere sorunsuz biçimde geçirerek sıfır kesintili kademeli güncellemeler yapmanızı nasıl sağladığını inceledik. Şunları öğrendiniz:
- Dağıtımlar varsayılan olarak
RollingUpdatekullanır. maxUnavailablevemaxSurgegüncelleme hızını denetler.kubectl rollout statusilerlemeyi izler.kubectl rollout historyrevizyonları takip eder.kubectl rollout undokararlı sürümlere hızlı geri alma işlemlerine olanak tanır.
Bu özellikler, uygulamalarınızda yüksek kullanılabilirliği ve güvenilirliği korumak için kritik öneme sahiptir!
Sıkça Sorulan Sorular
“Aşamalı Güncellemeler ve Geri Almalar” dersi ücretsiz mi?
Evet — “Aşamalı Güncellemeler ve Geri Almalar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve DevOps Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. DevOps Bootcamp kursu toplamda 4 dersten oluşur.
“Aşamalı Güncellemeler ve Geri Almalar” dersinde ne öğreneceğim?
Sıfır kesintiyle uygulama güncellemeleri uygulayın ve sorunlar ortaya çıktığında önceki sürümlere dönün. DevOps Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
DevOps Bootcamp öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te DevOps Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Aşamalı Güncellemeler ve Geri Almalar” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu DevOps Bootcamp dersinde kod yazıp çalıştırabilir miyim?
Evet. Her DevOps Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Dağıtımları Anlama
- ReplicaSets ile Uygulamaları Ölçeklendirme
- Aşamalı Güncellemeler ve Geri Almalar
- Dağıtım Stratejileri: Blue-Green ve Canary