Sobes.tech
Middle

Kuidas tagada kasutajate juurdepääs Kubernetesis töötavale rakendusele?

sobes.tech AI

Vastus AI-lt

On olemas mitu põhimeetodit:

  1. Kubernetes teenuse tüüp: LoadBalancer. Pilveteenuse pakkuja loob välise laadijaoturi, mis suunab liikluse teie rakenduse podidele.

    apiVersion: v1
    kind: Service
    metadata:
      name: my-app-service
    spec:
      selector:
        app: my-app
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
      type: LoadBalancer # Siin määratletakse LoadBalancer tüüp
    
  2. Kubernetes teenuse tüüp: NodePort. Igal klastri sõlmel on avatud statiline port, mis suunab liikluse teenusele. Rakendusele pääseb ligi iga sõlme IP-aadressi ja selle statilise pordi kaudu.

    apiVersion: v1
    kind: Service
    metadata:
      name: my-app-service
    spec:
      selector:
        app: my-app
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
      type: NodePort # Siin määratletakse NodePort tüüp
    

    See lähenemine on vähem skaleeritav ja sageli ei soovitata tootmiskeskkonnas.

  3. Ingress. Kubernetes objekt, mis haldab välisühendust teenustele klastris. Vajalik on Ingressi kontrollija (näiteks Nginx Ingress, Traefik, HAProxy). Ingress võimaldab seadistada marsruutimist domeeninimede ja teede alusel.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: my-app-ingress
    spec:
      rules:
        - host: myapp.mydomain.com # Domeeninimi
          http:
            paths:
              - path: / # Tee
                pathType: Prefix
                backend:
                  service:
                    name: my-app-service # Teenuse nimi
                    port:
                      number: 80 # Teenuse port
    
  4. Gateway API (kaasaegsem lähenemine). Ingressi evolutsioon, mis pakub väljendusrikkamat ja laiendatavat API-d juurdepääsu haldamiseks. Sisaldab GatewayClass, Gateway, HTTPRoute (ja muid marsruutide tüüpe).

    apiVersion: gateway.networking.k8s.io/v1
    kind: HTTPRoute
    metadata:
      name: my-app-route
    spec:
      parentRefs:
        - name: my-gateway # Viide Gateway ressursile
      hostnames:
        - "myapp.mydomain.com"
      rules:
        - matches:
            - path:
                type: Prefix
                value: /
          backendRefs:
            - name: my-app-service # Teenuse nimi
              port: 80 # Port
    

Valik sõltub nõuetest:

  • Mastaapsus
  • Marsruutimise keerukus
  • Turvalisus (SSL/TLS terminatsioon)
  • Kasutatav pilveplatvorm
  • Vajadus keskse halduse järele

Enamikul tootmistsenaariumidel kasutatakse LoadBalancer sisenemispunkti (tihti Ingressi kontrollija jaoks) või otse, ning Ingress (või Gateway API) paindlikuks marsruutimiseks ja juurdepääsu haldamiseks erinevatele teenustele klastris.