Ingress zapewniający dostęp zewnętrzny
Skonfiguruj Ingress do zarządzania zewnętrznym dostępem do usług, z routingiem HTTP/S i równoważeniem obciążenia.
Ingress zapewniający dostęp zewnętrzny to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 3 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
Omówiliśmy różne typy usług Kubernetes, takie jak NodePort i LoadBalancer, służące do zewnętrznego udostępniania aplikacji.
Choć są przydatne, mogą stać się kłopotliwe w zarządzaniu złożonymi wymaganiami dotyczącymi dostępu zewnętrznego, szczególnie gdy trzeba hostować wiele aplikacji lub interfejsów API pod jednym adresem IP i stosować określone reguły routingu.
W tym miejscu przydaje się Ingress, oferujący bardziej zaawansowane i elastyczne rozwiązanie.
Wprowadzenie do Kubernetes Ingress
Ingress to obiekt API Kubernetes, który zarządza zewnętrznym dostępem do usług w klastrze, przede wszystkim dla ruchu HTTP i HTTPS.
- Działa jako pojedynczy punkt wejścia dla żądań zewnętrznych.
- Umożliwia routing HTTP/S na podstawie nazw hostów lub ścieżek URL.
- Może także zapewniać funkcje takie jak terminowanie SSL/TLS i równoważenie obciążenia.
Ingress można traktować jak inteligentnego kontrolera ruchu, który kieruje ruch internetowy do właściwych usług wewnętrznych.
Kontroler Ingress
Zasób Ingress sam w sobie jest tylko zestawem reguł — nie obsługuje bezpośrednio ruchu. Aby Ingress działał, w klastrze musi działać Ingress Controller.
Ingress Controller obserwuje zasoby Ingress i konfiguruje zewnętrzny load balancer (lub reverse proxy) zgodnie ze zdefiniowanymi regułami.
Do popularnych kontrolerów Ingress należą Nginx, Traefik oraz rozwiązania właściwe dla konkretnych chmur, takie jak GCE Ingress dla Google Cloud lub AWS Load Balancer Controller.
Jak działają reguły Ingress
Ingress definiuje reguły, które mapują przychodzące żądania zewnętrzne na określone usługi backendowe w klastrze. Reguły te zwykle określają:
- Host: Nazwę domeny (np.
www.my-app.com). - Path: Ścieżkę URL (np.
/api,/blog). - Backend Service: Usługę Kubernetes i port, do których należy przekierować ruch.
Ingress Controller analizuje te reguły dla każdego przychodzącego żądania, aby określić właściwe miejsce docelowe.
Tworzenie YAML Ingress
Podobnie jak inne zasoby Kubernetes, Ingress definiuje się za pomocą manifestu YAML. Oto podstawowa struktura przedstawiająca najważniejsze pola:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app-ingress
spec:
rules:
- host: myapp.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-web-service
port:
number: 80Prosty Ingress oparty na ścieżce
Utwórzmy zasób Ingress, który skieruje cały ruch dla ścieżki głównej (/) hosta myapp.example.com do usługi o nazwie my-web-service na porcie 80.
Przed zastosowaniem tego Ingress upewnij się, że w klastrze działa Deployment i usługa o nazwie my-web-service.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: basic-app-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: myapp.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-web-service
port:
number: 80Wdrażanie Ingress
Aby wdrożyć zasób Ingress, zapisz YAML w pliku (np. basic-ingress.yaml) i użyj polecenia kubectl apply:
kubectl apply -f basic-ingress.yaml
Stan Ingress możesz sprawdzić za pomocą kubectl get ingress. Ingress Controller skonfiguruje następnie zewnętrzny load balancer na podstawie tych reguł.
Aby przeprowadzić test, zwykle trzeba zaktualizować lokalny plik /etc/hosts (lub konfigurację DNS), tak aby wskazywał myapp.example.com na zewnętrzny adres IP kontrolera Ingress.
Przykład routingu opartego na hoście
Ingress doskonale nadaje się do hostowania wielu aplikacji pod jednym zewnętrznym adresem IP, z wykorzystaniem różnych nazw hostów. W tym przykładzie app1.example.com kieruje ruch do service-app1, a app2.example.com do service-app2.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: host-routing-ingress
spec:
rules:
- host: app1.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: service-app1
port:
number: 80
- host: app2.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: service-app2
port:
number: 80Wiele ścieżek, jeden host
Możesz także kierować różne ścieżki URL tego samego hosta do różnych usług backendowych. Jest to idealne rozwiązanie dla architektur mikrousług lub różnych sekcji jednej aplikacji.
Na przykład żądania do api.example.com/users trafiają do users-service, a żądania do api.example.com/products do products-service.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-routing-ingress
spec:
rules:
- host: api.example.com
http:
paths:
- path: /users
pathType: Prefix
backend:
service:
name: users-service
port:
number: 80
- path: /products
pathType: Prefix
backend:
service:
name: products-service
port:
number: 80Sprawdzenie celu Ingress
Jakie są najważniejsze korzyści ze stosowania Kubernetes Ingress?
Podsumowanie: Ingress do inteligentnego routingu
Świetnie! Poznałeś Kubernetes Ingress — kluczowy komponent służący do zarządzania sposobem, w jaki użytkownicy zewnętrzni korzystają z aplikacji.
- Ingress zapewnia elastyczny routing HTTP/S na podstawie nazw hostów i ścieżek URL.
- Wymaga Ingress Controller (takiego jak Nginx), który obserwuje reguły Ingress i konfiguruje routing.
- Ułatwia udostępnianie wielu usług za pośrednictwem jednego zewnętrznego adresu IP, dzięki czemu klaster jest wydajniejszy i łatwiejszy w zarządzaniu.
Opanowanie Ingress jest kluczowe dla tworzenia solidnych i dostępnych aplikacji cloud-native!
Często zadawane pytania
Czy lekcja „Ingress zapewniający dostęp zewnętrzny” jest bezpłatna?
Tak — pełny tekst „Ingress zapewniający dostęp 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 zapewniający dostęp zewnętrzny”?
Skonfiguruj Ingress do zarządzania zewnętrznym dostępem do usług, z routingiem HTTP/S i równoważeniem obciążenia. Ć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 3 z 4.
Ile czasu zajmuje lekcja „Ingress zapewniający dostęp 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
- Udostępnianie aplikacji za pomocą Services
- Typy Service: ClusterIP, NodePort, LoadBalancer
- Ingress zapewniający dostęp zewnętrzny
- DNS i wykrywanie usług