Helm,有没有一种方法可以将kubernetes标签添加到values.yaml中(不使用template和_help



因此,正如标题中所述,我想为我已经运行的应用程序(官方helm图表中的sonarqube和jenkins(的helm添加标签。我并没有模板,只有values.yaml。我害怕添加模板,因为正如我所说,应用程序已经在运行,我只想在元数据中添加一些标签。

评论中提到的两个图表都有定义自定义标签的方法

https://github.com/jenkinsci/helm-charts/blob/main/charts/jenkins/templates/jenkins-master-deployment.yaml#L42

{{- range $key, $val := .Values.master.podLabels }}
{{ $key }}: {{ $val | quote }}
{{- end}}

https://github.com/Oteemo/charts/blob/master/charts/sonarqube/templates/deployment.yaml#L31

{{- with .Values.podLabels }}
{{ toYaml . | indent 8 }}
{{- end }}

所以你在values.yaml中需要这样的东西

# Jenkins
master:
podLabels:
label1Name: label1Value
# Sonar
podLabels:
label1Name: label1Value

如@rkosegi所述,该解决方案在使用k8s配置时使用最佳实践。

请记住,用户始终应存储配置文件(配置最佳实践(。它允许我们以一种简单的方式快速更改/回滚任何配置,使用:

kubectl apply -f ...
kubectl replace ...

另一种解决方案:

  • kubectl编辑部署<deployment_name>

  • 使用kubectl补丁就地更新API对象


a(添加或更改现有标签:

#patch-file.yaml
spec:
template:
metadata:
labels:
test: label
kubectl patch deployment <deployment-name>  --patch "$(cat patch-file.yaml)"

b(使用json补丁方法,您可以:

  • 添加一个新标签">新测试";具有">测试值":
kubectl patch deployment <deployment-name>  --type='json' -p='[{"op": "add", "path": "/spec/template/metadata/labels/NewTest", "value":"TestValue"}]'
  • 替换标签">新测试";具有">旧测试":
kubectl patch deployment <deployment-name>  --type='json' -p='[{"op": "replace", "path": "/spec/template/metadata/labels/NewTest", "value": "OldTest"}]'
  • 移除标签">新测试":
kubectl patch deployment <deployment-name>  --type='json' -p='[{"op": "remove", "path": "/spec/template/metadata/labels/NewTest"}]'        

附加信息:

  • JavaScript对象符号(JSON(修补程序
  • kubectl补丁引用

最新更新