我正在尝试使用kubernetes java客户端的几个用例。
https://github.com/kubernetes-client/java
我们的kubernetes集群是通过OpenId身份验证实现的。
不幸的是,Java客户端不支持OpenId身份验证。
Java代码:-
final ApiClient client = io.kubernetes.client.util.Config.defaultClient();
Configuration.setDefaultApiClient(client);
CoreV1Api api = new CoreV1Api();
V1PodList list = api.listPodForAllNamespaces(null, null, null, null, null, null, null, null, null);
for (V1Pod item : list.getItems()) {
System.out.println(item.getMetadata().getName());
}
错误:-
13:25:22.549 [main] ERROR io.kubernetes.client.util.KubeConfig - Unknown auth provider: oidc
Exception in thread "main" io.kubernetes.client.ApiException: Forbidden
at io.kubernetes.client.ApiClient.handleResponse(ApiClient.java:882)
at io.kubernetes.client.ApiClient.execute(ApiClient.java:798)
at io.kubernetes.client.apis.CoreV1Api.listPodForAllNamespacesWithHttpInfo(CoreV1Api.java:18462)
at io.kubernetes.client.apis.CoreV1Api.listPodForAllNamespaces(CoreV1Api.java:18440)
是否有任何计划支持Java客户端进行OpenId身份验证。或者,还有其他方法吗?
谢谢
最佳答案
Apparently not,但到目前为止,更大的问题是:在Java设置中,oidc
auth-provider
会发生什么?只需使用id-token
?如果无法重新获得refresh-token
,是否可以使用id-token
并引发异常?一些回调系统让您自己管理生命周期?
尝试从库中执行oidc充满了危险,因为几乎可以确定没有“用户”可以与之交互。
Is there any plan to support OpenId auth with the Java client
只有项目维护者可以回答这个问题,而且当没有问题描述您期望发生的事情时,他们不太可能会优先考虑此类工作。随意create one。
Or, is there any other way?
同时,您仍然拥有
Config.fromToken()
,您可以在其中钓鱼.kube/config
并取出现有的id-token
,然后处理需要使用ApiException
的任何后续refresh-token
,因为您将了解有关客户愿意进行的折衷的更多信息。
关于kubernetes - Kubernetes Java客户端-OpenId OAuth支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50612912/