A Custom Resource Definition (CRD) is a Kubernetes API extension that lets you define your own resource types and objects, which the Kubernetes API server then manages alongside built-in resources like Pods and Deployments. By declaring a CRD's schema—its API group, version, and kind—you introduce a new custom resource (CR) that can be created, read, updated, and deleted using standard kubectl commands. This mechanism is foundational for the Operator Pattern, enabling the automation of domain-specific operational knowledge.
Glossary
Custom Resource Definition (CRD)

What is a Custom Resource Definition (CRD)?
A Custom Resource Definition (CRD) is the primary extension mechanism in Kubernetes, allowing users to define new resource types and objects that are managed natively by the Kubernetes API server.
For Edge AI Orchestration, CRDs are critical for modeling complex, stateful edge workloads. You can define resources like EdgeModel, InferenceSession, or DeviceFleet to declaratively manage the lifecycle of AI models across distributed hardware. A corresponding custom controller implements the control loop, observing these custom resources and executing reconciliation logic to deploy models, manage device configurations, and report status, thereby extending Kubernetes' native orchestration capabilities to the unique demands of edge computing.
Key Components of a CRD
A Custom Resource Definition (CRD) extends the Kubernetes API by defining a new resource type. Its core components specify the resource's schema, API endpoints, and versioning strategy.
API Group and Version
The API group (apiVersion field) categorizes related resources, like inferensys.com/v1alpha1. The version (v1alpha1, v1beta1, v1) indicates the stability and maturity of the CRD's schema. Multiple versions can be served simultaneously, with an internal storage version and a mechanism for conversion between them.
Kind and Plural
The Kind (e.g., EdgeInferenceJob) is the CamelCase type name used in YAML manifests. The plural name (e.g., edgeinferencejobs) forms the RESTful API endpoint path (/apis/inferensys.com/v1alpha1/edgeinferencejobs). These identifiers must be unique within the API group.
Schema (OpenAPI v3)
The schema is a structural blueprint defined using OpenAPI v3.0 validation. It specifies:
- Required and optional fields.
- Data types (string, integer, object).
- Default values and allowed enums.
- Nested object structures.
This schema enables the Kubernetes API server to validate the
specandstatusof all custom resource instances, preventing malformed configurations.
Scope: Namespaced vs. Cluster
Defines the resource's visibility and isolation.
- Namespaced: The resource exists within a namespace (e.g.,
prod,dev), enabling multi-tenancy and access control via RBAC. Most application-level CRDs are namespaced. - Cluster: The resource is cluster-wide, like a
NodeorPersistentVolume. Used for global infrastructure or cluster configuration objects.
Subresources: Status & Scale
Optional subresources enable advanced lifecycle management.
/status: A writable subresource allowing a custom controller to update the resource's status independently of its spec, following the controller pattern for state reconciliation./scale: Allows the resource to be managed by the Horizontal Pod Autoscaler (HPA), enabling automatic scaling based on custom metrics.
The Custom Controller
While not part of the CRD YAML itself, a custom controller is the essential runtime component. It is a control loop that watches for events (Create, Update, Delete) on the custom resource and executes domain-specific logic to reconcile the actual system state with the desired state declared in the resource's spec. This implements the Operator Pattern.
How CRDs Work in Edge AI Orchestration
A Custom Resource Definition (CRD) is the fundamental Kubernetes extension mechanism that enables the platform to manage custom objects, forming the backbone of sophisticated Edge AI orchestration systems.
A Custom Resource Definition (CRD) is a Kubernetes API extension that allows users to define their own resource types and objects, which can then be managed by the Kubernetes API server and controlled by custom controllers. In Edge AI, a CRD might define a resource like EdgeModel or InferencePipeline, encapsulating the desired state for an AI workload—such as the model version, hardware acceleration requirements, and data preprocessing steps—across a distributed fleet.
The Operator Pattern leverages CRDs to encode domain-specific operational knowledge for Edge AI. A custom controller watches for changes to these custom resources and executes state reconciliation loops to drive the actual state of edge devices—like deploying a quantized model to a Jetson device or scaling inference replicas based on sensor input—toward the declared desired state, automating complex lifecycle management without cloud dependency.
Common CRD Examples in Cloud-Native Ecosystems
Custom Resource Definitions (CRDs) enable the Kubernetes API to be extended for managing any type of declarative resource. Below are canonical examples of CRDs used to automate complex, stateful applications and infrastructure.
Frequently Asked Questions
Custom Resource Definitions (CRDs) are the fundamental extension mechanism of Kubernetes, enabling users to define their own API objects and resource types. This FAQ addresses common questions for CTOs and Platform Engineers orchestrating AI workloads at the edge.
A Custom Resource Definition (CRD) is a Kubernetes API extension mechanism that allows users to define new, custom resource types and objects, which are then managed by the Kubernetes API server and controlled by custom controllers. It works by extending the Kubernetes API with a new schema that defines the structure (the spec and status fields) of the custom object. Once a CRD is applied, the API server provides a dedicated RESTful endpoint (e.g., /apis/your-group/v1/namespaces/default/yourresources) for creating, reading, updating, and deleting instances of that custom resource. The actual business logic for these resources is implemented in a separate custom controller, which runs a reconciliation loop to watch for changes to the custom objects and take actions to drive the cluster's actual state toward the desired state declared in the object's spec.
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Related Terms
Custom Resource Definitions (CRDs) are a core Kubernetes extension mechanism. Understanding the related patterns and components is essential for building robust, automated edge AI orchestration platforms.
Custom Controller
A custom controller is a core component of the Operator Pattern and the primary consumer of a Custom Resource Definition. It is a software program that extends the Kubernetes control plane by implementing a reconciliation loop.
- Mechanism: The controller watches the Kubernetes API for events related to its custom resources (e.g., creation, update, deletion).
- Reconciliation Loop: Upon detecting a change, it reads the desired state from the custom resource object and executes imperative logic to make the real-world state (e.g., pods, services, external systems) match that declaration.
- Example: An
EdgeInferenceJobCRD would have a corresponding controller that creates pods on specific nodes, configures network policies, and reports status back to the CRD object.
Declarative Configuration
Declarative configuration is the foundational paradigm of Kubernetes, where users specify the desired end state of the system, not the steps to achieve it. CRDs are a direct extension of this paradigm, allowing users to define their own domain-specific desired states.
- Contrast with Imperative: Instead of running commands like
runorscale, you declare the final configuration in a YAML/JSON file (e.g.,replicas: 5). - Role of CRDs: A CRD lets you declare the desired state for your own abstractions, like
modelVersion: v2orhardwareAccelerator: npu. - System Responsibility: The Kubernetes control plane (and your custom controllers) are responsible for the continuous state reconciliation needed to achieve and maintain the declared state.
State Reconciliation
State reconciliation is the continuous control loop process where a system observes the actual state of the world and takes corrective actions to drive it toward a declared desired state. This is the core logic implemented within a custom controller for a CRD.
- Observe: The controller fetches the current state of its custom resources and the related cluster objects (Pods, Deployments).
- Diff: It compares the actual state against the desired state specified in the custom resource.
- Act: It executes API calls (create, patch, delete) to minimize the difference. For example, if an
EdgeModelCRD specifies 3 replicas but only 2 Pods are running, the controller creates a third Pod.
Admission Webhooks
Admission Webhooks are HTTP callbacks that receive admission requests and can modify (MutatingWebhook) or validate (ValidatingWebhook) Kubernetes objects during creation, update, or deletion. They are crucial for enforcing policies and mutating CRD-based objects.
- Integration with CRDs: After a user submits a manifest for a custom resource, admission webhooks can intercept the request before it is persisted to
etcd. - MutatingWebhook: Can inject default values, sidecar containers, or annotations into a CRD specification. For example, automatically adding a resource limit for an
EdgeAIWorkload. - ValidatingWebhook: Can enforce business logic, such as ensuring an
InferenceModelCRD references a valid, pre-loaded model file before allowing its creation.

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us