Запуск «kubectl proxy» для одного запроса - PullRequest
0 голосов
/ 26 февраля 2019

Есть ли способ запустить kubectl proxy, дать ему команду в качестве ввода и завершить работу при получении ответа?

Я представляю что-то с -u (сокет unix)флаг, как это:

kubectl proxy -u - < $(echo "GET /api/v1/namespaces/default")

Я не думаю, что это возможно, но, возможно, мой сокет фу просто недостаточно силен.

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

kubectl proxy не даст вам никакого способа выполнить одноразовый запрос и завершить прокси.

Общий способ запустить команду в фоновом режиме, выполнить команду и завершить первоначально запущенную командунаконец, было бы написать сценарий bash, например:

#!/usr/bin/env bash
set -eu

kubectl proxy &
proxy_pid=$!
echo $proxy_pid

until curl -fsSL http://localhost:8001/ > /dev/null; do
    echo "waiting for kubectl proxy" >&2
    sleep 5
    # TODO add max retries so you can break out of this
done

curl http://localhost:8001/api/v1/namespaces/default

function cleanup {
    echo "killing kubectl proxy" >&2
    kill $proxy_pid
}
trap cleanup EXIT

Если вы действительно хотите использовать сокеты:

  • Запустите сокет домена Unix, как kubectl proxy -u ./foo.sock
  • Убедитесь, что ваш cURL поддерживает доменные сокеты Unix и звоните curl --unix-socket ./foo.sock http:/api/v1/namespaces/default и т. Д.
0 голосов
/ 27 февраля 2019

Для этого вам не нужен длительный kubectl proxy.

Попробуйте:

kubectl get --raw=/api/v1/namespaces/default
...