Destek Online
Ana içeriğe geç

ExternalDNS ile DigitalOcean Kubernetes DNS Kayıtlarını Otomatik Yönetme

Kubernetes ortamlarında uygulamaları alan adıyla yayınlamak standarttır.
Ancak DNS kayıtlarını manuel yönetmek zaman kaybettirir ve hataya açıktır.

ExternalDNS, bu süreci tamamen otomatik hale getirir.

Bu Rehberde Ne Öğreneceksiniz?

Bu rehberde:

  • ExternalDNS’i Helm ile DOKS kümesine kurmayı
  • Service ve Ingress kaynakları için DNS kayıtlarını otomatik oluşturmayı
  • DigitalOcean DNS API ile A ve TXT kayıtlarını yönetmeyi
  • Ingress ve LoadBalancer senaryolarını test etmeyi

öğreneceksiniz.


Teknik Özet

Bu rehber, ExternalDNS’in DigitalOcean Kubernetes (DOKS) üzerinde
Service ve Ingress kaynaklarından DNS kayıtlarını otomatik yönetmesini anlatır.

Amaç, DNS güncellemelerini manuel olmaktan çıkarıp
uygulama dağıtımıyla entegre etmektir.


Hangi Problemi Çözer?

  • IP değiştiğinde DNS unutulma riskini ortadan kaldırır
  • Manuel DNS paneli ihtiyacını yok eder
  • Kubernetes’i tek doğruluk kaynağı haline getirir
  • CI/CD ve test ortamlarını hızlandırır

Ön Koşullar

  • DigitalOcean Kubernetes Kümesi (DOKS)
  • kubectl yapılandırılmış olmalı
  • Helm 3 kurulu olmalı
  • Nginx Ingress Controller aktif olmalı
  • DigitalOcean API Anahtarı (read/write)
  • Kayıtlı alan adı (örnek: ornek.com)

ExternalDNS Kurulumu (Helm)

Yapılandırma Dosyası

nano externaldns-values.yaml
  • Bu dosya ExternalDNS ayarlarını içerir.


provider: digitalocean

digitalocean:
apiToken: YOUR_API_TOKEN

interval: "1m"
policy: sync
provider: DNS sağlayıcısı

interval: Değişiklik kontrol süresi

policy: Kayıt oluşturma/silme davranışı

Helm Repository Ekleme


helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
  • Bu komutlar Bitnami chart’larını ekler ve günceller.

ExternalDNS Kurulumu


helm install external-dns bitnami/external-dns -f externaldns-values.yaml
  • ExternalDNS kümenize kurulur.

  • Pod durumunu kontrol edin:


kubectl get pods -l app.kubernetes.io/name=external-dns

Örnek Uygulama ve Ingress


nano echo.yaml
  • Bu dosya Deployment, Service ve Ingress tanımlarını içerir.


apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: echo-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: echo.ornek.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: echo
port:
number: 80
---
apiVersion: v1
kind: Service
metadata:
name: echo
spec:
ports:
- port: 80
targetPort: 5678
selector:
app: echo
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: echo
spec:
replicas: 3
selector:
matchLabels:
app: echo
template:
metadata:
labels:
app: echo
spec:
containers:
- name: echo
image: hashicorp/http-echo
args:
- "-text=Selam GenixNode!"
ports:
- containerPort: 5678

Kaynakları Oluşturma


kubectl apply -f echo.yaml
  • ExternalDNS yaklaşık 1 dakika içinde DNS kayıtlarını oluşturur.

Test edin:


curl echo.ornek.com
  • Beklenen çıktı:

Selam GenixNode!

(İsteğe Bağlı) LoadBalancer Servis Kullanımı

  1. Ingress’i kaldırın:

kubectl delete ingress echo-ingress
  1. Servisi güncelleyin:

apiVersion: v1
kind: Service
metadata:
name: echo
annotations:
external-dns.alpha.kubernetes.io/hostname: echo.ornek.com
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 5678
selector:
app: echo
Uygulayın:


kubectl apply -f echo.yaml
  • DNS yine otomatik güncellenir.

Sıkça Sorulan Sorular

1. ExternalDNS DNS kayıtlarını siler mi? Sadece kendi oluşturduklarını yönetir.

2. TXT kayıtları neden var? Kayıt sahipliğini takip eder.

3. Ingress mi Service mi daha iyi? Ingress daha esnek ve yaygındır.

4. Birden fazla domain olur mu? Evet, domainFilters ile sınırlandırılabilir.


Sonuç

ExternalDNS ile:

  • DNS yönetimi otomatikleşir
  • Kubernetes merkez olur
  • Hata riski azalır
  • Dağıtımlar hızlanır

Bu yapıyı GenixNode Kubernetes altyapısında güvenle kullanabilirsiniz.