Jak zapewnić dostęp użytkowników do aplikacji działającej w Kubernetes?
sobes.tech AI
Odpowiedź od AI
Istnieje kilka głównych metod:
-
Typ usługi Kubernetes: LoadBalancer. Dostawca chmury tworzy zewnętrzny balansujący obciążenie, który kieruje ruch do podów Twojej aplikacji.
apiVersion: v1 kind: Service metadata: name: my-app-service spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 8080 type: LoadBalancer # Tutaj określa się typ LoadBalancer -
Typ usługi Kubernetes: NodePort. Każdy węzeł klastra otwiera statyczny port, który przekierowuje ruch do usługi. Dostęp do aplikacji odbywa się przez adres IP dowolnego węzła klastra i ten statyczny port.
apiVersion: v1 kind: Service metadata: name: my-app-service spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 8080 type: NodePort # Tutaj określa się typ NodePortMetoda ta jest mniej skalowalna i często niezalecana do produkcji.
-
Ingress. Obiekt Kubernetes zarządzający dostępem zewnętrznym do usług w klastrze. Wymaga kontrolera Ingress (np. Nginx Ingress, Traefik, HAProxy). Ingress pozwala na konfigurację routingu na podstawie nazw domen i ścieżek.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-app-ingress spec: rules: - host: myapp.mydomain.com # Nazwa domeny http: paths: - path: / # Ścieżka pathType: Prefix backend: service: name: my-app-service # Nazwa usługi port: number: 80 # Port usługi -
Gateway API (bardziej nowoczesne podejście). Ewolucja Ingress, zapewnia bardziej wyraziste i rozszerzalne API do zarządzania dostępem. Zawiera zasoby GatewayClass, Gateway, HTTPRoute (i inne typy tras).
apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: my-app-route spec: parentRefs: - name: my-gateway # Odwołanie do zasobu Gateway hostnames: - "myapp.mydomain.com" rules: - matches: - path: type: Prefix value: / backendRefs: - name: my-app-service # Nazwa usługi port: 80 # Port usługi
Wybór metody zależy od wymagań:
- Skalowalności
- Złożoności routingu
- Bezpieczeństwa (SSL/TLS terminacja)
- Używanej platformy chmurowej
- Potrzeby centralnego zarządzania dostępem
Dla większości scenariuszy produkcyjnych używa się LoadBalancer do zapewnienia punktu wejścia (często dla kontrolera Ingress) lub bezpośrednio, oraz Ingress (lub Gateway API) do elastycznego routingu i zarządzania dostępem do różnych usług w klastrze.