Як з 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 від будь-якої команди: