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

5 τρόποι για να κάνετε χωρίς διακομιστή στο Kubernetes

Καλέστε το "χωρίς διακομιστή", καλέστε το "υπολογιστική βάσει συμβάντων" ή καλέστε το "λειτουργεί ως υπηρεσία (FaaS)", η ιδέα είναι η ίδια: εκχωρήστε δυναμικά πόρους για να εκτελέσετε μεμονωμένες συναρτήσεις, ουσιαστικά μικροϋπηρεσίες, που επικαλούνται ως απάντηση σε εκδηλώσεις. Οι πλατφόρμες υπολογιστών χωρίς διακομιστή επιτρέπουν στους προγραμματιστές εφαρμογών να επικεντρώνονται στην εφαρμογή, όχι στην υποκείμενη υποδομή και σε όλες τις λεπτομέρειες διαχείρισης.

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

Τα περισσότερα από τα πλαίσια χωρίς διακομιστές για το Kubernetes έχουν κοινά αυτά τα χαρακτηριστικά:

  • Εφαρμόζεται σε οποιοδήποτε περιβάλλον που υποστηρίζει Kubernetes, τοπικά ή απομακρυσμένα, συμπεριλαμβανομένων περιβαλλόντων όπως το OpenShift.
  • Υποστηρίζει κώδικα εκτέλεσης γραμμένο σε οποιαδήποτε γλώσσα, με κάποιους κοινούς χρόνους εκτέλεσης προσυσκευασμένους με το πλαίσιο.
  • Ενεργοποιεί την εκτέλεση κώδικα από πολλά είδη συμβάντων - ένα τελικό σημείο HTTP, ένα μήνυμα ουράς ή κάποιο άλλο άγκιστρο.

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

Εδώ είναι πέντε από τα μεγάλα έργα που φέρνουν λειτουργικότητα χωρίς διακομιστές στο Kubernetes.

Σχάση

Η Fission δημιουργείται και συντηρείται από τη διαχειριζόμενη εταιρεία Kubernetes Platform 9. Ο κύριος ισχυρισμός της για τη φήμη είναι ότι σας επιτρέπει να δημιουργήσετε εφαρμογές FaaS χωρίς να χρειαστεί να δημιουργήσετε κοντέινερ, απλώς παρέχοντας αρχεία ορισμού.

Το Fission μπορεί να εγκατασταθεί με ή χωρίς ένα διάγραμμα Helm και μπορεί να εγκατασταθεί σε οποιαδήποτε από τις δύο εκδόσεις. Υπάρχει μια πλήρης έκδοση με ουρά μηνυμάτων και υποστήριξη InfluxDB για καταγραφή και μια απογυμνωμένη έκδοση με βασική λειτουργία λειτουργίας. Το πρώτο έχει σχεδιαστεί για ανάπτυξη παραγωγής και το δεύτερο για να βραχεί τα πόδια σας.

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

Η Fission παρέχει επίσης «ροές εργασίας». Εγκατεστημένο από το διάγραμμα Helm, οι ροές εργασίας μεταβιβάζουν την έξοδο μιας λειτουργίας σε μια άλλη λειτουργία. Οι συναρτήσεις δεν χρειάζεται καν να είναι στην ίδια γλώσσα. Σημειώστε ότι αυτό επιτυγχάνεται με κόστος απόδοσης, καθώς η έξοδος κάθε συνάρτησης αποδίδεται σε μορφή ανταλλαγής, αν και το σύστημα ροής εργασίας υποστηρίζει πολλούς κοινούς πρωτόγονους δυαδικούς τύπους για να κρατήσει τα γενικά κάτω (π.χ., ακέραιος αριθμός ή γενική ροή byte).

Ένα από τα μειονεκτήματα που σχετίζεται αρχικά με το FaaS ήταν ότι την πρώτη φορά που κλήθηκε μια συνάρτηση, υπήρχε μια αισθητή καθυστέρηση για την εκκίνηση του κοντέινερ που σχετίζεται με αυτό. Η σχάση διατηρεί τα δοχεία προθερμασμένα για ελαχιστοποίηση του λανθάνοντος χρόνου την πρώτη φορά που εκτελείται μια λειτουργία.

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

Το έργο Fission είναι διαθέσιμο με την άκρως φιλελεύθερη άδεια Apache, οπότε μπορεί να επεξεργαστεί ελεύθερα όπως απαιτείται.

Γνωστικό

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

Εκτός από το Kubernetes, το Knative απαιτεί σύστημα δρομολόγησης ή πλέγμα υπηρεσιών όπως το Istio, αλλά και άλλες επιλογές όπως το Ambassador και το Gloo μπορούν να χρησιμοποιηθούν επίσης. Αυτό σημαίνει λίγο περισσότερη δουλειά, αλλά το έργο διαθέτει λεπτομερείς οδηγούς για τη χρήση κάθε επιλογής σε μια ποικιλία υπηρεσιών cloud και περιβάλλοντα Kubernetes, συμπεριλαμβανομένης της βανίλιας Kubernetes.

Το Knative λειτουργεί κυρίως με τη μόχλευση ή την επέκταση των υπαρχόντων εργαλείων και λειτουργιών του Kubernetes. Οι εφαρμογές ή οι λειτουργίες διαμορφώνονται μέσω αρχείων YAML και παραδίδονται ως κοντέινερ Docker που δημιουργείτε. Η προσθήκη, η τροποποίηση ή η διαγραφή ορισμών γίνεται μέσω του kubectl εφαρμογή γραμμής εντολών. Για μετρήσεις σε εφαρμογές Knative, χρησιμοποιήστε το Grafana. Η κλιμάκωση μπορεί να γίνει με το αυτόματο κλιμάκιο της Knative ή με οποιοδήποτε άλλο scaler συμβατό με Kubernetes, συμπεριλαμβανομένου ενός προσαρμοσμένου.

Το Knative βρίσκεται σε μεγάλη ανάπτυξη και πολλά από τα ειδικά εργαλεία του βρίσκονται ακόμη σε δύσκολη κατάσταση. Αυτά περιλαμβάνουνknctl, ένα CLI ειδικά για το Knative, το οποίο σας απαλλάσσει από την ταλαιπωρία της χρήσης άλλων εργαλείων του Kubernetes για τη διαχείριση του Knative εάν θέλετε απλώς να εστιάσετε στο Knative. και κο, ένα εργαλείο για τη δημιουργία εφαρμογών Go στο Knative, εξαλείφοντας το βήμα κατασκευής κοντέινερ.

Ανυπόφορος

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

Οι πιο συνηθισμένοι χρόνοι εκτέλεσης γλώσσας συνοδεύονται από την πλατφόρμα: .NET, Java, Python, Node.js, PHP, Ruby, Go, ακόμη και τη νέα γλώσσα Ballerina για ανάπτυξη εγγενών cloud. Οι ώρες εκτέλεσης είναι απλώς εικόνες Docker, αν και το Kubeless έχει μια συγκεκριμένη μορφή συσκευασίας για τη χρήση του Dockerfiles για τη δημιουργία προσαρμοσμένων χρόνων εκτέλεσης.

Ένα άλλο εύχρηστο χαρακτηριστικό του Kubeless είναι το CLI του, το οποίο είναι πανομοιότυπο με το AWS Lambda CLI. Αυτό είναι εξαιρετικά βολικό εάν θέλετε να κάνετε μετεγκατάσταση από το AWS Lambda, αλλά θέλετε να διατηρήσετε ορισμένα από τα υπάρχοντα scripting διαχείρισης ή απλά δεν χρειάζεται να μάθετε ένα εντελώς νέο σύνολο εντολών.

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

OpenFaaS

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

Το OpenFaaS μπορεί να αναπτυχθεί είτε στο Kubernetes είτε σε ένα σύμπλεγμα Docker Swarm (για τοπικές δοκιμές ή χρήση χαμηλής ζήτησης). Χρησιμοποιείτε το OpenFaaS CLI για να δημιουργήσετε, να πιέσετε και να αναπτύξετε εικόνες Docker στο σύμπλεγμα για να εκτελέσετε λειτουργίες. Τα υπάρχοντα πρότυπα παρέχουν προκατασκευασμένους τρόπους ανάπτυξης εφαρμογών που είναι γραμμένες σε Go, Python, Node.js, .NET, Ruby, Java ή PHP 7, αν και μπορείτε πάντα να μεταφέρετε τα δικά σας. Το OpenFaaS CLI σάς παρέχει επίσης τρόπους για τη διαχείριση των μυστικών στο σύμπλεγμα, ενώ το ενσωματωμένο περιβάλλον εργασίας σας επιτρέπει να δημιουργείτε νέες λειτουργίες και να τις διαχειρίζεστε.

Μια άλλη έκδοση των OpenFaaS, OpenFaaS Cloud, επανασυσκευάζει το OpenFaaS με δυνατότητες για πολλούς προγραμματιστές, συμπεριλαμβανομένης της ενσωμάτωσης με το Git (συμπεριλαμβανομένου του GitHub και των εκδόσεων του GitLab που φιλοξενούνται αυτόματα), CI / CD, διαχείριση μυστικών, HTTPS και τη δυνατότητα τροφοδοσίας εκδηλώσεων σε Slack και άλλα νεροχύτες. Το OpenFaas Cloud διατίθεται ως δωρεάν προϊόν ανοιχτού κώδικα και σε μια φιλοξενούμενη έκδοση που είναι προς το παρόν δωρεάν χρήση.

OpenWhisk

Το Apache OpenWhisk χρεώνεται ως μια γενική πλατφόρμα χωρίς διακομιστές. Το Kubernetes είναι μόνο μία από τις πολλές διαθέσιμες επιλογές για την εκτέλεση κοντέινερ στο OpenWhisk, καθώς το OpenWhisk υποστηρίζει επίσης Mesos και Docker Compose. Παρ 'όλα αυτά, το Kubernetes προτιμάται λόγω των εργαλείων του για ανάπτυξη εφαρμογών, ειδικά γραφημάτων Helm. Το IBM Cloud Functions βασίζεται στο έργο OpenWhisk, οπότε μπορεί να λειτουργήσει και με εντολές OpenWhisk CLI.

Σε αντίθεση με τα περισσότερα από τα άλλα πλαίσια Kubernetes χωρίς διακομιστές, το OpenWhisk είναι γραμμένο στη γλώσσα Scala, όχι Go (στην οποία γράφονται και οι δύο Kubernetes και Docker). Αυτό είναι πιθανό να είναι πρόβλημα μόνο εάν θέλετε να κάνετε hack στο OpenWhisk και έχετε μόνο εμπειρία με το Go.

Οι περισσότερες από τις δημοφιλείς επιλογές χρόνου εκτέλεσης της εφαρμογής διατίθενται σε συσκευασία με OpenWhisk: Java, Node.js, Python, Ruby, PHP και .NET. Επιπλέον, περιλαμβάνονται πολλές εσωτερικές και πρωτοποριακές επιλογές: Scala, Ballerina, Swift και Rust. Οι ώρες εκτέλεσης είναι μόνο κοντέινερ Docker, επομένως είναι εύκολο να παρέχετε το δικό σας.

Μια βολική δυνατότητα ανάπτυξης του OpenWhisk είναι "ενέργειες zip". Σημειώστε ένα αρχείο .zip κώδικα και βοηθητικών αρχείων στο OpenWhisk χρησιμοποιώντας το αρχείο δήλωσης για ένα πακέτο κώδικα και το OpenWhisk θα δημιουργήσει μια ενέργεια από αυτό. Το OpenWhisk CLI περιλαμβάνει επίσης εργαλεία για τη μετατροπή ενός δέντρου καταλόγου κώδικα σε ένα τέτοιο αρχείο. Και ένας κατάλογος πακέτων υπηρεσιών διευκολύνει τη σύνδεση της εφαρμογής σας σε κοινές προσφορές τρίτων όπως GitHub, Slack, Apache Kafka ή Jira.