「kuberctl」- 批量处理Ingress资源 @20210411

问题描述

在我们将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」- 常用命令与技巧
「kubectl」- tips
「kubectl」- 输出格式

参考文献

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


posted @ 2021-04-11 15:36  研究林纳斯写的  阅读(206)  评论(0编辑  收藏  举报