java - 使用fabric8 openshift-client 检索openshift 资源列表

标签 java kubernetes openshift quarkus fabric8

我正在尝试使用fabric8 openshift-client(或kubernetes-client)获取给定集群的所有可能资源的列表,因此尝试获取与命令oc api-resources相同的资源。到目前为止,我可以使用这样的代码获取 apiGroups 列表

OpenShiftClient client = new DefaultOpenshiftClient();
List<APIService> apiservices = client.apiServices().list().getItems();
for (APIService apiservice : apiservices){
  System.out.println(apiservice.getSpec().getGroup());
}

现在我正在寻找如何获取属于特定组的资源列表(我在代码中看到有一个类名 APIResource),但我找不到它。

编辑:

虽然我在代码中看到有一个 getApiResources() 方法,但由于某种原因,Quarkus 2.3 上的 quarkus-kubernetes-client (或 quarkus-openshift-client)并未附带该方法

作为解决方法,我使用 kubernetes API 通过 RestClient 来访问/apis/{group}/{version} 和/api/v1

最佳答案

Fabric8 Kubernetes 客户端具有 client.getApiGroups() 方法来获取所有可用 api 组的列表。然后,您可以使用 client.getApiResources() 获取每个版本的 api 资源,以获取类似 kubectl api-resources 的输出。

我能够用这样的东西做到这一点。我正在使用 Fabric8 Kubernetes 客户端 v5.9.0:

try (KubernetesClient client = new DefaultKubernetesClient()) {
  APIGroupList apiGroupList = client.getApiGroups();

  apiGroupList.getGroups()
    .forEach(group -> group.getVersions().forEach(gv -> {
      APIResourceList apiResourceList = client.getApiResources(gv.getGroupVersion());
      apiResourceList.getResources()
        .stream()
        .filter(r -> !r.getName().contains("/"))
        .forEach(r -> System.out.printf("%s  %s   %s   %s   %s%n", r.getName(), String.join( ",", r.getShortNames()), 
          gv.getGroupVersion(), r.getNamespaced(), r.getKind()));
    }));
}

关于java - 使用fabric8 openshift-client 检索openshift 资源列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69766220/

相关文章:

java - Activiti引擎流程定义监听器

docker - 使用Kubernetes时,您真的需要在kubernetes中使用其他服务发现或API网关解决方案吗?

amazon-web-services - 如何从 kubernetes pod 中识别主机云提供商?

kubernetes - Kubernetes Deployment充分利用了cpu和内存而无须强调

mysql - 如何在Openshift中使用Navicat连接MySQL数据库

Java 8 Optionals,组合语句

java - 用于 selenium webdriver (java) 的 Eclipse 或 intelliJ IDEA?

git - 删除 openshift git/objects 文件夹

Java Applet 代码可以在浏览器中运行,但不能在 AppletViewer 中运行

openshift - 将 JAVA_OPTS 添加到 jboss-eap70-openshift