# Extend the Kubernetes API with CRD (CustomResourceDefinition) - Note: CRD is part of the new CKAD syllabus. Here are a few examples of installing custom resource into the Kubernetes API by creating a CRD. ## CRD in K8s ### Create a CustomResourceDefinition manifest file for an Operator with the following specifications : * *Name* : `operators.stable.example.com` * *Group* : `stable.example.com` * *Schema*: `` * *Scope*: `Namespaced` * *Names*: `` * *Kind*: `Operator`
show

```yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: # name must match the spec fields below, and be in the form: . name: operators.stable.example.com spec: group: stable.example.com versions: - name: v1 served: true # One and only one version must be marked as the storage version. storage: true schema: openAPIV3Schema: type: object properties: spec: type: object properties: email: type: string name: type: string age: type: integer scope: Namespaced names: plural: operators singular: operator # kind is normally the CamelCased singular type. Your resource manifests use this. kind: Operator shortNames: - op ```

### Create the CRD resource in the K8S API
show

```bash kubectl apply -f operator-crd.yml ```

### Create custom object from the CRD * *Name* : `operator-sample` * *Kind*: `Operator` * Spec: * email: `operator-sample@stable.example.com` * name: `operator sample` * age: `30`
show

```yaml apiVersion: stable.example.com/v1 kind: Operator metadata: name: operator-sample spec: email: operator-sample@stable.example.com name: "operator sample" age: 30 ``` ```bash kubectl apply -f operator.yml ```

### Listing operator
show

Use singular, plural and short forms ```bash kubectl get operators or kubectl get operator or kubectl get op ```