added todo

This commit is contained in:
ston1th 2019-08-12 23:22:44 +02:00
commit addd3ea953
2 changed files with 45 additions and 36 deletions

View file

@ -30,3 +30,9 @@ kubectl delete -f pod.yaml
kubectl delete -f rbac.yaml kubectl delete -f rbac.yaml
kubectl delete -f crd.yaml kubectl delete -f crd.yaml
``` ```
## Todo
+ check all namespaces for `gw` and `vs`
* kucectl no stdout
* explore https://kubernetes.io/docs/concepts/workloads/controllers/garbage-collection/

View file

@ -32,8 +32,8 @@ spec:
action: "$6" action: "$6"
EOF EOF
} }
getmap() { kubectl get refmap $1 -ojson; } getmap() { kubectl get refmap "$1" -ojson; }
delmap() { kubectl delete refmap $1; } delmap() { kubectl delete refmap "$1"; }
mkgw() { mkgw() {
kubectl apply -f - <<EOF kubectl apply -f - <<EOF
@ -53,7 +53,7 @@ spec:
hosts: ["$3"] hosts: ["$3"]
EOF EOF
} }
delgw() { kubectl -n $2 delete gateway $1; } delgw() { kubectl -n "$2" delete gateway "$1"; }
mkvs() { mkvs() {
kubectl apply -f - <<EOF kubectl apply -f - <<EOF
@ -101,10 +101,10 @@ addvs() {
} }
EOF EOF
) )
kubectl -n $2 get virtualservice $1 -ojson | jq ".spec.http |= [${insert}] + ." | kubectl -n $2 apply -f - kubectl -n "$2" get virtualservice "$1" -ojson | jq ".spec.http |= [${insert}] + ." | kubectl -n "$2" apply -f -
} }
clearvs() { kubectl -n $2 get virtualservice $1 -ojson | jq -r '.spec.http |= .[1:]' | kubectl -n $2 apply -f -; } clearvs() { kubectl -n "$2" get virtualservice "$1" -ojson | jq -r '.spec.http |= .[1:]' | kubectl -n "$2" apply -f -; }
delvs() { kubectl -n $2 delete virtualservice $1; } delvs() { kubectl -n "$2" delete virtualservice "$1"; }
mkdr() { mkdr() {
kubectl apply -f - <<EOF kubectl apply -f - <<EOF
@ -120,7 +120,50 @@ spec:
mode: DISABLE mode: DISABLE
EOF EOF
} }
deldr() { kubectl -n $2 delete destinationrule $1; } deldr() { kubectl -n "$2" delete destinationrule "$1"; }
add() {
res=$1
ns=$2
tmp=$(mktemp)
kubectl -n ${ns} get ingress ${res} -ojson >${tmp} || return 0
host=$(jq -r '.spec.rules[0].host' ${tmp})
svcName=$(jq -r '.spec.rules[0].http.paths[0].backend.serviceName' ${tmp})
svcPort=$(jq -r '.spec.rules[0].http.paths[0].backend.servicePort' ${tmp})
path=$(jq -r '.spec.rules[0].http.paths[0].path' ${tmp})
rm -f ${tmp}
gwName=
for gw in $(kubectl -n ${ns} get gateway -ojson | jq -r '.items[] | .metadata.name'); do
contains=$(kubectl -n ${ns} get gateway ${gw} -ojson | jq -r ".spec.servers[0].hosts | contains([\"${host}\"])")
[[ "${contains}" == "true" ]] && { gwName=${gw}; break; }
done
if [[ "${gwName}" == "" ]]; then
gwName=${res}
gwAction=delete
else
gwAction=none
fi
vsName=
vsAction=
for vs in $(kubectl -n ${ns} get virtualservice -ojson | jq -r '.items[] | .metadata.name'); do
contains=$(kubectl -n ${ns} get virtualservice ${vs} -ojson | jq -r ".spec.hosts | contains([\"${host}\"])")
[[ "${contains}" == "true" ]] && { vsName=${vs}; break; }
done
if [[ "${vsName}" == "" ]]; then
vsName=${res}
vsAction=delete
else
vsAction=clear
fi
mkmap "${res}" "${ns}" "${gwName}" "${gwAction}" "${vsName}" "${vsAction}"
[[ "${gwAction}" == "delete" ]] && mkgw "${gwName}" "${ns}" "${host}"
[[ "${vsAction}" == "delete" ]] && mkvs "${vsName}" "${ns}" "${host}" "${path}" "${svcName}" "${svcPort}" \
|| addvs "${vsName}" "${ns}" "${path}" "${svcName}" "${svcPort}"
mkdr "${res}" "${ns}" "${svcName}"
}
delete() { delete() {
tmp=$(mktemp) tmp=$(mktemp)
@ -133,7 +176,7 @@ delete() {
rm -f ${tmp} rm -f ${tmp}
if [[ "${gwName}" != "" ]]; then if [[ "${gwName}" != "" ]]; then
case ${gwAction} in case ${gwAction} in
delete) delgw "${gwName}" "${ns}" ;; delete) delgw "${gwName}" "${ns}" ;;
none|*) ;; none|*) ;;
esac esac
fi fi
@ -146,43 +189,3 @@ delete() {
deldr "$1" "${ns}" deldr "$1" "${ns}"
delmap "$1" delmap "$1"
} }
add() {
res=$1
ns=$2
tmp=$(mktemp)
kubectl -n ${ns} get ingress ${res} -ojson >${tmp} || return 0
host=$(jq -r '.spec.rules[0].host' ${tmp})
svcName=$(jq -r '.spec.rules[0].http.paths[0].backend.serviceName' ${tmp})
svcPort=$(jq -r '.spec.rules[0].http.paths[0].backend.servicePort' ${tmp})
path=$(jq -r '.spec.rules[0].http.paths[0].path' ${tmp})
rm -f ${tmp}
gwName=
for gw in $(kubectl -n ${ns} get gateway -ojson | jq -r '.items[] | .metadata.name'); do
contains=$(kubectl -n ${ns} get gateway ${gw} -ojson | jq -r ".spec.servers[0].hosts | contains([\"${host}\"])")
[[ "${contains}" == "true" ]] && { gwName=${gw}; break; }
done
if [[ "${gwName}" == "" ]]; then
gwName=${res}
mkgw "${gwName}" "${ns}" "${host}"
gwAction=delete
else
gwAction=none
fi
vsName=
vsAction=
for vs in $(kubectl -n ${ns} get virtualservice -ojson | jq -r '.items[] | .metadata.name'); do
contains=$(kubectl -n ${ns} get virtualservice ${vs} -ojson | jq -r ".spec.hosts | contains([\"${host}\"])")
[[ "${contains}" == "true" ]] && { vsName=${vs}; break; }
done
if [[ "${vsName}" == "" ]]; then
vsName=${res}
mkvs "${vsName}" "${ns}" "${host}" "${path}" "${svcName}" "${svcPort}"
vsAction=delete
else
addvs "${vsName}" "${ns}" "${path}" "${svcName}" "${svcPort}"
vsAction=clear
fi
mkdr "${res}" "${ns}" "${svcName}"
mkmap "${res}" "${ns}" "${gwName}" "${gwAction}" "${vsName}" "${vsAction}"
}