java - 使用 fabric8 openshift-client 检索 openshift 资源列表
问题描述
我正在尝试使用 fabric8 openshift-client(或 kubernetes-client)获取给定集群的所有可能资源的列表,因此尝试获取与 command 相同的资源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 组列表的方法。然后,您可以获取每个版本的 api 资源,client.getApiResources()
以获取类似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()));
}));
}
推荐阅读
- python-3.x - 如何在通过python3读取一行csv文件时删除前一行
- import - mscrm 导入更新列映射引用属性
- r - 在 R- 两个问题中创建变量
- javascript - 如何从一个 div 转到滑块中的特定幻灯片?
- windows - HBase-testing-util:Windows 上的所有数据节点都是错误错误
- regex - 正则表达式,我如何提取字符串VBscript的一部分
- typescript - 打字稿字符串枚举访问
- javascript - 调用 PHP 脚本而不期望 js 中的任何返回
- angular - 页面下方的条目列表。就像将 2 个文本框控件添加到 formarray
- algorithm - MIPS中二叉树的最长路径