Ingress i routing zewnętrzny
Udostępniaj wiele usług na zewnątrz przez jeden punkt wejścia, korzystając z zasobów Ingress, routingu na podstawie hosta i ścieżki oraz kontrolera Ingress.
Ingress i routing zewnętrzny to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Co dalej po NodePort i LoadBalancer
Obiekt Service może udostępniać aplikację, ale przydzielanie każdej aplikacji osobnego zewnętrznego adresu IP jest kosztowne i szybko prowadzi do bałaganu. Ingress zapewnia jeden inteligentny punkt wejścia HTTP, który kieruje ruch do wielu usług.
Czym jest Ingress?
Ingress to obiekt Kubernetes opisujący reguły routingu HTTP/HTTPS: określa, który host lub ścieżka URL wskazuje na który obiekt Service.
Potrzebny jest kontroler
Obiekt Ingress zawiera tylko reguły. Kontroler Ingress (nginx, Traefik, HAProxy) obserwuje te reguły i faktycznie wykonuje routing. Bez kontrolera nie ma żadnego efektu.
kubectl get pods -n ingress-nginxPodstawowy Ingress
Ten obiekt Ingress kieruje cały ruch do pojedynczego backendowego obiektu Service na porcie 80.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-ingress
spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web
port:
number: 80Routing na podstawie hosta
Dodaj host, aby kierować ruch na podstawie nazwy domeny — api.example.com do jednej usługi, a shop.example.com do innej, korzystając z tego samego adresu IP.
rules:
- host: api.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: api
port:
number: 8080Routing na podstawie ścieżki
Można też kierować ruch na podstawie ścieżki URL w obrębie jednego hosta: /api do usługi API, a / do webowego frontendu.
paths:
- path: /api
pathType: Prefix
backend:
service:
name: api
port:
number: 8080
- path: /
pathType: Prefix
backend:
service:
name: web
port:
number: 80Kończenie TLS
Ingress może zakończyć połączenie HTTPS za pomocą sekretu TLS, dzięki czemu usługi otrzymują zwykły ruch HTTP, a użytkownicy korzystają z szyfrowania.
spec:
tls:
- hosts:
- shop.example.com
secretName: shop-tlsAdnotacje dostosowują działanie
Adnotacje specyficzne dla kontrolera konfigurują przepisywanie adresów, limity czasu, limity szybkości i wiele innych ustawień. Są przechowywane w metadanych obiektu Ingress.
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /IngressClass
Gdy istnieje wiele kontrolerów, właściwość ingressClassName wskazuje Kubernetes, który z nich powinien obsługiwać ten obiekt Ingress.
spec:
ingressClassName: nginxInspekcja obiektu Ingress
Sprawdź reguły i przypisany adres za pomocą kubectl get ingress, a zdarzenia — za pomocą describe.
kubectl describe ingress web-ingressNowoczesna alternatywa: Gateway API
Kubernetes zmierza w kierunku Gateway API — bardziej wyrazistego następcy Ingress. Ingress jest nadal powszechnie używany i stanowi właściwy punkt wyjścia.
Szybkie sprawdzenie
Dlaczego potrzebny jest kontroler Ingress?
Podsumowanie
Można już w przejrzysty sposób udostępniać aplikacje:
- Ingress definiuje reguły routingu HTTP, a kontroler Ingress je egzekwuje
- Można kierować ruch na podstawie hosta lub ścieżki przez jeden punkt wejścia
- Można kończyć połączenia TLS i dostosowywać działanie za pomocą adnotacji
ingressClassNamewybiera kontroler
Jeden adres IP, wiele usług i inteligentny routing.
Często zadawane pytania
Czy lekcja „Ingress i routing zewnętrzny” jest bezpłatna?
Tak — pełny tekst „Ingress i routing zewnętrzny” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Co nauczysz się w „Ingress i routing zewnętrzny”?
Udostępniaj wiele usług na zewnątrz przez jeden punkt wejścia, korzystając z zasobów Ingress, routingu na podstawie hosta i ścieżki oraz kontrolera Ingress. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?
Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Ingress i routing zewnętrzny”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?
Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Deployments dla aplikacji bezstanowych
- Services zapewniające dostęp sieciowy
- ConfigMaps i Secrets
- Ingress i routing zewnętrzny