Sobes.tech
Middle

Tətbiqin işlədiyi Kubernetes konteynerinə xarici şəbəkədən necə daxil ola bilərik?

sobes.tech Süni İntellekt

AI-dan cavab

Kubernetes konteynerinə xarici şəbəkədən daxil olmaq üçün bir neçə əsas üsul mövcuddur:

  1. LoadBalancer növü Xidməti:

    • Bulud təminatçıları (AWS, GCP, Azure) xarici yük balanslaşdırıcı yaradır və bu, tətbiqinizin podlarına trafik yönəldir.
    • Xarici IP ünvanı təyin edilir.
    • Bulud mühitində ən sadə üsuldur.
  2. NodePort növü Xidməti:

    • Hər bir nodda port açır.
    • Bu port trafikini tətbiqinizin xidmətinə yönəldir.
    • Hər hansı bir nodun IP ünvanı və NodePort nömrəsi ilə daxil olmaq mümkündür.
    • LoadBalancer-dən daha az miqyaslı və təhlükəsizdir.
  3. ClusterIP növü Xidməti və Ingress birlikdə:

    • ClusterIP - yalnız klaster daxilində əlçatandır.
    • Ingress - klasterdəki xidmətlərə xarici giriş üçün API obyekti.
    • Ingress idarəedicisi (məsələn, Nginx Ingress Controller, Traefik) xarici trafiki dinləyir və uyğun ClusterIP xidmətinə yönəldir.
    • Yönləndirməni, SSL terminini, yük balanslaşdırmanı mərkəzləşdirilmiş şəkildə idarə etməyə imkan verir.
    • Elastik və miqyaslana bilən yanaşma.
  4. ExternalName növü Xidməti:

    • Xarici domen üçün pseudonim yaradır. Bu xidmət vasitəsilə konteynerə birbaşa giriş təmin etmir, lakin DNS adını klaster daxilində xarici resursa müraciət üçün istifadə etməyə imkan verir. Birbaşa konteynerə giriş üçün uyğun deyil.
  5. Pod-da NodePort/HostPort ilə birbaşa giriş:

    • Pod spesifikasiyasında hostPort göstərə bilərsiniz, bu da nodda port açır. Bu, aşağı idarəetmə və port konfliktləri səbəbindən istehsal mühitində tövsiyə edilmir.
    • Eynilə, nodePort NodePort tipli Xidmətə göstərə bilərsiniz.

Konfiqurasiya nümunələri:

  • LoadBalancer Xidməti:

    // service.yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: my-app-service
    spec:
      selector:
        app: my-app
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
      type: LoadBalancer
    
  • NodePort Xidməti:

    // service-nodeport.yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: my-app-service-np
    spec:
      selector:
        app: my-app
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
          nodePort: 30000 # optional, Kubernetes təyin edəcək əgər göstərilməzsə
      type: NodePort
    
  • Ingress (ClusterIP xidməti üçün):

    // service-clusterip.yaml (artıq mövcuddur)
    apiVersion: v1
    kind: Service
    metadata:
      name: my-app-service-ci
    spec:
      selector:
        app: my-app
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
      type: ClusterIP
    
    // ingress.yaml
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: my-app-ingress
    spec:
      rules:
        - host: myapp.example.com
          http:
            paths:
              - path: /
                pathType: Prefix
                backend:
                  service:
                    name: my-app-service-ci
                    port:
                      number: 80
    

Seçim, miqyaslama, təhlükəsizlik, yerləşdirmə mühiti və mərkəzləşdirilmiş giriş idarəetmə tələblərinə əsaslanır. Ingress istehsal sistemləri üçün üstün seçimdir.