Skip to main content
Version: 3.19.0

Μετάβαση από Helm v2 σε v3

Αυτός ο οδηγός δείχνει πώς να μεταβείτε από το Helm v2 στο v3. Το Helm v2 πρέπει να είναι εγκατεστημένο και να διαχειρίζεται releases σε ένα ή περισσότερα clusters.

Επισκόπηση Αλλαγών στο Helm 3

Η πλήρης λίστα αλλαγών από το Helm 2 στο 3 είναι τεκμηριωμένη στην ενότητα FAQ. Ακολουθεί μια σύνοψη κάποιων από αυτές τις αλλαγές που ο χρήστης πρέπει να γνωρίζει πριν και κατά τη μετάβαση:

  1. Κατάργηση του Tiller:
    • Αντικατάσταση της αρχιτεκτονικής client/server με αρχιτεκτονική client/library (μόνο το helm binary)
    • Η ασφάλεια βασίζεται πλέον σε κάθε χρήστη ξεχωριστά (ανατίθεται στην ασφάλεια του Kubernetes cluster ανά χρήστη)
    • Τα releases αποθηκεύονται πλέον ως secrets εντός του cluster και τα μεταδεδομένα του release object έχουν αλλάξει
    • Τα releases παραμένουν με βάση το namespace του release και όχι πλέον στο namespace του Tiller
  2. Ενημέρωση του chart repository:
    • Η εντολή helm search υποστηρίζει πλέον αναζητήσεις τόσο σε τοπικά repositories όσο και ερωτήματα αναζήτησης στο Artifact Hub
  3. Αναβάθμιση του 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) εξακολουθούν να είναι εγκαταστάσιμα
  4. Προσθήκη προδιαγραφής καταλόγων XDG:
    • Το Helm home καταργήθηκε και αντικαταστάθηκε με την προδιαγραφή καταλόγων XDG για την αποθήκευση αρχείων ρυθμίσεων
    • Δεν χρειάζεται πλέον αρχικοποίηση του Helm
    • Οι εντολές helm init και helm home καταργήθηκαν
  5. Επιπλέον αλλαγές:
    • Η εγκατάσταση/ρύθμιση του Helm απλοποιήθηκε:
      • Μόνο το Helm client (helm binary) (χωρίς Tiller)
      • Λειτουργεί αυτόνομα χωρίς ρύθμιση
    • Τα local ή stable repositories δεν ρυθμίζονται πλέον από προεπιλογή
    • Το 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 για χωρίς όριο)
    • Η βιβλιοθήκη Go του Helm 3 έχει υποστεί πολλές αλλαγές και είναι ασύμβατη με τη βιβλιοθήκη του Helm 2
    • Τα release binaries φιλοξενούνται πλέον στο get.helm.sh

Περιπτώσεις Χρήσης Μετάβασης

Οι περιπτώσεις χρήσης για τη μετάβαση είναι οι εξής:

  1. Το 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. Αυτό ισχύει μόνο όταν και οι δύο εκδόσεις είναι εγκατεστημένες στο ίδιο σύστημα
  2. Μετάβαση από 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
    • Η συνιστώμενη διαδρομή μετάβασης δεδομένων είναι η ακόλουθη:
      1. Δημιουργία αντιγράφου ασφαλείας των δεδομένων v2
      2. Μετάβαση της ρύθμισης του Helm v2
      3. Μετάβαση των releases του Helm v2
      4. Όταν είστε βέβαιοι ότι το Helm v3 διαχειρίζεται όλα τα δεδομένα του Helm v2 (για όλα τα clusters και τις instances του Tiller της instance του Helm v2 client) όπως αναμένεται, τότε καθαρίστε τα δεδομένα του Helm v2
    • Η διαδικασία μετάβασης είναι αυτοματοποιημένη από το plugin 2to3 του Helm v3

Αναφορές

  • Plugin 2to3 του Helm v3
  • Άρθρο στο blog που εξηγεί τη χρήση του plugin 2to3 με παραδείγματα