Mimari (IT)Sistem Mimarı

Kendiliğinden iyileşen, değişmez bir altyapı teslimatı alt yapısını güncelleyerek, heterojen fiziksel, sanallaştırılmış ve konteynerleştirilmiş ortamlarda bildirilmiş sistem durumunu geçici çalışma topolojisi ile otonom olarak uzlaştıran, sıfır-downtime ileri sürüm güncellemeleri gerçekleştiren ve otomatik devre kesici geri alma yetenekleri ile yapılandırma kaymasını alt birim gecikmesi ile tespit eden bir sistem inşa edebilir misiniz?

Hintsage yapay zeka asistanı ile mülakatları geçin

Sorunun cevabı

Sorunun Tarihçesi

Bu zorluk, 2010'ların ortalarında zorunlu yapılandırma yönetiminin operasyonel başarısızlıklarından kaynaklandı; burada Puppet ve Chef dinamik bulut ortamlarındaki yapılandırma kayması nedeniyle ölçeklenebilirlik sınırlamalarıyla karşılaştı. GitOps paradigması, Weaveworks tarafından öncülük edilip Kubernetes aracılığıyla popüler hale getirildi ve sektörü değişmez eserler ve sürekli uzlaşma döngüleri ile deklaratif altyapıya yönlendirdi. Modern işletmeler artık sürüm kontrollü niyet ile çalışma gerçeği arasındaki sapmayı alt birim gecikmesi ile tespit etmeyi gerektiriyor; bu da otonom olarak parçalanmış altyapılar üzerinde çalışan sofistike kontrol düzlemleri gerektiriyor.

Problem

Geleneksel değiştirilebilir altyapı, manuel SSH müdahaleleri ve anlık yamalar aracılığıyla kar taneleri sunucuları yaratmakta, bu da yüksek hızda güncellemeler sırasında tahmin edilemez dağıtım hatalarına ve güvenlik açıklarına yol açmaktadır. Zorunlu otomasyon araçları, sürekli doğrulama olmaksızın prosedürel adımları uygular ve yapılandırma kaymasının gözden kaçmasına neden olur, kritik güncellemeler sırasında felaket hataları oluşana kadar bu birikir. Temel zorluk, Git'te saklanan deklaratif spesifikasyonlarla fiziksel, VM'ler ve konteynerler arasındaki geçici çalışma durumları arasında katı tutarlılığı korumak, sıfır-downtime ileri sürüm güncellemelerini ve merkezi darboğazlar olmadan anlık geri alma yeteneklerini desteklemektedir.

Çözüm

Heterojen ortamlar arasında değişmez altyapı yaşam döngüsü yönetimi için Kubernetes'i evrensel soyutlama katmanı olarak kullanan bir kontrol düzlemi tasarlayın. Sürekli uzlaşma döngüleri oluşturmak için ArgoCD veya Flux'u GitOps motoru olarak kullanarak Git deposunu her 30 saniyede bir kontrol edin, alan sahipliği izleme ile sunucu-tarafı uygulama aracılığıyla kaymayı tespit edin ve istenen durumları otomatik olarak zorlayarak uygulayın. İleri teslimat için Argo Rollouts'u uygulayın, hata oranları tanımlı eşikleri aştığında otomatik canary analizini ve devre kesici geri alımları otomatikleştirmek için Prometheus ölçümlerini entegre edin. kubectl'e doğrudan değişiklikleri reddeden ve Packer ile altın makine görüntüleri ve Containerd ile değişmez konteyner çalışma süreleri için Ceph veya AWS EBS kullanan OPA Gatekeeper kabul denetleyicileri vasıtasıyla değişmezlik sağlanır.

Hayattan Bir Durum

Beş AWS bölgesinde faaliyet gösteren küresel bir fintech platformu, yapılandırma kaymasının üretim olaylarının %40'ını ve başarısız uyum denetimlerini neden olduğu için mücadele etti. Eski EC2 altyapıları manuel paket güncellemelerine ve SSH sorun giderme izin verdi, bu da farklı Kernel sürümleri ve belgelenmemiş Nginx yapılandırma ayarları ile kar taneleri sunucuları yarattı. Dağıtım süreçleri dört saatlik bakım pencereleri gerektirdi ve yıllar süren operasyonel yamalar sonucunda biriken tutarsız durumlar nedeniyle %15'lik bir geri alma hata oranı ile karşılaştı.

Çözüm A: Ansible Tabanlı Zorunlu Yama

Operasyon ekibi, kritik CVE'ler için hemen iyileştirme sağlamak amacıyla mevcut değiştirilebilir örnekler arasında yapılandırmayı standartlaştırmak için Ansible oyun kitapları uygulamayı düşündü. Bu yaklaşım, mevcut operasyonel uzmanlıktan yararlandı ve mevcut AWS ayak izinde minimal mimari değişiklik gerektirdi. Ancak bu, değiştirilebilirliğin temel anti-deseni sürdürdü, eşzamanlı oyun kitapları çalıştırmaları sırasında yarışma koşulları yarattı, değişikliklerin değişmez bir denetim kaydını sunmadı ve SSH bağlantı zaman aşımı nedeniyle bölgeler arasında kötü ölçeklenmeye neden oldu. Ekip, kaymayı ortadan kaldırmadığı ve manuel iyileştirme iş akışları yoluyla önemli operasyonel zorluklar yarattığı için bu çözümü reddetti.

Çözüm B: Periyodik Cron Kayması Tespiti ile Terraform

Mimari ekip, konut üzerindeki yapılandırma değişkenliklerini tespit etmek için her saat terraform plan çalıştıran zamanlanmış Lambda işlevleri ile Terraform kullanmayı önerdi. Bu, deklaratif altyapı tanımlamaları ve S3 arka uçları aracılığıyla durum dosyası izlemeyi sağladı, ancak temel gecikme sınırlamalarından muzdaripti. Terraform planları küresel ayak izi boyunca yürütmek için 8-12 dakika gerektiriyordu, alt birim tespit gereksinimlerini ihlal ediyordu ve araç çalışma Kubernetes kaynak değişiklikleri hakkında yerleşik farkındalık eksikliği taşıyordu. Geri alma mekanizmaları, insan müdahalesi veya karmaşık durum dosyası manipülasyonu gerektiriyor, olay müdahale sırasında insan hatası olasılığı yaratıyordu. Ekip, tespit gecikmesi kısıtlamaları ve insan onayı iş akışları olmadan kaymayı otomatik olarak düzeltme yeteneği eksikliği nedeniyle bunu reddetti.

Çözüm C: ArgoCD ve Cluster API ile GitOps

Seçilen mimari, sürekli uzlaşma için ArgoCD, değişmez düğüm sağlama için Cluster API ve CIS sertifikalandırma standartları ile pişirilmiş altın makine görüntüleri için Packer kullanarak GitOps ilkelerini uyguladı. Bu çözüm, Kubernetes kontrolör izlemeleri ve etcd olay akışı aracılığıyla yapılandırma kaymasını 45 saniye içinde tespit eden bir kontrol döngüsü oluşturdu. Argo Rollouts, hata oranlarının %1'i aştığında otomatik geri alımları tetikleyerek, otomatik canary dağıtımlarını etkinleştirdi. OPA Gatekeeper politikaları, tüm ConfigMap ve Dağıtım değişikliklerinin Git deposundan geldiğini sağlamlaştırarak, manuel değişiklikleri önler ve değişmez denetim izleri aracılığıyla uyumu garanti eder.

Sonuç

Uygulama, üç ay içinde yapılandırma kayması olaylarını %95 oranında azaltarak kar taneleri sunucularını tamamen ortadan kaldırdı. Dağıtım sıklığı haftada birden saatte bire yükseldi, sıfır-downtime ileri güncellemeler bakım pencerelerini ortadan kaldırarak gerçek sürekli teslimatı sağladı. Başarısız dağıtımlar için ortalama kurtarma süresi (MTTR) 45 dakikadan 3 dakikaya düştü; bu, son bilinen iyi durumlara otomatik Git tabanlı geri alma yoluyla gerçekleştirildi. Güvenlik durumu oldukça iyileşti; mimari SSH erişimini ortadan kaldırdı, değişmez altyapıyı zorladı ve yapılandırma yönetimi veya izinsiz çalışma zamanı değişiklikleri ile ilgili sıfır bulgu ile SOC 2 Tip II denetimlerini geçti.

Adayların Sıklıkla Atladığı Noktalar

Uzlaşma döngüsü, kötü niyetli bir aktörün küme üzerinde doğrudan kubectl ile değişiklik yapması nedeniyle Git deposu ve gerçek durumun ayrıldığı "split-brain" senaryosunu nasıl yönetir?

Sistem, tüm doğrudan kubectl uygulama işlemlerini reddeden, değişiklikleri gerçekleştiren serviceAccount'ın yalnızca ArgoCD uygulama denetleyicisine ait olmasını sağlayan OPA Gatekeeper kabul kontrolörleri aracılığıyla derinlemesine savunma uygulamalıdır. GitOps motoru, değişikliklerin yalnızca yetkili olduğu durumlarda zorlayıcı ve sunucu-tarafı uygulama ile alan sahipliği takibi kullanarak, uzlaşma sırasında Git'te belirtilen durumu zorlar. Bu, yetkisiz değişiklikleri 30 saniyelik senkronizasyon penceresi içinde geçersiz kılarak, kümenin manuel müdahalelere karşı kendiliğinden iyileşmesini sağlar. Falco veya Kubernetes Audit aracılığıyla kapsamlı denetim günlüğü kaydı, kayma girişimini yakalar, güvenlik ekibinin incelemesi için PagerDuty uyarılarını tetiklerken küme istenen durumu otomatik olarak korur.

Değişmez altyapı, PostgreSQL gibi durum bilgisi veritabanları için neden sorunludur ve düğüm değişmezliğini korurken bu sınırlamanın etrafında nasıl mimari oluştursunuz?

Değişmez düğümler, yerel geçici depoları değiştirdiğinde yok eder; bu, verilerin konteyner yeniden başlatmalarından hayatta kalmasını bekleyen veritabanı kalıcılığı gereksinimleri ile çelişir. Çözüm, Kubernetes StatefulSets'i kullanarak işlemeyi depolamadan ayırır ve AWS EBS, Ceph RBD veya Portworx hacimleri gibi ağ bağlantılı depolarla PVC (Sürekli Hacim Talepleri) destekler. PostgreSQL konteyner görüntüsü değişmez ve sürüm kontrollüdür; bu arada veriler, düğüm terminasyonu sırasında hayatta kalan dış hacimlerde kalır. Yüksek süreklilik için, dağıtım liderliği için etcd ile birlikte Patroni uygulayın; Cluster API'nin bir düğümü yapılandırma güncellemeleri nedeniyle değiştirmesi durumunda, CSI sürücüsü mevcut hacimi yeni pod'a yeniden bağlayacak ve Patroni tekrarları veri kaybı olmadan senkronize edecektir.

Kötü bir yapılandırmanın sürekli olarak hatalı bir duruma geri dönmesi durumunda "kademeli geri alma" sorununu nasıl önlersiniz?

ArgoCD geri deneme yapılandırmasında üssel geri çekilme mekanizmaları uygulayın; otomatik senkronizasyon denemelerini üç denemeyle ve 5 dakikalık aralıklarla sınırlayın, ardından bir manuel müdahale ve inceleme gerektirir. AnalizRaporları ile birlikte Argo Rollouts'u kullanarak uygulama sağlık metriklerini (başarı oranı, gecikme) kontrol edin ve ancak başarılı olup olmadığını onaylayın; sadece kararlı revizyonların geri alma tarihine girmesini sağlamaya yönelik en az 10 dakika geçsin. Dağıtım soyunu takip eden bir ConfigMap oluşturun ve otomatik geri alımları yalnızca otomatik test boru hatları ile "doğrulanmış" olarak işaretlenen sürümlere yapın. Helm tarih limitlerini yapılandırarak, yalnızca son 20 başarılı sürümün saklanmasını sağlayın; böylece tekrar geri alımları eski test edilmemiş durumlara dönüştemez ve devre kesiciler, küme genelinde hata oranları eşiklerini aşarsa tüm dağıtımları durdurur.