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
239 yazı bulundu
Bir Web Uygulaması için DNS Kayıtlarını Kurmak: Apex, www, api, CNAME Flattening, CAA ve Doğrulama TXT'leri
DevOps SERİ 02

Bir Web Uygulaması için DNS Kayıtlarını Kurmak: Apex, www, api, CNAME Flattening, CAA ve Doğrulama TXT'leri

Apex'te CNAME kullanılamaz, çünkü CNAME olan bir isimde başka kayıt olamaz ve apex'te SOA ile NS zorunludur; çözüm sağlayıcının ALIAS, CNAME flattening veya Azure DNS alias özelliğidir. Bookstore'un apex, www, api ve staging kayıtlarını BIND'de kuruyor, PowerDNS'te ALIAS'ın TTL davranışını görüyor, App Service ve Front Door doğrulama TXT'lerini, CAA aramasının üst isimlere tırmanmasını ve dangling CNAME'leri bulan bir script'i gerçek koşularla inceliyoruz.

14 Kas 2026 16 dk 7
Domain Almak ve Sahip Olmak: Registry, Registrar, Nameserver Delegation ve Domain'i Kaybetmemek
DevOps SERİ 01

Domain Almak ve Sahip Olmak: Registry, Registrar, Nameserver Delegation ve Domain'i Kaybetmemek

Bir domain'i registry işletir, registrar satar, sen registrant olarak sahibisin; DNS'in nerede tutulacağı ise registrar'a yazdığın nameserver'larla belirlenir ve registrar'ın panelindeki DNS ekranı o andan sonra etkisizdir. BIND ile kurulan iki container'lık bir laboratuvarda referral'ı, glue record'u ve lame delegation'ı görüyor, RDAP ile expire tarihini izleyen bir script yazıyor ve domain'i kaybetmemek için lock, MFA ve auto-renew kontrol listesini çıkarıyoruz.

14 Kas 2026 16 dk 8
Kubernetes 1.33–1.37 Yenilikleri: Native Sidecar, In-Place Resize, preStop Sleep, Gateway API ve ingress-nginx Sonrası
DevOps SERİ 19

Kubernetes 1.33–1.37 Yenilikleri: Native Sidecar, In-Place Resize, preStop Sleep, Gateway API ve ingress-nginx Sonrası

Kubernetes 1.33–1.37 arasında uygulama geliştiriciyi en çok etkileyenler native sidecar (1.33), preStop sleep (1.34), in-place resize (1.35), user namespace'ler (1.36) ve HPA tolerance (1.37). SIGTERM'ü yok sayan sidecar'ın Job'u nasıl 39 saniyeye uzattığını, externalIPs ve Endpoints deprecation'larını, KYAML'ı, ingress-nginx'in emekliliğini ve Gateway API v1.7'yi gerçek çıktılarla görüyoruz.

8 Kas 2026 10 dk 49
Eski Kubernetes Manifest'lerini Okumak: dockershim, PodSecurityPolicy ve Kaldırılan API'ler (1.16–1.25)
DevOps SERİ 18

Eski Kubernetes Manifest'lerini Okumak: dockershim, PodSecurityPolicy ve Kaldırılan API'ler (1.16–1.25)

2018–2021 dönemi manifest'lerini çevirirken yalnız apiVersion'ı değiştirmek yetmez: apps/v1 selector ister, kubectl convert eski varsayılanları (sonsuz progressDeadlineSeconds, maxUnavailable: 1) manifest'e yazar, Ingress'in backend yapısı değişti. dockershim'in kaldırılmasının Docker image'larını etkilemediğini, PodSecurityPolicy'nin yerine Pod Security Admission'ı ve pluto ile taramayı gerçek çıktılarla görüyoruz.

8 Kas 2026 9 dk 51
Uçtan Uca: .NET + Angular Uygulamasını Managed Kubernetes'e Almak (AKS, EKS, GKE) ve Production Checklist'i
DevOps SERİ 17

Uçtan Uca: .NET + Angular Uygulamasını Managed Kubernetes'e Almak (AKS, EKS, GKE) ve Production Checklist'i

Managed Kubernetes'te control plane sağlayıcıda kalır; image çekmek ve cloud'a erişmek için node kimliği ve workload identity kullanırsan pipeline'da ve cluster'da tek bir cloud secret'ı kalmaz. AKS, EKS ve GKE farklarını, OIDC ile AKS'e deploy eden ve actionlint'ten geçen workflow'u, pluto'nun göremediği deprecated API istemcilerini ve kind'da çalışan kod halindeki production checklist'ini görüyoruz.

8 Kas 2026 11 dk 43
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 44
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 46
Kustomize ile Environment'lar: Base, Overlay, Image Tag ve configMapGenerator
DevOps SERİ 14

Kustomize ile Environment'lar: Base, Overlay, Image Tag ve configMapGenerator

Kustomize ile ortak manifest'ler base'de durur, her ortam overlay'de yalnız farkını yazar ve configMapGenerator'ın hash suffix'i config değişince otomatik rollout tetikler. Component ile HPA/PDB paylaşımını, JSON Patch ile strategic merge patch farkını, CI'da kustomize edit set image'ı ve commonLabels'ın selector'ı değiştirip yarım kalan bir apply ile servisi nasıl kestiğini gerçek çıktılarla görüyoruz.

8 Kas 2026 9 dk 43
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 36
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 43
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 49
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 52
Blog Haritası