Ερωτήσεις — Κατανοείτε το Helm και το έργο 13;

18 λεπτά

Έργο projet13-kubernetes-helm-tp · 36 ερωτήσεις αυτοαξιολόγησης

Αυτές οι ερωτήσεις αφορούν ακριβώς ΑΥΤΟ το έργο (chart/, values.yaml, values-dev.yaml, _helpers.tpl, apps/portail, τις τρεις βλάβες). Απαντήστε πριν ξεδιπλώσετε τη διόρθωση. Οι σωστές απαντήσεις κατανέμονται μεταξύ A, B, C και D.

Πίνακας περιεχομένων


A — Helm: βασικές ιδέες

1. Σε μία πρόταση, τι κάνει το Helm;

  • A) Αντικαθιστά το Kubernetes: δεν χρειαζόμαστε πλέον το kubectl
  • B) Παράγει μανιφέστα Kubernetes από πρότυπα και τιμές, έπειτα τα εφαρμόζει ως εκδοχημένη μονάδα
  • C) Κατασκευάζει τις εικόνες Docker στη θέση του docker build
  • D) Χρησιμεύει μόνο για εγκατάσταση εφαρμογών από το Διαδίκτυο
Διόρθωση

B. Το Helm αποδίδει πρότυπα YAML με μεταβλητές (values.yaml), έπειτα εφαρμόζει το αποτέλεσμα στο σύμπλεγμα με το όνομα μιας release. Το kubectl παραμένει απαραίτητο για την παρατήρηση του συμπλέγματος.

2. Τι είναι μια release Helm;

  • A) Μια νέα έκδοση του κώδικα Python της εφαρμογής
  • B) Ένα υπογεγραμμένο αρχείο Chart.yaml
  • C) Μια συγκεκριμένη εγκατάσταση ενός Chart, ταυτοποιημένη με όνομα (hedge-dev, hedge-staging, hedge-prod)
  • D) Ένας χώρος ονομάτων Kubernetes
Διόρθωση

C. Το ίδιο Chart μπορεί να εγκατασταθεί πολλές φορές. Κάθε εγκατάσταση είναι μια release. Ο χώρος ονομάτων είναι ο τόπος απομόνωσης· η release είναι το αντικείμενο Helm.

3. Σε αυτό το έργο, ποια δήλωση είναι αληθής;

  • A) Το {{ .Chart.Name }} αλλάζει σε κάθε helm install, το {{ .Release.Name }} μένει ίδιο
  • B) Το {{ .Release.Name }} αλλάζει σε κάθε helm install, το {{ .Chart.Name }} μένει ίδιο
  • C) Και τα δύο μένουν ίδια
  • D) Και τα δύο αλλάζουν σε κάθε helm upgrade
Διόρθωση

B. Το Chart ονομάζεται πάντα hedge. Το όνομα release (hedge-dev, hedge-staging, hedge-prod) αλλάζει σε κάθε εγκατάσταση. Αυτή η αντίθεση επιτρέπει το πολλαπλό περιβάλλον.

4. Ποια εντολή παράγει το YAML χωρίς να αναπτύξει τίποτα στο σύμπλεγμα;

  • A) helm install
  • B) helm upgrade
  • C) helm lint
  • D) helm template
Διόρθωση

D. Το helm template είναι στεγνή απόδοση. Το helm lint ελέγχει τη σύνταξη, αλλά δεν εμφανίζει τα μανιφέστα. Τα install και upgrade αγγίζουν το σύμπλεγμα.

5. Σε τι χρησιμεύει ένα αρχείο του οποίου το όνομα αρχίζει με _ στο templates/ (παράδειγμα: _helpers.tpl);

  • A) Το Helm το εφαρμόζει πρώτο, πριν από όλα τα άλλα
  • B) Παράγει ένα μανιφέστο Kubernetes με όνομα _helpers
  • C) Δεν παράγει κανένα μανιφέστο: ορίζει επαναχρησιμοποιήσιμες συναρτήσεις (define / include)
  • D) Αγνοείται πλήρως από το Helm
Διόρθωση

C. Το πρόθεμα _ σημαίνει «μόνο helper». Οι συναρτήσεις καλούνται έπειτα με {{ include "hedge.labels" ... }}.

6. Στο Chart.yaml, ποια είναι η διαφορά μεταξύ version και appVersion;

  • A) Καμία: είναι δύο ψευδώνυμα του ίδιου πεδίου
  • B) Το version είναι η έκδοση του Chart (συσκευασία Helm)· το appVersion είναι η έκδοση της εφαρμογής που αναπτύσσεται
  • C) Το version είναι ο αριθμός αναθεώρησης Helm· το appVersion είναι το tag Docker
  • D) Το version χρησιμεύει στο Kubernetes· το appVersion στο Helm
Διόρθωση

B. Μπορούμε να αλλάξουμε το version (π.χ. 0.1.0 προς 0.2.0) χωρίς να αλλάξουμε τον κώδικα εφαρμογής, και αντίστροφα. Δεν είναι ο αριθμός αναθεώρησης (helm history), ούτε αυτόματα το tag εικόνας.


B — Ανατομία του Chart hedge

7. Σε αυτό το έργο, τι περιέχει ο φάκελος apps/;

  • A) Τα πρότυπα Helm προς συμπλήρωση
  • B) Τον κώδικα Python του portail και της api, που δεν πρέπει να τροποποιηθεί
  • C) Τα τρία αρχεία values-<env>.yaml
  • D) Το σενάριο valider.ps1
Διόρθωση

B. Είστε ο DevOps: ο κώδικας εφαρμογής είναι ήδη γραμμένος. Η τροποποίηση του apps/ απαγορεύεται από τον κανονισμό του εργαστηρίου.

8. Γιατί ο φάκελος chart/casses/ δεν βρίσκεται μέσα στο chart/templates/;

  • A) Το Helm αρνείται αρχεία των οποίων το όνομα αρχίζει με casse-
  • B) Για να μην τα φορτώσει το Helm αυτόματα: τα αντιγράφετε ένα-ένα στο templates/ για να παρατηρήσετε το σφάλμα
  • C) Το Kubernetes δεν δέχεται πάνω από 5 αρχεία στο templates/
  • D) Αυτά τα αρχεία είναι εικόνες Docker, όχι πρότυπα
Διόρθωση

B. Το Helm αποδίδει όλα τα αρχεία του templates/ (εκτός από όσα έχουν πρόθεμα _). Το να μείνουν οι βλάβες στο casses/ αποφεύγει το σπάσιμο του Chart πριν την αποστολή 6.

9. Στο values.yaml αυτού του έργου, σε ποια θύρα ακούει το κοντέινερ portail;

  • A) 80
  • B) 30130
  • C) 5000
  • D) 8000
Διόρθωση

C. portail.service.targetPort: 5000 (είναι η θύρα Flask). Το port: 80 είναι η θύρα του Service. Το nodePort: 30130 είναι η θύρα που εκτίθεται στο μηχάνημα (DEV). Το 8000 είναι το targetPort της api.

10. Σε αυτό το έργο, ποιος τύπος Service προβλέπεται για την api στο values.yaml;

  • A) NodePort
  • B) LoadBalancer
  • C) ExternalName
  • D) ClusterIP
Διόρθωση

D. Η api μένει εσωτερική στο σύμπλεγμα. Το portail την καλεί μέσω DNS (http://hedge-dev-api). Μόνο το portail είναι σε NodePort για τον περιηγητή.

11. Πόσες εικόνες Docker πρέπει να κατασκευάσετε μία μόνο φορά πριν αναπτύξετε τα τρία περιβάλλοντα;

  • A) Μία μόνο (hedge:1.0)
  • B) Δύο (hedge-portail:1.0 και hedge-api:1.0)
  • C) Τρεις (μία ανά περιβάλλον)
  • D) Έξι (δύο εικόνες × τρία περιβάλλοντα)
Διόρθωση

B. Τα τρία περιβάλλοντα επαναχρησιμοποιούν τις ίδιες εικόνες. Αυτό που αλλάζει είναι οι τιμές που εγχέονται (χρώμα, replicas, μήνυμα), όχι ο κώδικας.

12. Το portail εμφανίζει ένα χρωματιστό πανό και ένα μήνυμα. Από πού προέρχονται αυτές οι πληροφορίες;

  • A) Είναι κωδικοποιημένες στα σκληρά στο apps/portail/app.py
  • B) Προέρχονται από μεταβλητές περιβάλλοντος που εγχέει το Helm από τα Values
  • C) Διαβάζονται από ένα αρχείο couleur.txt προσαρτημένο ως τόμος
  • D) Επιλέγονται τυχαία από το Flask κατά την εκκίνηση
Διόρθωση

B. Το app.py διαβάζει THEME_COLOR, BANNIERE_MESSAGE, ENVIRONMENT, κ.λπ. Ο ίδιος κώδικας προσαρμόζεται σε DEV / STAGING / PROD χωρίς τροποποίηση.


C — Templates, Values και helpers

13. Τι αποδίδει το {{ .Values.portail.replicas }} αν το values-prod.yaml περιέχει portail.replicas: 3 και εγκαθιστάτε με -f values-prod.yaml;

  • A) 1 (η τιμή του values.yaml κερδίζει πάντα)
  • B) 3 (το αρχείο που περνά με -f υπερισχύει του values.yaml)
  • C) Σφάλμα: δεν μπορεί να υπάρχει το ίδιο κλειδί δύο φορές
  • D) default
Διόρθωση

B. Το values.yaml παρέχει τις προεπιλογές. Κάθε values-<env>.yaml υπερισχύει μόνο ό,τι αλλάζει. Αυτή είναι η ίδια η αρχή του πολλαπλού περιβάλλοντος.

14. Γιατί ένα αρχείο values-prod.yaml που επαναορίζει το portail.image.repository είναι παιδαγωγικό σφάλμα σε αυτό το έργο;

  • A) Επειδή το πεδίο repository δεν υπάρχει
  • B) Επειδή η εικόνα είναι ίδια στα τρία περιβάλλοντα: αυτό το κλειδί δεν έχει λόγο να αντιγραφεί
  • C) Επειδή το Helm αρνείται πάνω από 10 κλειδιά σε ένα αρχείο τιμών
  • D) Επειδή το repository πρέπει να ορίζεται μόνο στο Chart.yaml
Διόρθωση

B. Στο values-<env>.yaml αντιγράφουμε μόνο ό,τι διακρίνει το περιβάλλον (replicas, nodePort, χρώμα, μήνυμα, environment). Η αντιγραφή των υπολοίπων είναι επιστροφή στο copy-paste που το Helm υποτίθεται ότι αντικαθιστά.

15. Σε αυτό το έργο, ο helper hedge.fullname πρέπει να παράγει, για τη release hedge-dev και το στοιχείο portail:

  • A) hedge-portail
  • B) portail-hedge-dev
  • C) hedge-dev-portail
  • D) hedge
Διόρθωση

C. Μορφή <release>-<composant>. Αυτό το πρόθεμα αποφεύγει τις συγκρούσεις ονομάτων μεταξύ DEV, STAGING και PROD (ακόμη και στον ίδιο χώρο ονομάτων).

16. Ποιες ετικέτες πρέπει μόνες να εμφανίζονται στο hedge.selectorLabels;

  • A) name, instance, component — οι τρεις που δεν θα αλλάξουν ποτέ για αυτή την παρουσία
  • B) Όλες οι ετικέτες του hedge.labels, συμπεριλαμβανομένων των version και hedge/environment
  • C) Μόνο hedge/environment
  • D) Μόνο helm.sh/chart
Διόρθωση

A. Το spec.selector.matchLabels είναι αμετάβλητο. Το να βάλετε εκεί version, helm.sh/chart ή hedge/environment θα κάνει να αποτύχει το πρώτο helm upgrade που αλλάζει αυτές τις τιμές.

17. Γιατί το BACKEND_URL του portail δεν μπορεί να είναι http://api στα σκληρά;

  • A) Επειδή το Flask αρνείται URL χωρίς αριθμό θύρας
  • B) Επειδή το Service ονομάζεται hedge-<release>-api (π.χ. hedge-dev-api): το όνομα DNS εξαρτάται από τη release
  • C) Επειδή η api δεν έχει Service
  • D) Επειδή το portail δεν καλεί ποτέ την api
Διόρθωση

B. Ο helper hedge.fullname κατασκευάζει hedge-dev-api, hedge-staging-api, hedge-prod-api. Ένα όνομα στα σκληρά api δεν επιλύει τίποτα στον χώρο ονομάτων.

18. Τι κάνει το {{ .Values.environment | quote }};

  • A) Μετατρέπει την τιμή σε ακέραιο
  • B) Προσθέτει εισαγωγικά γύρω από την αποδοθείσα τιμή (απαραίτητο για συμβολοσειρά YAML)
  • C) Εμφανίζει την τιμή με κεφαλαία
  • D) Αγνοεί την τιμή αν είναι κενή
Διόρθωση

B. Το quote παράγει "dev" αντί για dev. Χωρίς εισαγωγικά, ορισμένες τιμές YAML (δεκαεξαδικά χρώματα, μηνύματα) μπορούν να σπάσουν το μανιφέστο.

19. Γιατί το replicas: "{{ .Values.portail.replicas }}" (με εισαγωγικά γύρω από όλο το πρότυπο) είναι επικίνδυνο;

  • A) Το Helm αρνείται τα εισαγωγικά σε ένα Deployment
  • B) Το Kubernetes περιμένει ακέραιο· η απόδοση γίνεται η συμβολοσειρά "1", που το API αρνείται
  • C) Η τιμή θα είναι πάντα 0
  • D) Τα εισαγωγικά διπλασιάζουν τον αριθμό των replicas
Διόρθωση

B. Ποτέ μην βάλετε σε εισαγωγικά έναν ακέραιο. Γράφουμε replicas: {{ .Values.portail.replicas }}, όχι replicas: "{{ ... }}".

20. Σε τι χρησιμεύει το nindent 4 στο {{ include "hedge.labels" ... | nindent 4 }};

  • A) Να περιορίσει τον helper σε 4 ετικέτες
  • B) Να εσοχήσει σωστά το αποδοθέν YAML (αλλιώς το μανιφέστο είναι δυσανάγνωστο ή άκυρο)
  • C) Να δημιουργήσει 4 replicas
  • D) Να περιμένει 4 δευτερόλεπτα πριν την απόδοση
Διόρθωση

B. Το Helm εγχέει ένα μπλοκ πολλών γραμμών. Χωρίς nindent, η εσοχή YAML σπάει και λαμβάνετε error converting YAML to JSON.


D — Τα τρία περιβάλλοντα

21. Σε αυτό το έργο, ποιο nodePort προορίζεται για το STAGING;

  • A) 30130
  • B) 30131
  • C) 30132
  • D) 30500
Διόρθωση

B. DEV = 30130, STAGING = 30131, PROD = 30132. Το 30500 είναι το portail του έργου 12, όχι αυτού.

22. Πόσα replicas portail + api πρέπει να έχετε σε PROD μόλις το Chart αναπτυχθεί σωστά;

  • A) 1 + 1
  • B) 2 + 2
  • C) 3 + 3
  • D) 5 + 1
Διόρθωση

C. PROD: 3 portail και 3 api. DEV: 1+1. STAGING: 2+2. Συνολικά, 12 Pods εφαρμογής δίπλα-δίπλα.

23. Ποιο χρώμα πανό αντιστοιχεί στο περιβάλλον DEV;

  • A) Πορτοκαλί #ea580c
  • B) Πράσινο #16a34a
  • C) Γκρι #64748b
  • D) Μπλε #2563eb
Διόρθωση

D. Μπλε = DEV, πορτοκαλί = STAGING, πράσινο = PROD. Το γκρι #64748b είναι το προεπιλεγμένο χρώμα του values.yaml (περιβάλλον default), όχι ενός από τα τρία αρχεία περιβάλλοντος.

24. Γιατί αναπτύσσουμε κάθε περιβάλλον στον δικό του χώρο ονομάτων (hedge-dev, hedge-staging, hedge-prod);

  • A) Το Helm αρνείται δύο releases στον ίδιο χώρο ονομάτων, ακόμη και με διαφορετικά ονόματα
  • B) Για να απομονώσουμε τα αντικείμενα, να αποφύγουμε εσωτερικές συγκρούσεις NodePort, και να ταιριάξουμε την πραγματικότητα μιας επιχείρησης (ένας χώρος ονομάτων ανά περιβάλλον)
  • C) Επειδή το Docker Desktop επιτρέπει μόνο έναν χώρο ονομάτων
  • D) Επειδή το επιβάλλει το values.yaml
Διόρθωση

B. Το Helm επιτρέπει πολλές releases στον ίδιο χώρο ονομάτων (αυτή είναι μάλιστα η παγίδα της βλάβης 1 αν τα ονόματα είναι στα σκληρά). Οι χώροι ονομάτων παραμένουν καλή πρακτική: απομόνωση, ποσοστώσεις, RBAC, σαφήνεια.

25. Ποια εντολή εγκαθιστά σωστά το περιβάλλον DEV αυτού του έργου;

  • A) kubectl apply -f chart/environments/values-dev.yaml
  • B) helm install hedge-dev .\chart -f .\chart\environments\values-dev.yaml -n hedge-dev --create-namespace
  • C) helm template hedge-dev .\chart
  • D) docker compose up -d
Διόρθωση

B. Δείχνουμε στο Chart (.\chart), υπερισχύουμε με -f values-dev.yaml, ονομάζουμε τη release hedge-dev, δημιουργούμε τον χώρο ονομάτων. Το helm template δεν αναπτύσσει τίποτα. Το values-dev.yaml δεν είναι μανιφέστο kubectl.

26. Αν ανοίξετε το http://localhost:30132 και το πανό είναι πράσινο, τι βλέπετε κατ' ανάγκη στο JSON /api-json;

  • A) "env": "dev"
  • B) "env": "staging"
  • C) "env": "prod" και "backend": "ok" αν η api του ίδιου χώρου ονομάτων απαντά
  • D) "env": "default"
Διόρθωση

C. Η θύρα 30132 είναι αυτή του PROD. Το πεδίο env προέρχεται από .Values.environment. Το backend: ok αποδεικνύει ότι το BACKEND_URL δείχνει στο Service api αυτής της release.


E — install, upgrade, rollback

27. Μετά από helm install hedge-dev ... έπειτα helm upgrade hedge-dev ... --set portail.replicas=5, τι δείχνει το helm history hedge-dev -n hedge-dev;

  • A) Μία μόνο αναθεώρηση: το Helm διαγράφει το ιστορικό
  • B) Τουλάχιστον δύο αναθεωρήσεις: 1 = Install, 2 = Upgrade
  • C) Μηδέν αναθεωρήσεις: το ιστορικό υπάρχει μόνο μετά από rollback
  • D) Μόνο την αναθεώρηση 5, επειδή τα replicas είναι 5
Διόρθωση

B. Κάθε install / upgrade / rollback δημιουργεί μια αναθεώρηση. Αυτό το ημερολόγιο κάνει δυνατή την επιστροφή πίσω.

28. Τι κάνει το helm rollback hedge-dev 1 -n hedge-dev;

  • A) Διαγράφει τη release
  • B) Εφαρμόζει ξανά την κατάσταση της αναθεώρησης 1 και δημιουργεί μια νέα αναθεώρηση (συχνά αρ. 3) περιγραφόμενη ως Rollback to 1
  • C) Επιστρέφει στον κώδικα Git της πρώτης δέσμευσης
  • D) Μηδενίζει το values.yaml στον δίσκο
Διόρθωση

B. Το rollback δεν σβήνει το ιστορικό: προσθέτει μια αναθεώρηση. Το values-dev.yaml στον δίσκο σας δεν αλλάζει.

29. Ποια είναι η θεμελιώδης διαφορά μεταξύ helm upgrade --set portail.replicas=5 και kubectl scale deploy/hedge-dev-portail --replicas=5;

  • A) Καμία: κάνουν ακριβώς το ίδιο πράγμα
  • B) Το kubectl scale είναι πιο αργό
  • C) Το helm upgrade είναι ιχνηλατημένο και ακυρώσιμο από το Helm· το kubectl scale βγαίνει από τον έλεγχο του Helm και θα αντικατασταθεί στην επόμενη αναβάθμιση χωρίς --set
  • D) Το kubectl scale απαγορεύεται από το Kubernetes σε αντικείμενο που δημιούργησε το Helm
Διόρθωση

C. Το Helm συγκλίνει ξανά προς τα Values στην επόμενη upgrade. Μια χειροκίνητη τροποποίηση (scale, edit) είναι αόρατο χρέος. Αυτή είναι η ερώτηση προβληματισμού της αποστολής 5.

30. Το helm uninstall hedge-dev -n hedge-dev διαγράφει τον χώρο ονομάτων hedge-dev;

  • A) Ναι, πάντα
  • B) Όχι: αφαιρεί τα αντικείμενα της release, όχι τον χώρο ονομάτων (εκτός αν τον διαγράψετε έπειτα με kubectl delete namespace)
  • C) Ναι, αλλά μόνο αν ο χώρος ονομάτων είναι κενός
  • D) Όχι, και τα Deployments μένουν στη θέση τους
Διόρθωση

B. Το uninstall αφαιρεί Deployment, Service, κ.λπ. της release. Ο χώρος ονομάτων επιβιώνει. Εξ ου και η εντολή εκκαθάρισης του README: kubectl delete namespace hedge-dev ....

31. Τι συμβαίνει αν κάνετε kubectl delete pod hedge-dev-portail-xxxxx -n hedge-dev σε ένα Pod που δημιούργησε το Deployment Helm;

  • A) Το Pod εξαφανίζεται οριστικά· το Helm εμφανίζει σφάλμα
  • B) Το Deployment αναδημιουργεί αμέσως ένα Pod· το Helm δεν έχει τίποτα να «γνωρίζει»: διαχειρίζεται το Deployment, όχι κάθε Pod
  • C) Όλα τα Pods του χώρου ονομάτων σκοτώνονται
  • D) Το Helm εκκινεί αυτόματα ένα rollback
Διόρθωση

B. Το Helm δηλώνει το Deployment. Το Kubernetes διατηρεί τον αριθμό replicas. Η διαγραφή ενός Pod είναι η παιδαγωγική χειρονομία αυτοεπισκευής, όχι βλάβη Helm.


F — Οι τρεις βλάβες του έργου

32. Βλάβη 1 (casse-1-configmap.yaml): γιατί η δεύτερη release στον ίδιο χώρο ονομάτων αποτυγχάνει;

  • A) Επειδή το Helm επιτρέπει μόνο μία release ανά σύμπλεγμα
  • B) Επειδή το metadata.name: hedge-config είναι στατικό όνομα: οι δύο releases διεκδικούν το ίδιο αντικείμενο
  • C) Επειδή το ConfigMap δεν έχει data
  • D) Επειδή το values-staging.yaml είναι άκυρο
Διόρθωση

B. Η διόρθωση είναι να προτάξετε το όνομα με τη release: {{ include "hedge.fullname" (dict "root" . "composant" "config") }} παράγει hedge-dev-config και hedge-staging-config.

33. Βλάβη 2 (casse-2-worker-deployment.yaml): ποιο μήνυμα Kubernetes βλέπετε στο helm upgrade --set environment=recette;

  • A) nil pointer evaluating interface {}.replicas
  • B) ConfigMap "hedge-config" exists and cannot be imported
  • C) spec.selector: Invalid value: ...: field is immutable
  • D) ImagePullBackOff
Διόρθωση

C. Το hedge/environment βρίσκεται στο matchLabels. Η αλλαγή του environment αλλάζει τον selector, κάτι που το Kubernetes αρνείται. Τα A και B είναι τα συμπτώματα των βλαβών 3 και 1.

34. Σε ένα Deployment, πού επιτρέπεται να βάλετε την ετικέτα hedge/environment;

  • A) Μόνο στο spec.selector.matchLabels
  • B) Στις ετικέτες του Pod (template.metadata.labels) και στις ετικέτες του αντικειμένου, όχι στο matchLabels
  • C) Πουθενά: αυτή η ετικέτα απαγορεύεται από το Kubernetes
  • D) Μόνο στο Chart.yaml
Διόρθωση

B. Οι ετικέτες του Pod μπορούν να είναι πλούσιες και μεταβλητές. Ο selector πρέπει να μείνει ένα σταθερό υποσύνολο. Αυτή είναι όλη η διάκριση hedge.labels vs hedge.selectorLabels.

35. Βλάβη 3 (casse-3-cache-deployment.yaml): τι σημαίνει το σφάλμα nil pointer evaluating interface {}.replicas στο .Values.portal.replicas;

  • A) Το σύμπλεγμα δεν έχει πλέον RAM
  • B) Η διαδρομή είναι λάθος: το values.yaml ορίζει portail (με i), όχι portal — το Helm αξιολογεί nil.replicas
  • C) Πρέπει να γραφτεί .Release.portal.replicas
  • D) Το πεδίο replicas απαγορεύεται σε Deployment που δημιούργησε το Helm
Διόρθωση

B. Ένα μόνο γράμμα παραπάνω. Πρώτο αντανακλαστικό: helm template --debug και ανάγνωση της διαδρομής στο μήνυμα σφάλματος.

36. Αύριο πρέπει να προσθέσετε ένα 4ο περιβάλλον pre-prod. Ποια αρχεία δημιουργείτε, ποια δεν αγγίζετε;

  • A) Αντιγράφετε όλο τον φάκελο chart/ και μετονομάζετε το Chart
  • B) Δημιουργείτε μόνο το chart/environments/values-preprod.yaml (και ένα helm install + χώρο ονομάτων)· τα πρότυπα και το values.yaml μένουν αμετάβλητα
  • C) Προσθέτετε ένα 4ο Deployment στα σκληρά στο templates/
  • D) Τροποποιείτε το apps/portail/app.py για να αναγνωρίζει το pre-prod
Διόρθωση

B. Αυτή είναι η υπόσχεση του Helm: ένα Chart, N αρχεία τιμών. Αν πρέπει να αγγίξετε τα πρότυπα για νέο περιβάλλον, το Chart είναι κακοσχεδιασμένο.


Συνοπτική διόρθωση

#ΑπάντησηΙδέα να κρατήσετε
1BHelm = πρότυπα + values + release
2CΜια release = μια ονομασμένη εγκατάσταση
3BΤο .Release.Name αλλάζει, το .Chart.Name όχι
4Dhelm template = στεγνή απόδοση
5CΤο _helpers.tpl δεν δημιουργεί κανένα αντικείμενο
6Bversion = Chart· appVersion = εφαρμογή
7BΤο apps/ είναι παγωμένο
8BΤο casses/ εκτός του templates/ ηθελημένα
9CΚοντέινερ portail = θύρα 5000
10Dapi = ClusterIP
11BΔύο εικόνες, τρία περιβάλλοντα
12BΧρώμα και μήνυμα προέρχονται από μεταβλητές περιβάλλοντος Helm
13BΤο -f υπερισχύει του values.yaml
14BΑντιγράφετε μόνο ό,τι διαφέρει
15Chedge-dev-portail
16ASelector = name + instance + component
17BΤο BACKEND_URL πρέπει να περιλαμβάνει το όνομα release
18Bquote = εισαγωγικά YAML
19BΠοτέ μην βάλετε σε εισαγωγικά έναν ακέραιο replicas
20BΤο nindent σώζει την εσοχή
21BSTAGING = 30131
22CPROD = 3 + 3
23DDEV = μπλε #2563eb
24BΈνας χώρος ονομάτων ανά περιβάλλον
25Bhelm install ... -f values-dev.yaml -n hedge-dev
26C30132 = prod + backend ok
27BΤο ιστορικό συσσωρεύει αναθεωρήσεις
28BRollback = νέα αναθεώρηση
29CΤο scale εκτός Helm θα αντικατασταθεί
30BΤο uninstall δεν σκοτώνει τον χώρο ονομάτων
31BDelete pod = αυτοεπισκευή του Deployment
32BΌνομα στα σκληρά = σύγκρουση μεταξύ releases
33CΑμετάβλητος selector
34BΜεταβλητή ετικέτα OK στο Pod, απαγορευμένη στο matchLabels
35BΤυπογραφικό portal / portail
36BΝέο περιβάλλον = ένα αρχείο τιμών

Ενδεικτική βαθμολογία: 30/36 ή περισσότερο = μπορείτε να εξηγήσετε το έργο σε έναν συμφοιτητή. Κάτω από 24/36, ξαναδιαβάστε τις ενότητες «Ουσιώδεις έννοιες», «Αποστολή 3» και «Αποστολή 6» του 00-ENONCE.md.


Μάθημα δημιουργημένο από τον Dr. Haythem REHOUMA — Ανάπτυξη και ανάπτυξη λύσεων δεδομένων