 Autor: [Tomasz Nowosielski](/autorzy/tomasz-nowosielski) Redaktor naczelny, analityk hostingu · Zweryfikowano Kwiecień 2026

1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  Kubernetes Ingress — Traefik i Nginx

# Kubernetes Ingress — Traefik i Nginx Ingress Controller

Opublikowano: 10 kwietnia 2026 · Kategoria: VPS / Kubernetes

Każda usługa wystawiona jako LoadBalancer w Kubernetes kosztuje osobnego load balancera w chmurze — dla 10 serwisów to 10 external IP i 10 rachunków. Ingress to odwrócenie tego wzorca: jeden entry point dla całego klastra, routing HTTP(S) do dziesiątek serwisów, TLS termination i middleware — wszystko w jednym miejscu. Ten artykuł pokazuje dwie najpopularniejsze opcje: Traefik (Developer Experience, automatyczny TLS) i Nginx Ingress Controller (wydajność, precyzyjna konfiguracja).

## Instalacja Traefik przez Helm

\# Dodaj repo Traefik
helm repo add traefik https://traefik.github.io/charts
helm repo update

# Instalacja Traefik z wartosciami (values.yaml)
helm install traefik traefik/traefik \\
  --namespace traefik \\
  --create-namespace \\
  --values traefik-values.yaml

# traefik-values.yaml
globalArguments:
  - "--global.sendanonymoususage=false"
additionalArguments:
  - "--certificatesresolvers.letsencrypt.acme.email=admin@example.com"
  - "--certificatesresolvers.letsencrypt.acme.storage=/data/acme.json"
  - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
ports:
  web:
    redirectTo:
      port: websecure  # redirect HTTP -> HTTPS
  websecure:
    tls:
      enabled: true
service:
  type: LoadBalancer
persistence:
  enabled: true
  storageClass: longhorn-ssd
  size: 1Gi   # przechowywanie acme.json z certyfikatami
ingressClass:
  enabled: true
  isDefaultClass: true

## Podstawowy Ingress resource

\# Ingress z TLS via cert-manager (Traefik lub Nginx)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: app-ingress
  namespace: production
  annotations:
    cert-manager.io/cluster-issuer: "letsencrypt-prod"
    # Dla Nginx Ingress:
    # nginx.ingress.kubernetes.io/proxy-body-size: "50m"
    # Dla Traefik:
    # traefik.ingress.kubernetes.io/router.entrypoints: websecure
spec:
  ingressClassName: traefik  # lub nginx
  tls:
    - hosts:
        - app.example.com
        - api.example.com
      secretName: app-tls-secret   # cert-manager zapisze tu certyfikat
  rules:
    - host: app.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: frontend-svc
                port:
                  number: 80
    - host: api.example.com
      http:
        paths:
          - path: /v1
            pathType: Prefix
            backend:
              service:
                name: api-svc
                port:
                  number: 8080

## cert-manager — automatyczne certyfikaty TLS

\# Instalacja cert-manager
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml

# Weryfikacja
kubectl get pods -n cert-manager

# ClusterIssuer dla Let's Encrypt (produkcja)
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: admin@example.com
    privateKeySecretRef:
      name: letsencrypt-prod-key
    solvers:
      - http01:
          ingress:
            ingressClassName: traefik   # lub nginx
---
# ClusterIssuer dla testow (staging - bez limitow LE)
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-staging
spec:
  acme:
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    email: admin@example.com
    privateKeySecretRef:
      name: letsencrypt-staging-key
    solvers:
      - http01:
          ingress:
            ingressClassName: traefik

\# Sprawdz status certyfikatu
kubectl get certificate -n production
# NAME            READY   SECRET           AGE
# app-tls-secret  True    app-tls-secret   2m

kubectl describe certificate app-tls-secret -n production

# Jesli certyfikat nie jest gotowy - sprawdz CertificateRequest i Order
kubectl get certificaterequest -n production
kubectl describe order -n production

## Traefik Middleware — rate limiting i BasicAuth

\# Middleware: rate limiting
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: rate-limit
  namespace: production
spec:
  rateLimit:
    average: 100      # 100 requestow/sekunde
    burst: 50         # burst do 50 ponad srednia
---
# Middleware: BasicAuth (username/password)
# Generuj hash: htpasswd -nb admin "SecurePass123"
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: basic-auth
  namespace: production
spec:
  basicAuth:
    secret: basic-auth-secret
---
# Secret z userem i haslem (htpasswd format)
apiVersion: v1
kind: Secret
metadata:
  name: basic-auth-secret
  namespace: production
type: Opaque
stringData:
  users: "admin:$apr1$xyz..."   # wygeneruj: htpasswd -nb admin pass
---
# Middleware: przekierowanie HTTP na HTTPS (301 Moved Permanently)
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: https-redirect
  namespace: production
spec:
  redirectScheme:
    scheme: https
    permanent: true

\# Ingress z middleware (Traefik)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: admin-ingress
  namespace: production
  annotations:
    traefik.ingress.kubernetes.io/router.middlewares: "production-basic-auth@kubernetescrd,production-rate-limit@kubernetescrd"
spec:
  ingressClassName: traefik
  rules:
    - host: admin.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: admin-panel
                port:
                  number: 3000

## Porównanie Traefik vs Nginx Ingress vs Caddy

Kontroler

Auto TLS

Hot-reload

Middleware

Wydajność

Krzywa uczenia

Traefik v3

Tak (ACME)

Tak

Natywne CRD

Bardzo dobra

Niska

Nginx Ingress

Przez cert-manager

Prawie (SIGHUP)

Annotations

Doskonała

Średnia

HAProxy Ingress

Przez cert-manager

Tak

ConfigMap

Doskonała

Wysoka

Caddy (jako Ingress)

Tak (ACME)

Tak

Ograniczone

Dobra

Niska

## Najczęstsze pytania

Czym różni się Ingress od Service typu LoadBalancer? +

Service LoadBalancer tworzy jeden zewnętrzny load balancer per serwis — dla 10 serwisów dostajesz 10 external IP i 10 opłat za LB w chmurze. Ingress to jeden punkt wejścia (jeden LB) z routingiem HTTP(S) do wielu serwisów na podstawie hostname i path. Ingress obsługuje TLS termination, host-based routing (api.example.com → service A, app.example.com → service B) i path-based routing (/api → service A, /app → service B). Jest znacznie tańszy i bardziej elastyczny dla aplikacji webowych niż multiple LoadBalancer services.

Czym różni się Traefik od Nginx Ingress Controller? +

Nginx Ingress Controller to sprawdzony standard z ogromną społecznością. Konfiguracja przez annotations i ConfigMap. Doskonała dokumentacja, przewidywalne zachowanie. Traefik automatycznie wykrywa zmiany w K8s (zero restart, hot-reload) i pobiera certyfikaty Let's Encrypt samodzielnie. Natywne wsparcie dla middleware (rate limiting, BasicAuth, redirect). Lepsza integracja z Docker. Nginx jest lepszy gdy potrzebujesz zaawansowanej konfiguracji HTTP i maksymalnej wydajności. Traefik gdy cenisz Developer Experience, automatyzację i wszystko-w-jednym.

Jak działa cert-manager z Let's Encrypt w Kubernetes? +

cert-manager to kontroler K8s, który automatycznie zarządza certyfikatami TLS. Działanie: (1) Tworzysz Issuer lub ClusterIssuer definiujący źródło certyfikatów (Let's Encrypt ACME, self-signed, Vault PKI). (2) W Ingress resource dodajesz annotation cert-manager.io/cluster-issuer: "letsencrypt-prod" i sekcję tls. (3) cert-manager wykrywa nowy Ingress, tworzy Certificate resource, wykonuje ACME challenge (HTTP-01 lub DNS-01), pobiera certyfikat i zapisuje w Secret. (4) Ingress Controller ładuje Secret z TLS. Certyfikaty są automatycznie odnawiane 30 dni przed wygaśnięciem.

Co to jest IngressClass w Kubernetes? +

IngressClass to sposób na uruchomienie wielu Ingress Controllerów w jednym klastrze i skierowanie konkretnego Ingress resource do konkretnego kontrolera. Przykład: masz Nginx Ingress dla aplikacji produkcyjnych i Traefik dla internal serwisów. W Ingress resource ustawiasz spec.ingressClassName: nginx lub spec.ingressClassName: traefik. Jeden controller może być domyślny (annotation ingressclass.kubernetes.io/is-default-class: "true") — jego Ingress resource nie muszą jawnie podawać ingressClassName.

## Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.

Contabo

VPS z dużym ruchem sieciowym — idealny dla klastra K8s z Traefik Ingress

K8s Ingress

[Aktywuj rabat →](/out/contabo)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/contabo)

Mikr.us

Tani VPS do nauki Kubernetes Ingress z Traefik i Let's Encrypt

Dev/Test

[Aktywuj rabat →](/out/mikrus)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/mikrus)

ProSerwer.pl

Polski VPS z pełną kontrolą nad K8s Ingress i certyfikatami SSL

Polski VPS

[Aktywuj rabat →](/out/proserwer-pl)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/proserwer)

## Powiązane strony

-   [Traefik v3 — reverse proxy dla Dockera z HTTPS](/baza-wiedzy/traefik-reverse-proxy)
-   [k3s — lekki Kubernetes na VPS](/baza-wiedzy/kubernetes-k3s-vps)
-   [Certbot + Nginx — SSL/TLS dla własnej domeny](/baza-wiedzy/certbot-nginx-ssl)
-   [Wszystkie artykuły](/baza-wiedzy/)