Запустить порт kubectl вперед в контейнере Docker не удается - PullRequest
0 голосов
/ 30 октября 2019

Я хочу запустить команду kubectl port-forward в программе, входящей в состав контейнера.

Код выглядит следующим образом:

list_pods = subprocess. \
        check_output(kub_props['get_pods'].format(**kwargs, **conf.config_data), shell=True).decode("utf-8")
    print(list_pods)
    pod_name = re.search(kub_props['re_pod_name'], list_pods).group(1)
    self.command = kub_props['port_forward'].format(pod_name=pod_name, **kwargs, **conf.config_data)
    print(self.command)
    self.sp: subprocess.Popen = subprocess.Popen(self.command.split(), shell=True)

Теперь ситуация такова: Iвсегда успешно получать список модулей (так что kubernetes и kubectl правильно настроены)

  • Если я запускаю код python непосредственно в моей сессии Windows-> OK
  • Если я запускаю командуперенести вперед в сеансе Linux -> ОК
  • Если я запустил программу в своем контейнере-> NOK.

Хотя, что еще страннее: кажется, что это не такНе понимая второй cli, тот, который нужно перенести вперед, и ответьте со списком возможных команд для kubectl THEN, он отображает список модулей (print 1), THEN команду (print 2) Спасибо

1 Ответ

0 голосов
/ 30 октября 2019

Вы почти наверняка должны использовать Kubernetes API вместо того, чтобы пытаться создавать сценарии для команд kubectl. Вы должны никогда создавать команды оболочки, используя операции форматирования строки;почти невозможно сохранить это в безопасности, и в описываемой вами настройке мотивированный злоумышленник может собирать информацию из любой службы, работающей в вашем кластере.

Перейти к клиенту Kubernetes Python репозиторий githubдля примеров.

...