Недавно в клиенте Kubernetes была добавлена поддержка создания пользовательских ресурсов. Вы можете загрузить пользовательские определения ресурсов, но чтобы обеспечить использование пользовательских ресурсов, необходимых для предоставления модели для этого пользовательского ресурса, см. Старый CrdExample . Но теперь он стал менее типизированным (без предоставления какой-либо пользовательской модели ресурсов (Pojos) клиенту. Теперь вы можете создавать пользовательские ресурсы, подобные этой (я на 4.2.2
bdw):
Для пользовательского определения ресурса с именем animal:
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: animals.jungle.example.com
spec:
group: jungle.example.com
versions:
- name: v1
served: true
storage: true
scope: Namespaced
names:
plural: animals
singular: animals
kind: Animal
shortNames:
- al
Для создания пользовательских ресурсов вам необходимо предоставить CustomResourceDefinitionContext клиенту. В приведенном ниже примере показано создание с помощью InputStream или необработанной строки. Подробнее см. this .
CustomResourceDefinitionContext customResourceDefinitionContext = new CustomResourceDefinitionContext.Builder()
.withName("animals.jungle.example.com")
.withGroup("jungle.example.com")
.withVersion("v1")
.withPlural("animals")
.withScope("Namespaced")
.build();
// Create via file
Map<String, Object> object = client.customResource(customResourceDefinitionContext).create(currentNamespace, getClass().getResourceAsStream("/test-rawcustomresource.yml"));
// Create via raw json/yaml
String rawJsonCustomResourceObj = "{\"apiVersion\":\"jungle.example.com/v1\"," +
"\"kind\":\"Animal\",\"metadata\": {\"name\": \"walrus\"}," +
"\"spec\": {\"image\": \"my-awesome-walrus-image\"}}";
object = client.customResource(customResourceDefinitionContext).create(currentNamespace, rawJsonCustomResourceObj);