Я создал следующий код, так что вы можете использовать его в качестве оболочки. Вы можете назвать скрипт как хотите. Например exclude_ns_removal
#!/usr/bin/env bash
умереть ()
{
эхо "$@" 1>&2
выход 1
}
Применение ()
{
echo "использование: $0 [-h] [-v namespace_to_ignore] " 1>&2
выход 0
}
в массиве ()
{
местный n=$1 час
сдвиг
для h в "$@"
делать
[[ $n = "$h" ]] && возврат
сделано
вернуть 1
}
в то время как getopts ":v:h" opt; делать
case $opt in
час)
Применение
;;
в)
случай $OPTARG в
'' | *[0-9]*)
die "Цифры не допускаются $OPTARG"
;;
*)
val=$OPTARG
;;
эсак
;;
:)
die "аргумент, необходимый для -$OPTARG"
;;
*)
die "неверный ключ -$OPTARG"
;;
эсак
сделано
сдвиг $((OPTIND - 1))
в то время как IFS='/' читать -r _ ns; делать
а+=("$ns")
сделано < <(kubectl получить пространства имен --no-headers -o имя)
если в массиве "$val" "${a[@]}"; тогда
сбросить 'а'
{
в то время как IFS='/' читать -r _ ns; делать
а+=("$ns")
для i в "${!a[@]}"
делать
если [[ ${a[i]} == $val ]]; тогда
сбросить 'а [я]'
фи
сделано
сделано
} < <(kubectl получить пространства имен --no-headers -o имя)
printf '%s\n\n' "Исключая... $val"
для пространства имен в "${a[@]}"
делать
printf 'Удаление... %s\n' "$namespace"
сделано
еще
die "Пространство имен не найдено"
фи
Сделайте скрипт исполняемым:
chmod u+x exclude_ns_removal
Запустите его следующим образом:
./exclude_ns_removal -v куб-система
Результат будет примерно таким:
Исключая... kube-систему
Удаление... app-системы
Удаление... db-системы
Если вывод выглядит хорошо, вы должны изменить эту строку
printf 'Удаление... %s\n' "$namespace"
к
kubectl удалить пространство имен "$ namespace"