如何使用fabric8 java客户端获取kubernetes服务帐户访问令牌?

时间:2017-09-05 04:05:26

标签: java kubernetes fabric8

我在本地机器中配置了minikube,并在外部使用kubernetes。我在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?

2 个答案:

答案 0 :(得分:0)

在Pod中,服务帐户令牌已安装为/var/run/secrets/kubernetes.io/serviceaccount/token as seen here。路径在(至少v2.6.2)fabric8 Client中进行硬编码这一事实让我相信,如果只是忽略了withOauthToken()可能Client Just Work™

稍微不清楚您提供的代码段是否应该在群集的外部运行,但如果是这样,那么您有一个小鸡蛋问题,即为API提供auth,这样您就可以了可以获得Secret

答案 1 :(得分:0)

客户已经为您做到了。

如果您只是创建一个空的Config对象:

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

或创建客户端,例如:

KubernetesClient client = new DefaultKubernetesClient();

从一个pod中,它会自动为你读取令牌。

如果您需要将其传递到其他地方,您可以:

String token = config.getOauthToken();

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