2017-09-05 296 views
0

我已經在我的本地機器上配置了minikube,並在外部使用kubernetes。我在kubernetes中創建了一個服務帳戶,並使用它的祕密,我可以使用下面的命令獲取訪問令牌。如何使用fabric8 java客戶端獲取kubernetes服務帳戶訪問令牌?

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

我的問題是我怎麼能在運行時使用fabric8 java客戶端?我想要的是通過將服務帳戶的祕密作爲參數來獲取訪問令牌。

我正在初始化配置,如下圖所示。

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

我可以知道如何使用fabric8 java客戶端獲取serviceAccountAccessToken嗎?

回答

0

從Pod內,服務帳戶令牌被批量安裝爲/var/run/secrets/kubernetes.io/serviceaccount/tokenas seen here。在fabric8 Client使我的路徑是(至少V2.6.2)硬編碼的事實認爲,或許如果僅僅是一個省略了withOauthToken()電話說Client可能只是工作™

這是稍微不清楚是否代碼片斷您提供有望聚類外的運行,但如果是這樣,那麼你必須提供身份驗證的API,以便您可以獲取Secret

+0

馬修,感謝您的答覆。我需要從集羣內部和外部支持這一點。那我應該怎麼處理呢? –

0

客戶端已經做的是小雞還是先有蛋的問題爲你。

如果你只是創建一個空的配置對象:

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

或創建客戶端,如:

KubernetesClient client = new DefaultKubernetesClient(); 

從吊艙內,它會自動讀取你的令牌。

如果你需要在其他地方通過它,你可以:

String token = config.getOauthToken(); 

String token = client.getConfiguration().getOauthToken(); 
相關問題