# Help Needed with Kubernetes Custom Resource Definitions (CRDs)

**URL:** <https://discuss.kubernetes.io/t/help-needed-with-kubernetes-custom-resource-definitions-crds/27025>\
**Category:** General Discussions\
**Created:** [February 8, 2024, 3:36pm UTC](https://discuss.kubernetes.io/t/help-needed-with-kubernetes-custom-resource-definitions-crds/27025 "2024-02-08T15:36:48Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Roberto\_Devops](https://sea2.discourse-cdn.com/flex016/user_avatar/discuss.kubernetes.io/roberto_devops/32/14252_2.png) [@Roberto\_Devops](https://discuss.kubernetes.io/u/Roberto_Devops)\
**Post date:** [February 8, 2024, 3:36pm UTC](https://discuss.kubernetes.io/t/help-needed-with-kubernetes-custom-resource-definitions-crds/27025/1 "2024-02-08T15:36:48Z")

</div>

Hello everyone,

I’m working on setting up Kubernetes Custom Resource Definitions (CRDs) for various use cases in my cluster. I’m aiming to cover both simple and complex scenarios. Any tip, tool to do it easily?.Simple Use Cases:  
Custom Metrics CRD:

Use Case: Define custom metrics for autoscaling Kubernetes resources.  
Example: A CRD defining a custom metric named request-per-second for autoscaling based on incoming HTTP requests.

```auto
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: custommetrics.example.com
spec:
  group: example.com
  names:
    kind: CustomMetric
    listKind: CustomMetricList
    plural: custommetrics
    singular: custommetric
  scope: Namespaced
  versions:
    - name: v1
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            request-per-second:
              type: integer

```

Custom Metrics Instance Creation (Request per Second):

```auto
apiVersion: example.com/v1
kind: CustomMetric
metadata:
  name: example-metric
spec:
  request-per-second: 100

```

Database Backup CRD:

Use Case: Define a CRD for scheduling backups of databases.  
Example: A CRD defining a backup resource for MySQL databases.

```auto
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: databasebackups.example.com
spec:
  group: example.com
  names:
    kind: DatabaseBackup
    listKind: DatabaseBackupList
    plural: databasebackups
    singular: databasebackup
  scope: Namespaced
  versions:
    - name: v1
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            database:
              type: string
            schedule:
              type: string

```

Database Backup Instance Creation:

```auto
apiVersion: example.com/v1
kind: DatabaseBackup
metadata:
  name: mysql-backup
spec:
  database: mysql-production
  schedule: "0 0 * * *"

```

Monitoring Alert CRD:

Use Case: Define custom alerts for monitoring systems.  
Example: A CRD defining an alert resource for Prometheus.

```auto
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: monitoringalerts.example.com
spec:
  group: example.com
  names:
    kind: MonitoringAlert
    listKind: MonitoringAlertList
    plural: monitoringalerts
    singular: monitoringalert
  scope: Namespaced
  versions:
    - name: v1
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            name:
              type: string
            severity:
              type: string
            description:
              type: string

```

Monitoring Alert Instance Creation:

```auto
apiVersion: example.com/v1
kind: MonitoringAlert
metadata:
  name: high-cpu-alert
spec:
  name: High CPU Usage
  severity: Critical
  description: Alert if CPU usage exceeds 90%

```

Task CRD:

Use Case: Define custom tasks for workflow orchestration.  
Example: A CRD defining a task resource for running ETL jobs.

```auto
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: tasks.example.com
spec:
  group: example.com
  names:
    kind: Task
    listKind: TaskList
    plural: tasks
    singular: task
  scope: Namespaced
  versions:
    - name: v1
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            name:
              type: string
            description:
              type: string
            deadline:
              type: string

```

Task Instance Creation:

```auto
apiVersion: example.com/v1
kind: Task
metadata:
  name: etl-job
spec:
  name: ETL Process
  description: Perform data extraction, transformation, and loading
  deadline: "2024-02-15T00:00:00Z"

```

Configuration CRD:

Use Case: Define custom configurations for applications.  
Example: A CRD defining a configuration resource for a microservice.

```auto
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: configurations.example.com
spec:
  group: example.com
  names:
    kind: Configuration
    listKind: ConfigurationList
    plural: configurations
    singular: configuration
  scope: Namespaced
  versions:
    - name: v1
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            service:
              type: string
            replicas:
              type: integer
            ports:
              type: array
              items:
                type: integer

```

Configuration Instance Creation:

```auto
apiVersion: example.com/v1
kind: Configuration
metadata:
  name: microservice-config
spec:
  service: my-microservice
  replicas: 3
  ports:
    - 80
    - 443

```

Complex Use Cases:  
Machine Learning Model CRD:

Use Case: Define custom resources for managing machine learning models.  
Example: A CRD defining resources for deploying and managing ML models.

```auto
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: mlmodels.example.com
spec:
  group: example.com
  names:
    kind: MLModel
    listKind: MLModelList
    plural: mlmodels
    singular: mlmodel
  scope: Namespaced
  versions:
    - name: v1
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            name:
              type: string
            framework:
              type: string
            version:
              type: string
            trainingData:
              type: string
            deploymentStatus:
              type: string

```

Machine Learning Model Instance Creation:

```auto
apiVersion: example.com/v1
kind: MLModel
metadata:
  name: mnist-model
spec:
  name: MNIST Classifier
  framework: TensorFlow
  version: 1.0
  trainingData: s3://my-bucket/mnist_data
  deploymentStatus: deployed

```

Multi-Cluster Application CRD:

Use Case: Define resources for managing applications across multiple Kubernetes clusters.  
Example: A CRD defining an application resource that spans multiple clusters.

```auto
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: multiclusterapps.example.com
spec:
  group: example.com
  names:
    kind: MultiClusterApp
    listKind: MultiClusterAppList
    plural: multiclusterapps
    singular: multiclusterapp
  scope: Cluster
  versions:
    - name: v1
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            name:
              type: string
            components:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                  replicas:
                    type: integer

```

Multi-Cluster Application Instance Creation:

```auto
apiVersion: example.com/v1
kind: MultiClusterApp
metadata:
  name: distributed-app
spec:
  name: Distributed Application
  components:
    - name: frontend
      replicas: 3
    - name: backend
      replicas: 5

```

Compliance Policy CRD:

Use Case: Define compliance policies for Kubernetes resources.  
Example: A CRD defining compliance policies for various regulations like GDPR or HIPAA.

```auto
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: compliancepolicies.example.com
spec:
  group: example.com
  names:
    kind: CompliancePolicy
    listKind: CompliancePolicyList
    plural: compliancepolicies
    singular: compliancepolicy
  scope: Cluster
  versions:
    - name: v1
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            name:
              type: string
            description:
              type: string
            regulations:

```
