2017-09-05 3 views
0

Ich habe minikube in meinem lokalen Rechner konfiguriert und werde kubernetes extern verwenden. Ich habe ein Dienstkonto in kubernetes erstellt und benutze das Geheimnis Ich kann das Zugriffstoken mit dem Befehl unten erhalten.Wie bekomme ich Zugang zum kubernetes-Serviceaccount-Token mit fabric8 java client?

Meine Frage ist, wie kann ich dies mit Fabric8 Java-Client in Runtime tun? Ich möchte das Zugriffstoken erhalten, indem ich das Geheimnis des Dienstkontos als Parameter gebe.

Ich initiiere die Konfiguration wie unten.

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

Kann ich wissen, wie die serviceAccountAccessToken zu erhalten, wie oben mit fabric8 Java-Client beschrieben?

Antwort

0

Das Serviceaccount-Token wird in einem Pod mit dem Volume /var/run/secrets/kubernetes.io/serviceaccount/tokenas seen here geladen. Die Tatsache, dass der Weg ist hart codiert in (zumindest v2.6.2 von) die fabric8 Client führt mich glauben, dass vielleicht, wenn man nur den withOauthToken() Aufruf läßt, dass die Client Gerade ™

arbeiten kann Es ist etwas unklar, ob die Code-Schnipsel Sie erwartet zur Verfügung gestellt außerhalb des Clusters laufen, aber wenn ja, dann haben Sie ein kleines Huhn-und-Ei-Problem auth an die API bereitzustellen, damit Sie die Secret

erwerben
+0

Matthew, danke für die Antwort. Ich muss dies sowohl innerhalb als auch außerhalb des Clusters unterstützen. Wie soll ich das dann handhaben? –

0

der Kunde bereits tut, für dich.

Wenn Sie nur ein leeres Objekt Config erstellen:

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

oder den Client erstellen, wie:

KubernetesClient client = new DefaultKubernetesClient(); 

aus einer Hülse, es wird das Token automatisch für Sie gelesen.

Wenn Sie es an anderer Stelle passieren, können Sie einfach:

String token = config.getOauthToken(); 

oder

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