Προγραμματισμός

Τι είναι το Istio; Το πλέγμα υπηρεσιών του Kubernetes εξήγησε

Οι αρχιτεκτονικές μικροϋπηρεσιών επιλύουν ορισμένα προβλήματα αλλά εισάγουν άλλα. Ο διαχωρισμός εφαρμογών σε ανεξάρτητες υπηρεσίες απλοποιεί την ανάπτυξη, τις ενημερώσεις και την κλιμάκωση. Ταυτόχρονα, σας δίνει πολλά περισσότερα κινούμενα μέρη για σύνδεση και ασφάλεια. Η διαχείριση όλων των υπηρεσιών δικτύου - εξισορρόπηση φορτίου, διαχείριση κυκλοφορίας, έλεγχος ταυτότητας και εξουσιοδότηση κ.λπ. - μπορεί να γίνει εξαιρετικά περίπλοκη.

Υπάρχει ένας συλλογικός όρος για αυτόν τον δικτυακό χώρο μεταξύ των υπηρεσιών στο σύμπλεγμα Kubernetes: α υπηρεσία πλέγματος. Ένα έργο Google, το Istio, έχει να σας δώσει έναν τρόπο να διαχειριστείτε το πλέγμα εξυπηρέτησης του συμπλέγματος σας προτού μετατραπεί σε bramble-snarl.

Τι είναι το πλέγμα εξυπηρέτησης;

Με οποιαδήποτε ομάδα εφαρμογών σε δίκτυο, υπάρχει μια σειρά από κοινές συμπεριφορές που τείνουν να αναδύονται γύρω τους. Ισορροπία φορτίου, για παράδειγμα: Υπάρχουν μερικές περιπτώσεις όπου μια ομάδα υπηρεσιών δικτύου δεν το χρειάζονται. Ομοίως, η δυνατότητα δοκιμής A / B διαφορετικών συνδυασμών υπηρεσιών ή η ρύθμιση ελέγχου ταυτότητας από άκρο σε άκρο σε όλες τις αλυσίδες υπηρεσιών. Αυτές οι συμπεριφορές αναφέρονται συλλογικά ως αυπηρεσία πλέγματος.

Η διαχείριση του πλέγματος υπηρεσιών δεν πρέπει να αφεθεί στις ίδιες τις υπηρεσίες. Κανένας από αυτούς δεν είναι σε καλή θέση να κάνει κάτι από πάνω προς τα κάτω και πραγματικά δεν πρέπει να είναι η δουλειά τους ούτως ή άλλως. Καλύτερα να έχουμε ένα ξεχωριστό σύστημα που να βρίσκεται ανάμεσα στις υπηρεσίες και το δίκτυο με το οποίο μιλάνε. Αυτό το σύστημα θα παρέχει δύο βασικές λειτουργίες:

  1. Κρατήστε τις ίδιες τις υπηρεσίες από το να μην ασχοληθούν με τη λιτότητα της διαχείρισης της κυκλοφορίας δικτύου - εξισορρόπηση φορτίου, δρομολόγηση, επαναλήψεις κ.λπ.
  2. Παρέχετε ένα επίπεδο αφαίρεσης για διαχειριστές, διευκολύνοντας τη λήψη αποφάσεων υψηλού επιπέδου σχετικά με την κυκλοφορία δικτύου στο σύμπλεγμα — έλεγχοι πολιτικής, μετρήσεις και καταγραφή, ανακάλυψη υπηρεσιών, ασφαλείς διυπηρεσιακές επικοινωνίες μέσω TLS κ.ο.κ.

Εξαρτήματα πλέγματος σέρβις Istio

Το Istio λειτουργεί ως πλέγμα εξυπηρέτησης παρέχοντας δύο βασικά κομμάτια αρχιτεκτονικής για το σύμπλεγμα σας, α επίπεδο δεδομένων και ένα επίπεδο ελέγχου.

Το επίπεδο δεδομένων χειρίζεται την κίνηση δικτύου μεταξύ των υπηρεσιών στο πλέγμα. Όλη αυτή η κίνηση παρεμποδίζεται και ανακατευθύνεται από ένα σύστημα διακομιστή μεσολάβησης δικτύου. Στην περίπτωση του Istio, ο διακομιστής μεσολάβησης παρέχεται από ένα έργο ανοιχτού κώδικα που ονομάζεται Envoy. Ένα δεύτερο στοιχείο στο επίπεδο δεδομένων, ο Mixer, συγκεντρώνει τηλεμετρία και στατιστικά στοιχεία από τον Envoy και τη ροή της κυκλοφορίας από υπηρεσία σε υπηρεσία.

Το επίπεδο ελέγχου, ο πυρήνας του Istio, διαχειρίζεται και ασφαλίζει το επίπεδο δεδομένων. Διαμορφώνει τόσο τους διακομιστές μεσολάβησης Envoy όσο και τους Mixers που επιβάλλουν τις πολιτικές δικτύου για τις υπηρεσίες, όπως ποιος μπορεί να μιλήσει σε ποιον και πότε. Το επίπεδο ελέγχου παρέχει επίσης ένα στρώμα αφαίρεσης μέσω προγραμματισμού για το επίπεδο δεδομένων και όλες τις συμπεριφορές του.

Τρεις άλλες υπηρεσίες Istio ολοκληρώνουν το μείγμα:

Istio πιλότος

Το Istio Pilot λαμβάνει τους κανόνες για τη συμπεριφορά της κυκλοφορίας που παρέχεται από το επίπεδο ελέγχου και τους μετατρέπει σε διαμορφώσεις που εφαρμόζει ο Envoy, με βάση τον τρόπο διαχείρισης αυτών των πραγμάτων σε τοπικό επίπεδο. Το Pilot θα επιτρέψει στο Istio να συνεργάζεται με διαφορετικά συστήματα ενορχήστρωσης εκτός από το Kubernetes, αλλά συμπεριφέρεται με συνέπεια μεταξύ τους.

Ακρόπολη Istio

Το Citadel ελέγχει τον έλεγχο ταυτότητας και ταυτότητας μεταξύ υπηρεσιών.

Istio Galley

Το Gallery λαμβάνει διαμορφώσεις που καθορίζονται από το χρήστη για το Istio και τις μετατρέπει σε έγκυρες διαμορφώσεις για τα άλλα στοιχεία του επιπέδου ελέγχου. Αυτό είναι ένα άλλο στοιχείο που επιτρέπει στο Istio να χρησιμοποιεί διαφορετικά συστήματα ενορχήστρωσης με διαφάνεια.

Δυνατότητες πλέγματος υπηρεσιών Istio

Το πρώτο και πιο πολύτιμο όφελος που παρέχει το Istio είναι η αφαίρεση - ένας τρόπος αντιμετώπισης των περιπλοκών ενός πλέγματος εξυπηρέτησης στο χέρι. Μπορείτε να κάνετε οποιεσδήποτε αλλαγές στο πλέγμα μέσω προγραμματισμού με εντολή του Istio. Οι υπηρεσίες που είναι συνδεδεμένες στο πλέγμα δεν χρειάζεται να επαναπρογραμματιστούν από μέσα για να ακολουθήσουν νέες πολιτικές δικτύου ή ποσοστώσεις και οι χώροι δικτύωσης μεταξύ τους δεν χρειάζεται να αγγίζονται άμεσα.

Επιπλέον, το Istio σάς επιτρέπει να εκτελείτε μη καταστροφικές ή προσωρινές αλλαγές στη διαμόρφωση δικτύου του συμπλέγματος. Εάν θέλετε να αναπτύξετε μια νέα διάταξη δικτύου, εν όλω ή εν μέρει, ή A / B δοκιμάστε την τρέχουσα διαμόρφωση με μια νέα, το Istio σάς επιτρέπει να το κάνετε με τρόπο από πάνω προς τα κάτω. Μπορείτε επίσης να επαναφέρετε αυτές τις αλλαγές εάν αποδειχθούν ανθυγιεινές.

Ένα τρίτο πλεονέκτημα είναι η παρατηρησιμότητα. Το Istio παρέχει λεπτομερή στατιστικά στοιχεία και αναφορές σχετικά με το τι συμβαίνει μεταξύ κοντέινερ και κόμβων συμπλέγματος. Εάν υπάρχει απρόβλεπτο ζήτημα, εάν κάτι δεν συμμορφώνεται με την πολιτική ή εάν οι αλλαγές που κάνατε αποδειχθούν αντιπαραγωγικές, θα μπορείτε να μάθετε σχετικά με αυτό σύντομα.

Το Istio παρέχει επίσης τρόπους για την εκπλήρωση κοινών προτύπων που βλέπετε σε ένα πλέγμα υπηρεσιών. Ένα παράδειγμα είναι το μοτίβο διακόπτη κυκλώματος, ένας τρόπος για να αποφευχθεί ο βομβαρδισμός μιας υπηρεσίας με αιτήματα εάν το πίσω μέρος αναφέρει πρόβλημα και δεν μπορεί να ικανοποιήσει τα αιτήματα εγκαίρως. Το Istio παρέχει ένα μοτίβο διακόπτη προστασίας κυκλώματος ως μέρος της τυπικής βιβλιοθήκης επιβολής πολιτικής.

Τέλος, ενώ το Istio συνεργάζεται πιο άμεσα και βαθιά με το Kubernetes, έχει σχεδιαστεί για να είναι ανεξάρτητο από την πλατφόρμα. Το Istio συνδέεται με τα ίδια ανοιχτά πρότυπα στα οποία βασίζεται η ίδια η Kubernetes. Το Istio μπορεί επίσης να λειτουργήσει μεμονωμένα σε μεμονωμένα συστήματα ή σε άλλα συστήματα ενορχήστρωσης όπως το Mesos και το Nomad.

Πώς να ξεκινήσετε με το Istio

Εάν έχετε ήδη εμπειρία με το Kubernetes, ένας καλός τρόπος για να μάθετε το Istio είναι να πάρετε ένα σύμπλεγμα Kubernetes—δεν ένα ήδη σε παραγωγή! —και εγκαταστήστε το Istio σε αυτό μέσω ενός χάρτη Helm. Στη συνέχεια, μπορείτε να αναπτύξετε ένα δείγμα εφαρμογής που δείχνει κοινές λειτουργίες Istio όπως έξυπνη διαχείριση της κυκλοφορίας και τηλεμετρία. Αυτό θα σας δώσει κάποια εμπειρία σε επίπεδο εδάφους με το Istio προτού το αναπτύξετε για λειτουργία πλέγματος υπηρεσίας στο σύμπλεγμα εφαρμογών σας.

Η Red Hat, η οποία έχει επενδύσει στο Istio ως μέρος του έργου OpenShift που υποστηρίζεται από το Kubernetes, προσφέρει σεμινάρια που θα σας καθοδηγήσουν σε κοινά σενάρια ανάπτυξης και διαχείρισης Istio.