2017-09-05 2 views
0

J'ai configuré minikube sur ma machine locale et j'utiliserai kubernetes en externe. J'ai créé un compte de service dans kubernetes et en utilisant son secret, je peux obtenir le jeton d'accès en utilisant la commande ci-dessous.Comment obtenir un jeton d'accès au compte de service kubernetes en utilisant le client java fabric8?

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

Ma question est comment puis-je faire cela en utilisant client java fabric8 en cours d'exécution? Ce que je veux, c'est obtenir le jeton d'accès en donnant le secret du compte de service en tant que paramètre.

Je lance la configuration comme ci-dessous.

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

Puis-je savoir comment obtenir le serviceAccountAccessToken comme décrit ci-dessus avec le client java fabric8?

Répondre

0

A partir d'un pod, le jeton de compte de service est monté en volume en tant que /var/run/secrets/kubernetes.io/serviceaccount/tokenas seen here. Le fait que le chemin est codé en dur (au moins v2.6.2 de) la fabric8 Client me conduit à croire que peut-être si l'on omet simplement l'appel withOauthToken() que le Client peut fonctionner tout simplement ™

Il est un peu difficile de savoir si la extrait de code que vous avez fourni est prévu pour fonctionner en dehors du cluster, mais si oui, alors vous avez un petit problème de la poule et de l'oeuf de fournir auth à l'API afin que vous puissiez acquérir les Secret

+0

Matthieu, merci pour la réponse. Je dois soutenir cela à la fois à l'intérieur et à l'extérieur du cluster. Comment dois-je gérer cela alors? –

0

le client fait déjà pour toi.

Si vous venez de créer un objet vide Config:

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

ou créer le client, comme:

KubernetesClient client = new DefaultKubernetesClient(); 

à l'intérieur d'une nacelle, il lit automatiquement le jeton pour vous.

Si vous devez passer ailleurs, il vous suffit:

String token = config.getOauthToken(); 

ou

String token = client.getConfiguration().getOauthToken();