Kubernetes Openshift客户端身份验证

时间:2018-12-16 15:27:45

标签: java kubernetes openshift fabric8

我正在使用openshift 3.9,并尝试使用fabirc8 Kubernetes-client(https://github.com/fabric8io/kubernetes-client)在我的命名空间中列出所有Pod。 我正在使用Java8和版本

的openshift客户端
 <dependency>
        <groupId>io.fabric8</groupId>
        <artifactId>openshift-client</artifactId>
        <version>4.1.0</version>
    </dependency>

在pod内,我可以使用bash获取pod列表

# using TLS connection with crt file defined
curl --cacert $CERT \
  -H "Authorization: Bearer $TOKEN" \
   https://$ENDPOINT/api/v1/namespaces/$NAMESPACE/pods

这意味着我的serviceaccount有权列出命名空间中的Pod。

使用Java时,我无法授权jet。

 try (OpenShiftClient client = new DefaultOpenShiftClient()) {
        System.out.println("Client opened is: " + client.getConfiguration().getOauthToken());
        client.pods().list().getItems().stream().forEach(
                p -> System.out.println("pod: " + p));
    }

即使我明确指定了带有builderConfig的客户端,错误也是如此 跟着:

  

线程“ OkHttp Dispatcher”中的异常io.fabric8.kubernetes.client.KubernetesClientException:对授权请求的意外响应(401未经授权)。标头缺失:[位置]!       在io.fabric8.openshift.client.internal.OpenShiftOAuthInterceptor.authorize(OpenShiftOAuthInterceptor.java:128)       在io.fabric8.openshift.client.internal.OpenShiftOAuthInterceptor.intercept(OpenShiftOAuthInterceptor.java:63)       在okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)       在okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)       在okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:179)       在okhttp3.RealCall $ AsyncCall.execute(RealCall.java:129)       在okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)       在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)       在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)       在java.lang.Thread.run(Thread.java:748)

问题似乎是此类: https://github.com/fabric8io/kubernetes-client/blob/master/openshift-client/src/main/java/io/fabric8/openshift/client/internal/OpenShiftOAuthInterceptor.java

在第132行中,未设置令牌的位置,因此找不到令牌。 我自己不能解决这个问题。也许我必须自己设置标题授权:不记名。

希望有人可以提供帮助,

最良好的祝愿 琼恩

0 个答案:

没有答案