Takip et

Ubuntu 20.04’te Docker Kapsayıcıları için Traefik v2 Ters Proxy Olarak Nasıl Kullanılır

# Traefik v2 ile Docker Container’larını Ters Proxy Olarak Kullanma (Ubuntu 20.04)

Birden fazla Docker uygulamanız var ve bunlara tek bir giriş noktası üzerinden güvenli ve kolay bir şekilde erişmek istiyorsunuz? Farklı portlarda çalışan uygulamalarınızın yönetimini kolaylaştırmak ve güvenlik katmanları eklemek mi istiyorsunuz? O halde Traefik v2, tam aradığınız çözüm olabilir. Bu makalede, Ubuntu 20.04 üzerinde Docker container’larınıza ters proxy olarak Traefik v2’yi nasıl kuracağınızı ve kullanacağınızı adım adım öğreneceksiniz.

Öğrenme Yol Haritası:

* Yeni Başlayan: Traefik’in temel kurulumu ve basit bir web sunucusu için konfigürasyon.
* Orta: Gerçek dünya senaryoları: SSL sertifikası kullanımı, farklı hostlar ve alt dizinler için yönlendirme.
* İleri Düzey: Performans analizi, Traefik’in farklı provider’larını kullanma ve karmaşık senaryoların yönetimi.

Traefik v2 ve Ters Proxy Kavramı: Temel Bilgiler

Traefik, otomatik konfigürasyon özelliğine sahip, açık kaynaklı bir ters proxy ve yük dengeleyicidir. Docker, Kubernetes gibi platformlarla mükemmel bir şekilde entegre çalışır ve uygulamalarınızın ağ yönetimini büyük ölçüde kolaylaştırır. Ters proxy, istekleri farklı sunuculara yönlendiren bir ara sunucudur. Bu sayede, kullanıcılar uygulamalarınızın fiziksel konumlarını bilmeden erişebilirler ve güvenlik katmanları ekleyebilirsiniz.

Bir ters proxy’nin faydaları şunlardır:

* Tek giriş noktası: Tüm uygulamalarınıza tek bir URL üzerinden erişim sağlar.
* Güvenlik: Güvenlik duvarı, SSL sertifikası gibi güvenlik katmanlarını uygulamak için merkezi bir nokta sunar.
* Yük dengeleme: Birden fazla sunucuya istekleri dağıtarak performansı iyileştirir.
* Otomatik konfigürasyon: Yeni uygulamalar eklendiğinde veya kaldırıldığında otomatik olarak konfigürasyonunu günceller.
* HTTPS desteği: Let’s Encrypt gibi hizmetleri kullanarak otomatik SSL sertifikası alma olanağı sağlar.

Traefik v2’nin Docker ile Kurulumu: Adım Adım Kılavuz

Öncelikle, sisteminizde Docker ve Docker Compose’un kurulu ve çalışır durumda olduğundan emin olun. Daha sonra aşağıdaki adımları izleyin:

1. Docker Compose Dosyasının Oluşturulması: docker-compose.yml adında bir dosya oluşturun ve aşağıdaki içeriği ekleyin:

version: "3.7"
services:
  traefik:
    image: traefik:v2.8
    command:
      - --providers.docker
      - --providers.docker.exposedbydefault=false
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik:/etc/traefik
    networks:
      - traefik-net
    restart: unless-stopped

networks:
  traefik-net:

Bu dosya, Traefik’i Docker’da çalıştırmak için gerekli konfigürasyonları içerir. /var/run/docker.sock hacmi, Traefik’in Docker daemon’una erişmesini sağlar. ./traefik hacmi, Traefik konfigürasyon dosyalarını tutmak için kullanılır. Bu dosyayı daha sonra özelleştirebilirsiniz.

2. Traefik Konfigürasyon Dosyasının Oluşturulması: traefik dizini oluşturun ve içine traefik.toml adında bir dosya ekleyin. Bu dosya, Traefik’in nasıl davranacağını tanımlar. Şimdilik boş bırakabilirsiniz. Daha sonraki bölümlerde bu dosyayı genişleteceğiz.

3. Docker Compose ile Traefik’in Çalıştırılması: docker-compose up -d komutunu çalıştırın. Bu komut, Traefik container’ını arka planda çalıştırır.

4. Test Uygulamasının Çalıştırılması: Traefik’in çalıştığını test etmek için basit bir Nginx uygulaması çalıştıralım:

version: "3.7"
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    networks:
      - traefik-net
    labels:
      - "traefik.http.routers.web.rule=Host(localhost)"
      - "traefik.http.routers.web.entrypoints=web"
      - "traefik.http.services.web.loadbalancer.server.port=80"

Bu docker-compose.yml dosyasını web adında bir dizinde oluşturup, docker-compose up -d ile çalıştırın. localhost adresine eriştiğinizde Nginx’in varsayılan sayfasını görmelisiniz.

Traefik ile SSL Sertifikası Kullanımı: Nasıl Yapılır?

Güvenli bir bağlantı için SSL sertifikası kullanmak çok önemlidir. Traefik, Let’s Encrypt ile kolayca entegre olabilir. docker-compose.yml dosyanızı aşağıdaki gibi güncelleyin:

version: "3.7"
services:
  traefik:
    image: traefik:v2.8
    command:
      - --providers.docker
      - --providers.docker.exposedbydefault=false
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --certificatesresolvers.letsencrypt.acme.email=YOUR_EMAIL
      - --certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik:/etc/traefik
      - /letsencrypt:/letsencrypt
    networks:
      - traefik-net
    restart: unless-stopped

networks:
  traefik-net:

YOUR_EMAIL yerine kendi e-posta adresinizi yazın. /letsencrypt hacmi, Let’s Encrypt sertifikalarının saklanacağı yeri belirtir. Bu değişikliklerden sonra docker-compose up -d komutunu çalıştırın. Artık https://localhost adresine güvenli bir şekilde erişebilirsiniz.

Farklı Hostlar ve Alt Dizinler için Yönlendirme: Gerçek Dünya Örneği

Birden fazla web uygulamanız varsa, her birini farklı host adlarıyla veya alt dizinlerle erişilebilir hale getirmeniz gerekebilir. Bunun için Traefik’in etiketlerini kullanabilirsiniz. Örneğin, iki farklı uygulamanız varsa:

* Uygulama 1: blog.example.com adresinde çalışacak.
* Uygulama 2: api.example.com adresinde çalışacak.

Her uygulamanın Docker Compose dosyasına ilgili etiketleri eklemeniz gerekir. Örneğin, blog uygulaması için:

labels:
  - "traefik.http.routers.blog.rule=Host(blog.example.com)"
  - "traefik.http.routers.blog.entrypoints=websecure"
  - "traefik.http.services.blog.loadbalancer.server.port=80"

Bu etiketler, Traefik’e blog.example.com adresinin ilgili uygulamayı göstermesi gerektiğini söyler. api.example.com için de benzer etiketleri kullanabilirsiniz. Bu örnekte, DNS kayıtlarınızı doğru şekilde yapılandırarak blog.example.com ve api.example.com adreslerinin sunucunuza yönlendirildiğinden emin olmalısınız. Aksi takdirde, uygulamalarınıza erişemezsiniz.

Traefik’in Performans Optimizasyonu: İpuçları ve Teknikler

Traefik’in performansını optimize etmek için birkaç yöntem vardır:

* Cache kullanımı: Traefik’in statik dosyaları önbelleğe almasını sağlayarak sunucu yükünü azaltabilirsiniz.
* Yük dengeleme stratejileri: Traefik, farklı yük dengeleme algoritmaları sunar. Uygulamanızın gereksinimlerine en uygun olanı seçmelisiniz.
* HTTP/2 ve gRPC desteği: Traefik, HTTP/2 ve gRPC gibi modern protokolleri destekler. Bunları etkinleştirerek performansı artırabilirsiniz.
* Resource limitleri: Traefik container’ının kaynaklarını (CPU, bellek) doğru şekilde sınırlandırmak performansı iyileştirebilir.
* Loglama ve izleme: Traefik’in loglarını ve metriklerini izleyerek performans darboğazlarını tespit edebilirsiniz. Prometheus ve Grafana gibi araçları kullanarak daha detaylı izleme yapabilirsiniz.

Traefik ile Karmaşık Senaryoların Yönetimi: İleri Düzey Konfigürasyonlar

Traefik, Middleware’ler sayesinde oldukça esnek bir yapıya sahiptir. Middleware’ler, istekleri işlemeden önce veya sonra belirli işlemleri gerçekleştirmenizi sağlar. Örneğin, bir middleware ile tüm isteklerinizi loglayabilir veya belirli bir ülkeden gelen istekleri engelleyebilirsiniz. Ayrıca, farklı provider’lar kullanarak Traefik’i daha da özelleştirebilirsiniz. Örneğin, File provider ile manuel olarak konfigürasyon dosyası oluşturabilirsiniz veya Consul veya Etcd gibi hizmet keşif araçlarını kullanarak dinamik konfigürasyon sağlayabilirsiniz.

Sonuç

Bu makalede, Traefik v2’yi Docker container’larınız için ters proxy olarak nasıl kullanacağınızı öğrendiniz. Basit kurulumdan karmaşık konfigürasyonlara kadar çeşitli senaryoları ele aldık. Unutmayın ki, Traefik’in gücü, otomatik konfigürasyon ve esnekliğinde yatmaktadır. Uygulamalarınızın sayısı arttıkça, Traefik’in sağladığı kolaylık ve performans artışı daha da belirgin hale gelecektir. Daha fazla bilgi ve ileri düzey konfigürasyonlar için [Fatih Soysal’ın bloguna](https://fatihsoysal.com) göz atabilirsiniz.

Sıkça Sorulan Sorular:

1. Traefik’i Docker Compose olmadan nasıl kurabilirim? Traefik’i Docker Compose kullanmadan kurmak için, resmi Docker imajını indirip, manuel olarak konfigürasyon dosyasını oluşturmanız ve çalıştırmanız gerekir. Bu daha zahmetli bir süreçtir.

2. Traefik’in farklı yük dengeleme stratejileri nelerdir? Traefik, Round Robin, Least Connections, IP Hash gibi farklı yük dengeleme stratejileri sunar.

3. Traefik’in loglarını nasıl izleyebilirim? Traefik’in loglarını Docker’ın loglarını izleyerek veya konfigürasyon dosyasında belirtilen loglama yolunu inceleyerek izleyebilirsiniz.

4. Traefik ile güvenlik duvarı nasıl entegre edilir? Traefik, güvenlik duvarı kurallarını doğrudan desteklemez. Ancak, güvenlik duvarı kurallarını sunucunuzun genel ağ konfigürasyonunda tanımlayabilirsiniz.

5. Traefik’i Kubernetes ile nasıl kullanabilirim? Traefik, Kubernetes ile mükemmel bir şekilde entegre çalışır. Kubernetes’in hizmet keşif mekanizmaları ile Traefik’i otomatik olarak yapılandırabilirsiniz.

Yazar: Fatih Soysal

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.