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 OKD 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.Fakat Openshift’in 4.1 sürümünden itibaren Docker’ın yerini cri-o alıyor.Bir de Read-Only Red Hat CoreOs işletim sistemi geliyor.Aslında 3 versiyonunda 4 versiyonuna geçişte keskin olarak gözüken özellikler bunlar gözüküyor.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 profesyonel 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.Yeni versiyonla birlkte kurulum yöntemi de değişiyor.High available bir ortam kurmak istiyorsanız alttaki makalemi inceleyebilirsiniz.

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.Openshift 4 ile beraber GlusterFS ,Openshift Container Storage ile yer değiştiriyor.Ürünü bu linkten inceleyebilirsiniz.

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.

Aslında aşağıdaki tablo yukarıda anlattıklarımın kısa bir özeti.

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.

Önümüzdeki günlerde Openshift 4.2 genel kullanıma sunuldu.Alttaki linkten detaylı özelliklerine bakabilirsiniz.

  • odo adını verdikleri developer dostu bir cli geliyor.
  • Bu sürümle beraber Kiali,Istio gömülü olarak Openshift le birlikte geliyor.
  • Redhat Openshift Connector ile Microsoft Visual Studio Code, JetBrains IDE (including IntelliJ) ve Eclipse Desktop IDE lere çok kolay şekilde entegre edebiliyorsunuz.
  • Red Hat OpenShift Deployment Extension for Microsoft Azure DevOps ile Openshift çok kolay şekilde Azure DevOps ile entegre olabiliyor.
  • Openshift 3.x ten 4.x e upgrade etmek için bir migration aracı bulunmakta.

“Redhat Openshift Container Platform 4 Kurulumu” makalemi inceleyebilirsiniz.

Ayrıca geçtiğimiz günlerde Azure üzerinde managed service olarak Azure RedHat Openshift servisi duyuruldu.Roadmap ve ücretlendirmesi ile alakalı 2 adet tweet atmışım.İnceleyebilirsiniz.

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

--

--