【问题标题】:Retrieve list of openshift resources with fabric8 openshift-client使用 fabric8 openshift-client 检索 openshift 资源列表
【发布时间】:2021-12-14 08:55:30
【问题描述】:

我正在尝试使用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

【问题讨论】:

    标签: java kubernetes openshift quarkus fabric8


    【解决方案1】:

    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()));
        }));
    }
    

    【讨论】:

    • 这就是我尝试的原因,但 KubernetesClient 或 OpenShiftClient 没有使用该方法,它是随 getApiVersions() 提供的,但不是随 getApiResources() 提供的。 Quarkus 2.3 中附带 quarkus-openshift 客户端
    • 此方法是在 v5.9.0 的此 PR 中添加的:github.com/fabric8io/kubernetes-client/pull/3487。 quarkus-openshift 客户端基于旧版本的 fabric8 kubernetes 客户端。每当 quarkus 升级它的 fabric8 依赖项时,您应该能够使用此方法
    猜你喜欢
    • 2020-11-09
    • 2018-10-18
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 2022-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多