2017-09-05 298 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(); 
相关问题