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

Τι είναι το GitOps; Επέκταση devops σε Kubernetes και πέραν αυτής

Η τελευταία δεκαετία του προγραμματισμού έχει δει αρκετές επαναστατικές μεταμορφώσεις. Προέκυψε ένα σύμπλεγμα πρακτικών γύρω από devops, το οποίο ευθυγραμμίζει τις ομάδες ανάπτυξης και λειτουργίας σε μια κοινή διαδικασία εργασίας, και τη συνεχή ολοκλήρωση και τη συνεχή παράδοση (CI / CD), στην οποία οι devops ομάδες παρέχουν συνεχείς σταδιακές ενημερώσεις σε μια βάση κώδικα. Ένας άλλος μετασχηματισμός προήλθε από τη σχετική μετάβαση από μονολιθικές βάσεις κώδικα σε μικροϋπηρεσίες που βασίζονται σε σύννεφο και εκτελούνται σε κοντέινερ που διαχειρίζονται πλατφόρμες ενορχήστρωσης όπως το Kubernetes.

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

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

Στην ομιλία GitOps, ο κωδικός στο σύστημα ελέγχου έκδοσης είναι το μοναδική πηγή αλήθειας σχετικά με την εμφάνιση της εφαρμογής στην παραγωγή

Ορίστηκε το GitOps

Η Weaveworks είναι η εταιρεία που έχει κάνει τα περισσότερα για να διαδώσει την ιδέα του GitOps. Θα αναφερθούμε λίγο στις λεπτομέρειες του ρόλου της Weaveworks, αλλά πρώτα, ας ρίξουμε μια ματιά στον ορισμό της εταιρείας για το GitOps, ο οποίος είναι διπλός:

  • Ένα λειτουργικό μοντέλο για το Kubernetes και άλλες εγγενείς τεχνολογίες cloud, παρέχοντας ένα σύνολο βέλτιστων πρακτικών που ενοποιούν την ανάπτυξη, τη διαχείριση και την παρακολούθηση για συμπλέγματα και εφαρμογές σε κοντέινερ.
  • Μια πορεία προς μια εμπειρία προγραμματιστή για τη διαχείριση εφαρμογών. όπου οι αγωγοί CI / CD από άκρο σε άκρο και οι ροές εργασίας Git εφαρμόζονται τόσο στις λειτουργίες όσο και στην ανάπτυξη.

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

Ορισμός Git 

ο Γκιτ στο GitOps αναφέρεται στο εξαιρετικά δημοφιλές σύστημα κατανεμημένης έκδοσης που αναπτύχθηκε από τον Linus Torvalds το 2005. Το Git είναι ένα εργαλείο που επιτρέπει σε ομάδες προγραμματιστών να συνεργάζονται σε μια βάση κώδικα εφαρμογής, αποθηκεύοντας διάφορα κλαδια δεντρου κωδικού με τον οποίο παίζουν πριν συγχωνευτούν σε κώδικα παραγωγής. Μια βασική ιδέα μέσα στο Git είναι το αίτημα τραβήγματος, στην οποία ένας προγραμματιστής ζητά επίσημα κάποιο κωδικό στον οποίο εργάζονται για να ενσωματωθεί σε άλλο κλάδο στη βάση κώδικα.

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

Λάβετε υπόψη ότι, ενώ συνήθως θεωρούμε το Git ως εργαλείο προγραμματισμού υπολογιστών, είναι πραγματικά αγνωστικό ως προς το περιεχόμενο για το οποίο χρησιμοποιείτε. Το Git θα αντιμετωπίσει με ευχαρίστηση οποιοδήποτε σύνολο αρχείων κειμένου ως τη «βάση κώδικα» σας και μπορεί, για παράδειγμα, να χρησιμοποιηθεί από συγγραφείς που θέλουν να παρακολουθούν τις αλλαγές σε ένα συνεργατικό έργο. Αυτό είναι σημαντικό επειδή μεγάλο μέρος της βάσης κώδικα στον πυρήνα του GitOps αποτελείται από δηλωτικά αρχεία διαμόρφωσης και όχι εκτελέσιμο κώδικα.

Ένα τελευταίο πράγμα που πρέπει να πούμε προτού προχωρήσουμε: Παρά το γεγονός ότι το "Git" είναι εκεί εκεί, το GitOps δεν απαιτεί πραγματικά τη χρήση του Git. Καταστήματα που έχουν ήδη επενδύσει σε άλλο λογισμικό ελέγχου εκδόσεων, όπως το Subversion, μπορούν επίσης να εφαρμόσουν το GitOps. Αλλά το Git χρησιμοποιείται ευρέως με τον κόσμο των devops για την εφαρμογή CI / CD, οπότε τα περισσότερα έργα GitOps θα καταλήξουν να χρησιμοποιούν το Git.

Τι είναι η διαδικασία CI / CD;

Μια ολοκληρωμένη ματιά στο CI / CD δεν εμπίπτει στο πεδίο εφαρμογής αυτού του άρθρου - δείτε τον εξηγητή σχετικά με το θέμα - αλλά πρέπει να πούμε λίγα λόγια για το CI / CD επειδή βρίσκεται στον πυρήνα του τρόπου λειτουργίας του GitOps. ο συνεχής ενσωμάτωση Το ήμισυ του CI / CD ενεργοποιείται από αποθετήρια ελέγχου εκδόσεων, όπως το Git: Οι προγραμματιστές μπορούν να κάνουν συνεχείς μικρές βελτιώσεις στη βάση κώδικα τους, αντί να κυκλοφορούν τεράστιες, μονολιθικές νέες εκδόσεις κάθε λίγους μήνες ή χρόνια. ο συνεχής ανάπτυξη το κομμάτι γίνεται εφικτό από τα αυτοματοποιημένα συστήματα που ονομάζονται αγωγούς που δημιουργούν, δοκιμάζουν και αναπτύσσουν τον νέο κώδικα στην παραγωγή.

Και πάλι, συνεχίζουμε να μιλάμε κώδικας εδώ, και αυτό συνήθως συγκεντρώνει οράματα εκτελέσιμου κώδικα γραμμένου σε γλώσσα προγραμματισμού όπως C ή Java ή JavaScript. Αλλά στο GitOps, ο "κώδικας" που διαχειριζόμαστε αποτελείται κατά κύριο λόγο από αρχεία διαμόρφωσης. Αυτό δεν είναι μόνο μια μικρή λεπτομέρεια - είναι στο επίκεντρο του τι κάνει το GitOps. Αυτά τα αρχεία διαμόρφωσης είναι, όπως έχουμε πει, η «μοναδική πηγή αλήθειας» που περιγράφει πώς θα έπρεπε να είναι το σύστημά μας. Αυτοί είναι δηλωτικός παρά διδακτικό. Αυτό σημαίνει ότι αντί να λέει "εκκίνηση δέκα διακομιστών", το αρχείο διαμόρφωσης θα πει απλώς, "αυτό το σύστημα περιλαμβάνει δέκα διακομιστές".

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

GitOps και Kubernetes

Όπως έχουμε αναφέρει, οι έννοιες του GitOps αναπτύχθηκαν αρχικά γύρω από τη διαχείριση εφαρμογών Kubernetes. Με όσα γνωρίζουμε τώρα για το GitOps, ας επανεξετάσουμε τη συζήτηση του GaveOps της Weaveworks και να δούμε πώς περιγράφουν πώς θα κάνετε ενημερώσεις σε ένα Kubernetes που διαχειρίζεται τις αρχές του GitOps. Ακολουθεί μια σύνοψη:

  1. Ένας προγραμματιστής υποβάλλει αίτηση Git pull για μια νέα δυνατότητα.
  2. Ο κώδικας ελέγχεται και εγκρίνεται και στη συνέχεια συγχωνεύεται στην κύρια βάση κώδικα.
  3. Η συγχώνευση ενεργοποιεί τον αγωγό CI / CD, ο οποίος δοκιμάζει και αναδημιουργεί αυτόματα τον νέο κώδικα και τον αναπτύσσει σε μητρώο.
  4. Ένας πράκτορας λογισμικού ειδοποιεί την ενημέρωση, τραβά τον νέο κώδικα από το μητρώο και ενημερώνει το αρχείο config (γραμμένο σε YAML) στο αποθετήριο config.
  5. Ένας πράκτορας λογισμικού στο σύμπλεγμα Kubernetes εντοπίζει ότι το σύμπλεγμα είναι ξεπερασμένο, με βάση το αρχείο ρυθμίσεων, τραβά τις αλλαγές και αναπτύσσει τη νέα δυνατότητα.

Υφαντουργία και GitOps

Σαφώς τα βήματα 4 και 5 εδώ κάνουν μεγάλο μέρος της βαριάς ανύψωσης. Οι πράκτορες λογισμικού που συγχρονίζουν μαγικά την «πηγή της αλήθειας» στο αποθετήριο Git με την πραγματική εφαρμογή Kubernetes είναι η μαγεία που καθιστά δυνατή την εφαρμογή του GitOps. Όπως έχουμε πει, με όρους GitOps η διαδικασία δημιουργίας ζωντανών συστημάτων μοιάζει με τα ιδανικά συστήματα που περιγράφονται σε αρχεία ρυθμίσεων σύγκλιση. (Όταν το ζωντανό σύστημα και το ιδανικό σύστημα δεν είναι συγχρονισμένα, αυτό είναι απόκλιση.Στην ιδανική περίπτωση, η σύγκλιση θα μπορούσε να επιτευχθεί με αυτοματοποιημένες διαδικασίες, αλλά υπάρχουν όρια στο τι μπορεί να κάνει ο αυτοματισμός και μερικές φορές η ανθρώπινη παρέμβαση είναι απαραίτητη.

Περιγράψαμε τη διαδικασία εδώ με γενικούς όρους, αλλά στην πραγματικότητα, αν κοιτάξετε στη σελίδα της Weaveworks, οι "πράκτορες λογισμικού" που αναφέραμε αποτελούν μέρος της πλατφόρμας Weave Cloud της εταιρείας. Ο όρος "GitOps" επινοήθηκε από τον διευθύνοντα σύμβουλο της Weaveworks, Alexis Richardson, και χρησιμεύει εν μέρει για να κάνει την πλατφόρμα Weaveworks ελκυστική για προγραμματιστές που έχουν ήδη εμπλακεί στους κόσμους των devops και των CI / CD.

Ωστόσο, η Weaveworks δεν ισχυρίστηκε ποτέ το μονοπώλιο στο GitOps, το οποίο είναι περισσότερο μια φιλοσοφία και ένα σύνολο βέλτιστων πρακτικών από ένα συγκεκριμένο προϊόν. Ως το blog για CloudBees, μια εταιρεία που παρέχει λύσεις CI / CD, σημειώνει, το GitOps αντιπροσωπεύει ένα ανοιχτό, ουδέτερο προμηθευτή μοντέλο που αναπτύχθηκε ως αντίδραση στις διαχειριζόμενες ιδιόκτητες λύσεις Kubernetes που κυκλοφόρησαν από μεγάλους προμηθευτές cloud όπως Amazon, Google και Microsoft . Το CloudBees προσφέρει τις δικές του λύσεις GitOps, όπως και αρκετοί παίκτες σε αυτόν τον χώρο.

GitOps και devops

Η Atlassian, μια εταιρεία που κατασκευάζει πολλά εργαλεία για ευέλικτους προγραμματιστές, έχει μια αναλυτική ανάρτηση ιστολογίου σχετικά με την ιστορία και τον σκοπό του GitOps που αξίζει τον χρόνο σας. Κατά την άποψή τους, το GitOps αντιπροσωπεύει μια λογική επέκταση των ιδεών που ενώθηκαν ως devops. Συγκεκριμένα, το GitOps είναι μια επεξεργασία της έννοιας της υποδομής ως κώδικα, η ίδια μια ιδέα που βγήκε από το περιβάλλον devops. Το GitOps, όπως το βλέπει η Atlassian, γεφυρώνει το κρίσιμο χάσμα μεταξύ των υπαρχουσών τεχνικών devops, οι οποίες είχαν εξελιχθεί για την επίλυση προβλημάτων διαχείρισης συστήματος και των ειδικών αναγκών των κατανεμημένων εφαρμογών cloud-hosting. Η αυτοματοποιημένη σύγκλιση που προσφέρεται από διάφορους προμηθευτές cloud είναι αυτό που κάνει το GitOps ξεχωριστό.

Και ενώ το GitOps παραμένει επικεντρωμένο στο Kubernetes σήμερα, ελπίζουμε να καταστήσουμε σαφές πώς εφαρμόζεται στον πολύ ευρύτερο κόσμο των κατανεμημένων εφαρμογών που βασίζονται σε σύννεφο. Μια δημοσίευση ιστολογίου από προμηθευτή ασφαλείας ανοιχτού κώδικα WhiteSource περιγράφει τα πλεονεκτήματα του GitOps:

  • Παρατηρησιμότητα: Τα συστήματα GitOps προσφέρουν παρακολούθηση, καταγραφή, παρακολούθηση και οπτικοποίηση σε σύνθετες εφαρμογές, έτσι ώστε οι προγραμματιστές να μπορούν να δουν τι σπάζει και πού.
  • Έλεγχος έκδοσης και διαχείριση αλλαγών: Προφανώς, αυτό είναι ένα βασικό πλεονέκτημα της χρήσης ενός συστήματος ελέγχου εκδόσεων όπως το Git. Οι ελαττωματικές ενημερώσεις μπορούν εύκολα να επιστραφούν.
  • Εύκολη υιοθέτηση: Το GitOps βασίζεται στις δεξιότητες devops που έχουν ήδη αποκτήσει πολλοί προγραμματιστές.
  • Παραγωγικότητα: Το GitOps παρέχει την ώθηση στην παραγωγικότητα που έχουν αποσυρθεί και το CI / CD σε άλλους τομείς.
  • Έλεγχος: Χάρη στο Git, κάθε ενέργεια μπορεί να εντοπιστεί σε μια συγκεκριμένη δέσμευση, διευκολύνοντας τον εντοπισμό της αιτίας των σφαλμάτων.

Ακόμα κι αν δεν χρησιμοποιείτε το Kubernetes, οι πιθανότητες είναι καλές ότι το GitOps θα είναι μέρος της ροής εργασίας σας αργά ή γρήγορα.

$config[zx-auto] not found$config[zx-overlay] not found