Kubernetes Redis Kurulumu

.Net Core 3.1 Web Api Örneği

Merhabalar,

Bu yazımda da Single Clusterımıza Redis kurulumunu inceliycez. Kurulum yaptıktan sonra basit bir .Net Core 3.1 web api örneği ile kurulumu doğrulamayı inceliycez.

İlk olarak redis nedir buna bakalım.

Redis: C ile yazılmış, key-value şeklinde tasarlanmış bir veri yapısı sunucudur. Veriyi bellekte tuttuğu için çok hızlı okuma ve yazma yapar. Genellikle caching, session yönetimi, pub/sub, message broker amacıyla kullanılmaktadır.

Redis Clusterımızı minikube üzerinde kurulumu gerçekleştircez. Bunun için eğer sisteminizde minikube ve kubectl yüklü değilse diğer yazımdan minikube kurulumunu okuyabilirsiniz.

Minikube kurulduktan sonra aşağıdaki komut ile clusterımızı aktifleştiriyoruz.

minikube start — memory=8000 — cpus=4
kubectl get all -A

Komutu ile clusterımısın güncel durumunu kontrol edelim.

Clusterımız çalışır durumda olduğuna göre Redis kurulumuna başlayabiliriz. İlk olarak bir tana namespace oluşturalım.

kubectl apply -f redis-ns.yamlkubectl get namespaces

Komutları ile namespace oluşturalım ve listelelim.

Şimdi de Cluster dışından verileri ulaşmak için Persistent Volume objemizi oluşturalım.

kubectl apply -f redis-pv.yamlkubectl get pv -n redis-cluster

Persistent Volume objesimiz oluşhttps://github.com/denizturkmentu, fakat şuan her hangib Persistent Volume Claims bağlanmadı.

Persistent Volume Claims objemizi oluşturalım ve Persistent Volume objemize bound edelim.

kubectl apply -f redis-pvc.yamlkubectl get pvc -n redis-cluster

Komutu ile PVClaims objemizi oluşturalım.

Yukarıda ki şekilde görüldüğü gibi PVClaims objemiz ilgili PVolume objemize bağlandı. Bağlama işlemini istersen “selector” ile yapabilirsiniz. Ben “volumeName” ile bound işlemi gerçekleştirdim.

Şimdide Service objemizi oluşturalım.

kubectl apply -f redis-svc.yamlkubectl get svc -n redis-cluster

Komutları ile oluşturalım ve service objemize bakalım.

Not: Minikube Clusterı ile uygulamamızı gerçekleştirdiğimiz için servis tipini NodePort olarak belirledik. Çünkü uygulamamızız çalışacağı host ve port bilgisini Nodeport üzerinden sağlıycaz.

kubectl apply -f redis-deployment.yamlkubectl get deployment -n redis-clusterkubectl get pods -n redis-cluster

Komutu ile deployment objemizi oluşturalım ve listeleyelim.

Kurulum işlemimiz başarılı şekilde gerçekleşti. Şimdi de pod exec komutu ile bağlanıp “redis-cli” bağlanalım.

kubectl exec -it pod_name -n redis-cluster — bash 
yada
kubectl exec -it pod_name -n redis-cluster redis-cli

Yukarıdaki şekilde görüldüğü gibi redis-cli bağlantı sağladık ve içerisinde şuan hiç keys yok. Şimdide basit bir .Net Core Web Api 3.1 uygulaması yapalım ve kurulumu doğrulayalım. Bunun için terminalden

dotnet new webapivecode .

Uygulamızı açalım. Uygulama kodları github sayfamdan ulaşabilirsiniz. Gerekli olan yerlere bakalım.

Model;

Controller;

Redis Configuration yani appsettings.json

“dotnet run” komutu ile çalıştırdığımızda ve ilgili “url” gittiğimizde hata alırız. Çünkü bizim localimizde redis-server kurulu değil. Bu yüzden yapılması gereken,

Kubernetes clusterımızı minikube ile gerçekleştirdiğimiz iki ayrı yolla çözebiliriz.

Birinci yol;

minikube service list

Komutu terminalden çalıştıralım ve aldığı ip ve port numarasını appsettings.json dosyasında güncelleyelim.

Gerekli configuration yaptığımıza göre “dotnet run” komutunu çalıştıralım ve “https://localhost:5001/api/persons” adresini gittiğimizde uygulamız çalıştı.

Son olarakta tekrar podumuza bağlanalım ve redis-cli ile “key” ve “get” verilerimize bakalım. Bunun için terminalden;

Yukarıdaki şekilde görüldüğü gibi başarılı şekilde cacheleme yapılmıştır.

ikinci yol ise;

minikube service — url servis_name

appsettings.json dosyasına yukaridaki şekilde aldığı ip ve port yazarakta gidebilirsiniz.

Bu yazımızın da sonuna gelmiş bulunmaktayız. Araştırmalarım ve sektörde karşılaştığım senaryolar üzerine yazılarımı yazmaya devam edeceğim. Umarım faydalı bir yazı olmuştur. Yazımı okuduğunuz için teşekkürler. Diğer yazımda Kubernetes Cassandra örneğini inceliycez.

Software Development Expert & DevOps Engineer

Medium independent DevOps publication. Join thousands of aspiring developers and DevOps enthusiasts