# Kubernetes’te Gateway API ve Cilium ile HTTPS Trafiği Yönlendirme
Modern uygulamaların güvenliği ve performansı için HTTPS kritik önem taşıyor. Kubernetes’te çok sayıda servisin güvenli bir şekilde erişilebilir olmasını sağlamak ise karmaşık olabilir. Bu makalede, Gateway API ve Cilium kullanarak Kubernetes kümenizdeki HTTPS trafiğini nasıl verimli ve güvenli bir şekilde yönlendireceğinizi adım adım öğreneceksiniz. Farklı senaryolar ve performans optimizasyon teknikleri ile Kubernetes’te güvenli ağ yönetiminin inceliklerini keşfedeceğiz.
Öğrenme Yol Haritası:
* Yeni Başlayan: Temel kavramlar, basit bir HTTPS yönlendirme örneği ve adım adım kurulum.
* Orta: Gerçek dünya senaryoları, farklı host name’ler ve path’ler ile yönlendirme, optimizasyon ipuçları.
* İleri Düzey: Performans analizi, karmaşık yönlendirme kuralları, edge case’ler ve sorun giderme.
Kubernetes, Gateway API ve Cilium: Temel Kavramlar
Kubernetes, konteynerleştirilmiş uygulamaları yönetmek için kullanılan bir orkestrasyon platformudur. Gateway API, Kubernetes’te ingress kontrolünün daha güçlü ve esnek bir yolunu sunar. Ingress’in aksine, Gateway API daha açıklayıcı ve genişletilebilir bir yapıya sahiptir. Cilium ise, Kubernetes kümelerinde yüksek performanslı bir ağ ağıdır. eBPF (extended Berkeley Packet Filter) teknolojisi kullanarak, ağ politikaları ve güvenlik işlemlerini doğrudan kernel seviyesinde uygular. Bu üç teknolojinin birleşimi, güvenli ve performanslı HTTPS trafiği yönlendirmesi için ideal bir çözüm sunar.
Gateway API ile HTTPS Yönlendirme Kuralları Nasıl Oluşturulur?
Gateway API, Gateway, GatewayClass, HTTPRoute ve TCPRoute gibi çeşitli kaynaklar kullanarak trafiği yönlendirir. HTTPS trafiğini yönlendirmek için HTTPRoute kaynaklarını kullanırız. Bu kaynaklar, belirli host name’ler, path’ler ve SSL sertifikaları kullanarak trafiği farklı servislere yönlendirmek için kurallar tanımlar.
Yeni Başlayan:
Örneğin, example.com alan adına gelen trafiği my-service adlı servise yönlendiren basit bir HTTPRoute tanımı şu şekilde olabilir:
apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
name: my-route
spec:
parentRefs:
- name: my-gateway # Gateway kaynağının adı
namespace: default # Gateway kaynağının namespace'i
hostnames:
- example.com
rules:
- matches:
- path:
type: Prefix
value: /
backendRefs:
- name: my-service
port:
number: 8080 # Servisin dinlediği port
Bu örnekte, my-gateway adlı bir Gateway kaynağı önceden oluşturulmuş olmalıdır. Bu Gateway, Cilium gibi bir CNI (Container Network Interface) sağlayıcısı tarafından yönetilir ve HTTPS trafiğini işleme yeteneğine sahip olmalıdır.
Cilium ile SSL Sertifikalarının Yönetimi ve HTTPS Terminasyonu
Cilium, kendi içinde HTTPS terminasyonunu desteklemez. HTTPS terminasyonunu gerçekleştirmek için, genellikle bir reverse proxy kullanmanız gerekir. En yaygın kullanılan reverse proxy’lerden biri olan Nginx veya Envoy, bir Kubernetes pod’unda çalıştırılabilir ve Gateway API ile entegre edilebilir. SSL sertifikaları, bir Secret kaynağı aracılığıyla Kubernetes’e yüklenir ve reverse proxy tarafından kullanılır.
Orta:
Gerçek bir senaryoda, farklı host name’ler ve path’ler için farklı servisleri yönlendirmeniz gerekebilir. Örneğin, api.example.com adresine gelen trafiği api-service‘e, www.example.com adresine gelen trafiği ise web-service‘e yönlendirebilirsiniz. Bu, HTTPRoute kaynağında birden fazla rule tanımlayarak yapılabilir. Ayrıca, farklı path’lere göre farklı servisleri yönlendirmek için path alanını kullanabilirsiniz. Bu senaryo için, performans optimizasyonu için reverse proxy’nin doğru yapılandırılması kritik önem taşır. Örneğin, cache mekanizmaları kullanarak yanıt sürelerini azaltabilirsiniz.
Gerçek Dünya Senaryoları ve Vaka Analizleri
E-Ticaret Uygulaması: Bir e-ticaret uygulamasında, ürün kataloğu, sepet ve ödeme gibi farklı servisler bulunur. Bu servisler farklı host name’ler veya path’ler altında erişilebilir olabilir ve Gateway API ile farklı servislere yönlendirilebilir. Ayrıca, güvenlik için her servisin kendi SSL sertifikasını kullanması gerekebilir.
Mikro Servis Mimarisinde HTTPS Yönlendirme: Mikro servis mimarisinde, çok sayıda küçük servis bulunur. Gateway API, bu servislerin yönetimini ve HTTPS trafiğinin yönlendirilmesini kolaylaştırır. Her bir mikro servis, kendi HTTPRoute kuralı ile tanımlanabilir.
Performans Optimizasyonu: HTTPS terminasyonunun performansı, SSL sertifikasının türü, kullanılan şifreleme algoritmaları ve reverse proxy’nin performansı gibi faktörlerden etkilenir. Performansı iyileştirmek için, hızlı SSL sertifikaları kullanmanız ve reverse proxy’i optimize etmeniz önemlidir. Ayrıca, Cilium’un ağ performansını optimize etmek için ayarlarını inceleyebilirsiniz. [Fatih Soysal’ın Kubernetes performans optimizasyonu üzerine yazıları](https://fatihsoysal.com) bu konuda size yardımcı olabilir.
İleri Düzey Konular: Performans Analizi ve Sorun Giderme
Performans Analizi: Cilium’un sağladığı metrikler ve Kubernetes’in sağladığı araçlar (örneğin, kubectl top pod) kullanılarak, HTTPS trafiğinin performansı izlenebilir. Yavaş yanıt sürelerinin nedenlerini belirlemek için, reverse proxy’nin loglarını incelemek ve ağ trafiğini analiz etmek gerekebilir.
Edge Case’ler: Karmaşık yönlendirme kuralları ve SSL sertifikalarının yönetimi, beklenmedik sorunlara yol açabilir. Bu sorunları gidermek için, Gateway API ve Cilium’un dokümantasyonunu incelemek ve logları analiz etmek önemlidir. Örneğin, sertifika süresi dolmuşsa veya yanlış yapılandırılmışsa, HTTPS bağlantıları başarısız olabilir.
Uygulamalı Kılavuz: Adım Adım Kurulum ve Yapılandırma
Bu bölümde, basit bir HTTPS yönlendirme örneği için adım adım bir kurulum kılavuzu sunacağız. Bu kılavuz, Cilium ve Gateway API’nin kurulu ve çalışan bir Kubernetes kümesini varsayar.
1. Gerekli kaynakların oluşturulması: Gateway, GatewayClass ve HTTPRoute kaynaklarını tanımlayan YAML dosyalarını oluşturun.
2. SSL sertifikasının yüklenmesi: SSL sertifikanızı bir Secret kaynağı olarak Kubernetes’e yükleyin.
3. Reverse proxy’nin dağıtımı: Nginx veya Envoy gibi bir reverse proxy’i bir Kubernetes pod’unda dağıtın. Reverse proxy’i, Gateway API ve SSL sertifikası ile entegre edin.
4. HTTPRoute’un uygulanması: kubectl apply -f komutu ile HTTPRoute kaynağını uygulayın.
5. Test etme: HTTPS trafiğini yönlendirmeyi test edin.
Sonuç
Bu makalede, Kubernetes’te Gateway API ve Cilium kullanarak HTTPS trafiğini nasıl yönlendireceğinizi öğrendiniz. Farklı senaryolar, performans optimizasyon teknikleri ve sorun giderme yöntemleri ele alındı. Gateway API’nin esnekliği ve Cilium’un performansı, güvenli ve ölçeklenebilir bir HTTPS yönlendirme çözümü sağlar. Karmaşık senaryolar için, [Fatih Soysal’ın Kubernetes üzerine daha detaylı yazılarını](https://fatihsoysal.com) inceleyebilirsiniz.
Sıkça Sorulan Sorular:
1. Cilium olmadan Gateway API kullanabilir miyim? Evet, ancak Cilium’un sağladığı performans ve ağ yönetimi özellikleri olmadan.
2. Başka hangi reverse proxy’ler kullanılabilir? Envoy, Traefik gibi diğer reverse proxy’ler de kullanılabilir.
3. SSL sertifikasını nasıl yenileyebilirim? Secret kaynağını güncelleyerek.
4. Performans sorunlarını nasıl tespit edebilirim? Cilium metriklerini ve Kubernetes araçlarını kullanarak.
5. Gateway API’nin Ingress’ten farkı nedir? Gateway API daha esnek, genişletilebilir ve açıklayıcı bir yapıya sahiptir.
Yazar: Fatih Soysal
