Skip to main content
Version: 3.19.0

Pod και PodTemplate

Αυτό το μέρος του Οδηγού Βέλτιστων Πρακτικών καλύπτει τη μορφοποίηση των τμημάτων Pod και PodTemplate στα manifests των chart.

Η παρακάτω (μη εξαντλητική) λίστα πόρων χρησιμοποιεί PodTemplates:

  • Deployment
  • ReplicationController
  • ReplicaSet
  • DaemonSet
  • StatefulSet

Images

Ένα container image θα πρέπει να χρησιμοποιεί ένα σταθερό tag ή το SHA του image. Δεν θα πρέπει να χρησιμοποιεί τα tags latest, head, canary, ή άλλα tags που είναι σχεδιασμένα να είναι "floating" (μεταβαλλόμενα).

Τα images μπορούν να οριστούν στο αρχείο values.yaml για να διευκολύνεται η αλλαγή τους.

image: {{ .Values.redisImage | quote }}

Ένα image και ένα tag μπορούν να οριστούν στο values.yaml ως δύο ξεχωριστά πεδία:

image: "{{ .Values.redisImage }}:{{ .Values.redisTag }}"

ImagePullPolicy

Η εντολή helm create ορίζει το imagePullPolicy σε IfNotPresent από προεπιλογή με τις ακόλουθες ρυθμίσεις στο deployment.yaml:

imagePullPolicy: {{ .Values.image.pullPolicy }}

Και στο values.yaml:

image:
pullPolicy: IfNotPresent

Ομοίως, το Kubernetes ορίζει το imagePullPolicy σε IfNotPresent από προεπιλογή, αν δεν έχει οριστεί καθόλου. Αν θέλετε μια διαφορετική τιμή από το IfNotPresent, απλά ενημερώστε την τιμή στο values.yaml με την επιθυμητή τιμή.

Τα PodTemplates Θα Πρέπει να Δηλώνουν Selectors

Όλα τα τμήματα PodTemplate θα πρέπει να καθορίζουν έναν selector. Για παράδειγμα:

selector:
matchLabels:
app.kubernetes.io/name: MyName
template:
metadata:
labels:
app.kubernetes.io/name: MyName

Αυτή είναι μια καλή πρακτική επειδή καθιστά σαφή τη σχέση μεταξύ του set και του Pod.

Αυτό είναι ακόμα πιο σημαντικό για πόρους όπως το Deployment. Χωρίς selector, χρησιμοποιείται ολόκληρο το σύνολο των labels για την επιλογή των αντίστοιχων Pods, πράγμα που θα προκαλέσει προβλήματα αν χρησιμοποιείτε labels που αλλάζουν, όπως η έκδοση ή η ημερομηνία release.