[[Kubernetes]]のDeploymentで指定するラベルに以下の3種類がある。
- metadata.labels: 実際のdeploymentのラベル
- spec.selector.matchLabels: Deploymentが適用するpodsはどれかを示す
- spec.template.metadata.labels: Podsに適用するラベル
matchLabelsとtemplate.metadata.labelsの2つあるのは、実装の依存の話らしい。
template.metadata.labelsは変更禁止になった。
- [Deploymentにlabel書く部分がやたら多いけどそれ必要? - Qiita](https://qiita.com/masahata/items/85421048744583c4b376)
- [matchLabels, labels, and selectors explained in detail, for beginners | by Zane Hitchcox | Medium](https://medium.com/@zwhitchcox/matchlabels-labels-and-selectors-explained-in-detail-for-beginners-d421bdd05362)
- [What is the purpose of a kubernetes deployment pod selector? - Stack Overflow](https://stackoverflow.com/questions/50309057/what-is-the-purpose-of-a-kubernetes-deployment-pod-selector)
#### ラベルの変更方法
- [(k8s / openshift) リソースにlabelを後から設定する - zaki work log](https://zaki-hmkc.hatenablog.com/entry/2020/01/22/001716)
- [kubernetes - Invalid spec selector after upgrading helm template - Stack Overflow](https://stackoverflow.com/questions/53998259/invalid-spec-selector-after-upgrading-helm-template)
`kubectl delete deploy <deployment name>` してから kubectl apply -f
podを再作成しないでラベルを付与できないのか?