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.
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
- 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.
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.