问题描述
在我们将Ingress Controller组件从Traefik替换为Nginx后,我们迎来壹个新任务 – 替换所有Ingress资源中的 kubernetes.io/ingress.class 注解,将其设置为nginx 参数。
那么多Ingress资源肯定要批量替换,而不是挨个手动替换。
解决办法
这里我们就要用到 kubectl path 命令。批量替换脚本如下:
for ns in $(kubectl get namespaces -o jsonpath='{.items..metadata.name}’)
do
echo “############## NAMESPACE: ${ns} ##############”
for ingress in $(kubectl get -n $ns ingresses.extensions -o jsonpath='{.items..metadata.name}’)
do
# 为了防止命令出错,这里只打印将执行的命令,以进行预览
echo kubectl patch -n $ns ingresses.extensions $ingress –type merge -p \”{“metadata”: {“annotations”: {“kubernetes.io/ingress.class”: “nginx”}}}’\’
# 如果要执行命令,请取消下一行注释
# kubectl patch -n $ns ingresses.extensions $ingress –type merge -p ‘{“metadata”: {“annotations”: {“kubernetes.io/ingress.class”: “nginx”}}}’
done
done
附加内容
Batch and Bulk Operations
A bulk operation is a single-target operation that can take a heterogeneous list of business objects. A batch operation includes multiple target operations that each can take a homogeneous or heterogeneous list of business objects.
这就是使用Batch Processing词组,而不使用Bulk Processing词组的原因。
参考文献
kubectl Cheat Sheet/[……]