使用kubectl create secret避免重复创建已存在Secret的问题排查
问题解决:避免重复创建Kubernetes Secret
你的命令报错是因为逻辑运算符优先级的问题:&&的优先级比||高,导致原命令等价于:
(kubectl create secret generic test-key --dry-run=client --output=name >/dev/null 2>&1 || echo "Secret does not exist, creating secret.") && kubectl create secret generic test-key --from-literal=testkey="mysecret"
不管前面的dry-run命令是否成功(即Secret是否存在),后面的kubectl create都会执行,所以当Secret已存在时就会报错。
修复方案1:调整逻辑块(用括号包裹后续操作)
把echo和kubectl create放到同一个逻辑分支里,确保只有Secret不存在时才执行创建:
kubectl create secret generic test-key --dry-run=client --output=name >/dev/null 2>&1 || (echo "Secret does not exist, creating secret." && kubectl create secret generic test-key --from-literal=testkey="mysecret")
修复方案2:使用if语句(可读性更好)
用更直观的条件判断替代链式逻辑运算符,降低出错概率:
if ! kubectl get secret test-key >/dev/null 2>&1; then echo "Secret does not exist, creating secret." kubectl create secret generic test-key --from-literal=testkey="mysecret" fi
两种方案都能实现「Secret不存在才创建」的需求,方案2的可读性更高,适合在脚本中使用。
内容的提问来源于stack exchange,提问作者生きがい
相关产品推荐
相关产品推荐

