Как с tcpserver и netcat открыть туннель в Kubernetes pod или контейнер
Прим. перев.: Эта практическая заметка от создателя LayerCI — отличная иллюстрация так называемых tips & tricks для Kubernetes (и не только). Предлагаемое здесь решение — лишь одно из немногих и, пожалуй, не самое очевидное (для некоторых случаев может подойти уже упомянутый в комментариях «родной» для K8s kubectl port-forward). Однако оно позволяет как минимум посмотреть на проблему с позиции применения классических утилит и их дальнейшего комбинирования — одновременно простого, гибкого и мощного (см. «другие идеи» в конце для вдохновения).
Представьте типичную ситуацию: вы хотите, чтобы порт на локальном компьютере волшебным образом перенаправлял трафик в pod/контейнер (или наоборот).
Возможные сценарии использования
Проверить, что возвращает HTTP endpoint /healthz pod’а в production-кластере.
Подключить TCP-отладчик к pod’у на локальной машине.
Получить доступ к production-базе из локальных инструментов для работы с БД без необходимости возиться с аутентификацией (обычно у localhost’а есть права root’а).
Запустить одноразовый скрипт миграции для данных в staging-кластере без необходимости создавать для него контейнер.
Подключить сессию VNC к pod’у с запущенным виртуальным рабочим столом (см. XVFB).
Несколько слов о необходимых инструментах
Tcpserver — Open Source-утилита, доступная в большинстве репозиториев пакетов Linux. Она позволяет открыть локальный порт и перенаправить на него трафик, получаемый через stdin/stdout от любой указанной команды: