如何使用fabric8 java客户端获取kubernetes服务帐户访问令牌?
问题描述:
我已经在我的本地机器上配置了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吗?
答
从Pod内,服务帐户令牌被批量安装为/var/run/secrets/kubernetes.io/serviceaccount/token
as seen here。在fabric8 Client
使我的路径是(至少V2.6.2)硬编码的事实认为,或许如果仅仅是一个省略了withOauthToken()
电话说Client
可能只是工作™
这是稍微不清楚是否代码片断您提供有望聚类外的运行,但如果是这样,那么你必须提供身份验证的API,以便您可以获取Secret
答
客户端已经做的是小鸡还是先有蛋的问题为你。
如果你只是创建一个空的配置对象:
Config config = new ConfigBuilder().build();
或创建客户端,如:
KubernetesClient client = new DefaultKubernetesClient();
从吊舱内,它会自动读取你的令牌。
如果你需要在其他地方通过它,你可以:
String token = config.getOauthToken();
或
String token = client.getConfiguration().getOauthToken();
马修,感谢您的答复。我需要从集群内部和外部支持这一点。那我应该怎么处理呢? –