2 min read | by Jordi Prats
Let's face it, manually define a openAPIV3Schema definition is no easy task, so why not automating it? We can use this online CRD generator to be able to create it's definition from one sample object
Using the following sample object:
apiVersion: demo.pet2cattle.com/v1 kind: CronTab metadata: name: my-new-cron-object spec: cronSpec: "* * * * */5"
We'll get de CustomResourceDefinition that would allow us to create it:
apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: crontabs.demo.pet2cattle.com spec: group: demo.pet2cattle.com names: kind: CronTab plural: crontabs scope: Namespaced versions: - name: v1 served: true storage: true schema: openAPIV3Schema: type: object properties: spec: type: object properties: cronSpec: type: string
We can use it's offline cli tool, it takes the object as using the stdin:
$ cat samples/cron.yaml | python3 main.py 2>/dev/null apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition (...)
We can use it to be able to create any object we need, even emulate an OpenShift cluster by creating all the CRD definitions to be able to persist certain objects (without it's functionality)
Posted on 21/11/2022