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

nr9pn0ug  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(480)

我已经在本地机器上配置了minikube,并打算在外部使用kubernetes。我已经在kubernetes中创建了一个服务帐户,使用它的秘密,我可以使用下面的命令获得访问令牌。

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

我的问题是如何在运行时使用Fabric8Java客户机实现这一点?我想要的是通过将服务帐户的秘密作为参数来获取访问令牌。
我正在启动下面的配置。

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

我可以知道如何使用Fabric8Java客户机获取如上所述的serviceaccountaccesstoken吗?

js81xvg6

js81xvg61#

客户已经帮你做了。
如果只是创建一个空的配置对象:

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

或创建客户端,如:

KubernetesClient client = new DefaultKubernetesClient();

在吊舱内,它会自动为你读取令牌。
如果您需要在其他地方传递,您可以:

String token = config.getOauthToken();

或者

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

zzoitvuj2#

在pod中,服务帐户令牌作为卷装载 /var/run/secrets/kubernetes.io/serviceaccount/token 如图所示。路径在fabric8中硬编码(至少是v2.6.2) Client 使我相信,如果一个人仅仅忽略了 withOauthToken() 那叫 Client 可能只是工作™
目前还不清楚您提供的代码片段是否应该在集群之外运行,但如果是这样的话,那么您在向api提供auth以便获取 Secret

相关问题