Как получить токен доступа к учетной записи службы Kubernetes с помощью Java-клиента fabric8?

Я настроил minikube на своем локальном компьютере и собираюсь использовать кубернеты извне. Я создал учетную запись службы в kubernetes и, используя ее секрет, я могу получить токен доступа, используя команду ниже.

kubectl get secret <service-account-secret> -o yaml -n mynamespace

Мой вопрос в том, как я могу это сделать с помощью java-клиента fabric8 во время выполнения? Я хочу получить токен доступа, указав в качестве параметра секрет учетной записи службы.

Я запускаю конфигурацию, как показано ниже.

Config config = new ConfigBuilder().withMasterUrl(masterURL)
                .withClientCertFile(certFile).withOauthToken(serviceAccountAccessToken).build();

Могу ли я узнать, как получить serviceAccountAccessToken, как описано выше, с помощью java-клиента fabric8?


person Chamalee De Silva    schedule 05.09.2017    source источник


Ответы (2)


Маркер учетной записи службы внутри модуля монтируется как /var/run/secrets/kubernetes.io/serviceaccount/token , как показано здесь. Тот факт, что путь жестко запрограммирован (по крайней мере, v2.6.2) в fabric8 Client, заставляет меня думать, что, возможно, если просто опустить вызов withOauthToken(), Client может просто работать

Немного неясно, будет ли предоставленный вами фрагмент кода запускаться вне кластера, но если да, то у вас есть небольшая проблема с курицей и яйцом, связанная с предоставлением аутентификации API, чтобы вы могли получить Secret

person mdaniel    schedule 06.09.2017
comment
Мэтью, спасибо за ответ. Мне нужно поддерживать это как изнутри, так и вне кластера. Как мне тогда с этим справиться? - person Chamalee De Silva; 07.09.2017

Клиент уже делает это за вас.

Если вы просто создаете пустой объект Config:

Config config = new ConfigBuilder().build();

или создайте клиента, например:

KubernetesClient client = new DefaultKubernetesClient();

из модуля он автоматически прочитает токен для вас.

Если вам нужно передать его где-то еще, вы можете просто:

String token = config.getOauthToken();

or

String token = client.getConfiguration().getOauthToken();
person iocanel    schedule 14.09.2017
comment
как мы можем получить oauthtoken из внешнего кластера с клиентом? - person ImranRazaKhan; 02.11.2019