Ինչպես ապահովել օգտվողների մուտքը Kubernetes-ում աշխատող հավելվածին?
sobes.tech AI
Պատասխան AI-ից
Կան մի քանի հիմնական մեթոդներ.
-
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 տեսակ -
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 տեսակԱյս մոտեցումը ավելի քիչ է մասշտաբային և հաճախ չի խորհուրդ տրվում արտադրական միջավայրում:
-
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 # Պորտ -
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)՝ ճկուն երթևեկության և մուտքի կառավարման համար տարբեր ծառայությունների միջև կլաստերում։