Kubernetes Playground

Kaynak kodunu ve yönergeleri Github‘ta bulabilirsiniz.

Bu projenin arkasındaki motivasyon, güncel olarak en çok kullanılan yazılım ürünlerinden bazılarıyla pratik yapmaktı. Bunlar:

  • Terraform
  • Kubernetes (K8s)
  • Docker

Ve, en çok kullanılan veritabanı yazılımlarından bazılarını kullanmaktı. Bunlar:

  • Redis
  • PostgreSQL

Ayrıca, yazdığımız programı bir bulut platformunda yayımlamaktı. Tercih olarak kullandığım:

  • Google Cloud Platform (GCP)

Bu motivasyon çerçevesinde, projede iki tane basit web servisi yer alıyor. Bunlar:

1. Hello

En genel ders başlangıçları gibi, Hello servisi bizim “Merhaba Dünya” programımız.

Basitçe, iki komutu destekliyor:

  • GET /greeting: yanıt olarak “Hello World” yazısını gönderiyor.
  • GET /health: yanıt olarak 200 statü kodunu gönderiyor ve Kubernetes tarafından program canlı mı diye kontrol amaçlı kullanılıyor.

Hello servisi aşağıdaki konularda pratik yapmaya yardımcı oluyor:

  • Terraform ile Google Kubernetes Engine (GKE) üzerinde cluster yaratmak.
  • Docker ile bir image yaratmak ve bunu Google Container Registry’e (GCR) göndermek.
  • Kubernetes ile cluster üzerinde program çalıştırmak ve yönetmek.

2. TODO

Web servisine daha çok benzeyen bir program yaratmak için, ikinci servis önbellek, veritabanı, ve REST API temellerini kullanıyor.

Yani, TODO servisi yapılacaklarınızı bir veritabanında tutuyor ve siz de okuma, yaratma, güncelleme ve silme işlemlerinizi bu veritabanı üzerinde yapabiliyorsunuz.

Bu servis aşağıdaki komutları destekliyor:

  • GET /todos: tüm notları dönüyor.
  • GET /todos/done: tüm tamamlanmış notları dönüyor.
  • GET /todos/remaining: tüm tamamlanmamış notları dönüyor.
  • GET /todos/{id}: numarası verilen notu dönüyor.
  • POST /todos: istekte verilen bilgiler ile yeni bir not yaratıyor.
  • PUT /todos/status: bir notun statüsünü değiştiriyor.
  • DELETE /todos/{id}: numarası verilen notu siliyor.

İlk servise ek olarak, TODO servisi bir clusterda disk ve veritabanı kullanımı pratiğini Redis ve PostgreSQL ile sağlıyor. Ayrıca, Kubernetes ile birden fazla servisi yayımlama ve yönetme pratiği konusunda da yardımcı oluyor.

Bu adımda, aşağıdaki Kubernetes terminolojilerine daha yakın oluyorsunuz:

  • Deployment
  • Service
  • ConfigMap
  • PersistentVolume
  • PersistentVolumeClaim
  • Secrets

Ek olarak, eğer kendi bilgisayarınızda çalışmayı tercih ediyorsanız, docker-compose ile birden çok Docker image komposizyonunu çalıştırmayı da deneyimleyeceksiniz.