Kubernetes Openshift Клиентская аутентификация - PullRequest
0 голосов
/ 16 декабря 2018

Я работаю с 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местоположение токена не установлено, поэтому токен не может быть найден.Я не могу решить эту проблему самостоятельно.Может быть, я должен установить авторизацию заголовка: предъявитель самостоятельно.

Надеюсь, кто-то может помочь,

С наилучшими пожеланиями, Джерн

...