Am creat următorul cod, așa că îl puteți folosi ca un wrapper. Puteți denumi scriptul cum doriți. De exemplu exclude_ns_removal
#!/usr/bin/env bash
a muri ()
{
ecou „$@” 1>&2
iesirea 1
}
utilizare ()
{
echo "utilizare: $0 [-h] [-v namespace_to_ignore] " 1>&2
iesirea 0
}
inarray ()
{
local n=$1 h
schimb
pentru h în „$@”
do
[[ $n = "$h" ]] && return
Terminat
întoarce 1
}
while getopts „:v:h” opt; do
cazul $opt in
h)
utilizare
;;
v)
caz $OPTARG în
'' | *[0-9]*)
die "Numărul de cifre nu este permis $OPTARG"
;;
*)
val=$OPTARG
;;
esac
;;
:)
die "argument necesar pentru a -$OPTARG"
;;
*)
die "comutator nevalid -$OPTARG"
;;
esac
Terminat
shift $((OPTIND - 1))
în timp ce IFS='/' citește -r _ ns; do
a+=("$ns")
terminat <<(kubectl obține spații de nume --no-headers -o nume)
if inarray "$val" "${a[@]}"; atunci
dezactivați „a”
{
în timp ce IFS='/' citește -r _ ns; do
a+=("$ns")
pentru i în „${!a[@]}”
do
dacă [[ ${a[i]} == $val ]]; atunci
dezactivați „a[i]”
fi
Terminat
Terminat
} < <(kubectl obține spații de nume --no-headers -o nume)
printf '%s\n\n' "Excluzând... $val"
pentru spațiul de nume în „${a[@]}”
do
printf „Se șterge... %s\n” „$namespace”
Terminat
altfel
die „Nu a fost găsit niciun spațiu de nume”
fi
Faceți scriptul executabil:
chmod u+x exclude_ns_removal
Rulați-l după cum urmează:
./exclude_ns_removal -v kube-system
Rezultatul va fi ceva de genul:
Excluzând ... kube-system
Se șterge... sistem de aplicații
Se șterge... db-system
Dacă rezultatul arată bine, ar trebui să modificați această linie
printf „Se șterge... %s\n” „$namespace”
la
kubectl șterge spațiul de nume „$namespace”