Custom Resources¶
Custom Resource Definition¶
Let us define a CRD (custom resource definition) for our object:
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: ephemeralvolumeclaims.kopf.dev
spec:
scope: Namespaced
group: kopf.dev
names:
kind: EphemeralVolumeClaim
plural: ephemeralvolumeclaims
singular: ephemeralvolumeclaim
shortNames:
- evcs
- evc
versions:
- name: v1
served: true
storage: true
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
x-kubernetes-preserve-unknown-fields: true
status:
type: object
x-kubernetes-preserve-unknown-fields: true
Note the short names: you can use them as aliases on the command line when getting a list or an object of that kind.
And apply the definition to the cluster:
kubectl apply -f crd.yaml
If you want to revert this operation (e.g., to try it again):
kubectl delete crd ephemeralvolumeclaims.kopf.dev
kubectl delete -f crd.yaml
Custom Resource Objects¶
We can already create objects of this kind, apply them to the cluster, and modify or delete them. Nothing will happen yet, since there is no logic implemented behind these objects.
Let us make a sample object:
apiVersion: kopf.dev/v1
kind: EphemeralVolumeClaim
metadata:
name: my-claim
This is the minimal YAML file needed, with no spec or fields inside. We will add them later.
Apply it to the cluster:
kubectl apply -f obj.yaml
Get a list of the existing objects of this kind with one of the commands:
kubectl get EphemeralVolumeClaim
kubectl get ephemeralvolumeclaims
kubectl get ephemeralvolumeclaim
kubectl get evcs
kubectl get evc
Note that the short names are those specified in the custom resource definition.
See also
kubectl imperative style (create/edit/patch/delete)
kubectl declarative style (apply)