Sobes.tech
Middle

Kubernetes-də işləyən tətbiqə istifadəçilərin girişini necə təmin etmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

Əsasən bir neçə əsas üsul mövcuddur:

  1. Kubernetes Xidməti Növü: LoadBalancer. Bulud təminatçısı xarici yük balanslaşdırıcısı yaradır və bu, trafiki tətbiqinizin podlarına yönəldir.

    apiVersion: v1
    kind: Service
    metadata:
      name: my-app-service
    spec:
      selector:
        app: my-app
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
      type: LoadBalancer # Burada LoadBalancer növü göstərilir
    
  2. Kubernetes Xidməti Növü: NodePort. Hər bir klaster düyünü statik port açır və bu, trafiki xidmətə yönəldir. Tətbiqə giriş hər hansı bir düyünün IP ünvanı və bu statik port vasitəsilə həyata keçirilir.

    apiVersion: v1
    kind: Service
    metadata:
      name: my-app-service
    spec:
      selector:
        app: my-app
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
      type: NodePort # Burada NodePort növü göstərilir
    

    Bu metod daha az miqyaslıdır və çox vaxt istehsal üçün tövsiyə edilmir.

  3. Ingress. Kubernetes obyekti, klasterdəki xidmətlərə xarici girişləri idarə edir. Ingress nəzarətçisi (məsələn, Nginx Ingress, Traefik, HAProxy) tələb edir. Ingress domen adları və yollar əsasında marşrutlaşdırmanı konfiqurasiya etməyə imkan verir.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: my-app-ingress
    spec:
      rules:
        - host: myapp.mydomain.com # Domen adı
          http:
            paths:
              - path: / # Yol
                pathType: Prefix
                backend:
                  service:
                    name: my-app-service # Xidmət adı
                    port:
                      number: 80 # Xidmət portu
    
  4. Gateway API (daha müasir yanaşma). Ingress-in təkamülü, daha ifadəli və genişlənə bilən API təmin edir. GatewayClass, Gateway, HTTPRoute (və digər marşrut növləri) resurslarını əhatə edir.

    apiVersion: gateway.networking.k8s.io/v1
    kind: HTTPRoute
    metadata:
      name: my-app-route
    spec:
      parentRefs:
        - name: my-gateway # Gateway resursuna istinad
      hostnames:
        - "myapp.mydomain.com"
      rules:
        - matches:
            - path:
                type: Prefix
                value: /
          backendRefs:
            - name: my-app-service # Xidmət adı
              port: 80 # Xidmət portu
    

Yöntə seçimi, tələblərdən asılıdır:

  • Miqyaslandırma
  • Marşrutlaşdırma mürəkkəbliyi
  • Təhlükəsizlik (SSL/TLS terminləşdirmə)
  • İstifadə olunan bulud platforması
  • Mərkəzləşdirilmiş giriş idarəetmə ehtiyacı

Əksər istehsal ssenariləri üçün LoadBalancer giriş nöqtəsini təmin etmək üçün istifadə olunur (tez-tez Ingress nəzarətçisi üçün) və ya birbaşa, və Ingress (və ya Gateway API) çevik marşrutlaşdırma və giriş idarəetməsi üçün istifadə olunur.