Bu kılavuz, Kubernetes üzerinde çalışan Apinizer imajlarının nasıl versiyon yükseltileceğini adım adım açıklamaktadır. 


Örnek senaryo Ubuntu 22.04 işletim sistemine sahip sunucular üzerinde gerçekleştirilmiştir.

1) MongoDB Yedeğinin Alınması

İlk olarak, MongoDB üzerinde bir yedekleme işlemi gerçekleştirilir. Yedek alımı, veri kaybını önlemek için her zaman güncelleme sürecinin ilk adımı olarak yapılır. Bu komut mongoDb primary sunucusu üzerinde çalıştırılır.

# Yedek alma
sudo mongodump --host <IP_ADDRESS> --port=25080 --username=apinizer --password=<PASSWORD> --authenticationDatabase=admin --gzip --archive=<BACKUP_DIRECTORY>/apinizer-backup<BACKUP_VERSION>.archive
BASH

2) Apinizer Manager Uygulamasının Güncellenmesi


Apinizer Worker ve Cache'i güncellemeden önce Apinizer Manager'ın güncellenmesi gerekmektedir. Bunun nedeni, Worker ve Cache'in veritabanı ile ilgili güncellemelerini Manager'ın veritabanına yaptığı ayarlardan sonra almasıdır. Eğer Worker ve Cache, Manager’dan önce güncellenirse, bu durum Worker ve Cache tarafında sorunlara yol açabilir. Bu nedenle, Manager güncellendikten sonra Kubernetes üzerindeki Manager podlarının "ready" durumuna geldiğinden emin olunmalı ve ardından diğer bileşenler güncellenmelidir.


Bu ve sonraki adımlar, Kubernetes Control Plane görevine sahip sunucular üzerinde çalıştırılır.

# Deployment'a ait bilgiler kontrol edilir
kubectl get deployments -Ao wide

# Manager'ın deployment imajı güncellenir
kubectl set image deployment/<MANAGER_DEPLOYMENT_NAME> -n <NAMESPACE> <MANAGER_CONTAINER_NAME>=apinizercloud/manager:<NEW_VERSION> 

# Pod'un READY olması beklenir, pod durumu takip edilir
kubectl get pods -A -w
BASH

3) Apinizer Worker ve Cache Uygulamalarının Güncellenmesi

Apinizer Manager uygulamasının imajının güncellendiğinden emin olduktan sonra Apinizer Worker ve Cache uygulamaları güncellenir.

kubectl set image deployment/<WORKER_DEPLOYMENT_NAME> -n <NAMESPACE> <WORKER_CONTAINER_NAME>=apinizercloud/worker:<NEW_VERSION>
kubectl set image deployment/<CACHE_DEPLOYMENT_NAME> -n <NAMESPACE>  <CACHE_CONTAINER_NAME>=apinizercloud/worker:<NEW_VERSION>

# Pod'ların READY olması beklenir, pod durumu takip edilir
kubectl get pods -n <DEPLOYMENT_NAMESPACE> -w
BASH

4) Apinizer Portal ve Integration Uygulamalarının Güncellenmesi 

Apinizer Portal ve Integration'da benzer şekilde güncellenebilmektedir.

kubectl set image deployment/<PORTAL_DEPLOYMENT_NAME> -n <NAMESPACE> <PORTAL_CONTAINER_NAME>=apinizercloud/portal:<NEW_VERSION>
kubectl set image deployment/<INTEGRATION_DEPLOYMENT_NAME> -n <NAMESPACE> <INTEGRATION_CONTAINER_NAME>=apinizercloud/integration:<NEW_VERSION>

# Pod'ların READY olması beklenir, pod durumu takip edilir
kubectl get pods -n <DEPLOYMENT_NAMESPACE> -w
BASH