如何用 shell 脚本检查对应的 k8s ConfigMap 是否存在
比如对于 kubectl get cm macl-api-appsetttings 命令,如果 ConfigMap 不存在,输出
Error from server (NotFound): configmaps "macl-api-appsetttings" not found
如果存在,输出
NAME DATA AGE
macl-api-appsettings 1 63m
请问如何用脚本实现自动检查?
回答
开始采用的是通过 $? 对 exit code 进行判断
kubectl get cm macl-api-appsettings > /dev/null
if [ $? != 0 ] ; then
kubectl create configmap ...
fi
但发现脚本文件中有 set -e,ConfigMap 不存在时脚本就直接退出了,走不到下面的判断代码。
后来改为根据命令输出内容是否为空进行判断
if [[ ! $(kubectl get cm | grep $CM_NAME) ]] ; then
kubectl create configmap ...
fi