OpenShift Container Platform Nedir?
Container Nedir?
Container, Linux üzerinde ortaya çıkan bir izolasyon teknolojisidir. Uygulama ve uygulama işletim sistemi ve diğer ihtiyaçlarını paketleyebildiğimiz yöntemdir. Container image’larını tek bir binary haline getirip, izole edilen işletim sistemimizde çalıştırabilmekteyiz.
Resim-1
Container’lar çalıştırıldığı makine üzerinde çalışan izole proseslerdir. İzole prosesler, native proseslerle aynı performans gösteren sanal makinalara göre çok daha verimli ve daha hızlı ayağa kalkabilen bir servis yapısı sunmaktadır. Platform kendi datacenterınızı sanal ya da fiziksel ortamlarda, public ve private cloud üzerinde çalıştırılabilme imkânı sunmaktadır. Platform pek çok teknoloji ve ürünün bir araya gelmiş hali olarak düşünülebilir.
Resim-2
OpenShift Container Nedir?
OpenShift pek çok yeteneği beraberinde getirmektedir. Bunlardan bazıları; servislerin yönetilmesi, servislerin discover edilmesi, logların toplanması izlenmesi servislerin birbiri ile konuşması dış dünyadan gelen trafiğin içeriye yük kontrollerinin yapılarak servislere ulaştırılması, çalışan container’ların monitör edilmesi, host güvenliğinin sağlanması container’ların birbirleriyle konuşurken güvenliğin sağlaması gibi. Aynı zamanda uygulama geliştirirken, Container’lar nasıl oluşturulur? Oluşturulan bu Container’lar nasıl yaygınlaştırılır? Nasıl blue/green deployment yapılır? Nasıl continous delivery pipeline oluşturulur? gibi birçok sorunun cevabını kendi içerisinde barındırır.
Aşağıda belirtilen yeteneklerden; dış dünyadan gelen trafiğin yük kontrollerinin yapılarak servislere ulaştırılması örneğini görmekteyiz.
Resim-3
Uygulama sunucuları, database, diller, application, runtime çeşitli middleware’lar OpenShift içerisinde bulunur.
OpenShift Cluster Nedir?
OpenShift Cluster tek bir sanal makinadan (node) oluşup, yüzlerce sanal makina (node) sayısına arttırılabilmektedir. Node sayısının artması paralelinde yüzbinlerce pod’u beraberinde getirmektedir. Çünkü her bir node kendi içerisinde tek bir pod barındırdığı gibi, birden fazla pod’a da sahip olabilmektedir. Her bir node aynı zamanda belirli bir işletim sistemi üzerinden ayağa kalkmaktadır.
Bu platformda; uygulama servislerimizin bağlı olduğu podlardan biri down olduğu takdirde uygulama çökmeyecektir. Bu platform tarafından servis recovery edilip, yeni bir pod üzerinden yeniden ayağa kalkmaktadır. Ya da herhangi bir node down olduğu durumda podlar içerisindeki servis ve uygulamalar diğer node’lar üzerinden yeniden ayağa kalkmaktır.
Resim-4
Resim-5
Resim-6
Tüm bu cluster yönetimi master makinalar ile sağlanmaktadır. Bu master makinalar tüm cluster yapısının beyni olarak düşünülebilir.
Bu master makinaların görevi; Hangi container nerede çalışıyor? Container’ları çalıştırmak için uygun podları belirlemek ve container çöktüğü zaman eş zamanlı olarak onu yeni bir pod üzerinde ayağa kaldırmak, podları izlemek, hangi node container çalıştırmak için uygun gibi analizleri yapmaktır.
Resim-7
Developer’lar da master makinalara bağlanarak yönetimsel işlemlerini gerçekleştirebilmektedirler.
OpenShift dış trafigi kendi servislerine ulaştıran teknolojileri içerisinde barındırıyor. Servislerin birbirleri içerisinde konuşurken service discovery, service registry görevlerini üstleniyor. Aynı zamanda container image’larının saklanması, imagel’ların görülmesi ve bu image’ların nodelar üzerine çekilip çalıştırması için gerekli registry sağlamaktadır.
POD Nedir?
Container instance’lar pod’lar olarak düşünülebilir. OpenShift bu container instance’lar için kalıcı verilerin yazılmasını sağlayan Persistent Storage sağlamaktadır.
Resim-8
Bu platform üzerinde third party language runtimes (PHP, Phyton, java, Ruby…), databases (MySQL,PostgreSQL,MongoDB,Redis..) ,application runtimes (Spring Boot,Jboss Web Server,Jboss EAP,Jboss A-MQ,Jboss Fuse..) ,middleware (3SCALE API mgmt,Jboss BRMS,Jboss BPMS ) olduğu gibi ,kendi katalog yapımızı da oluşturabilme imkanı sunmaktadır. Örneğin; kendi image’larımızı kendi kataloğunuza ekleyebiliriz.
Third party certified image’lar bulabileceğimiz gibi Red Hat’n sağlamış olduğu image’ları da buradan bulabilmekteyiz.
Cloud native yapısı ile uygulamamız container ile birlikte çok kısa sürede ayağa kalkmaktadır.
OpenShift tarafında geleneksel yeni nesil uygulamaların bir arada desteklendiği runtime’lar sağlanmaktadır. Örneğin geleneksel mevcut Java Enterprise uygulamalarını Jbos Enterprise Application platformda çalıştırabiliriz. Ya da Web Container gerektiren uygulamalar için Tomcat çalıştırabileceğimiz applicaion da runtime içerisinde bulunmaktadır.
Red Hat uygulamalarımızı hızlıca geliştirebilmemiz için bize template uygulamalar sağlayıp bu uygulamalarımızı OpenShift Cluster’a deploy edebilme imkânı sunmaktadır.
AutoScaling Nedir?
OpenShift bize Autoscaling özelliği sunmaktadır. Bu özellik container instance sayısının otomatik olarak scale edilebilmesini sağlamaktadır. Scaling işlemi manuel olarakta yapılabilir. Örneğin; ikinci bir sunucuda da uygulamamızın çalışmasını istiyoruz. İkinci pod eş zamanlı olarak bu platform üzerinde ayağa kaldırılabiliyor. Bu ayağa kalkan uygulamanın instance’nın hangi node üzerinde çalışacağını OpenShift kendisi belirlemektedir.
Bu platform üzerinde çalışan makina loglarını görebilir, log arşivlerine erişebilir, metrikler alabilir ya da shell terminal üzerinde makinaya bağlanıp, komut satırı üzerinden makinamızı kontrol edebiliriz.
Resim-9
Api Gateway, tüm servislere client tarafından arkada çalışan tüm servislere erişebilmemizi sağlamaktadır.
Servislere erişim kesildiğinde ya da bir servis başka bir servis üzerinde çalıştığında yapıda çökme meydana gelebilir.
OpenShift yeni nesil uygulamalara karşın, geleneksel uygulamalarımız; cloud native yapısına uydurularak daha verimli çalıştırılabilir. Geleneksel uygulamalar bu anlamda modernize edilebilir.
Geleneksel yapıdan modern yapıya dönüşümde aşağıdaki 3 temel model esas alınmalıdır.
–Rehost; geleneksel uygulamamızı farklı bir container/cloud ortamda çalıştırılması
–Reshape; geleneksel uygulamanın yeniden design edilmesi
–Rewrite; Geleneksel uygulamanın yeniden yazılması
Uygulamalar Automated olarak farklı bir platforma taşınmak istendiğinde, Cloud native ve container platform yapıya büründürülürken incremental yaklaşım sağlanmalıdır.
Uygulamalar cloud ortama taşınması/çalışması; verimlilik, kârlılık, operasyonda azalma gibi kazanımlar sağlamaktadır.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
https://redhat-partner.highspot.com/items/5940b430f2167613fe2265c2#38
TAGs: OpenShift, OpenShift Nedir?, Container Platform, Rehost Nedir?, Reshape Nedir?, Rewrite Nedir?, Node nedir?, Pod nedir?, OpenShift Container, Service Recovery, Service Registery, Service Discovery, Persistent Storage, Autoscaling