如何在Kubernetes部署的标签中更新和附加值



我有要求,我想使用某种形式的自动化

来更新和附加在部署上的标签价值

例如,在初始部署时,我已经在kubernetes部署上将标签设置为

labels:
    customer: customerA

现在我想更新标签为

labels:
    customer: customerA,CustomerB

我想出的方法之一是通过使用kubectl patch命令

 kubectl patch deployment application --patch '{"spec": {"template": {"metadata": {"labels": {"customer": "customerB"}}}}}'

但是上面的命令显示了明显的行为,并覆盖了客户的先前标签,并将新值设置为

labels
    customer: CustomerB

但是,我想在Lables客户中附加值,其中之一是使用命令如下

kubectl patch deployment application --patch '{"spec": {"template": {"metadata": {"labels": {"customer": "customerA,customerB"}}}}}'

但是,使用上述方法,我需要维护客户标签值的列表并通过它。

是否有一种方法可以在现有部署中附加标签值,这样我就不需要维护列表。

afaik k8s标签不接受逗号分隔值 - >文档。
用于验证的正则是'(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?')

但是您总是可以尝试一些解决方法:

# Get the current values (requires jq)
CURRENT=$(kubectl get deploy application -o jsonpath='{.metadata.labels}' | jq .customer -r)
# Merge then apply
kubectl label deploy application customer=${CURRENT}.Customer-C --overwrite
# Check
kubectl get deploy application -o jsonpath='{.metadata.labels}' | jq .customer -r

最新更新