Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
8 yazı bulundu #dotnet
Kubernetes Pod: .NET Container'ını Çalıştırmak, Lifecycle, Init Container ve Native Sidecar
DevOps SERİ 03

Kubernetes Pod: .NET Container'ını Çalıştırmak, Lifecycle, Init Container ve Native Sidecar

Pod, aynı ağı paylaşan container'ların çalıştırma birimi; .NET 8+ image'ları port 8080'i dinler, chiseled image non-root ve shell'siz gelir, tam aspnet image'ı ise runAsNonRoot'a takılır. Pod phase'lerini, CrashLoopBackOff'un ikiye katlanan backoff'unu, wait-for-db init container'ının sınırlarını, 1.33'te stable olan native sidecar'ı ve SIGTERM'ü yok sayan bir sidecar'ın pod silmeyi neden 30 saniye uzattığını gerçek çıktılarla görüyoruz.

8 Kas 2026 11 dk 4
ConfigMap ve Secret ile .NET Configuration: Environment Variable, Volume ve Değişikliklerin Yansıması
DevOps SERİ 07

ConfigMap ve Secret ile .NET Configuration: Environment Variable, Volume ve Değişikliklerin Yansıması

ConfigMap ve Secret, .NET configuration'ına environment variable (ConnectionStrings__Default) ya da volume'daki dosya olarak girer; env hiç, subPath mount'u hiç güncellenmez, klasör mount'u 10–80 saniyede güncellenir. kind'daki ölçümde .NET 10'un varsayılan watcher'ı ConfigMap değişikliğini görmedi, polling watcher gördü. Provider sırası tuzağını, rollout tetiklemeyi, immutable ConfigMap'i, base64'ün şifreleme olmadığını ve Angular config.json'u gerçek çıktılarla görüyoruz.

8 Kas 2026 10 dk 4
Graceful Shutdown: SIGTERM, terminationGracePeriodSeconds, preStop ve .NET HostOptions
DevOps SERİ 10

Graceful Shutdown: SIGTERM, terminationGracePeriodSeconds, preStop ve .NET HostOptions

Pod silinince SIGTERM ile endpoint'ten çıkarılma aynı anda ve senkronizasyonsuz başlar; bu yarış, her şey doğru yapılmış bir rollout'ta bile 23–26 hataya yol açtı, 5 saniyelik preStop sleep action ile sıfıra indi. .NET'in SIGTERM'de istekleri ve BackgroundService'leri sırayla bitirmesini, ShutdownTimeout ve grace period'un birbirini nasıl kestiğini, chiseled image'da exec sleep'in başarısızlığını gerçek çıktılarla görüyoruz.

8 Kas 2026 8 dk 5
Kubernetes'te Scaling: HPA, VPA, In-Place Resize, KEDA ve PodDisruptionBudget
DevOps SERİ 11

Kubernetes'te Scaling: HPA, VPA, In-Place Resize, KEDA ve PodDisruptionBudget

HPA CPU yüzdesini node'a değil container'ın request'ine göre hesaplar; request yoksa hiç ölçeklemez. HPA v2 behavior ayarlarını, in-place resize sonrası .NET GC'nin yeni limiti görmemesini ve GC.RefreshMemoryLimit çözümünü, KEDA ile RabbitMQ queue'suna göre scale-to-zero'yu, drain'i kilitleyen PodDisruptionBudget'ı ve topology spread tuzağını gerçek kind çıktılarıyla görüyoruz.

8 Kas 2026 14 dk 5
Kubernetes'te Storage ve Stateful Uygulamalar: Volume, PersistentVolumeClaim, StatefulSet ve Veritabanı Kararı
DevOps SERİ 12

Kubernetes'te Storage ve Stateful Uygulamalar: Volume, PersistentVolumeClaim, StatefulSet ve Veritabanı Kararı

Birden fazla replica'nın aynı dosyaya yazması gerekiyorsa çözüm PVC değil object storage'dır; ReadWriteOnce tek pod değil tek node demektir. emptyDir sizeLimit eviction'ını, StorageClass ve reclaim policy'yi, StatefulSet ile PostgreSQL 18'i (yeni PGDATA yolu dahil), managed DB ile operator kararını ve replica'lar arasında kırılan ASP.NET Core Data Protection key ring'ini gerçek çıktılarla görüyoruz.

8 Kas 2026 11 dk 5
Job, CronJob ve Worker'lar: EF Core Migration Bundle'ı Job Olarak Çalıştırmak
DevOps SERİ 13

Job, CronJob ve Worker'lar: EF Core Migration Bundle'ı Job Olarak Çalıştırmak

EF Core migration'ı her replica'nın init container'ında değil, deploy'un başında bir kez çalışan sürümlü bir Job'da koşmalısın; EF Core 9+ migration kilidi bizim denemede eşzamanlı init container'ların yarışını önlemedi. Bundle'ı chiseled image'a paketlemeyi, backoffLimit ve TTL ayarlarını, Job immutability'sini, Complete/Failed'i yakalayan pipeline script'ini ve timeZone'lu CronJob'u gerçek çıktılarla görüyoruz.

8 Kas 2026 11 dk 5
Kubernetes Güvenliği: ServiceAccount, RBAC, Pod Security Standards, securityContext ve NetworkPolicy
DevOps SERİ 15

Kubernetes Güvenliği: ServiceAccount, RBAC, Pod Security Standards, securityContext ve NetworkPolicy

Her uygulamaya kendi ServiceAccount'unu ver, gerekmiyorsa token'ı mount etme, namespace'i restricted Pod Security Standards ile koru ve default deny NetworkPolicy'den sonra yalnız gereken yolları aç. RBAC'i kubectl auth can-i ile test etmeyi, aspnet:10.0 image'ının root çalışmasını, readOnlyRootFilesystem'ın .NET Data Protection'a etkisini, user namespace'leri ve DNS'i unutan default deny'ı gerçek kind çıktılarıyla görüyoruz.

8 Kas 2026 11 dk 4
Kubernetes'te Debugging: CrashLoopBackOff, ImagePullBackOff, Pending ve kubectl debug
DevOps SERİ 16

Kubernetes'te Debugging: CrashLoopBackOff, ImagePullBackOff, Pending ve kubectl debug

Pod hatalarında sıra hep aynıdır: get ile belirtiyi, describe ile event'leri, logs --previous ile uygulamanın sesini oku, gerekirse kubectl debug ile shell'siz pod'a ephemeral container sok. Pending, ImagePullBackOff, CrashLoopBackOff, OOMKilled ve port uyuşmazlığını, PID 1 olarak asılı kalan .NET process'ini ve limite yakın pod'da dotnet-dump'ın pod'u nasıl öldürdüğünü gerçek çıktılarla görüyoruz.

8 Kas 2026 11 dk 6
Blog Haritası