Geliştirilen yazılım ürününün müşteriye sorunsuz bir şekilde sunulması adımlarını otomatik bir şekilde yapan otomasyon hazırlamak amaçlanmıştır. Otomasyon, CI ve CD olmak üzere iki adımdan oluşmaktadır;
Yazılımın kaynaktan çekilip derlenmesi ve test edilmesi adımlarını oluşturmaktadır.
CI adımını tamamlamış ve derlenen projenin sunucuya taşınması adımlarını oluşturmaktadır.
- Git
- Ansible
- Docker
- Kubernetes
- Jenkins
- Bash script
İlgili otomasyon yapısı ve işleyişi aşağıdaki şema üzerinde görselleştirilmiştir;
- Sunucu kurulum ve yapılandırması, sunuculara kurulacak ssh bağlantısı ile sağlanmıştır. Sunucu ssh bağlantısı için gerekli olan ip, kullanıcı adı ve şifre bilgileri; "hosts" dosyası içerisine eklenmelidir.
- Tüm sunucular için gerekli olan docker kurulumu aşağıdaki şekilde gerçekleştirilerek, sunucularda çalışmaya hazır hale getirilir;
ansible-playbook docker_pb.yaml
- Git Server aşağıdaki şekilde kurularak çalışmaya hazır hale getirilir;
ansible-playbook ./gitServer/gitserver_pb.yaml
- Jenkins aşağıdaki şekilde kurularak çalışmaya hazır hale getirilir;
ansible-playbook ./jenkins/jenkins_local_pb.yaml
- Ansible, jenkins sunucusuna aşağıdaki şekilde kurularak çalışmaya hazır hale getirilir;
ansible-playbook ansible_pb.yaml
- Registry aşağıdaki şekilde kurularak çalışmaya hazır hale getirilir;
ansible-playbook ./registry/registry_pb.yaml
- Kubernetes ilgili sunuculara aşağıdaki şekilde kurularak çalışmaya hazır hale getirilir;
ansible-playbook ./kubernetes/kubernetes_pb.yaml
- Kubernetes master için gerekli ayarlamalar aşağıdaki şekilde gerçekleştirilir;
ansible-playbook ./kubernetes/k8smaster_pb.yaml
- Kubernetes workers için gerekli ayarlamalar aşağıdaki şekilde gerçekleştirilir;
ansible-playbook ./kubernetes/k8sworker_pb.yaml
Yukarıdaki adımlar tamamlanarak aşağıda belirtilen sunucular ile birlikte CI-CD sürecini gerçekleştirecek ortam hazırlanmıştır.
- Git sunucusu -> Geliştirme kodlarımızı içeren sunucumuz.
- Kubernetes master ve workers sunucuları -> Geliştilen kodları devamlı çalışır halde sunan sunucularımız.
- Registry sunucusu -> Kubernetes sunucularında çalıştırılacak konteynırları tutan kayıt sunucumuz.
- Jenkins sunucusu -> Git sunucusundaki kodları alıp Kubernetes sunucularına yüklenmesindeki adımları otomatize eden sunucumuz.