我们的客户端核心团队使用kubeconfig和客户端-go身份验证,执行python脚本来获取令牌。他们都用Mac。我和mingw64一起使用Windows。无论我如何尝试指定该脚本的路径:斜杠或经典Windows样式之间带有驱动器号的正斜杠(即使它存在于path中),即使我将脚本放入与kube文件相同的目录中,并且不指定任何路径,我也会得到Unable to connect to the server: getting credentials: exec: executable <our script name> not found。我可以在不指定从CLI到它的路径的情况下执行这个脚本。我只是在尝试kubectl get pods。相关的user:片段:
- name: someName
user:
exec:
apiVersion: client.authentication.k8s.io/v1beta1
args:
- --creds
- '%userprofile%\path\to\credentials.properties'
command: path\to\script
env: null问:如何在Windows环境下在kubeconfig的exec部分指定可执行文件?
发布于 2021-01-05 12:29:21
关于在Windows下使用kubeconfig的文档很少,因此,通过大量的尝试和错误以及@mdaniel的评论,我想出了以下解决方案:
我创建了一个Windows批处理文件,其中包含一行:@python <path-to-script> %*,并在command:中引用了exec:下的完整路径。
我不得不使用%*,因为python脚本接受参数。
@防止Windows在运行批处理时在控制台中回显此命令。
我无法执行command: <path-to-python>\python <path-to-script>,因为kubernetes仍然抱怨它找不到具有这样名称的可执行文件。
另外,如果您在kubeconfig中使用诸如%userprofile%这样的Windows环境变量,则需要在单引号中引用它们。
发布于 2020-12-30 23:10:37
Kubernetes客户端-go已经有了使用kubeconfig进行身份验证的辅助方法。它包含两个变体,并有很好的例子:
我建议使用两个内置的助手方法,而不是滚动自定义的变体。您可能需要添加一个参数,以便在两者之间进行切换,例如,在Windows上本地运行时使用out集群,在应用程序(如果您的代码是应用程序的话)中使用集群内?作为群集中的服务运行。
https://serverfault.com/questions/1048051
复制相似问题