Apinizer Sürüm Yükseltme
Apinizer sürüm yükseltme işlemi, kurulum tipi (Kubernetes, Docker, Sanal Sunucu) ve ağ erişim durumuna göre farklı yöntemlerle gerçekleştirilebilir. Her adımda veri kaybını önlemek için MongoDB yedeği alınması ve güncellemeler arası uyumluluğun sağlanması önerilir.
Güncelleme Yöntemleri
Apinizer sürüm yükseltme işlemi, Kubernetes worker sunucularının internete erişim durumuna göre iki farklı yöntemle gerçekleştirilebilir:
Kubernetes cluster'ının internet erişimine sahip olduğu durumlarda kullanılır. Docker imajları doğrudan Docker Hub'dan çekilir ve otomatik olarak güncellenir. Daha hızlı ve kolay bir güncelleme süreci sağlar.
Ne Zaman Kullanılır:
- Kubernetes worker sunucuları internete erişebiliyorsa
- Hızlı ve kolay güncelleme yapmak istiyorsanız
- İmaj transferi için ekstra adımlar atmak istemiyorsanız
Kubernetes cluster'ının internet erişimine sahip olmadığı veya güvenlik politikaları nedeniyle doğrudan internet erişiminin kısıtlandığı durumlarda kullanılır. İmajlar önce internete erişimi olan bir sunucuda çekilir, .tar dosyası olarak kaydedilir veya yerel bir registry'ye yüklenir.
Ne Zaman Kullanılır:
- Kubernetes worker sunucuları internete erişemiyorsa
- Güvenlik politikaları nedeniyle doğrudan internet erişimi kısıtlanmışsa
- Yerel bir Docker registry (Nexus, Harbor vb.) kullanılıyorsa
Yöntemler:
- Manuel İmaj Transferi
- Yerel Registry Kullanımı
Güncelleme işleminden önce, mevcut sistem yapılandırmasıyla uyumsuzluk oluşturabilecek değişiklikleri tespit etmek ve gerekli önlemleri almak adına Sürüm Notlarının incelenmesi tavsiye edilir.
Bu sürüme yükselten bir Manager, açılışta kimlik ve limit verilerinizi kendiliğinden taşır — operatör müdahalesi gerekmez (bkz. Eski Kayıtlar: Otomatik Taşıma → Yükseltmede Otomatik Taşıma). Taşıma, Manager'ın HTTP dinleyicisi açılmadan önce çalışır; yaklaşık 4.000 kayıtlık bir kurulumda birkaç dakika sürer ve bu süre boyunca Manager istek kabul etmez. Sonuçlar api_client_migration_run / api_client_migration_row kayıt defteri koleksiyonlarına yazılır ve taşıma tamamen yakınsayana kadar her gün 03:45'te çalışan bir arka plan görevi eksik kalan kayıtları yeniden dener.
Bu taşıma için bir geri alma (rollback) mekanizması yoktur — yükseltmeden önce aşağıdaki adımda anlatılan MongoDB yedeğini almanız tek geri dönüş yoludur. Aynı sürümle birlikte Rate Limit Kontrol Listesi emekliye ayrılmıştır ve API Proxy ACL / API Proxy Grup ACL satırlarındaki ortam bazlı Daraltma/Kota alanları artık gateway tarafından uygulanmaz. Ortam bazlı AI token bütçesi alanı da 2026.09.2 yükseltmesinde typed bir AI Token Limiti atamasına taşınmıştır. 2026.10.0 sürümü bu alanı ve diğer AI bütçelerini (kuruluş, uygulama, proje, genel varsayılan) kaldırır; bu değerler dönüştürülmeden silinir (bkz. Desteği Sonlandırılanlar ve Kaldırılanlar). 2026.09.2 yükseltmesinde taşınan atamalarda sayaç sıfırlanmaz, taşınmış tüketici/istemci aynı sayaç havuzunda kalmaya devam eder — bu, sıfırdan başlayan İstek Hızı sayaçlarının aksinedir. AI Token Limiti ailesi de artık gölge modunda değildir, typed atamalar gerçekten uygulanır; gölge karşılaştırmasını kapatan apinizer.limit.shadow.enabled JVM sistem özelliği bu sürümde kaldırılmıştır.
Taşınmış kimlik bilgilerinin eski (legacy) parola kopyaları hemen silinmez — kimlik adımı tamamlandıktan 7 gün sonra günlük bir arka plan görevi tarafından temizlenir (bkz. Eski Kayıtlar: Otomatik Taşıma → Yükseltmede Otomatik Taşıma). Bu 7 günlük pencere içinde kurulumunuzdaki tüm gateway'leri (Worker) bu sürüme yükseltin — eski sürüm bir gateway pod'u bu pencereden sonra yeniden başlarsa taşınmış kimlik bilgilerini doğrulayacak legacy parolayı artık bulamaz.
Bu sürüm ayrıca OAuth2 erişim ve yenileme token'larını yalnızca özet (digest) ile saklanan bir yapıya taşır — ne değiştiğini Token Servisi sayfasında bulabilirsiniz. Yukarıdaki açılış-anı adımı eksik kalan özetleri tamamlar ve ardından eski düz metin sütunlarını kaldırır; ayrıca bir işlem yapmanız gerekmez. Bu değişikliğe özgü olarak, gateway (Worker) düğümlerini Manager'dan önce yükseltin: henüz yükseltilmemiş bir Worker, zaten yükseltilmiş bir Manager'a karşı eski düz metin sütunlarını yazmaya devam ederse, bu sütunlar yalnızca bir sonraki temizlik geçişine kadar kullanılmadan kalır — bu bir güvenlik açığı değil, geçici bir fazlalıktır.
Bu sürüm ayrıca Yasal Saklama ve Veri Yaşam Döngüsü Temizleme özelliğini tanıtır. Yükseltme, yeni Veri Yaşam Döngüsü yetki kategorisini ve üç yeni koleksiyonu (yasal saklamalar, temizleme koşuları, temizleme koşusu bulguları) ekler; mevcut verileriniz bunun dışında değişmeden kalır. Yeni yetki otomatik olarak yalnızca Project Owner rolüne verilir — önceden tanımlı başka hiçbir role yasal saklama koyma veya temizleme çalıştırma yeteneği verilmez; böylece hiçbir mevcut kullanıcı beklenmedik biçimde veriyi kalıcı olarak silme yeteneği kazanmaz. Log Saklama altındaki diğer kalemlerin yanına, varsayılan olarak kapalı olan özel bir Lifecycle Purge Run History (Temizleme Koşusu Geçmişi) saklama ayarı eklenir. Elasticsearch API trafik logları bu özellik tarafından hiçbir yönde yeniden yazılmaz — bunların nasıl zamanla düştüğü için bkz. Yasal Saklama ve Veri Yaşam Döngüsü Temizleme → Veri Sahibi Silme.
Token özet (digest) taşıması, çok büyük bir token geçmişine sahip kurulumlarda yükseltme sonrası ilk açılış süresini biraz uzatabilir — bu, eksik özetleri tamamlayan açılış-anı adımının kendisinden kaynaklanır ve operatör müdahalesi gerektirmez; ilerlemeyi Manager (Mongock migration) logundan izleyebilirsiniz.
Bu sürümde ayrıca, deploy edilmiş bir kimlik bilgisinin IP listesinin her istekte büyüyüp global ve ortam listelerinin birleşiminin kalıcı hâle gelmesine yol açan bir davranış düzeltildi. IP kısıtlaması kullanan müşteriler yükseltme sonrasında listelerini gözden geçirsin — daha önce kabul edilen bir IP artık reddedilebilir.
Hangi dizinden geldiği hesabında kayıtlı olmayan bir LDAP kullanıcısı, yapılandırmada devre dışı bırakılmış bir LDAP bağlantısı bulunduğu sürece artık içeri alınmıyor. Bu sürümden önce böyle bir hesap yalnızca açık bağlantılarda aranıyordu; bu, hesabın kalıcı olarak yanlış dizine bağlanmasına ve bilerek kapattığınız bir dizinin kullanıcılarının girmeye devam etmesine yol açabiliyordu. Yapılandırmanızda kapalı bir LDAP bağlantısı duruyorsa onu açın ya da silin — kurulumun tamamı için tek işlem — veya etkilenen kullanıcıları bir kez açıp kaydedin; böylece hesap kendi bağlantısını kaydeder. Bağlantısı zaten kayıtlı olan hesaplar etkilenmez, reddedilen girişler ise gerekçesiyle birlikte Giriş Kayıtları'na yazılır.
Bu sürüm, kullanıcı adlarının (login) büyük/küçük harf farkı gözetmeksizin tekil olmasını zorunlu kılan bir dizin kurar. Yükseltmeden önce, aşağıdaki §1'de anlatıldığı gibi MongoDB yedeğini aldıktan sonra, MongoDB sunucusunda şu sorguyu çalıştırarak mevcut kullanıcılarınız arasında yalnızca büyük/küçük harfle ayrışan bir çift olup olmadığını kontrol edin:
db.user.aggregate(
[
{ $match: { login: { $type: "string" } } },
{ $group: { _id: "$login", count: { $sum: 1 }, logins: { $push: "$login" } } },
{ $match: { count: { $gt: 1 } } }
],
{ collation: { locale: "en", strength: 2 } }
)
Sonuç boşsa bir işlem gerekmez. Bir veya daha fazla grup dönerse, yükseltmeden önce her grupta yalnızca bir kullanıcı adı kalacak şekilde hesapları Kullanıcılar ekranından yeniden adlandırın ya da fazla olan hesabı silin.
Bu adım atlanırsa: Manager yine açılır ve mevcut kullanıcılarınız normal şekilde giriş yapmaya devam eder — dizin yalnızca kurulamaz ve günlüğe bir uyarı yazılır. Ancak dizin kurulana kadar yeni bir LDAP kullanıcısının ilk girişte hesabının otomatik oluşturulması reddedilir (daha önce hesabı oluşturulmuş LDAP kullanıcıları etkilenmez). Bu nedenle Manager'ın sorunsuz açılması, dizinin kurulduğunun kanıtı değildir: yükseltme sonrasında Manager günlüğünde 202609-006722 etiketli satırı arayın — "installed/verified" ile bitiyorsa dizin kuruludur, "NOT installed" ile bitiyorsa yukarıdaki sorguyla yinelenen kayıtları giderip Manager'ı yeniden başlatın; bu adım her açılışta otomatik olarak yeniden denenir.
Kurulumunuz Denetim Kayıtları'nı veya Giriş Kayıtları'nı SQL/JDBC connector'ı üzerinden ilişkisel bir veritabanına gönderiyorsa, Denetim ve Login Log Tablosu ALTER Scriptleri'ni o veritabanına karşı yükseltmeden önce çalıştırın — "önce veya sırasında" değil, çünkü bu sürümün bu iki tabloya karşı yaptığı INSERT koşulsuzdur. Script çalışana kadar her Denetim Olayı satırı yazılamaz (yine de yapılandırılmış failover connector'ınıza ulaşır) ve her Login Log sat ırı failover olmadan yazılamaz — tamamen düşer. Bu iki log tipi için Elasticsearch veya MongoDB connector'ı kullanıyorsanız bu adım geçerli değildir.
Kurulumunuz API proxy trafik loglarını SQL/JDBC connector'ı üzerinden ilişkisel bir veritabanına yazıyorsa, başlangıç sürümünüzün ALTER TABLE scriptlerini (Tablo Oluşturma Komutları sayfasındaki kolon sayısı tablosuna bakın) gateway'i yükseltmeden önce çalıştırın. Hiçbir scripti iki kez çalıştırmayın:
- 2026.09.0 — Log Tablosu ALTER Scriptleri
- 2026.09.1 — Log Tablosu ALTER Scriptleri
- 2026.09.2 — Log Tablosu ALTER Scriptleri
- 2026.10.0 — Log Tablosu ALTER Scriptleri
Gateway INSERT komutu log_ApiProxyTraffic tablosunun tüm kolonlarını adıyla yazar. Bir kolon eksikse o trafik satırının INSERT işlemi başarısız olur ve kay ıt kaybolur. Başlangıç sürümünüze göre hangi scriptlerin gerektiği Apinizer Logları için Tablo Oluşturma Komutları sayfasında listelenir. Trafik loglarını yalnızca Elasticsearch veya MongoDB'ye yazıyorsanız bu adım geçerli değildir.
Bu sürüm tipli erişim modelini, yani erişim yetkilerini ve API istemcisi yetkilendirme kısıtlarını kaldırır. Erişim yalnızca Erişim Kontrol Listesi'nde (ACL) tanımlanır. Kaldırılan veriler yalnızca ACL'nin bir kopyası olduğu için hiçbirinden veri taşınmaz. Başlamadan önce aşağıdaki 1. adımdaki MongoDB yedeğini alın. Bu sürümdeki ilk Manager başlatması, ilgili dispatch ve change-candidate kayıtlarını silen ve access_entitlement ile api_client_authorization_restriction koleksiyonlarını kaldıran tek seferlik bir migration çalıştırır. Anahtar ya da geri alma yolu yoktur.
Şu sırayı izleyin:
- Manager'ı durdurun ve yeni sürümle başlatın. Migration bu başlatmada çalışır.
- Tüm Worker'ları yükseltin. Yeniden başlatma bellekteki verileri boşaltır; yeni Worker'da tipli erişim kodu yoktur.
- ACL değişikliklerini — Erişim Kontrolü ekranında, portal aboneliği iptal ederek ya da APIops ile — yalnızca son eski Worker devreden çıktıktan sonra yapın. Eski Worker tipli yetkileri hâlâ bellekte tutar ve ACL satırını kaldırdığınız bir isteğe izin vermeyi sürdürebilir.
Bu sıra 2026.10.0'a geçiş için geçerlidir. Yukarıdaki önceki sürüm uyarıları kendi sıralarını korur. Gateway kuralı için bkz. API İstemcisinin Yetkilendirilmesi.
1) MongoDB Yedeğinin Alınması
Güncelleme işleminden önce veri kaybını önlemek için MongoDB yedeği alınır. Bu komut MongoDB sunucusu üzerinde çalıştırılır ve tüm kurulum tipleri (Kubernetes, Docker, Sanal Sunucu) için aynı şekilde uygulanır.
sudo mongodump \
--host <PRIMARY_MONGODB_IP_ADDRESS> \
--port=25080 \
--username=apinizer \
--password=<PASSWORD> \
--authenticationDatabase=admin \
--gzip \
--archive=<BACKUP_DIRECTORY>/apinizer-backup--<CURRENT_VERSION>--<BACKUP_DATE>--01.archive
--host(string)requiredPrimary MongoDB sunucusunun IP adresi
--port(number)MongoDB port numarası
--username(string)requiredMongoDB kullanıcı adı
--password(string)requiredMongoDB şifresi
--authenticationDatabase(string)Kimlik doğrulama veritabanı
--gzip(boolean)Yedek dosyasını sıkıştırır
--archive(string)requiredYedek dosyasının kaydedileceği yol ve dosya adı
Yedekleme ile ilgili detaylı bilgi için Yedekleme sayfasına bakabilirsiniz.
2) Apinizer Uygulamalarının Güncellenmesi
Sistem, temel olarak apimanager (2025.11.0 ve öncesi sürümlerde manager), worker ve cache uygulamalarından oluşur. Lisans kapsamına bağlı olarak integration ve apiportal (2025.04.5 ve öncesi sürümlerde portal) uygulamaları da bulunabilir.
Güncel sürüm bilgilerine Docker Hub adresinden veya sürüm notları sayfasından erişilebilir.
Güncelleme Stratejisi ve Kesinti Riski
Güncelleme sırasında trafik kesintisi riski; pod sayısı, güncelleme stratejisi ve sunucu kaynaklarının uygunluğu gibi faktörlere bağlı olarak değişkenlik gösterebilir. Bu değişkenlikler tüm kurulum tipleri için geçerlidir.
Güncellenecek uygulama yalnızca 1 pod üzerinde çalışıyorsa kısa süreli kesinti yaşanabilir. Api Manager bileşeninin 1 pod ile çalışması önerilir.
Kurulum sırasında özel bir strateji belirtilmediği sürece, güncellemeler RollingUpdate yöntemiyle ve en az bir pod aktif kalacak şekilde gerçekleştirilir. Api Manager ve Cache bileşenlerinde Recreate stratejisi de tercih edilebilir.
Kubernetes worker sunucu sayısının az olduğu ve mevcut kaynakların sınırda kullanıldığı ortamlarda, güncelleme sırasında manuel müdahale gerekebilir ve trafik akışında kesinti yaşanması muhtemeldir.
Aşağıdaki sekmelerden kurulum tipinize uygun olanı seçin.
- Kubernetes
- Helm
- Docker
- Sanal Sunucu
2.1) Apinizer'ın Çevrimiçi Güncellenmesi
2.1.1) Apinizer Api Manager Güncellenmesi
Apinizer'ın diğer bileşenlerini güncellemeden önce Apinizer Api Manager'ın güncellenmesi gerekmektedir.
Api Manager'ın veritabanına yapacağı güncellemelerden sonra diğer Apinizer uygulamalarının güncel ayarlarla veritabanından beslenmesi gerekmektedir.
Bu nedenle, Api Manager güncellendikten sonra Kubernetes üzerindeki Api Manager podlarının "ready" durumuna geldiğinden emin olunmalı ve ardından diğer bileşenler g üncellenmelidir.
Bu ve sonraki adımlardaki komutlar, Kubernetes Control Plane görevine sahip sunucular üzerinde çalıştırılır.
kubectl get deployments -Ao wide
kubectl set image deployment/<MANAGER_DEPLOYMENT_NAME> -n <MANAGER_NAMESPACE> <MANAGER_CONTAINER_NAME>=apinizercloud/apimanager:<NEW_VERSION>
Pod'un READY olması beklenir, pod durumu ve logları takip edilir:
kubectl get pods -n <MANAGER_NAMESPACE>
kubectl get logs -f -n <MANAGER_NAMESPACE> <POD_NAME>
2.1.2) Apinizer Worker ve Cache Güncellenmesi
Apinizer Api Manager imajının güncellendiğinden emin olduktan sonra Apinizer Worker ve Cache uygulamaları güncellenir.
kubectl set image deployment/<WORKER_DEPLOYMENT_NAME> -n <WORKER_CACHE_NAMESPACE> <WORKER_CONTAINER_NAME>=apinizercloud/worker:<NEW_VERSION>
kubectl set image deployment/<CACHE_DEPLOYMENT_NAME> -n <WORKER_CACHE_NAMESPACE> <CACHE_CONTAINER_NAME>=apinizercloud/cache:<NEW_VERSION>
Pod'ların READY olması beklenir, pod durumu takip edilir:
kubectl get pods -n <WORKER_CACHE_NAMESPACE>
kubectl get logs -f -n <WORKER_CACHE_NAMESPACE> <POD_NAME>
2.1.3) Apinizer Portal ve Integration Güncellenmesi
Apinizer Portal ve Integration benzer şekilde güncellenebilir.
kubectl set image deployment/<PORTAL_DEPLOYMENT_NAME> -n <PORTAL_NAMESPACE> <PORTAL_CONTAINER_NAME>=apinizercloud/apiportal:<NEW_VERSION>
kubectl set image deployment/<INTEGRATION_DEPLOYMENT_NAME> -n <INTEGRATION_NAMESPACE> <INTEGRATION_CONTAINER_NAME>=apinizercloud/integration:<NEW_VERSION>
Pod'ların READY olması beklenir, pod durumları takip edilir:
kubectl get pods -n <PORTAL_NAMESPACE>
kubectl get logs -f -n <PORTAL_NAMESPACE> <POD_NAME>
kubectl get pods -n <INTEGRATION_NAMESPACE>
kubectl get logs -f -n <INTEGRATION_NAMESPACE> <POD_NAME>
2.2) Apinizer'ın Çevrimdışı Güncellenmesi
Kubernetes ortamlarında güncelleme yapmayı gerektiren offline sistemler için iki ana yöntem kullanılabilir:
İnterneti ve docker/containerd uygulaması olan bir sunucuya imaj dosyalarını çekmek ve bu imaj dosyalarını hedef Kubernetes cluster'ına aktarmak.
Kubernetes cluster'ın kullanacağı bir repository uygulaması kullanmak (Nexus, Harbor vb.).
2.2.1) Online Sunucudan İmajların Çekilmesi ve Offline Sunuculara Aktarılması
İnternete ve offline makinelere erişimi olan bir makine varsa aşağıdaki adımlar gerçekleştirilebilir.
2.2.1.1) Docker Kullanımı
# Online sunucudan yükseltme için gerekli olan tüm imajlar çekilir
docker pull apinizercloud/apimanager:<NEW_VERSION>
docker pull apinizercloud/worker:<NEW_VERSION>
docker pull apinizercloud/cache:<NEW_VERSION>
docker pull apinizercloud/apiportal:<NEW_VERSION>
docker pull apinizercloud/integration:<NEW_VERSION>
# İlgili imajları offline sunuculara aktarmak için, online sunucuda imajlar `.tar` formatında kaydedilir
docker save apinizercloud/apimanager:<NEW_VERSION> -o apinizercloud-apimanager.<NEW_VERSION>.tar
docker save apinizercloud/worker:<NEW_VERSION> -o apinizercloud-worker.<NEW_VERSION>.tar
docker save apinizercloud/cache:<NEW_VERSION> -o apinizercloud-cache.<NEW_VERSION>.tar
docker save apinizercloud/apiportal:<NEW_VERSION> -o apinizercloud-apiportal.<NEW_VERSION>.tar
docker save apinizercloud/integration:<NEW_VERSION> -o apinizercloud-integration.<NEW_VERSION>.tar
# İmajların her biri offline sunucuya aktarılır
scp apinizercloud-*.tar <OFFLINE_MACHINE_USER>@<OFFLINE_MACHINE_IP>:<TARGET_DIRECTORY>
# Her bir offline sunucuda imajlar yüklenilir
docker load -i apinizercloud-apimanager.<NEW_VERSION>.tar
docker load -i apinizercloud-worker.<NEW_VERSION>.tar
docker load -i apinizercloud-cache.<NEW_VERSION>.tar
docker load -i apinizercloud-portal.<NEW_VERSION>.tar
docker load -i apinizercloud-integration.<NEW_VERSION>.tar
2.2.1.2) Containerd Kullanımı
# Online sunucudan yükseltme için gerekli olan tüm imajlar çekilir
ctr image pull docker.io/apinizercloud/apimanager:<NEW_VERSION>
ctr image pull docker.io/apinizercloud/worker:<NEW_VERSION>
ctr image pull docker.io/apinizercloud/cache:<NEW_VERSION>
ctr image pull docker.io/apinizercloud/apiportal:<NEW_VERSION>
ctr image pull docker.io/apinizercloud/integration:<NEW_VERSION>
# İlgili imajları offline sunuculara aktarmak için, online sunucuda imajlar `.tar` formatında kaydedilir
ctr images export apinizercloud-apimanager.tar docker.io/apinizercloud/apimanager:<NEW_VERSION>
ctr images export apinizercloud-worker.tar docker.io/apinizercloud/worker:<NEW_VERSION>
ctr images export apinizercloud-cache.tar docker.io/apinizercloud/cache:<NEW_VERSION>
ctr images export apinizercloud-apiportal.tar docker.io/apinizercloud/apiportal:<NEW_VERSION>
ctr images export apinizercloud-integration.tar docker.io/apinizercloud/integration:<NEW_VERSION>
# İmajların her biri offline kubernetes worker sunuculara aktarılır
scp docker.io-apinizercloud-*.tar <OFFLINE_MACHINE_USER>@<OFFLINE_MACHINE_IP>:<TARGET_DIRECTORY>
# Her bir offline sunucuda imajlar yüklenilir
ctr images import apinizercloud-apimanager.tar
ctr images import apinizercloud-worker.tar
ctr images import apinizercloud-cache.tar
ctr images import apinizercloud-apiportal.tar
ctr images import apinizercloud-integration.tar
2.2.2) Yerel İmaj Registry ya da Repository Kullanımı
Farklı imaj registry ve repository'leri farklı yöntemlerle çalışsa da çoğunda çekilen imajlar tag'lenerek uygulamaya gönderilmelidir.
Nexus veya Harbor gibi kurumsal registry'lerde node yapılandırması ve deployment imaj path güncellemesi için Container Registry bölümüne bakın. Aşağıdaki adımlar imajları registry'ye push etme senaryosu içindir.
Eğer uygulama reverse proxy şeklinde kullanılıyorsa hub.docker.com adresindeki apinizercloud reposuna yönelik gerekli tanımın verilmesi yeterli olmaktadır.
2.2.2.1) Docker Kullanımı
# Gerekli tüm imajlar çekilir
docker pull apinizercloud/apimanager:<NEW_VERSION>
docker pull apinizercloud/worker:<NEW_VERSION>
docker pull apinizercloud/cache:<NEW_VERSION>
docker pull apinizercloud/apiportal:<NEW_VERSION>
docker pull apinizercloud/integration:<NEW_VERSION>
# Çekilen imajlar, gerekli tag bilgileri ile yeniden etiketlenir
docker tag apinizercloud/apimanager:<NEW_VERSION> <YEREL_REGISTRY>/apinizercloud/apimanager:<NEW_VERSION>
docker tag apinizercloud/worker:<NEW_VERSION> <YEREL_REGISTRY>/apinizercloud/worker:<NEW_VERSION>
docker tag apinizercloud/cache:<NEW_VERSION> <YEREL_REGISTRY>/apinizercloud/cache:<NEW_VERSION>
docker tag apinizercloud/apiportal:<NEW_VERSION> <YEREL_REGISTRY>/apinizercloud/apiportal:<NEW_VERSION>
docker tag apinizercloud/integration:<NEW_VERSION> <YEREL_REGISTRY>/apinizercloud/integration:<NEW_VERSION>
# Kurumun yerel imaj registry'sine imajlar aktarılır:
docker push <YEREL_REGISTRY>/apinizercloud/apimanager:<NEW_VERSION>
docker push <YEREL_REGISTRY>/apinizercloud/worker:<NEW_VERSION>
docker push <YEREL_REGISTRY>/apinizercloud/cache:<NEW_VERSION>
docker push <YEREL_REGISTRY>/apinizercloud/apiportal:<NEW_VERSION>
docker push <YEREL_REGISTRY>/apinizercloud/integration:<NEW_VERSION>
2.2.2.2) Containerd Kullanımı
# Gerekli tüm imajlar çekilir
ctr image pull docker.io/apinizercloud/apimanager:<NEW_VERSION>
ctr image pull docker.io/apinizercloud/worker:<NEW_VERSION>
ctr image pull docker.io/apinizercloud/cache:<NEW_VERSION>
ctr image pull docker.io/apinizercloud/apiportal:<NEW_VERSION>
ctr image pull docker.io/apinizercloud/integration:<NEW_VERSION>
# Çekilen imajlar, gerekli tag bilgileri ile yeniden etiketlenir
ctr image tag docker.io/apinizercloud/apimanager:<NEW_VERSION> <YEREL_REGISTRY>/apinizercloud/apimanager:<NEW_VERSION>
ctr image tag docker.io/apinizercloud/worker:<NEW_VERSION> <YEREL_REGISTRY>/apinizercloud/worker:<NEW_VERSION>
ctr image tag docker.io/apinizercloud/cache:<NEW_VERSION> <YEREL_REGISTRY>/apinizercloud/cache:<NEW_VERSION>
ctr image tag docker.io/apinizercloud/apiportal:<NEW_VERSION> <YEREL_REGISTRY>/apinizercloud/apiportal:<NEW_VERSION>
ctr image tag docker.io/apinizercloud/integration:<NEW_VERSION> <YEREL_REGISTRY>/apinizercloud/integration:<NEW_VERSION>
# Kurumun yerel imaj registry'sine imajlar aktarılır:
ctr images push <YEREL_REGISTRY>/apinizercloud/apimanager:<NEW_VERSION>
ctr images push <YEREL_REGISTRY>/apinizercloud/worker:<NEW_VERSION>
ctr images push <YEREL_REGISTRY>/apinizercloud/cache:<NEW_VERSION>
ctr images push <YEREL_REGISTRY>/apinizercloud/apiportal:<NEW_VERSION>
ctr images push <YEREL_REGISTRY>/apinizercloud/integration:<NEW_VERSION>
2.2.3) Apinizer Api Manager Güncellenmesi
Apinizer'ın diğer bileşenlerini güncellemeden önce Apinizer Api Manager'ın güncellenmesi gerekmektedir.
Api Manager'ın veritabanına yapacağı güncellemelerden sonra diğer Apinizer uygulamalarının güncel ayarlarla veritabanından beslenmesi gerekmektedir.
Bu nedenle, Api Manager güncellendikten sonra Kubernetes üzerindeki Api Manager podlarının "ready" durumuna geldiğinden emin olunmalı ve ardından diğer bileşenler güncellenmelidir.
Bu ve sonraki adımlardaki komutlar, Kubernetes Control Plane görevine sahip sunucular üzerinde çalıştırılır.
kubectl get deployments -Ao wide
kubectl set image deployment/<MANAGER_DEPLOYMENT_NAME> -n <MANAGER_NAMESPACE> <MANAGER_CONTAINER_NAME>=<YEREL_REGISTRY>/apinizercloud/apimanager:<NEW_VERSION>
Pod'un READY olması beklenir, pod durumu takip edilir:
kubectl get pods -n <MANAGER_NAMESPACE>
kubectl logs -f -n <MANAGER_NAMESPACE> <POD_NAME>
2.2.4) Apinizer Worker ve Cache Güncellenmesi
Apinizer Api Manager imajının güncellendiğinden emin olduktan sonra Apinizer Worker ve Cache uygulamaları güncellenir.
kubectl set image deployment/<WORKER_DEPLOYMENT_NAME> -n <WORKER_CACHE_NAMESPACE> <WORKER_CONTAINER_NAME>=<YEREL_REGISTRY>/apinizercloud/worker:<NEW_VERSION>
kubectl set image deployment/<CACHE_DEPLOYMENT_NAME> -n <WORKER_CACHE_NAMESPACE> <CACHE_CONTAINER_NAME>=<YEREL_REGISTRY>/apinizercloud/cache:<NEW_VERSION>
Pod'ların READY olması beklenir, pod durumu takip edilir:
kubectl get pods -n <WORKER_CACHE_NAMESPACE>
kubectl logs -f -n <WORKER_CACHE_NAMESPACE> <POD_NAME>
2.2.5) Apinizer Portal ve Integration Güncellenmesi
Apinizer Portal ve Integration benzer şekilde güncellenebilir.
kubectl set image deployment/<PORTAL_DEPLOYMENT_NAME> -n <PORTAL_NAMESPACE> <PORTAL_CONTAINER_NAME>=<YEREL_REGISTRY>/apinizercloud/apiportal:<NEW_VERSION>
kubectl set image deployment/<INTEGRATION_DEPLOYMENT_NAME> -n <INTEGRATION_NAMESPACE> <INTEGRATION_CONTAINER_NAME>=<YEREL_REGISTRY>/apinizercloud/integration:<NEW_VERSION>
Pod'ların READY olması beklenir, pod durumları takip edilir:
kubectl get pods -n <PORTAL_NAMESPACE>
kubectl get logs -f -n <PORTAL_NAMESPACE> <POD_NAME>
kubectl get pods -n <INTEGRATION_NAMESPACE>
kubectl get logs -f -n <INTEGRATION_NAMESPACE> <POD_NAME>
Helm ile kurulan Apinizer modülleri helm upgrade ile yükseltilir. Bu akışta yalnızca imaj sürümü (image.tag) değişir; diğer tüm değerler --reuse-values ile mevcut release'ten korunur.
Diğer bileşenlerden önce API Manager yükseltilmelidir. API Manager, veritabanı (Mongock) migration'larını çalıştırır; pod'ları Ready olduktan sonra diğer modüller yükseltilmelidir.
2.1) Çevrimiçi Güncelleme (Helm)
Her modülde chart ve sürüm (--version 1.0.0) aynı kalır, yalnızca yeni imaj tag'i verilir:
1.0.0 öncesi chart'lar Secret'ı kendileri oluştururdu; 1.0.0 chart'ında Secret yoktur. Doğrudan helm upgrade yaparsanız Helm, kendi oluşturduğu Secret'ı release'ten silebilir ve pod'lar MongoDB bağlantısını kaybeder. Upgrade'den önce Secret'a "silme" politikası uygulayın:
kubectl -n <API-Manager-Namespace> annotate secret mongo-db-credentials \
helm.sh/resource-policy=keep --overwrite
Aynı işlemi Secret'ı paylaşan diğer namespace'ler ve Portal Secret'ı (apinizer-portal) için de tekrarlayın.
helm upgrade apimanager oci://registry-1.docker.io/apinizercloud/apinizer-apimanager \
--version 1.0.0 --reuse-values \
-n <API-Manager-Namespace> \
--set image.tag="<NEW_VERSION>"
Pod'lar Ready olana kadar bekleyin:
kubectl -n <API-Manager-Namespace> rollout status deploy/apimanager
helm upgrade worker oci://registry-1.docker.io/apinizercloud/apinizer-worker \
--version 1.0.0 --reuse-values -n <Worker-Namespace> --set image.tag="<NEW_VERSION>"
helm upgrade cache oci://registry-1.docker.io/apinizercloud/apinizer-cache \
--version 1.0.0 --reuse-values -n <Cache-Namespace> --set image.tag="<NEW_VERSION>"
helm upgrade integration oci://registry-1.docker.io/apinizercloud/apinizer-integration \
--version 1.0.0 --reuse-values -n <Integration-Namespace> --set image.tag="<NEW_VERSION>"
helm upgrade portal oci://registry-1.docker.io/apinizercloud/apinizer-apiportal \
--version 1.0.0 --reuse-values -n <API-Portal-Namespace> --set image.tag="<NEW_VERSION>"
--reuse-values mevcut release'in tüm değerlerini korur; --set image.tag yalnızca imaj sürümünü değiştirir. Release adları ve namespace'ler kurulumdakiyle aynı olmalıdır (her modül kurulumda kullandığınız namespace'te).
2.1.1) values.yaml ile Güncelleme (GitOps)
values.yaml dosyasını sürüm kontrolünde (örn. GitLab) tutuyorsanız güncellemeyi --set yerine dosya üzerinden yapabilirsiniz: yeni imaj sürümünü values.yaml içindeki image.tag alanına yazıp commit'leyin, ardından aynı dosyayla helm upgrade -f çalıştırın.
helm upgrade apimanager oci://registry-1.docker.io/apinizercloud/apinizer-apimanager \
--version 1.0.0 \
-n <API-Manager-Namespace> \
-f apinizer-apimanager/values.yaml
Diğer modüller için aynı şekilde ilgili chart ve values.yaml yolunu kullanın (apinizer-worker, apinizer-cache, apinizer-integration, apinizer-apiportal).
-f values.yaml ile güncellemede --reuse-values kullanmayın; değerlerin tek kaynağı values.yaml dosyasıdır. Secret yine bu kapsamda değildir; values.yaml'a kimlik bilgisi koymayın.
2.2) Doğrulama
helm list -n <NAMESPACE> # her modülün kurulu olduğu namespace için tekrarlayın
kubectl -n <NAMESPACE> get pods
2.3) Çevrimdışı / Yerel Registry
Cluster internete erişemiyorsa imajlar bir yerel registry'ye taşınır (imaj transferi için yukarıdaki Kubernetes sekmesindeki çevrimdışı adımlara bakın). Yerel registry kullanılıyorsa imaj tag'i ile birlikte repository de verilir:
helm upgrade apimanager oci://registry-1.docker.io/apinizercloud/apinizer-apimanager \
--version 1.0.0 --reuse-values -n <API-Manager-Namespace> \
--set image.repository=<YEREL_REGISTRY>/apinizercloud/apimanager \
--set image.tag="<NEW_VERSION>"
2.4) Geri Alma (Helm Rollback)
Helm her upgrade'i bir revision olarak saklar; sorun durumunda önceki revision'a dönülebilir:
helm history apimanager -n <API-Manager-Namespace>
helm rollback apimanager <REVISION> -n <API-Manager-Namespace>
kubectl -n <API-Manager-Namespace> rollout status deploy/apimanager
Mongock migration'ları forward-only'dir. Yeni sürüm veritabanı şemasını değiştirdiyse rollback eski Manager'ın açılmasını engelleyebilir; major sürüm yükseltmelerinden önce mutlaka MongoDB yedeği alın (bkz. bölüm 1) ve gerekirse bölüm 3'teki geri yükleme adımlarını uygulayın.
Hızlı Başvuru
NEW=2026.04.6
docker pull apinizercloud/<modul>:${NEW}
# docker-compose:
# 1) compose.yml içinde image tag'ini güncelle
# 2) docker compose up -d <service>
# vanilla docker:
docker stop <konteyner-adi> && docker rm <konteyner-adi>
docker run -d --name <konteyner-adi> ... apinizercloud/<modul>:${NEW}
Önerilen Yükseltme Sırası
- MongoDB (gerekiyorsa — bkz. MongoDB Yükseltme)
- API Manager — Mongock migration'ları çalışır, schema güncellenir
- Cache (rolling — bir node bir node)
- Worker (rolling — bir replika bir replika; LB arkasında)
- Integration (rolling — Quartz cluster check-in cycle bekleyin)
- API Portal — stateless, basit replace
Modül Bazlı Detaylar
API Manager
Manager Mongock migration'ları üretebileceği için tek instance'a indirgemek gerekmez — yeni Manager başlarken eski Manager hâlâ ayakta olabilir. Migration'lar idempotent.
docker pull apinizercloud/apimanager:${NEW}
docker compose up -d apimanager # tag compose.yml'de değişti
docker compose logs -f apimanager # "Mongock finished" ve "Started ApinizerManagerApp"
İlk başlatma 30–90 saniye sürebilir (Mongock migration'lar).
Üretimde major version atlamadan önce MongoDB yedek alın. Major versiyon zinciri (örn. 2026.04.x → 2026.05.x → 2026.06.x) tek seferde değil, sırayla atlanmalı; her aşamada Mongock log'larını izleyin.
Cache (rolling upgrade)
Cache node'ları Hazelcast cluster'ı oluşturduğu için bir node bir node yükseltin:
docker pull apinizercloud/cache:${NEW}
# Node 1
docker stop -t 30 apinizer-cache-1 && docker rm apinizer-cache-1
docker run -d --name apinizer-cache-1 ... apinizercloud/cache:${NEW}
# 'Members {size:3, ver:N}' log'u tekrar görünene kadar bekle
docker logs apinizer-cache-1 | grep -E 'Members \{'
# Sonra node 2, node 3...
Cluster bir node eksikken çalışmaya devam eder (replication factor ≥ 1).
Worker
LB arkasında çalışan Worker'lar için canary / blue-green:
docker pull apinizercloud/worker:${NEW}
# LB'den bir replikayı çek
# Konteyneri replace et
docker stop -t 60 apinizer-worker-1 && docker rm apinizer-worker-1
docker run -d --name apinizer-worker-1 ... apinizercloud/worker:${NEW}
# Sağlık doğrulanınca LB'ye geri ekle
# Diğer replikaları sırayla yükselt
docker stop -t 60 zorunlu — in-flight HTTP / gRPC / WebSocket istekleri 60 saniyeye kadar drain olur.
Integration (clustered Quartz)
Integration node'ları MongoDB üzerinden cluster oluşturduğu için bir node restart sırasında diğer node trigger'ları üstlenir:
docker pull apinizercloud/integration:${NEW}
# Node 1
docker stop -t 120 apinizer-integration-1 && docker rm apinizer-integration-1
docker run -d --name apinizer-integration-1 ... apinizercloud/integration:${NEW}
# 'Quartz Scheduler Prod Environment Setup started' log'unu bekle
# Sonra node 2, node 3...
stop -t 120 zorunlu — waitForJobsToCompleteOnShutdown=true ile mevcut job'lar drain olabilsin.
API Portal
Stateless — basit recreate yeterli:
docker pull apinizercloud/apiportal:${NEW}
docker compose up -d apiportal # tag değişti
Multiple replica varsa LB önünde her replikayı sırayla replace edin.
Geri Alma (Rollback)
Önceki versiyona dönmek için aynı pattern, eski tag ile:
OLD=2026.04.5
docker compose down # veya: docker stop ... && docker rm ...
# compose.yml'i eski tag'e geri al, sonra:
docker compose up -d
Mongock migration'ları forward-only. Yeni versiyon DB schema'sını değiştirmişse rollback eski Manager'ın boot etmemesine yol açabilir. Major upgrade'lerden önce MongoDB yedek alın.
Sorun Giderme
Yeni Manager boot edemiyor: Mongock lock acquired by another instance
Eski Manager Mongock lock'ı bırakmadan SIGKILL aldı. Manager DB'sinde:
use apinizer
db.mongockLock.deleteMany({})
Lock cleanup'tan sonra Manager yeniden başlatın.
Worker yeni versiyonda Environment'a bağlanamıyor
Major versiyon değişikliğinde Environment schema değişmiş olabilir. Manager log'larını kontrol edip Environment'ın doğru schema'da olduğunu doğrulayın.
Compose'da image is being used by container hatası
docker compose up -d tag değişmedikçe konteyneri recreate etmez. Manuel:
docker compose up -d --force-recreate <service>
Hızlı Başvuru
NEW=2026.04.6
sudo systemctl stop apinizer-<modul>
sudo tar -xzf apinizer-<modul>-${NEW}-linux-x64.tar.gz -C /opt
sudo cp /opt/apinizer-<modul>/conf/application.env /opt/apinizer-<modul>-${NEW}/conf/
sudo cp /opt/apinizer-<modul>/conf/master.key /opt/apinizer-<modul>-${NEW}/conf/
sudo chown -R apinizer:apinizer /opt/apinizer-<modul>-${NEW}/conf
sudo chmod 600 /opt/apinizer-<modul>-${NEW}/conf/application.env
sudo chmod 400 /opt/apinizer-<modul>-${NEW}/conf/master.key
sudo mv /opt/apinizer-<modul> /opt/apinizer-<modul>.bak
sudo mv /opt/apinizer-<modul>-${NEW} /opt/apinizer-<modul>
sudo /opt/apinizer-<modul>/bin/<modul>-install.sh # systemd unit'i yeniden register
sudo systemctl start apinizer-<modul>
sudo systemctl status apinizer-<modul>
# Healthy doğrulandıktan sonra:
sudo rm -rf /opt/apinizer-<modul>.bak
Önerilen Yükseltme Sırası
- MongoDB (gerekiyorsa)
- API Manager — Mongock migration'ları
- Cache — rolling, bir node bir node
- Worker — LB arkasında rolling
- Integration — clustered Quartz, rolling
- API Portal — stateless
Modül Bazlı
API Manager
NEW=2026.04.6
sudo systemctl stop apinizer-apimanager
# Yedek al
sudo cp /opt/apinizer-manager/conf/application.env ~/manager-env-pre-${NEW}.bak
sudo cp /opt/apinizer-manager/conf/master.key ~/manager-key-pre-${NEW}.bak
# Yeni paketi aç
curl -fSLO "https://packages.apinizer.com/apinizer-packages/releases/apimanager/${NEW}/apinizer-apimanager-${NEW}-linux-x64.tar.gz"
sudo tar -xzf apinizer-apimanager-${NEW}-linux-x64.tar.gz -C /opt
# Config taşı
sudo cp /opt/apinizer-manager/conf/application.env /opt/apinizer-apimanager-${NEW}/conf/
sudo cp /opt/apinizer-manager/conf/master.key /opt/apinizer-apimanager-${NEW}/conf/
sudo chown -R apinizer:apinizer /opt/apinizer-apimanager-${NEW}/conf
sudo chmod 600 /opt/apinizer-apimanager-${NEW}/conf/application.env
sudo chmod 400 /opt/apinizer-apimanager-${NEW}/conf/master.key
# Swap + reinstall
sudo mv /opt/apinizer-manager /opt/apinizer-manager.bak
sudo mv /opt/apinizer-apimanager-${NEW} /opt/apinizer-manager
sudo /opt/apinizer-manager/bin/apimanager-install.sh
sudo systemctl start apinizer-apimanager
sudo journalctl -u apinizer-apimanager -f # Mongock log'unu izle
İlk başlangıçta Mongock 30–90 saniye sürebilir. Started ApinizerManagerApp log'undan sonra:
curl -fsS http://127.0.0.1:8080/management/health
# Healthy ise:
sudo rm -rf /opt/apinizer-manager.bak
Cache (rolling upgrade)
Cache node'ları stateful Hazelcast member — bir node bir node yükseltin:
# Node 1'de:
sudo systemctl stop apinizer-apicache
# (yukarıdaki Manager akışıyla aynı: tarball aç, conf taşı, install, start)
# Sonra node 2'ye geç — log'da 'Members {size:3, ver:N}' görmek kritik
Cluster bir node eksikken çalışmaya devam eder.
Worker
LB arkasında her replikayı sırayla:
# LB'den replika 1'i çıkar
sudo systemctl stop apinizer-apiworker # SIGTERM + 60 sn drain
# (tarball swap akışı)
sudo systemctl start apinizer-apiworker
curl -fsS http://127.0.0.1:8091/apinizer/management/health
# Healthy → LB'ye geri al, replika 2'ye geç
Integration
Quartz cluster check-in 7.5 sn — bir node restart ederken diğer node trigger'ları üstlenir:
sudo systemctl stop apinizer-apiintegration # SIGTERM + waitForJobsToCompleteOnShutdown drain
# (tarball swap akışı)
sudo systemctl start apinizer-apiintegration
sudo journalctl -u apinizer-apiintegration -f # 'Quartz Scheduler Prod Environment Setup started'
API Portal
Stateless — basit swap:
sudo systemctl stop apinizer-apiportal
# tarball swap
sudo systemctl start apinizer-apiportal
Geri Alma (Rollback)
.bak dizinini henüz silmediyseniz hızlı:
sudo systemctl stop apinizer-<modul>
sudo mv /opt/apinizer-<modul> /opt/apinizer-<modul>.failed
sudo mv /opt/apinizer-<modul>.bak /opt/apinizer-<modul>
sudo /opt/apinizer-<modul>/bin/<modul>-install.sh
sudo systemctl start apinizer-<modul>
Mongock migration'ları forward-only. Yeni Manager DB schema'sını değiştirdiyse rollback eski Manager'ın boot etmesini engelleyebilir. Major upgrade öncesi MongoDB yedek alın.
Sorun Giderme
Yeni paketten servis "is not set" ile çıkıyor
conf/application.env taşıma adımında atlandı veya izinler bozuk. Manuel kontrol:
ls -la /opt/apinizer-<modul>/conf/
# application.env mod 600, apinizer:apinizer sahipli olmalı
# master.key mod 400, apinizer:apinizer sahipli olmalı
"Master key file not found" + boot crash
master.key taşınmadı. Backup'tan geri yükle:
sudo cp ~/manager-key-pre-${NEW}.bak /opt/apinizer-manager/conf/master.key
sudo chown apinizer:apinizer /opt/apinizer-manager/conf/master.key
sudo chmod 400 /opt/apinizer-manager/conf/master.key
sudo systemctl restart apinizer-apimanager
Mongock lock acquired by another instance
Önceki Manager temizlik yapamadan kapandı. MongoDB'de:
use apinizer
db.mongockLock.deleteMany({})
Sonra Manager'ı yeniden başlat.
3) Apinizer Uygulama Güncellemelerinin Geri Alınması
2026.09.2'de açılışta çalışan kimlik ve limit taşıması uygulama sürümü düşürülerek geri alınamaz. Bu sürümden geri dönmeniz gerekirse tek yol, aşağıdaki §1'de anlatıldığı gibi yükseltmeden önce alınmış MongoDB yedeğinin geri yüklenmesidir.
Apinizer uygulamalarında sürüm düşürülmesi desteklenmemektedir. Ancak güncellenen bir sürüm veritabanı yedekleri varsa geri alınabilir.
Herhangi bir sebep ile güncellemelerin geri alınması gerektiğinde yapılması gereken ilk iş güncelleme öncesi MongoDB yedeğinin alınmış olduğunu kontrol etmektir. Güncelleme öncesi alınmış bir veritabanı yedeği yoksa Api Manager uygulamasının veritabanında yapacağı değişiklikleri geri almanın bir yolu olmadığı için veritabanı sunucularının sistemsel bir yedeği varsa mevcut son yedeğe dönülerek o tarihteki sürüme geri dönülebilir.
Bu işlem o tarihten itibaren yapılan değişikliklerin kaybına yol açacağı için dikkatle yapılmalıdır. Güncelleme ile yapısal farklılıklar oluşabileceğinden bu işlem sadece referans olarak kullanılmak için düşünülebilir.
3.1) MongoDB Veritabanı Geri Yükleme
Bu işlemin öncesinde Api Manager uygulamasının kubernetes üzerinde CrashLoopBackOff hatası ile yeniden başlatılma döngüsünde olmadığı teyit edilmelidir. En güvenli yöntem için Api Manager uygulaması replica sayısı 0'a indirilerek durdurulmalıdır.
Api Manager replica sayısı 0'a çekilir ve tüm pod'lar kapatılır (Kubernetes ortamlarında):
kubectl scale deploy <MANAGER_DEPLOYMENT_NAME> -n <MANAGER_NAMESPACE> --replicas=0
Docker ortamlarında: docker compose stop apimanager veya docker stop apinizer-apimanager
Sanal Sunucu ortamlarında: sudo systemctl stop apinizer-apimanager
MongoDB mevcut son yedeğe dönülmelidir. Dönüş sırasında olası çakışmaları engellemek için --drop parametresi kullanılabilir. Bu sadece yedek dosyasında karşılığı olan koleksiyonları drop edecek ve yüklemeyi sonrasında gerçekleştirmeyi sağlayacaktır.
Detaylı bilgi için MongoDB Veritabanı Yedekleme ve Geri Yükleme sayfası incelenebilir.
3.2) Manager Sürümünün Geri Alınması
Dönüş sırasında eğer yerel kayıt defteri kullanılacaksa komutlar buna göre güncellenmelidir.
- Kubernetes
- Helm
- Docker
- Sanal Sunucu
kubectl set image deployment/<MANAGER_DEPLOYMENT_NAME> -n <MANAGER_NAMESPACE> <MANAGER_CONTAINER_NAME>=apinizercloud/apimanager:<OLD_VERSION>
kubectl scale deploy <MANAGER_DEPLOYMENT_NAME> -n <MANAGER_NAMESPACE> --replicas=1
Pod'un READY olması beklenir, pod durumu ve logları takip edilir:
kubectl get pods -n <MANAGER_NAMESPACE>
kubectl logs -f -n <MANAGER_NAMESPACE> <POD_NAME>
Helm her upgrade'i bir revision olarak saklar; helm history ile hedef revision belirlenir ve o revision'a dönülür:
helm history apimanager -n <API-Manager-Namespace>
helm rollback apimanager <REVISION> -n <API-Manager-Namespace>
Pod'un Ready olması beklenir:
kubectl -n <API-Manager-Namespace> rollout status deploy/apimanager
kubectl -n <API-Manager-Namespace> get pods
docker compose down # veya: docker stop apinizer-apimanager && docker rm apinizer-apimanager
# compose.yml'i eski tag'e geri al, sonra:
docker compose up -d apimanager
docker compose logs -f apimanager # Mongock + boot log'unu izle
sudo systemctl stop apinizer-apimanager
sudo mv /opt/apinizer-manager /opt/apinizer-manager.failed
sudo mv /opt/apinizer-manager.bak /opt/apinizer-manager
sudo /opt/apinizer-manager/bin/apimanager-install.sh
sudo systemctl start apinizer-apimanager
sudo journalctl -u apinizer-apimanager -f # Mongock log'unu izle
3.3) Diğer Uygulamaların Sürümünün Geri Alınması
Api Manager uygulaması çalışır hale geldiğinde diğer uygulamalar birlikte eski sürüme döndürülebilir.
Dönüş sırasında eğer yerel kayıt defteri kullanılacaksa komutlar buna göre güncellenmelidir.
- Kubernetes
- Helm
- Docker
- Sanal Sunucu
kubectl set image deployment/<WORKER_DEPLOYMENT_NAME> -n <WORKER_CACHE_NAMESPACE> <WORKER_CONTAINER_NAME>=apinizercloud/worker:<OLD_VERSION>
kubectl set image deployment/<CACHE_DEPLOYMENT_NAME> -n <WORKER_CACHE_NAMESPACE> <CACHE_CONTAINER_NAME>=apinizercloud/cache:<OLD_VERSION>
kubectl set image deployment/<PORTAL_DEPLOYMENT_NAME> -n <PORTAL_NAMESPACE> <PORTAL_CONTAINER_NAME>=apinizercloud/apiportal:<OLD_VERSION>
kubectl set image deployment/<INTEGRATION_DEPLOYMENT_NAME> -n <INTEGRATION_NAMESPACE> <INTEGRATION_CONTAINER_NAME>=apinizercloud/integration:<OLD_VERSION>
Pod'ların READY olması beklenir, pod durumları ve gerekirse logları takip edilir:
kubectl get pods -A
Her modül için helm history <release> -n <namespace> ile hedef revision'ı belirleyip geri dönün:
helm rollback worker <REVISION> -n <Worker-Namespace>
helm rollback cache <REVISION> -n <Cache-Namespace>
helm rollback integration <REVISION> -n <Integration-Namespace>
helm rollback portal <REVISION> -n <API-Portal-Namespace>
kubectl get pods -A
# compose.yml'i eski tag'lere geri al, sonra:
docker compose down
docker compose up -d
# veya vanilla docker ile modül başına:
OLD=2026.04.5
docker stop apinizer-worker && docker rm apinizer-worker
docker run -d --name apinizer-worker ... apinizercloud/worker:${OLD}
# Diğer modüller (cache, integration, portal) için de aynı pattern
# Worker
sudo systemctl stop apinizer-apiworker
sudo mv /opt/apinizer-worker /opt/apinizer-worker.failed
sudo mv /opt/apinizer-worker.bak /opt/apinizer-worker
sudo /opt/apinizer-worker/bin/apiworker-install.sh
sudo systemctl start apinizer-apiworker
# Cache, Integration, Portal için de benzer pattern kullan