Как да осигурим достъп на потребителите до приложение, работещо в Kubernetes?
sobes.tech AI
Отговор от AI
Има няколко основни начина:
-
Тип услуга Kubernetes: LoadBalancer. Облачният доставчик създава външен балансировач на натоварването, който насочва трафика към вашите подове.
apiVersion: v1 kind: Service metadata: name: my-app-service spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 8080 type: LoadBalancer # Тук се посочва типът LoadBalancer -
Тип услуга Kubernetes: NodePort. Всеки възел на клъстера отваря статичен порт, който пренасочва трафика към услугата. Достъпът до приложението става чрез IP адреса на всеки възел и този статичен порт.
apiVersion: v1 kind: Service metadata: name: my-app-service spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 8080 type: NodePort # Тук се посочва типът NodePortТова е по-малко мащабируемо и често не се препоръчва за продукционна среда.
-
Ingress. Обект на Kubernetes, който управлява външния достъп до услугите в клъстера. Изисква наличието на Ingress контролер (например Nginx Ingress, Traefik, HAProxy). Ingress позволява настройка на маршрутизация въз основа на домейни и пътища.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-app-ingress spec: rules: - host: myapp.mydomain.com # Домейн име http: paths: - path: / # Път pathType: Prefix backend: service: name: my-app-service # Име на услугата port: number: 80 # Порт на услугата -
Gateway API (по-съвременен подход). Еволюция на Ingress, предоставя по-изразително и разширяемо API за управление на достъпа. Включва ресурси GatewayClass, Gateway, HTTPRoute (и други типове маршрути).
apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: my-app-route spec: parentRefs: - name: my-gateway # Връзка към ресурс Gateway hostnames: - "myapp.mydomain.com" rules: - matches: - path: type: Prefix value: / backendRefs: - name: my-app-service # Име на услугата port: 80 # Порт на услугата
Изборът на метод зависи от изискванията:
- Мащабируемост
- Сложност на маршрутизацията
- Сигурност (SSL/TLS терминиране)
- Използваната облачна платформа
- Необходимост от централизирано управление на достъпа
За повечето продукционни сценарии се използва LoadBalancer за предоставяне на входна точка (често за Ingress контролер) или директно, и Ingress (или Gateway API) за гъвкава маршрутизация и управление на достъпа до различни услуги в клъстера.