Перейти до основного вмісту
Версія: 4.3.0

Pods та PodTemplates

У цій частині посібника з найкращих практик розглядається форматування частин Pod і PodTemplate у маніфестах чартів.

Наступний (неповний) список ресурсів використовує PodTemplates:

  • Deployment
  • ReplicationController
  • ReplicaSet
  • DaemonSet
  • StatefulSet

Образи​

Образ контейнера повинен використовувати фіксований теґ або SHA образу. Він не повинен використовувати теги latest, head, canary або інші теґи, які призначені для "плаваючих" версій.

Образи можуть бути визначені у файлі values.yaml, щоб спростити заміну образів.

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

Образ та теґ можуть бути визначені у файлі 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, якщо він зовсім не визначений. Якщо вам потрібне інше значення, просто оновіть його в values.yaml на потрібне значення.

PodTemplates повинні оголошувати селектори​

Усі розділи PodTemplate повинні містити селектор. Наприклад:

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

Це хороша практика, оскільки вона встановлює звʼязок між набором і podʼом.

Але це ще важливіше для таких наборів, як Deployment. Без цього, весь набір міток використовується для вибору відповідних podʼів, і це може зламатися, якщо ви використовуєте мітки, які змінюються, такі як версія або дата релізу.