因此,正如标题中所述,我想为我已经运行的应用程序(官方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补丁引用