Skip to content

Cum să configurezi Ingress în Kubernetes pentru rutare HTTP

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Cum să configurezi Ingress în Kubernetes pentru rutare HTTP. We cover key concepts, practical examples, and best practices.

Problema

Ai mai multe Service-uri în cluster și vrei să le expui pe toate printr-un singur entry point, cu routing pe baza hostname-ului sau a căii URL.

Soluția Pas cu Pas

1. Instalează un Ingress Controller

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.9.0/deploy/static/provider/cloud/deploy.yaml

Verifică:

kubectl get pods -n ingress-nginx

2. Creează un Ingress cu routing pe hostname

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
spec:
  ingressClassName: nginx
  rules:
  - host: app1.example.com
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: app1-service
            port:
              number: 80
  - host: app2.example.com
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: app2-service
            port:
              number: 80
kubectl apply -f ingress.yaml

Output:

ingress.networking.k8s.io/example-ingress created

3. Verifică Ingress-ul

kubectl get ingress

Output:

NAME              CLASS   HOSTS                        ADDRESS        PORTS
example-ingress   nginx   app1.example.com,app2..com   192.168.1.100   80

4. Routing pe bază de cale

spec:
  rules:
  - host: example.com
    http:
      paths:
      - pathType: Prefix
        path: "/api"
        backend:
          service:
            name: api-service
            port:
              number: 80
      - pathType: Prefix
        path: "/web"
        backend:
          service:
            name: web-service
            port:
              number: 80

5. Adaugă TLS

spec:
  tls:
  - hosts:
    - app1.example.com
    secretName: app1-tls

Prevenție

  • Asigură-te că ai un Ingress Controller instalat înainte de a crea resurse Ingress.
  • Folosește pathType: Prefix pentru rute generale și Exact pentru rute specifice.
  • Configurează annotations pentru particularități (timeout, rate limiting, CORS).

Greșeli Comune

  1. Fără Ingress Controller — Ingress-ul nu funcționează fără un controller activ.
  2. Hostname nerezolvabil — DNS-ul trebuie să pointeze către IP-ul Ingress Controller-ului.
  3. PathType greșitPrefix match-uiește sub-căi, Exact nu.
  4. Service inexistent — Backend-ul specificat trebuie să existe și să aibă Pod-uri ready.
  5. Annotations lipsă — Configurări specifice (redirect HTTP→HTTPS) se fac prin annotations.

Exercițiu

Creează două Deployment-uri cu Service-uri, apoi un Ingress care rutează app1.example.com către primul și app2.example.com către al doilea. Testează accesul.

FAQ

### Ce diferență este între Ingress și Service de tip LoadBalancer?

Un Service LoadBalancer creează un load balancer pentru fiecare serviciu. Ingress-ul permite rutarea mai multor servicii printr-un singur entry point, pe baza hostname-ului și a căii.

Cum configurez HTTPS în Ingress?

Creează un Secret TLS cu certificatul și cheia, apoi referențiază-l în spec.tls. Ingress Controller-ul se ocupă de terminarea TLS.

Ce este Ingress Controller?

Este o componentă care implementează regulile Ingress, de obicei un reverse proxy (NGINX, Traefik, HAProxy) care rulează în cluster.

Construit de dezvoltatorii Doda Browser, DodaZIP și Durga Antivirus Pro. Uneltele DodaTech se integrează seamless cu Kubernetes pentru productivitate și securitate sporite.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro