Я работаю с openshift 3.9 и пытаюсь составить список всех модулей в моем пространстве имен с клиентом fabirc8 Kubernetes (https://github.com/fabric8io/kubernetes-client).Я использую Java8 и клиент openshift в версии
<dependency>
<groupId>io.fabric8</groupId>
<artifactId>openshift-client</artifactId>
<version>4.1.0</version>
</dependency>
Внутри модуля я могу получить список модулей, используя bash
# using TLS connection with crt file defined
curl --cacert $CERT \
-H "Authorization: Bearer $TOKEN" \
https://$ENDPOINT/api/v1/namespaces/$NAMESPACE/pods
Это означает, что моя учетная запись службы имеет разрешениеперечислить стручки в пространстве имен.
С Java я не смог авторизовать струю.
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" io.fabric8.kubernetes.client.KubernetesClientException: Неожиданный ответ (401 не авторизован) на запрос авторизации.Отсутствует заголовок: [Местоположение]!по адресу io.fabric8.openshift.client.internal.OpenShiftOAuthInterceptor.authorize (OpenShiftOAuthInterceptor.java:128) по адресу io.fabric8.openshift.client.internal.OpenShiftOAuthInterceptor.intercept.OntinTorInTor.proceed (RealInterceptorChain.java:92) по адресу okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:67) по адресу okhttp3.RealCall.getResponseWithInterceptorChain (RealCall.jalltt.exc.Java: 129) в okhttp3.internal.NamedRunnable.run (NamedRunnable.java:32) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) в java.util.concurrent.ThreadPoolExecutor.java: 624) at 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местоположение токена не установлено, поэтому токен не может быть найден.Я не могу решить эту проблему самостоятельно.Может быть, я должен установить авторизацию заголовка: предъявитель самостоятельно.
Надеюсь, кто-то может помочь,
С наилучшими пожеланиями, Джерн