Openshift Nedir?

OpenShift , üzerinde web uygulamaları barındırmanıza imkan sunan,tek tıklama ile node.js ,python, java, ruby, go, perl, php ve bunların popüler uygulamalarını kurup kullananabilmenize olanak sağlayan bir PaaS(Platform As a Services) çözümüdür.Hali hazırda iki sürümü mevcuttur.

Openshift Origin tarafı açık kaynaklı bir projedir. Linkteki adresten detaylı inceleyebilirsiniz.Diğer taraftan Openshift Enterprise Container Platform, Redhat tarafından desteklenen,geliştirilen ve profosyonel destek alabileceğiniz ücretli versiyonudur.

Redhat’in düzenlemiş olduğu ve Intel sponsorluğunda 5 Temmuz’da gerçekleşen Containers & Cloud-Native Roadshow etkinliğine katılma fırsatı buldum.Redhat,bu etkinliği bir çok ülkede eşzamanlı olarak yapıyor. Yazılım ve Operasyon ekiplerine yönelik iki ayrı salonda etkinlik gerçekleşti.Redhat’ten Kıdemli Çözüm Mimarı Koray Şeremet’in güzel sunumu ve yararlı lab ortamı ile benim açımdan faydalı bir etkinlikti.

sanal makineler ve Konteyner arasındaki farkları anlatırken

Bir önceki Kubernetes nedir? yazımı okumadıysanız okumanızı tavsiye ederim.Kubernetes’in ne olduğundan,çalışma şeklinden ve Docker konteyner yapısından kısaca bahsetmiştim.Bu yazımda da giriş olarak biraz konteyner dünyasının bize getireceği yararlardan bahsetmekle beraber Koray’ın sunumundan da bir kaç kare ile Openshift dünyasını sizlere anlatmaya çalışacağım.

Konteyner Nedir?

Konteyner Nedir?

Aslında kimin sorduğuna bağlı olarak değişiyor.

Bir sistemci iseniz sizin için:

  • Her ortama taşıyabildiğiniz,
  • Sanal makinelere göre her yönden yönetimi,kullanımı basit olan,
  • Uygulamalarınızın paylaşımlı bir kernel üzerinde çalıştığı;

Bir yazılımcı iseniz sizin için:

  • Bütün bağımlılıkları tek pakette toplayabildiğiniz,
  • Herhangi bir ortama saniyeler içinde entegre edebildiğiniz,
  • Kolay erişilebildiğiniz bir uygulama ;

Yada ileri de sanal makinelerin yerini alacak teknoloji de diyebiliriz.

Sanal makineler ve Konteyner farklılıklar ve sunduğu avantajlar nelerdir?

  • Sanal makinelerin, konteyner’lar ile karşılaştırıldığında bir çok dezavantajı var.Bunların en önemlileri sanal makineler için sabit bir cpu ihtiyacı,sabit bir memory ve yüksek kaynak kullanımı gerekiyor.Fakat konteyner tarafının avantajlarına bakacak olursak;paylaşımlı bir kernel,düşük kaynak kullanımı,paylaşılabilen bir CPU ve memory ve tamamen alt katmanın ne olduğundan bağımsız bir çalışabilirlik yapısı olarak karşımıza çıkıyor.
  • Devops kültürünün ve Konteyner teknolojilerinin hayatımıza girmesiyle birlikte yukardaki resimde görüldüğü üzere Operasyon ve Yazılımcı Geliştiricilerin görev ayrımı çok açık bir şekilde belirlenmiş oluyor.
Sanal Makineler
  • Sanal makineler farklı hypervisor’lerde çalışacak kadar yetenekli değiller ve üzerinde çalışan uygulamalar için mimari olarak portatif , taşınabilir bir yapıya sahip değiller.
Konteynerlar
  • Fakat Konteyner tarafına bakacak olursak; uygulama katmanı, altkatmandan tamamen bağımsız olduğundan istediğiniz ortamda çalıştırabilirsiniz.İşletim sistemi bağımlılıkların da dahil olduğu izole bir yapı barındırdığından, altta kullandığınız işletim sisteminin ne olduğunun bir önemi olmaksızın, ister kendi evinizdeki laptop’ta, isterseniz kendi bare-metal bir server’ınızda isterseniz de AWS(Amazon Web Service) ortamında çalışabilirsiniz.

Makalemizin ana konusu olan Openshift dünyasına gelecek olursak Kubernetes ve Docker altyapısını kullandığını bir önceki yazımda belirtmiştim.Openshift’i kendi local ortamınızda kurmanızı ve test etmenizi sağlayan Minishift adlı bir tool var.Bu tool’u kullanmaya geçmeden önce bilgisayarınızda Oracle Virtual Box veya Vmware WorkStation gibi bir sanallaştırma yazılımı olması gerekli ve öncesinden de kendi pc’nizin Bios ayarlarından VT-X/AMD-v seçeneğini aktif etmeniz gerekiyor.Minishift, bilgisayarınızda sanal makineleri oluşturmak için libmachine kullanıyor. Bu ortamı kurmak için de “Openshift Origin” kullanıyor.Detaylarını sitesinden kurulum adımlarına bakarak bulabilirsiniz. Ama bu bana yetmez daha profosyonel bir yapı kurmak istiyorum ve bunu şirket kullanıcılarına açmak istiyorum derseniz alttaki haritadaki resmi uygulamamız gerekiyor.Kurulum aşamasında alt katmanda istediğinizi seçebilirsiniz.(Fiziksel,Sanal,Private-Public-Hybrid Cloud). Sonrasında alttaki linklerdeki kurulum adımlarını takip ederek kurulumu gerçekleştirebilirsiniz.

Kurulum her iki ürün için de Ansible’ı kullanıyor.Ansible bizim yerimize kurulumu yapıyor.Kurulum bittikten sonra aşağıdaki gibi bir ekran bizi karşılıyor .

Login olduktan sonra sağ üstteki kısımdan “Create Project” diyerek geliştirmeye başlayabiliriz.

Openshift’in genel olarak Kubernetes’te olduğu gibi Master ve Node’lardan oluşmaktadır.Master ve Node’un içinde bulunan bileşenler Kubernetes’in birebir aynısıdır.O yüzden tekrar değinmeyeceğim.

Birinde ‘oc’ komut satırı kullanılırken,diğerinde ‘kubectl’ komut seti kullanılmaktadır.Alttaki iki komut seti aynı sonuçları vermektedir.

kubectl get nodes(Kubernetes)
oc get nodes(Openshift)

Redhat, yukarıdaki resimde görmüş olduğunuz katmanlarda aslında kendi katma değer servislerini Openshift’in içine katmıştır.Nedir bunlar?

  • Registry;Openshift’i kurarken belirttiğiniz takdirde kendi içinde entegre edilmiş bir konteyner registry’si ile geliyor.(Docker image’larınızı saklayabildiğiniz bir ortam.)
oc get svc/docker-registry
  • Persistent Storage; bir pod öldüğünde datalarınızda veri kaybı yaşanmaması için mevcut storage’ınızdan konteyner’a verdiğiniz yer alanıdır.Böylece veri kaybınız olmamamaktadır.Bu kısımda bir çok çözüm vardır.(NFS gibi) Redhat burda kendi ürünü olan GlusterFS ürününü entegre bir şekilde size sağlayabiliyor.Tabi ki GlusterFS çözümünü kullanmak zorunda değilsiniz kendi ortamınızda NFS çözümünüz varsa bunu kullanabilirsiniz.
oc get storageclass
  • Routing Layer;dışardan gelen trafiğin load-balance şeklince master sunucularınıza gelmesini sağlayan katmandır.Makalenin ilerleyen bölümlerinde doğru Openshift konfigurasyonu nasıl olmalı diye bahsedeceğim. Production projelerinizde High Available bir Openshift ortamı kuracağınızdan Routing Layer olmazsa olmazdır.Ama hali hazırda bir Citrix ortamınız var ise bunu da kullanabilirsiniz.
  • Service Layer;Kullanıcının web arayüzüne yada cli yoluyla Openshift ortamına bağlanmak için kullandığı kısımdır.

GlusterFS Entegrasyonu nasıl çalışıyor?

Adımlardan bahsedecek olursak;developer, cli yada web arayüzü üzerinden ilgili pod(konteyner) için yer ihtiyacı olduğunu belirtiyor.Bu işleme PersistentVolumeClaim diyoruz.Alttaki komut seti ile öğrenebiliriz.

oc get pvc

Bu istek storageClass katmanına gidiyor.StorageClass katmanında bizi GlusterFS heketi pod’u karşılıyor.API yardımıyla istek doğrultusunda ilgili volume’u bizim için yaratıyor.Ve bizim yerimize ilgili pod’a ilgili volume’u mount ediyor.

oc get storageclass ==> Sistemimizde tanımlı storageclass’ları görebiliriz.
oc get pv==> istek doğrultusunda yaratılan Persistent Volume ‘u görebiliriz.

GlusterFS kendi içindeki volume’leri Unique ve global bir namespace yapısı ile barındırıyor.Ve istediğimiz zaman GlusterFS cluster’ına storage ekleyip çıkartabiliyoruz.Kurulan yapıya göre değişebildiği gibi bu yapıyı bir kaç node üzerine yaydıysanız, datanız her üç node üzerinde senkron yada asenkron saklanabiliyor.

Doğru Openshift ortamının yapısı nasıl olmalıdır?

Aslında burda High-Available bir ortam kurmamız daha doğru oluyor.Bunun için çoklu master,infra,router yapısı gerekmektedir.

  • 3 Master Sunucusu
  • 1 Load Balancer(İsteğe bağlı 2 adet’e çıkarabilirsiniz)
  • 3 Etcd Sunucusu
  • 2 Node Worker Sunucusu (İhtiyaca bağlı olarak arttırıp azaltabilirsiniz)

Redhat’in Openshift Lisanslaması Nasıl?

Herkesin merak ettiği konu lisanslama :) Lisanslama kısmında Redhat, sadece worker olarak kullandığınız sunucuları lisanslıyor.Bunun dışında kullandığınız master,etcd ve router sunucularına hiçbir şekilde ücret almıyor.2 worker sunucunuz var diyelim,bu 2 sunucu üzerinden ücretlendiriliyorsunuz.2 worker’ın CPU gücü yetmediği takdirde 3. bir sunucuyu bu cluster yapısına dahil edip 3. sunucu ücretini ödeyip yola devam edebiliyorsunuz.Küçülmeye gittiğinizde de aynı şey geçerli.Lisansların biraz pahalı olduğunu söylemeden geçemeyeceğim.Hali hazırda Vmware ortamı kullanıyorsanız burda ödeyeceğiniz tek host lisans ücretinden biraz daha fazla.Belki sıkı pazarlık ile bu ücret düşürülebilir :)

Openshift’i denemek isterseniz bu adresten deneyebilirsiniz.Şu an hali hazırda 3.11 versiyonu bulunmaktadır.Yeni sürümle birlikte 4.x şeklinde bir isimlendirmeye gideceği söyleniyor.

“Minishift ile Openshift Kurulumu” nasıl yapılır merak ediyorsanız alttaki makalemi okuyabilirsiniz.

“Openshift Active Directory Entegrasyonu” makalemi okumak isterseniz alttaki linke tıklayabilirsiniz.

Openshift GUI Üzerinden Örnek Bir Uygulama Oluşturmak” makalemi okumak isterseniz aalttaki linke tıklayabilirsiniz.

“Kubernetes” ile alakalı yazımı da okumak isterseniz alttaki linke tıklayarak okuyabilirsiniz.

Bloğumu da ziyaret etmek için aşağıdaki linke tıklayabilirsiniz.

Sorular sorup ,bilgi paylaşımı yapabileceğin DevOps Türkiye medium yayımıza ait bir slack grubumuz var.Katılmak için bu linke tıklaman yeterli.