Sobes.tech
Middle

Ինչպես ապահովել օգտվողների մուտքը Kubernetes-ում աշխատող հավելվածին?

sobes.tech AI

Պատասխան AI-ից

Կան մի քանի հիմնական մեթոդներ.

  1. 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 տեսակ
    
  2. 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 տեսակ
    

    Այս մոտեցումը ավելի քիչ է մասշտաբային և հաճախ չի խորհուրդ տրվում արտադրական միջավայրում:

  3. 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 # Պորտ
    
  4. 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)՝ ճկուն երթևեկության և մուտքի կառավարման համար տարբեր ծառայությունների միջև կլաստերում։