我有要求,我想使用某种形式的自动化
来更新和附加在部署上的标签价值例如,在初始部署时,我已经在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