问题描述
在我们将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/Patching Resources
kubectl Cheat Sheet/Kubectl Context and Configuration
How to patch a ConfigMap in Kubernetes
Which is a better and commonly used word, Bulk or Batch?
Developing Custom Oracle Cloud Adapters/Batch and Bulk Operations
Wikipedia/Batch processing