Pod 和 PodTemplate
最佳實務指南的這一部分討論了在圖表清單中格式化 Pod 和 PodTemplate 部分。
以下(非詳盡)資源列表使用 PodTemplate
- 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
同樣,如果根本沒有定義 imagePullPolicy
,Kubernetes 會將其預設為 IfNotPresent
。如果您想要 IfNotPresent
以外的值,只需在 values.yaml
中將值更新為所需的值即可。
PodTemplate 應宣告選擇器
所有 PodTemplate 部分都應指定一個選擇器。例如
selector:
matchLabels:
app.kubernetes.io/name: MyName
template:
metadata:
labels:
app.kubernetes.io/name: MyName
這是一個好習慣,因為它建立了集合和 Pod 之間的關係。
但這對於像 Deployment 這樣的集合更為重要。如果沒有這個,將使用整個標籤集來選擇匹配的 Pod,如果您使用像版本或發佈日期這樣會更改的標籤,這將會出錯。