当前位置: 首页 > 知识库问答 >
问题:

Fabric8:OpenShift/Kubernetes java客户机,创建像ClusterResourceQuota这样的自定义对象

黎玺
2023-03-14

我被特定的openshift对象ClusterResourceQuota(quota.openshift.io/v1)所困扰,它没有被fabric8Io-kubernetes-client公开。

是否有其他方法来创建这样的对象,即使从文件加载...?

共有1个答案

彭鹭洋
2023-03-14

我是Fabric8队的。Fabric8 Kubernetes客户端支持通过两种方式创建自定义对象:

  • 类型化API(需要提供自定义资源模型)
  • 无类型API(将自定义资源作为普通HashMaps处理)

假设您已经为ClusterResourceQuotaClusterResourceQuota提供了POJO。您可以像这样为特定的自定义资源创建kubernetes客户机实例,并将其用于自定义资源操作:

try (KubernetesClient client = new DefaultKubernetesClient()) {
    // Create ClusterResourceQuota object
    ClusterResourceQuota clusterResourceQuota = getClusterResourceQuota();

    // ClusterResourceQuota Client
    MixedOperation<ClusterResourceQuota, ClusterResourceQuotaList, DoneableClusterResourceQuota, Resource<ClusterResourceQuota, DoneableClusterResourceQuota>> clusterResourceQuotaClient = null;
    CustomResourceDefinitionContext context = new CustomResourceDefinitionContext
            .Builder()
            .withGroup("quota.openshift.io")
            .withKind("ClusterResourceQuota")
            .withName("clusterresourcequota-crd")
            .withPlural("clusterresourcequotas")
            .withScope("Namespaced")
            .withVersion("v1")
            .build();

    // Initializing ClusterResourceQuota Client, POJOs to be provided
    clusterResourceQuotaClient = client.customResources(context, ClusterResourceQuota.class, ClusterResourceQuotaList.class, DoneableClusterResourceQuota.class);
    // Using ClusterResourceQuota Client to create ClusterResourceQuota resource
    clusterResourceQuotaClient.inNamespace("default").createOrReplace(clusterResourceQuota);
}
try (KubernetesClient client = new DefaultKubernetesClient()) {
    // Create Custom Resource Context
    CustomResourceDefinitionContext context = new CustomResourceDefinitionContext
            .Builder()
            .withGroup("quota.openshift.io")
            .withKind("ClusterResourceQuota")
            .withName("clusterresourcequota-crd")
            .withPlural("clusterresourcequotas")
            .withScope("Namespaced")
            .withVersion("v1")
            .build();

    // Load from Yaml
    Map<String, Object> clusterResourceQuota = client.customResource(context)
            .load(CustomResourceCreateDemoTypeless.class.getResourceAsStream("/clusterquota-cr.yml"));
    // Create Custom Resource
    client.customResource(context).create("default", clusterResourceQuota);
} catch (IOException e) {
    e.printStackTrace();
}
 类似资料:
  • 有了Docker,我只需要提供Docker_主机和适当的凭据,fabric8插件就可以构建我的容器映像。只要Docker注册表可用,就不需要在生成映像的实际主机上安装Docker相关的基础设施(例如my Bambole agent)。 使用OpenShift,我似乎找不到这样做的方法。相反,我似乎必须在安装了OpenShift的主机上运行maven goals,该主机必须是RedHat Linux

  • 我在Cloud Foundry环境中将Spring CloudNetflixRibbon与Eureka结合使用。 我尝试实现的用例如下: > 我有一个名为的正在运行的CF应用程序,其中包含多个实例。 实例正在通过服务名称注册到Eureka 我使用eureka向服务实例添加了自定义元数据。例子元数据映射。应用程序id:${vcap.application.application\u id} 我想使用

  • 问题内容: 对于使用嵌套客户端的Elasticsearch非常新,我正在使用自定义分析器创建索引,但是在使用分析进行测试时,它似乎并未使用自定义分析器。主要没有Edgengram令牌出现。我缺少什么使我的自定义分析器成为索引的默认设置吗?当我使用elastichq检查映射时,它们会显示我的自定义分析器。 问题答案: 您已将自定义分析器添加到索引中,但是现在您需要将其应用到字段中。您可以在字段映射级

  • 我在创建包含自定义对象数组的数组时遇到了问题。 出于多种原因,我希望将容器创建为可比较数组的标准数组: 其中包含的每个自定义对象数组必须具有不同的长度 自定义对象数组内置了自动排序工具,这些工具不适合我希望它们适合的较大包含数组 自定义对象数组可以工作,并且已经过彻底测试。 我在创建较大对象时收到的例外情况是: 线程“main”中出现异常java.lang.ClassCastException: