Αρχιτεκτονική του Helm
Αυτό το έγγραφο περιγράφει την αρχιτεκτονική του Helm σε υψηλό επίπεδο.
Ο Σκοπός του Helm
Το Helm είναι ένα εργαλείο για τη διαχείριση πακέτων Kubernetes που ονομάζονται charts. Το Helm μπορεί να κάνει τα εξής:
- Δημιουργία νέων charts από την αρχή
- Πακετάρισμα charts σε αρχεία αρχειοθέτησης chart (tgz)
- Αλληλεπίδραση με αποθετήρια charts όπου αποθηκεύονται τα charts
- Εγκατάσταση και απεγκατάσταση charts σε ένα υπάρχον cluster Kubernetes
- Διαχείριση του κύκλου release των charts που έχουν εγκατασταθεί με το Helm
Στο Helm, υπάρχουν τρεις σημαντικές έννοιες:
- Το chart είναι ένα σύνολο πληροφοριών που απαιτούνται για τη δημιουργία μιας instance μιας εφαρμογής Kubernetes.
- Το config περιέχει πληροφορίες ρύθμισης παραμέτρων που μπορούν να συγχωνευθούν με ένα πακεταρισμένο chart για τη δημιουργία ενός αντικειμένου έτοιμου προς κυκλοφορία.
- Ένα release είναι μια εκτελούμενη instance ενός chart, συνδυασμένη με συγκεκριμένη config.
Στοιχεία
Το Helm είναι ένα εκτελέσιμο αρχείο που αποτελείται από δύο διακριτά μέρη:
Ο Helm Client είναι ένας client γραμμής εντολών για τους τελικούς χρήστες. Ο client είναι υπεύθυνος για τα εξής:
- Τοπική ανάπτυξη charts
- Διαχείριση αποθετηρίων
- Διαχείριση releases
- Διασύνδεση με τη βιβλιοθήκη Helm
- Αποστολή charts για εγκατάσταση
- Αίτηση αναβάθμισης ή απεγκατάστασης υπαρχόντων releases
Η Βιβλιοθήκη Helm παρέχει τη λογική για την εκτέλεση όλων των λειτουργιών του Helm. Διασυνδέεται με τον Kubernetes API server και παρέχει τις ακόλουθες δυνατότητες:
- Συνδυασμός ενός chart και μιας ρύθμισης παραμέτρων για τη δημιουργία ενός release
- Εγκατάσταση charts στο Kubernetes και παροχή του αντίστοιχου αντικειμένου release
- Αναβάθμιση και απεγκατάσταση charts μέσω αλληλεπίδρασης με το Kubernetes
Η αυτόνομη βιβλιοθήκη Helm ενθυλακώνει τη λογική του Helm ώστε να μπορεί να αξιοποιηθεί από διαφορετικούς clients.
Υλοποίηση
Ο Helm client και η βιβλιοθήκη είναι γραμμένοι στη γλώσσα προγραμματισμού Go.
Η βιβλιοθήκη χρησιμοποιεί τη client library του Kubernetes για την επικοινωνία με το Kubernetes. Επί του παρόντος, αυτή η βιβλιοθήκη χρησιμοποιεί REST+JSON. Αποθηκεύει πληροφορίες σε Secrets μέσα στο Kubernetes. Δεν χρειάζεται τη δική της βάση δεδομένων.
Τα αρχεία ρύθμισης παραμέτρων, όπου είναι δυνατόν, γράφονται σε YAML.