Создание Kubernetes LoadBalancer возвращает немедленно (ex: kubectl create -f ...
или kubectl expose svc NAME --name=load-balancer --port=80 --type=LoadBalancer
).
Я знаю ручной способ ожидания в оболочке:
external_ip=""
while [ -z $external_ip ]; do
sleep 10
external_ip=$(kubectl get svc load-balancer --template="{{range .status.loadBalancer.ingress}}{{.ip}}{{end}}")
done
Это, однако, не идеально:
- Требуется не менее 5 строк Bash script.
- Бесконечное ожидание даже в случае ошибки (иначе требуется тайм-аут, который увеличивает количество строк в строке).
- Вероятно, неэффективен; может использовать
--wait
или--wait-once
, но используя команды, которые никогда не возвращаются.
Есть ли лучший способ подождать, пока не будет установлен или не установлен внешний IP-адрес службы (aka LoadBalancer Ingress IP)?