20 Şubat 2025 Perşembe

Docker Compose ile Mikro Hizmetlerin Yönetimi: Adım Adım Kılavuz

Docker Compose ile Mikro Hizmetlerin Yönetimi: Adım Adım Kılavuz

Docker Compose, birden fazla konteyneri tek bir dosya üzerinden yönetmeyi sağlayan güçlü bir araçtır. Mikro hizmet mimarisine sahip projelerde, farklı servislerin birlikte çalışmasını kolaylaştırır. Bu yazıda, Docker Compose kullanarak mikro hizmetlerin nasıl yönetileceğini adım adım inceleyeceğiz.

1. Docker Compose Nedir?

Docker Compose, birden çok servisi tek bir docker-compose.yml dosyasında tanımlayarak, tüm servislerin bir arada yönetilmesini sağlar. Özellikle mikro hizmet tabanlı projelerde, bağımsız çalışan servisleri tek komutla başlatmak büyük avantaj sağlar.

2. Docker Compose ile Mikro Hizmetlerin Tanımlanması

Örnek olarak bir web uygulaması ve veritabanından oluşan basit bir yapı oluşturalım.

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
    depends_on:
      - database

  database:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: mydb

Bu yapı, bir Nginx web sunucusu ve bir MySQL veritabanı çalıştırır. Web sunucusu, MySQL servisine bağımlıdır, bu yüzden depends_on parametresi ile önce veritabanının başlaması sağlanır.

3. Docker Compose Komutları

Docker Compose ile konteynerleri yönetmek için aşağıdaki komutları kullanabilirsiniz:

  • docker-compose up -d → Servisleri başlatır.
  • docker-compose down → Tüm konteynerleri kapatır.
  • docker-compose ps → Çalışan servisleri listeler.
  • docker-compose logs -f → Servis loglarını takip eder.

4. Docker Compose ile Ortam Değişkenleri Kullanımı

Güvenliği artırmak ve yapılandırmayı esnek hale getirmek için ortam değişkenleri kullanabilirsiniz. Örneğin:

database:
  image: postgres
  environment:
    POSTGRES_USER: ${DB_USER}
    POSTGRES_PASSWORD: ${DB_PASSWORD}

Bu yapılandırmada, .env dosyasındaki değişkenler yüklenerek PostgreSQL veritabanının kullanıcı adı ve şifresi belirlenir.

Sonuç

Docker Compose, mikro hizmetleri yönetmek için güçlü ve kullanımı kolay bir araçtır. Servislerin bağımsız çalışmasını sağlarken, basit komutlarla tüm ekosistemi yönetmenize olanak tanır. Ortaya çıkan avantajlar:

13 Şubat 2025 Perşembe

Kubernetes ile Mikro Hizmetlerin Yönetimi: Gelişmiş Teknikler

Kubernetes ile Mikro Hizmetlerin Yönetimi: Gelişmiş Teknikler

Kubernetes, günümüzde ölçeklenebilir ve yönetilebilir mikro hizmet mimarileri oluşturmak için en yaygın kullanılan araçlardan biri haline gelmiştir. Ancak, temel pod ve servis yönetiminin ötesine geçerek daha verimli ve güvenli bir yapı oluşturmak için bazı gelişmiş teknikleri bilmek gerekir. Bu yazıda, Kubernetes kullanarak mikro hizmetlerinizi daha iyi yönetmek için bazı ileri düzey teknikleri inceleyeceğiz.

1. Kubernetes ile Otomatik Ölçeklendirme (HPA ve VPA)

Kubernetes, ölçeklendirme işlemini otomatik hale getirmek için Horizontal Pod Autoscaler (HPA) ve Vertical Pod Autoscaler (VPA) olmak üzere iki ana mekanizma sunar.

  • HPA (Yatay Pod Ölçeklendirme): Belirli metriklere (CPU, bellek vb.) bağlı olarak pod sayısını artırıp azaltır.
  • VPA (Dikey Pod Ölçeklendirme): Podların CPU ve bellek sınırlarını otomatik olarak günceller.

Eğer trafiğiniz öngörülemeyen bir şekilde artıp azalıyor ise HPA kullanarak anlık yük değişimlerine uyum sağlayabilirsiniz. Öte yandan, eğer belirli podların CPU veya bellek limitleri yetersiz geliyorsa VPA kullanarak her bir podun kaynaklarını optimize edebilirsiniz.

2. Servis Mesh Kullanımı (Istio ve Linkerd)

Mikro hizmet mimarilerinde servisler arasındaki iletişimi yönetmek oldukça karmaşık olabilir. Servis Mesh çözümleri, ağ trafiğini yönlendirme, gözlemleme ve güvenlik politikaları oluşturma konusunda büyük avantajlar sunar.

  • Istio: En yaygın kullanılan servis mesh teknolojisidir. API yönetimi, güvenlik, gözlemleme ve yük dengeleme gibi özellikler sunar.
  • Linkerd: Hafif ve kolay kullanılabilir bir servis mesh alternatifidir.

Eğer Kubernetes kümenizde servisler arası güvenliği artırmak ve merkezi bir gözlemleme sistemi kurmak istiyorsanız Istio veya Linkerd kullanabilirsiniz.

3. GitOps ile Kubernetes Konfigürasyon Yönetimi

Kubernetes ortamlarında konfigürasyon yönetimini daha güvenli ve hatasız bir şekilde yapmak için GitOps yaklaşımı kullanılabilir. GitOps, Kubernetes manifest dosyalarınızı bir Git deposunda saklayarak değişikliklerin yönetimini sağlar.

  • ArgoCD ve FluxCD gibi araçlar, Git deposundaki değişiklikleri takip ederek Kubernetes kümenizi otomatik olarak senkronize eder.
  • Konfigürasyon değişikliklerini sürüm kontrolü altında tutarak hata yönetimini kolaylaştırır.

Eğer sürekli entegrasyon ve teslimat (CI/CD) süreçlerinizi Kubernetes ile uyumlu hale getirmek istiyorsanız, GitOps yaklaşımını değerlendirebilirsiniz.

Sonuç

Kubernetes, mikro hizmetlerin yönetimi için güçlü bir platform sunarken, gelişmiş teknikler ile verimliliğinizi ve güvenliğinizi artırabilirsiniz. Otomatik ölçeklendirme, servis mesh kullanımı ve GitOps ile konfigürasyon yönetimi gibi yöntemlerle Kubernetes kümelerinizi daha iyi optimize edebilirsiniz.

Kubernetes'in sunduğu bu özellikleri daha etkin kullanarak, uygulamalarınızı daha ölçeklenebilir ve yönetilebilir hale getirebilirsiniz.

6 Şubat 2025 Perşembe

Linux Üzerinde WireGuard VPN Kurulumu ve Konfigürasyonu

VPN (Virtual Private Network) kullanımı, internet üzerindeki güvenliği ve gizliliği sağlamak açısından büyük önem taşır. OpenVPN ve IPSec gibi geleneksel VPN protokollerine alternatif olarak geliştirilen WireGuard, hafif, hızlı ve modern bir VPN çözümü sunar. Bu yazıda, WireGuard VPN’in Linux üzerinde nasıl kurulacağını ve yapılandırılacağını adım adım ele alacağız.

WireGuard Nedir?

WireGuard, Linux çekirdeğine entegre edilmiş, açık kaynaklı ve performans açısından oldukça verimli bir VPN protokolüdür. Diğer VPN çözümlerine kıyasla daha basit bir yapı sunar ve daha yüksek hızlar sağlar. Güvenlik açısından güçlü kriptografik algoritmalar kullanır ve düşük gecikme süresi ile bilinir.

WireGuard VPN Kurulumu

1. WireGuard Kurulumu

WireGuard, modern Linux dağıtımları için varsayılan paket yöneticileri ile kolayca yüklenebilir.

sudo apt update  
sudo apt install wireguard

CentOS/RHEL için:

sudo yum install epel-release  
sudo yum install wireguard-tools

Arch Linux için:

sudo pacman -S wireguard-tools

2. Anahtar Çiftinin Oluşturulması

WireGuard, her istemci için özel ve genel anahtar çiftleri gerektirir. Aşağıdaki komutlar ile gerekli anahtar çiftlerini oluşturabilirsiniz:

wg genkey | tee privatekey | wg pubkey > publickey

Bu işlem sonucunda, privatekey ve publickey adlı iki dosya oluşturulacaktır.

3. VPN Arayüzünün Yapılandırılması

WireGuard’ın arayüzünü ayarlamak için /etc/wireguard/wg0.conf dosyasını oluşturun ve aşağıdaki yapılandırmayı ekleyin:

[Interface]  
PrivateKey = ÖZEL_ANAHTAR  
Address = 10.0.0.1/24  
ListenPort = 51820  

[Peer]  
PublicKey = İSTEMCİ_GENEL_ANAHTAR  
AllowedIPs = 10.0.0.2/32

Daha sonra WireGuard servisini etkinleştirmek için şu komutları çalıştırın:

sudo systemctl enable wg-quick@wg0  
sudo systemctl start wg-quick@wg0

WireGuard VPN Kullanımı

VPN bağlantısını kontrol etmek için aşağıdaki komutu kullanabilirsiniz:

sudo wg show

Bağlantıyı manuel olarak açmak için:

sudo wg-quick up wg0

Bağlantıyı kapatmak için:

sudo wg-quick down wg0

Sonuç

WireGuard, Linux sistemlerinde VPN bağlantısı kurmak isteyen kullanıcılar için hızlı ve güvenli bir alternatif sunar. Kurulumun ve konfigürasyonun basit olması, sistem kaynaklarını daha verimli kullanması ve yüksek performans sağlaması sayesinde tercih edilen bir VPN çözümüdür. Bu rehberde adım adım WireGuard kurulumunu gerçekleştirdik ve temel konfigürasyon ayarlarını yaptık. Daha fazla güvenlik önlemi almak için ek firewall kuralları ve erişim kontrolleri ekleyebilirsiniz.

İlgili Görseller

VPN