Sobes.tech
Middle

Πώς να διασφαλίσετε την πρόσβαση των χρηστών σε μια εφαρμογή που λειτουργεί στο Kubernetes;

sobes.tech AI

Απάντηση από AI

Υπάρχουν διάφοροι βασικοί τρόποι:

  1. Τύπος Υπηρεσίας Kubernetes: LoadBalancer. Ο πάροχος cloud δημιουργεί έναν εξωτερικό φορτιστή που κατευθύνει την κυκλοφορία στους πόδες της εφαρμογής σας.

    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. Κάθε κόμβος του cluster ανοίγει μια στατική θύρα που ανακατευθύνει την κυκλοφορία στην υπηρεσία. Η πρόσβαση στην εφαρμογή γίνεται μέσω της διεύθυνσης 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 που διαχειρίζεται την εξωτερική πρόσβαση στις υπηρεσίες στο cluster. Απαιτεί έναν ελεγκτή 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)
  • Χρησιμοποιούμενη πλατφόρμα cloud
  • Απαιτήσεις κεντρικής διαχείρισης πρόσβασης

Για τις περισσότερες παραγωγικές περιπτώσεις, χρησιμοποιούνται LoadBalancer για την παροχή σημείου εισόδου (συχνά για τον ελεγκτή Ingress) ή άμεσα, και IngressGateway API) για ευέλικτη δρομολόγηση και διαχείριση πρόσβασης σε διάφορες υπηρεσίες στο cluster.