apiVersion: "stable.example.com/v1" (1)
kind: CronTab (2)
metadata:
name: my-new-cron-object (3)
finalizers: (4)
- finalizer.stable.example.com
spec: (5)
cronSpec: "* * * * /5"
image: my-awesome-cron-image
In the Kubernetes API a resource is an endpoint that stores a collection of API objects of a certain kind. For example, the built-in pods resource contains a collection of Pod objects.
A custom resource is an object that extends the Kubernetes API or allows you to introduce your own API into a project or a cluster.
A custom resource definition (CRD) file defines your own object kinds and lets the API Server handle the entire lifecycle.
While only cluster admins can create CRDs, you can create an object from a CRD if you have read and write permission to it. |
Custom objects can contain custom fields that contain arbitrary JSON code.
Create a CRD.
Create a YAML definition for the custom object. In the following example
definition, the cronSpec
and image
custom fields are set in a custom object
of kind CronTab
. The kind comes from the spec.kind
field of the
custom resource definition object.
apiVersion: "stable.example.com/v1" (1)
kind: CronTab (2)
metadata:
name: my-new-cron-object (3)
finalizers: (4)
- finalizer.stable.example.com
spec: (5)
cronSpec: "* * * * /5"
image: my-awesome-cron-image
1 | Specify the group name and API version (name/version) from the custom resource definition. |
2 | Specify the type in the custom resource definition. |
3 | Specify a name for the object. |
4 | Specify the finalizers for the object, if any. Finalizers allow controllers to implement conditions that must be completed before the object can be deleted. |
5 | Specify conditions specific to the type of object. |
After you create the object file, create the object:
oc create -f <file-name>.yaml
After you create objects, you can manage your custom resources.
Create a custom resource definition (CRD).
Create an object from a CRD.
To get information on a specific kind of custom resource, enter:
oc get <kind>
For example:
oc get crontab NAME KIND my-new-cron-object CronTab.v1.stable.example.com
Note that resource names are not case-sensitive, and you can use either the singular or plural forms defined in the CRD, as well as any short name. For example:
oc get crontabs oc get crontab oc get ct
You can also view the raw YAML data for a custom resource:
oc get <kind> -o yaml
oc get ct -o yaml apiVersion: v1 items: - apiVersion: stable.example.com/v1 kind: CronTab metadata: clusterName: "" creationTimestamp: 2017-05-31T12:56:35Z deletionGracePeriodSeconds: null deletionTimestamp: null name: my-new-cron-object namespace: default resourceVersion: "285" selfLink: /apis/stable.example.com/v1/namespaces/default/crontabs/my-new-cron-object uid: 9423255b-4600-11e7-af6a-28d2447dc82b spec: cronSpec: '* * * * /5' (1) image: my-awesome-cron-image (1)
1 | Custom data from the YAML that you used to create the object displays. |