我想在包含在容器中的程序中运行命令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)
现在,情况是:我总是成功获取Pod列表(因此kubernetes和kubectl已正确配置)
尽管,仍然很奇怪:似乎它不理解第二个cli,一个要向前移植的cli,并用kubectl的可能命令列表来回答然后,显示窗格列表(打印1),然后显示命令(打印2)谢谢
您几乎绝对应该使用Kubernetes API,而不是尝试编写kubectl命令的脚本。您应该never使用字符串格式的操作创建shell命令;几乎不可能确保此安全,并且在您描述的设置中,有动机的攻击者可以从群集中运行的任何服务中收集信息。
转到Kubernetes Python client github存储库以获取示例。