Sobes.tech
Middle

Ako zabezpečiť prístup používateľov k aplikácii bežiacej v Kubernetes?

sobes.tech AI

Odpoveď od AI

Existuje niekoľko hlavných spôsobov:

  1. Typ služby Kubernetes: LoadBalancer. Cloudový poskytovateľ vytvorí externý load balancer, ktorý smeruje prevádzku na vaše pody.

    apiVersion: v1
    kind: Service
    metadata:
      name: my-app-service
    spec:
      selector:
        app: my-app
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
      type: LoadBalancer # Tu sa uvádza typ LoadBalancer
    
  2. Typ služby Kubernetes: NodePort. Každý uzol klastru otvorí statický port, ktorý presmerováva prevádzku na službu. Prístup k aplikácii je cez IP adresu ktoréhokoľvek uzla a tento statický port.

    apiVersion: v1
    kind: Service
    metadata:
      name: my-app-service
    spec:
      selector:
        app: my-app
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
      type: NodePort # Tu sa uvádza typ NodePort
    

    Tento prístup je menej škálovateľný a často sa neodporúča pre produkčné prostredie.

  3. Ingress. Objekt Kubernetes, ktorý riadi externý prístup ku službám v klastre. Vyžaduje prítomnosť Ingress kontroléra (napríklad Nginx Ingress, Traefik, HAProxy). Ingress umožňuje nastaviť smerovanie na základe doménových mien a ciest.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: my-app-ingress
    spec:
      rules:
        - host: myapp.mydomain.com # Doménové meno
          http:
            paths:
              - path: / # Cesta
                pathType: Prefix
                backend:
                  service:
                    name: my-app-service # Názov služby
                    port:
                      number: 80 # Port služby
    
  4. Gateway API (modernejší prístup). Evolúcia Ingress, ktorá poskytuje výstižnejšie a rozšíriteľnejšie API na správu prístupu. Zahŕňa zdroje GatewayClass, Gateway, HTTPRoute (a ďalšie typy routov).

    apiVersion: gateway.networking.k8s.io/v1
    kind: HTTPRoute
    metadata:
      name: my-app-route
    spec:
      parentRefs:
        - name: my-gateway # Odkaz na zdroj Gateway
      hostnames:
        - "myapp.mydomain.com"
      rules:
        - matches:
            - path:
                type: Prefix
                value: /
          backendRefs:
            - name: my-app-service # Názov služby
              port: 80 # Port služby
    

Výber metódy závisí od požiadaviek:

  • Škálovateľnosti
  • Zložitosti smerovania
  • Bezpečnosti (SSL/TLS terminácia)
  • Používanej cloud platformy
  • Nutnosti centralizovaného riadenia prístupu

Pre väčšinu produkčných scenárov sa používajú LoadBalancer na poskytnutie vstupného bodu (často pre Ingress kontrolér) alebo priamo, a Ingress (alebo Gateway API) pre flexibilné smerovanie a správu prístupu k rôznym službám v klastre.