Δοκιμές Charts
Ένα chart περιέχει πολλούς πόρους Kubernetes και components που λειτουργούν μαζί. Ως δημιουργός chart, μπορεί να θέλετε να γράψετε κάποιες δοκιμές που επαληθεύουν ότι το chart σας λειτουργεί όπως αναμένεται κατά την εγκατάσταση. Αυτές οι δοκιμές βοηθούν επίσης τους χρήστες του chart να κατανοήσουν τι υποτίθεται ότι κάνει το chart σας.
Μια δοκιμή σε ένα Helm chart βρίσκεται στον φάκελο templates/ και είναι
ένας ορισμός Job που καθορίζει ένα container με μια συγκεκριμένη εντολή προς
εκτέλεση. Το container πρέπει να τερματίσει επιτυχώς (exit 0) για να θεωρηθεί
η δοκιμή επιτυχής. Ο ορισμός του Job πρέπει να περιέχει το annotation hook
δοκιμής του Helm: helm.sh/hook: test.
Σημειώστε ότι μέχρι το Helm v3, ο ορισμός του Job έπρεπε να περιέχει ένα από τα
παρακάτω annotations hook δοκιμής του Helm: helm.sh/hook: test-success ή
helm.sh/hook: test-failure. Το helm.sh/hook: test-success εξακολουθεί να
γίνεται αποδεκτό ως εναλλακτική επιλογή συμβατή προς τα πίσω αντί του
helm.sh/hook: test.
Παραδείγματα δοκιμών:
- Επαλήθευση ότι η ρύθμιση παραμέτρων από το αρχείο values.yaml εισήχθη σωστά.
- Βεβαιωθείτε ότι το όνομα χρήστη και ο κωδικός πρόσβασης λειτουργούν σωστά
- Βεβαιωθείτε ότι ένα εσφαλμένο όνομα χρήστη και κωδικός πρόσβασης δεν λειτουργεί
- Επιβεβαίωση ότι οι υπηρεσίες σας είναι ενεργές και κατανέμουν σωστά το φορτίο
- κ.λπ.
Μπορείτε να εκτελέσετε τις προκαθορισμένες δοκιμές του Helm σε ένα release
χρησιμοποιώντας την εντολή helm test <RELEASE_NAME>. Για τους χρήστες ενός
chart, αυτός είναι ένας εξαιρετικός τρόπος να ελέγξουν ότι το release του chart
(ή της εφαρμογής) λειτουργεί όπως αναμένεται.
Παράδειγμα Δοκιμής
Η εντολή helm create δημιουργεί αυτόματα έναν αριθμό φακέλων και αρχείων. Για να δοκιμάσετε τη λειτουργικότητα του helm test, δημιουργήστε πρώτα ένα demo Helm chart.
$ helm create demo
Θα μπορείτε πλέον να δείτε την ακόλουθη δομή στο demo Helm chart σας.
demo/
Chart.yaml
values.yaml
charts/
templates/
templates/tests/test-connection.yaml
Στο demo/templates/tests/test-connection.yaml θα βρείτε μια δοκιμή που μπορείτε
να δοκιμάσετε. Παρακάτω μπορείτε να δείτε τον ορισμό του pod δοκιμής του Helm:
apiVersion: v1
kind: Pod
metadata:
name: "{{ include "demo.fullname" . }}-test-connection"
labels:
{{- include "demo.labels" . | nindent 4 }}
annotations:
"helm.sh/hook": test
spec:
containers:
- name: wget
image: busybox
command: ['wget']
args: ['{{ include "demo.fullname" . }}:{{ .Values.service.port }}']
restartPolicy: Never
Βήματα για την Εκτέλεση μιας Σουίτας Δοκιμών σε ένα Release
Πρώτα, εγκαταστήστε το chart στο cluster σας για να δημιουργήσετε ένα release. Μπορεί να χρειαστεί να περιμένετε μέχρι όλα τα pods να γίνουν ενεργά· αν εκτελέσετε τη δοκιμή αμέσως μετά την εγκατάσταση, μπορεί να εμφανιστεί παροδικό σφάλμα και θα θέλετε να επαναλάβετε τη δοκιμή.
$ helm install demo demo --namespace default
$ helm test demo
NAME: demo
LAST DEPLOYED: Mon Feb 14 20:03:16 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: demo-test-connection
Last Started: Mon Feb 14 20:35:19 2022
Last Completed: Mon Feb 14 20:35:23 2022
Phase: Succeeded
[...]
Σημειώσεις
- Μπορείτε να ορίσετε όσες δοκιμές θέλετε σε ένα μόνο αρχείο yaml ή να τις
κατανείμετε σε πολλά αρχεία yaml στον φάκελο
templates/. - Μπορείτε να τοποθετήσετε τη σουίτα δοκιμών σας σε έναν υποφάκελο
tests/όπως<chart-name>/templates/tests/για καλύτερη απομόνωση. - Μια δοκιμή είναι ένα Helm hook, επομένως annotations
όπως
helm.sh/hook-weightκαιhelm.sh/hook-delete-policyμπορούν να χρησιμοποιηθούν με τους πόρους δοκιμών.