Μετάβαση από Helm v2 σε v3
Αυτός ο οδηγός δείχνει πώς να μεταβείτε από το Helm v2 στο v3. Το Helm v2 πρέπει να είναι εγκατεστημένο και να διαχειρίζεται releases σε ένα ή περισσότερα clusters.
Επισκόπηση Αλλαγών στο Helm 3
Η πλήρης λίστα αλλαγών από το Helm 2 στο 3 είναι τεκμηριωμένη στην ενότητα FAQ. Ακολουθεί μια σύνοψη κάποιων από αυτές τις αλλαγές που ο χρήστης πρέπει να γνωρίζει πριν και κατά τη μετάβαση:
- Κατάργηση του Tiller:
- Αντικατάσταση της αρχιτεκτονικής client/server με αρχιτεκτονική client/library
(μόνο το
helmbinary) - Η ασφάλεια βασίζεται πλέον σε κάθε χρήστη ξεχωριστά (ανατίθεται στην ασφάλεια του Kubernetes cluster ανά χρήστη)
- Τα releases αποθηκεύονται πλέον ως secrets εντός του cluster και τα μεταδεδομένα του release object έχουν αλλάξει
- Τα releases παραμένουν με βάση το namespace του release και όχι πλέον στο namespace του Tiller
- Αντικατάσταση της αρχιτεκτονικής client/server με αρχιτεκτονική client/library
(μόνο το
- Ενημέρωση του chart repository:
- Η εντολή
helm searchυποστηρίζει πλέον αναζητήσεις τόσο σε τοπικά repositories όσο και ερωτήματα αναζήτησης στο Artifact Hub
- Η εντολή
- Αναβάθμιση του chart apiVersion σε "v2" για τις ακόλουθες αλλαγές προδιαγραφών:
- Οι δυναμικά συνδεδεμένες εξαρτήσεις chart μεταφέρθηκαν στο
Chart.yaml(τοrequirements.yamlκαταργήθηκε και requirements --> dependencies) - Τα library charts (helper/common charts) μπορούν πλέον να προστεθούν ως δυναμικά συνδεδεμένες εξαρτήσεις chart
- Τα charts έχουν ένα πεδίο μεταδεδομένων
typeγια να ορίσουν αν το chart είναι τύπουapplicationήlibrary. Η προεπιλογή είναι application, που σημαίνει ότι είναι δυνατή η απεικόνιση (render) και η εγκατάστασή του - Τα Helm 2 charts (apiVersion=v1) εξακολουθούν να είναι εγκαταστάσιμα
- Οι δυναμικά συνδεδεμένες εξαρτήσεις chart μεταφέρθηκαν στο
- Προσθήκη προδιαγραφής καταλόγων XDG:
- Το Helm home καταργήθηκε και αντικαταστάθηκε με την προδιαγραφή καταλόγων XDG για την αποθήκευση αρχείων ρυθμίσεων
- Δεν χρειάζεται πλέον αρχικοποίηση του Helm
- Οι εντολές
helm initκαιhelm homeκαταργήθηκαν
- Επιπλέον αλλαγές:
- Η εγκατάσταση/ρύθμιση του Helm απλοποιήθηκε:
- Μόνο το Helm client (helm binary) (χωρίς Tiller)
- Λειτουργεί αυτόνομα χωρίς ρύθμιση
- Τα
localήstablerepositories δεν ρυθμίζονται πλέον από προεπιλογή - Το hook
crd-installκαταργήθηκε και αντικαταστάθηκε με τον κατάλογοcrdsστο chart, όπου όλα τα CRDs που ορίζονται σε αυτόν θα εγκαθίστανται πριν από οποιαδήποτε απεικόνιση του chart - Η τιμή annotation
test-failureτου hook καταργήθηκε, και ηtest-successέχει καταργηθεί. Χρησιμοποιήστε τοtestαντί αυτού - Εντολές που καταργήθηκαν/αντικαταστάθηκαν/προστέθηκαν:
- delete --> uninstall : αφαιρεί όλο το ιστορικό release από προεπιλογή
(προηγουμένως απαιτούσε
--purge) - fetch --> pull
- home (καταργήθηκε)
- init (καταργήθηκε)
- install: απαιτεί όνομα release ή το όρισμα
--generate-name - inspect --> show
- reset (καταργήθηκε)
- serve (καταργήθηκε)
- template: το όρισμα
-x/--executeμετονομάστηκε σε-s/--show-only - upgrade: Προστέθηκε το όρισμα
--history-maxπου περιορίζει τον μέγιστο αριθμό αναθεωρήσεων που αποθηκεύονται ανά release (0 για χωρίς όριο)
- delete --> uninstall : αφαιρεί όλο το ιστορικό release από προεπιλογή
(προηγουμένως απαιτούσε
- Η βιβλιοθήκη Go του Helm 3 έχει υποστεί πολλές αλλαγές και είναι ασύμβατη με τη βιβλιοθήκη του Helm 2
- Τα release binaries φιλοξενούνται πλέον στο
get.helm.sh
- Η εγκατάσταση/ρύθμιση του Helm απλοποιήθηκε:
Περιπτώσεις Χρήσης Μετάβασης
Οι περιπτώσεις χρήσης για τη μετάβαση είναι οι εξής:
-
Το Helm v2 και v3 διαχειρίζονται το ίδιο cluster:
- Αυτή η περίπτωση χρήσης συνιστάται μόνο αν σκοπεύετε να αποσύρετε σταδιακά το Helm v2 και δεν απαιτείτε το v3 να διαχειρίζεται releases που έχουν εγκατασταθεί με το v2. Όλα τα νέα releases πρέπει να εγκαθίστανται με το v3 και τα υπάρχοντα releases που εγκαταστάθηκαν με το v2 πρέπει να ενημερώνονται/αφαιρούνται μόνο με το v2
- Το Helm v2 και v3 μπορούν να διαχειριστούν το ίδιο cluster χωρίς προβλήματα. Οι εκδόσεις του Helm μπορούν να εγκατασταθούν στο ίδιο ή σε διαφορετικά συστήματα
- Αν εγκαθιστάτε το Helm v3 στο ίδιο σύστημα, πρέπει να εκτελέσετε ένα επιπλέον βήμα για να διασφαλίσετε ότι και οι δύο εκδόσεις client μπορούν να συνυπάρχουν μέχρι να είστε έτοιμοι να αφαιρέσετε τον Helm v2 client. Μετονομάστε ή τοποθετήστε το Helm v3 binary σε διαφορετικό φάκελο για να αποφύγετε συγκρούσεις
- Κατά τα άλλα δεν υπάρχουν συγκρούσεις μεταξύ των δύο εκδόσεων λόγω των
ακόλουθων διακρίσεων:
- Η αποθήκευση των release (ιστορικού) για τα v2 και v3 είναι ανεξάρτητη.
Οι αλλαγές περιλαμβάνουν τον πόρο Kubernetes για την αποθήκευση και τα
μεταδεδομένα του release object που περιέχονται στον πόρο. Τα releases θα
βρίσκονται επίσης σε namespace ανά χρήστη αντί να χρησιμοποιούν το namespace
του Tiller (για παράδειγμα, το προεπιλεγμένο namespace του Tiller στο v2 είναι
το kube-system). Το v2 χρησιμοποιεί "ConfigMaps" ή "Secrets" στο namespace
του Tiller και ιδιοκτησία
TILLER. Το v3 χρησιμοποιεί "Secrets" στο namespace του χρήστη και ιδιοκτησίαhelm. Τα releases είναι αυξητικά (incremental) τόσο στο v2 όσο και στο v3 - Το μόνο πιθανό πρόβλημα θα ήταν αν ορίζονται πόροι Kubernetes εμβέλειας
cluster (π.χ.
clusterroles.rbac) σε ένα chart. Η εγκατάσταση με το v3 θα αποτύγχανε ακόμα κι αν είναι μοναδικό στο namespace, καθώς οι πόροι θα συγκρούονταν - Η ρύθμιση του v3 δεν χρησιμοποιεί πλέον το
$HELM_HOMEκαι χρησιμοποιεί αντ' αυτού την προδιαγραφή καταλόγων XDG. Δημιουργείται επίσης δυναμικά όταν χρειάζεται. Επομένως είναι ανεξάρτητη από τη ρύθμιση του v2. Αυτό ισχύει μόνο όταν και οι δύο εκδόσεις είναι εγκατεστημένες στο ίδιο σύστημα
- Η αποθήκευση των release (ιστορικού) για τα v2 και v3 είναι ανεξάρτητη.
Οι αλλαγές περιλαμβάνουν τον πόρο Kubernetes για την αποθήκευση και τα
μεταδεδομένα του release object που περιέχονται στον πόρο. Τα releases θα
βρίσκονται επίσης σε namespace ανά χρήστη αντί να χρησιμοποιούν το namespace
του Tiller (για παράδειγμα, το προεπιλεγμένο namespace του Tiller στο v2 είναι
το kube-system). Το v2 χρησιμοποιεί "ConfigMaps" ή "Secrets" στο namespace
του Tiller και ιδιοκτησία
-
Μετάβαση από Helm v2 σε Helm v3:
- Αυτή η περίπτωση χρήσης ισχύει όταν θέλετε το Helm v3 να διαχειρίζεται υπάρχοντα releases του Helm v2
- Πρέπει να σημειωθεί ότι ένας Helm v2 client:
- μπορεί να διαχειριστεί 1 έως πολλά Kubernetes clusters
- μπορεί να συνδεθεί σε 1 έως πολλές instances του Tiller για ένα cluster
- Αυτό σημαίνει ότι πρέπει να το λάβετε υπόψη κατά τη μετάβαση, καθώς τα releases εγκαθίστανται σε clusters από τον Tiller και το namespace του. Επομένως πρέπει να γνωρίζετε ότι η μετάβαση γίνεται για κάθε cluster και κάθε instance του Tiller που διαχειρίζεται η instance του Helm v2 client
- Η συνιστώμενη διαδρομή μετάβασης δεδομένων είναι η ακόλουθη:
- Δημιουργία αντιγράφου ασφαλείας των δεδομένων v2
- Μετάβαση της ρύθμισης του Helm v2
- Μετάβαση των releases του Helm v2
- Όταν είστε βέβαιοι ότι το Helm v3 διαχειρίζεται όλα τα δεδομένα του Helm v2 (για όλα τα clusters και τις instances του Tiller της instance του Helm v2 client) όπως αναμένεται, τότε καθαρίστε τα δεδομένα του Helm v2
- Η διαδικασία μετάβασης είναι αυτοματοποιημένη από το plugin 2to3 του Helm v3