Я из команды Fabric8. Клиент Fabric8 Kubernetes поддерживает создание настраиваемых объектов двумя способами:
- Типизированный API (требуется наличие настраиваемой модели ресурса (POJO))
- Типовой API (обрабатывает настраиваемый ресурс как простые HashMaps)
Типизированный API:
Предполагается, что у вас уже есть POJO для ClusterResourceQuota
и ClusterResourceQuotaList
. Вы можете создать экземпляр клиента kubernetes для этого c настраиваемого ресурса, подобного этому, и использовать его для операций с настраиваемым ресурсом:
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);
}
Typeless API
Если у вас нет POJO, вы можете использовать Raw API Fabric8 Kubernetes Client для работы с настраиваемыми ресурсами. Вот как это сделать:
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();
}
Вы также можете просмотреть эти блоги для типизированных и безтиповых подходов подробно.