Openshift REST端点模型jars

问题描述 投票:1回答:1

我试图调用Redhat openshift从我的Java应用程序公开的REST端点,以获取命名空间中的部署列表。

GET /apis/extensions/v1beta1/namespaces/$NAMESPACE/deployments HTTP/1.1
Authorization: Bearer $TOKEN
Accept: application/json
Connection: close

我手动创建了与此端点返回的响应相对应的模型Java类。我在HTTP标头中对承载令牌进行了硬编码,并在java中调用了其余端点以获取部署列表。得到响应后,我将响应解析为我创建的这些模型类。

问题1:

有没有地方可以获取与响应对象相对应的jar,可以直接将其导入到我的Java代码中,而不是手动创建响应模型并将响应json解析为这些模型?

问题2:

什么是用于检索Bearer令牌的Openshift REST端点。

java spring-boot openshift redhat kubernetes-helm
1个回答
0
投票

[从Java与Kubernetes / OpenShift交互时,我建议使用Java Kubernetes客户端:https://github.com/kubernetes-client/java

您还可以在存储库中找到有关如何使用Java API的examples

[..]

public class Example {
  public static void main(String[] args) throws IOException, ApiException {
    ApiClient client = Config.defaultClient();
    Configuration.setDefaultApiClient(client);

    CoreV1Api api = new CoreV1Api();
    V1PodList list =
        api.listPodForAllNamespaces(null, null, null, null, null, null, null, null, null);
    for (V1Pod item : list.getItems()) {
      System.out.println(item.getMetadata().getName());
    }
  }
}

使用上述库时,不需要获取Bearer令牌,因为这全部由客户端处理。

尽管如此,OpenShift implements OAuth,这意味着您可以使用标准OAuth端点查询OpenShift OAuth服务器。

如果要从外部来源使用ServiceAccount,则可以找到有关如何获取令牌in the documentation的描述:

$ oc describe secret robot-token-uzkbh -n top-secret
Name:       robot-token-uzkbh
Labels:     <none>
Annotations:    kubernetes.io/service-account.name=robot,kubernetes.io/service-account.uid=49f19e2e-16c6-11e5-afdc-3c970e4b7ffe

Type:   kubernetes.io/service-account-token

Data

token:  eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
[..]
© www.soinside.com 2019 - 2024. All rights reserved.