Skip to main content
Version: 3.19.0

Αρχιτεκτονική του Helm

Αυτό το έγγραφο περιγράφει την αρχιτεκτονική του Helm σε υψηλό επίπεδο.

Ο Σκοπός του Helm

Το Helm είναι ένα εργαλείο για τη διαχείριση πακέτων Kubernetes που ονομάζονται charts. Το Helm μπορεί να κάνει τα εξής:

  • Δημιουργία νέων charts από την αρχή
  • Πακετάρισμα charts σε αρχεία αρχειοθέτησης chart (tgz)
  • Αλληλεπίδραση με αποθετήρια charts όπου αποθηκεύονται τα charts
  • Εγκατάσταση και απεγκατάσταση charts σε ένα υπάρχον cluster Kubernetes
  • Διαχείριση του κύκλου release των charts που έχουν εγκατασταθεί με το Helm

Στο Helm, υπάρχουν τρεις σημαντικές έννοιες:

  1. Το chart είναι ένα σύνολο πληροφοριών που απαιτούνται για τη δημιουργία μιας instance μιας εφαρμογής Kubernetes.
  2. Το config περιέχει πληροφορίες ρύθμισης παραμέτρων που μπορούν να συγχωνευθούν με ένα πακεταρισμένο chart για τη δημιουργία ενός αντικειμένου έτοιμου προς κυκλοφορία.
  3. Ένα 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.