CodeBlanks Logo Icon CodeBlanks

Meydan okuma - Ingress

Path tabanlı yönlendirme ile Ingress yazarsın.

Meydan okuma: çok servisli Ingress

Bu meydan okumada iki alan adını ve üç servisi tek bir Ingress'le yayınlayacaksın; ana alan adı HTTPS'li olacak:

magaza.example.com/        -> web:80
magaza.example.com/api     -> api:8000
panel.example.com/         -> panel:80

Sınama için gerçek DNS beklenmez: istek controller adresine gönderilir ve alan adı Host başlığıyla verilir.

Uygulama Ingress kuralları

Bir Ingress'in rules bölümünü yaz (rules: ile başlayarak): magaza.example.com için /api (Prefix) → api:8000 ve / (Prefix) → web:80; panel.example.com için / (Prefix) → panel:80.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
rules:
  - host: magaza.example.com
    http:
      paths:
        - path: /api
          pathType: Prefix
          backend:
            service:
              name: api
              port:
                number: 8000
        - path: /
          pathType: Prefix
          backend:
            service:
              name: web
              port:
                number: 80
  - host: panel.example.com
    http:
      paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: panel
              port:
                number: 80

Beklenen çıktı

ingress.networking.k8s.io/magaza configured

Uygulama TLS ve sınama

Üç komut yaz: magaza.crt ve magaza.key'den magaza-tls TLS Secret'ını oluştur; curl -s -H "Host: magaza.example.com" http://$(minikube ip)/api/saglik ile API yolunu sına; curl -s -H "Host: panel.example.com" http://$(minikube ip)/ ile paneli sına.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
kubectl create secret tls magaza-tls --cert=magaza.crt --key=magaza.key
curl -s -H "Host: magaza.example.com" http://$(minikube ip)/api/saglik
curl -s -H "Host: panel.example.com" http://$(minikube ip)/

Beklenen çıktı

secret/magaza-tls created
{"durum":"ok"}
<!doctype html><title>Yönetim paneli</title>

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 panel.example.com/api isteği bu kurallarla nereye gider?

  • api:8000
  • web:80
  • 404
  • panel:80 (yalnızca kendi host kuralları uygulanır) Doğru cevap

Açıklama: Önce host eşleşir, sonra o host'un yolları.

2 Alan adını başlıkla ver.

Soru
curl -H "____: panel.example.com" http://$(minikube ip)/
Cevap
curl -H "Host: panel.example.com" http://$(minikube ip)/

Açıklama: Ingress host'u Host başlığından okur.

3 Eşleştir.

Kavram Anlamı
rules[].host Alan adı kuralı
paths[].path Yol kuralı
tls[].hosts HTTPS alan adları
Host başlığı DNS'siz sınama

İleri seviye bölümündeki tüm dersler