1. Ana Sayfa
  2. Container
  3. Yazılım Geliştiriciler için Azure: Azure Kubernetes Service (AKS) – Bölüm 3

Yazılım Geliştiriciler için Azure: Azure Kubernetes Service (AKS) – Bölüm 3

021919_1412_YazlmGeliti8.png

İlk bölümde Portal üzerinde bir servis oluşturup nasıl monitor edebileceğimizi incelemiş, ikinci bölümde ise ’a erişmek için gerekli işlemleri ve () üzerinden container imajı çekebilmek için yetkilendirme yapmıştık. Bu bölümde de oluşturduğumuz üzerinde yer alan container imajımız ile AKS’e deployment yapacağız. Bu kez ASP.NET Core MVC yerine 5001 portundan çalışan ve hostname değerini gösteren bir basit node.js uygulaması üzerinden ilerleyeceğiz.

Öncelikle index.js adında bir dosya oluşturup Resim-1‘de göreceğiniz gibi 8 satırdan oluşan basit bir “Hello World” kodu yazıyoruz. Command prompt üzerinden index.js dosyasının bulunduğu klasörde node index.js komutunu çalıştırdıktan sonra tarayıcı üzerinden http://localhost:5001 adresine giderek uygulamayı test edebilirsiniz. Eğer bilgisayarınızda node.js kurulu değilse buradan kurabilirsiniz.

NOT: Örneğe ait kodların tamamına buradan ulaşabilirsiniz.

Resim-1

Uygulamamamızın container imajını hazırlamak için ise Resim-2‘de yer alan dockerfile’ı kullanıyoruz. Dosya içeriğinde de göreceğiniz üzere base image olarak node’un güncel sürümünü kullanacağız. Çalışma klasörünü usr/src/app olarak belirledikten sonra Resim-1‘de yer alan kodları (index.js) bu klasöre kopyalayıp, 5001 portunu açıyoruz. Son olarak da node komutuna parametre olarak index dosyamızı veriyoruz.

Resim-2

Dockerfile kullanarak container imajını oluşturduktan sonra ACR üzerine push etmemiz gerekiyor. Azure üzerinde ACR nasıl oluşturulur ve container imajı nasıl push edilir konusunda detaylı bilgi için buraya bakabilirsiniz.

ACR’a container imajımızı push ettikten sonra, AKS üzerinde deployment için bir yaml dosyasını hazırlıyoruz. Burada deployment için kullanılacak container imajı ile ilgili detayları ve load balancer tipinde bir de servis tanımlıyoruz (Resim-3). Container’dan 2 replika oluşturacağız ve bu servis ile 80 portuna gelen istekleri yük dengelemesi ile replikaların 5001 portuna yönlendireceğiz.


Resim-3

Yaml dosyasını tamamladıktan sonra apply komutunu -f (filename) parametresi ile yaml dosyamızı belirtip yardımıyla deployment’ı yapıyoruz (Resim-4).

Resim-4

kubetctl get svc ile servisin durumunu kontrol ettiğimizde external IP değerini henüz alamadığını göreceksiniz. Bu işlem biraz zaman alacak, 1-2 dakika bekleyip tekrar denerseniz external IP değerinin atandığını görebilirsiniz (Resim-5).

Resim-5

External IP’ye tarayıcı üzerinden 80 portu kullanarak erişmeye çalıştığınızda Resim-6‘da göreceğiniz gibi container içerisindeki node.js uygulamamızın çalıştığını görebilirsiniz.

Resim-6

Sayfayı yenilerseniz ya da farklı bir tab üzerinden aynı adrese istek gönderirseniz bu kez de diğer container’a gittiğinizi görebilirsiniz (Resim-7).

Resim-7

AKS Kubernetes dashboard üzerinden de yaptığımız deployment’a ait bilgileri görebilirsiniz (Resim-8).

Resim-8

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

https://docs.microsoft.com/en-gb/azure/aks

https://nodejs.org/en/docs/

https://kubernetes.io/docs/concepts/workloads/controllers/deployment/

https://github.com/mertyeter/hellonode

TAGs: Azure, , , , AKS, , Kubernetes, PowerShell, Kubernetes Dashboard, Azure Container Registry, ACR, Azure CLI, Kubectl, Node.js

Yorum Yap

Yazar Hakkında

Mert Yeter, lisans eğitimini Yıldız Teknik Üniversitesi Gemi İnşaatı Mühendisliği bölümünde, yüksek lisans eğitimini ise Bahçeşehir Üniversitesi Bilgi Teknolojileri bölümünde tamamlamıştır. Yazılım dünyasına üniversitenin ilk yıllarında aldığı QBasic ile başlayan Mert, .NET ve SQL Server gibi Microsoft teknolojileri ile devam etmiş; yüksek lisans tezini ise Linux konusunda yapmıştır. Netaş ve Ziraat Teknoloji gibi sektörün önde gelen firmalarında C#, .NET, SQL Server, Cisco Contact Center ürünleri ve Linux üzerine çalışmış, bir çok firmaya da bu konularda danışmanlık vermiştir. Şu anda da Done'de Cloud Development Manager olarak Azure, .NET Core, SQL Server, Docker vb güncel teknolojiler üzerinde çalışmaktadır.

Yorum Yap