Ortamlar
Blue/green ortamları (preprod ⇄ prod)
Ürününüzün tam bir preprod kopyasını — tek app ya da çok-app'li tüm bir yığını — aynı hesap içinde oluşturun, kendi subdomainlerinde istediğiniz kadar test edin, sonra canlı domain(ler)i anında ve birlikte ona çevirin; tek tıkla geri alın, geri alma veriyi de eski haline döndürür.
Platform yardımına dönNe işe yarar
- Amaç: canlı bir ürünü risksiz ve kesintisiz değiştirip test etmek. Çalışan production uygulamasına hiç dokunmazsınız; paralel bir kopya kurar, doğrular, sonra trafiği saniyeler içinde çevirirsiniz.
- Bu, "bir app daha oluştur ve domaini ona çevir"den fazlasıdır: tüm spec'i sizin yerinize klonlar, prod↔preprod'u eşler (panel/CLI hangisinin ne olduğunu bilir), uygulamalar arası bağlantıları preprod kopyalarına yönlendirir, tüm production domainlerini birlikte çevirir ve veritabanını snapshot'lar — böylece geri alma veriyi de geri yükler.
- Her ciddi yayında kullanın: yeni imaj/sürüm, config/bağımlılık değişikliği, şema migrasyonu veya tek parça olarak canlıya çıkması gereken çok-servisli bir değişiklik.
Nasıl çalışır
- Proje = TEK bir hesaptaki app kümesi; her app prod (canlı) veya preprod (kopya) etiketli. Eşleme ve domain geçişi hesap içinde kalır, böylece DNS ve TLS sertifikaları hiç taşınmaz — Promote'u anlık ve geri alınabilir yapan budur.
- Her app kendi ca-*.cdn.com.tr kimlik subdomainini korur (doğrudan test için). Promote'un taşıdığı şey production domaini (gerçek host adınız), prod app'ten preprod kopyasına geçer.
- Hesabın Platforms sekmesi → Managed Container Apps → "Blue/Green ortamları" paneli (Uygulamalarınız listesinin hemen üstünde): preprod oluştur (tek app veya tüm hesap), Promote ve Rollback.
Çok-app'li ürünler (tüm proje)
- Birkaç app'ten oluşan ürünlerde (ör. web + api + worker) "Tüm app'lerden preprod oluştur"u kullanın: her prod app, tek bir proje altında eşlenmiş bir preprod kopyasına klonlanır.
- Uygulamalar arası referanslar otomatik yeniden bağlanır — web api'yi gösteriyorsa, preprod web preprod api'yi gösterir; böylece preprod yığını kendi içinde tutarlıdır, kendi kendine konuşur.
- Promote (tüm proje) her app'in production domainini preprod kopyasına birlikte taşır; Rollback (tüm proje) hepsini geri alır. Yani birden çok servise yayılan bir değişiklik tek parça olarak canlıya çıkar — veya geri alınır.
- Sadece tek servis değiştiyse "Create preprod (tek app)" / "Promote (tek app)" ile tek app de yapabilirsiniz.
Preprod oluştur ve test et
- Bir state modu seçip Create preprod'a basın (tek app veya tüm hesap için "tüm app'lerden"). Her app'in imaj, env, secret, kaynak ve health check'i yeni bir preprod app'ine klonlanır.
- Preprod app(ler)ini deploy edip kendi ca-* subdomainlerinde istediğiniz kadar test edin; production canlı kalır ve hiç etkilenmez.
- Hazır olunca Promote'a basın; canlıdan sonra bir sorun görürseniz Rollback'e basın, trafik anında önceki uygulamalara döner.
State (DB ve statik) — preprod prod ile neyi paylaşır
- shared (varsayılan): preprod, prod ile AYNI managed DB/Redis ve object-storage bucketlarını güvenli cross-app referanslarıyla kullanır (kopya yok). Kod/UI değişiklikleri için idealdir.
- clone: preprod KENDİ managed MySQL'ini + prod verisinin kopyasını alır; data/şema değişikliklerini test etmek için güvenlidir, prod verisi etkilenmez. (Postgres veri kopyası henüz desteklenmiyor — boş başlar.)
- isolated: preprod temiz başlar, kendi taze add-on'larıyla.
- Persistent volume üzerindeki statik dosyalar paylaşılabilir (CephFS RWX), böylece uploadlar ortamlar arası tutarlı kalır.
Geri alınabilirlik ve sınırlar
- Trafik: Promote önce domaini yeni app'e bağlar, sonra eskisini bırakır (boşluk yok); Rollback aynı geçişin tersidir — yeniden kurulum değil, saniyeler.
- Veri: Promote önce otomatik DB snapshot alır, Rollback onu geri yükler; böylece canlıdan sonra yapılan veri değişiklikleri de geri alınabilir.
- Kapsam: her şey tek hesap içinde olur, DNS sahipliği ve production sertifikası hiç etkilenmez.
- Henüz yok: hesaplar arası promote, clone'da Postgres veri kopyası ve çok app'te tam transaction'lı hep-ya-hiç promote (app başına best-effort, app başına hata raporuyla).