A Custom Resource Definition (CRD) is a Kubernetes API extension that allows developers to define new, custom object types tailored to their specific application or infrastructure needs. By registering a CRD, users instruct the Kubernetes API server to recognize and serve a new RESTful resource endpoint, effectively teaching the cluster to manage domain-specific state beyond built-in primitives like Pods or Services. This enables the declarative management of complex, stateful workloads using the same versioned, schema-validated API machinery that governs core resources.
Glossary
Custom Resource Definition (CRD)

What is a Custom Resource Definition (CRD)?
A Custom Resource Definition (CRD) is the mechanism for extending the Kubernetes API to support domain-specific object types, enabling the management of custom resources using native `kubectl` commands and declarative workflows.
Once a CRD is created, instances of that resource—called Custom Resources (CRs)—can be provisioned and their lifecycle managed by a Kubernetes Operator. The Operator runs a continuous reconciliation loop, comparing the observed state of the custom resource against its declared desired state and automatically executing corrective actions to remediate any drift. This pattern is foundational to Zero-Touch Provisioning in cloud-native telecom, where CRDs model network functions like 5G cores or RAN components, allowing the platform to autonomously deploy, scale, and heal complex infrastructure without manual intervention.
Key Features of CRDs
Custom Resource Definitions extend the Kubernetes API to model domain-specific infrastructure, enabling telecom operators to manage RAN functions using native Kubernetes tooling and declarative reconciliation loops.
Declarative Schema Definition
A CRD defines a new RESTful API endpoint in Kubernetes by specifying an OpenAPI v3 schema. This schema enforces strict validation on the desired state of custom resources, ensuring that every instance of a network function—such as a distributed unit (DU) or centralized unit (CU)—conforms to a well-defined structural contract before it is persisted to etcd. The schema specifies required fields, data types, and immutable constraints, preventing configuration drift at the point of ingestion.
Custom Resource Lifecycle Management
Once a CRD is registered, users can create, read, update, and delete (CRUD) instances of the custom resource via kubectl or the API. Each instance represents a declarative intent for a specific domain object. The system tracks the resource's observed state through a status subresource, which is kept strictly separate from the desired spec. This separation is critical for implementing the reconciliation loop pattern, where a controller continuously drives the observed state toward the desired state.
Controller-Driven Reconciliation
A CRD becomes operationally powerful when paired with a Kubernetes Operator. The operator contains a control loop that watches for changes to custom resources and executes domain-specific logic to reconcile state. For example, an O-RAN operator might watch an ORANRU custom resource and automatically provision a physical radio unit. This pattern encodes human operational knowledge into software, enabling fully automated Day 0 and Day 2 operations for telecom infrastructure.
Versioning and Conversion
CRDs support multiple API versions simultaneously, allowing for the evolution of a resource's schema without breaking existing clients. A conversion webhook can be deployed to translate resources between versions on-the-fly. This is essential for telecom operators managing long-lived infrastructure, as it allows a network service descriptor to be upgraded from v1alpha1 to v1 while maintaining backward compatibility for all existing instances of the resource in the cluster.
Native RBAC Integration
Custom resources are fully integrated with Kubernetes' Role-Based Access Control (RBAC) system. Cluster administrators can define fine-grained permissions for each custom resource type, controlling which users or service accounts can create, modify, or delete specific network functions. This ensures that a team managing O-RAN Central Units cannot inadvertently modify resources belonging to the Distributed Unit team, enforcing a strict separation of concerns within a shared multi-tenant cluster.
Subresources for Status and Scale
CRDs can expose standard /status and /scale subresources. The status subresource enables a controller to write the current operational state of a resource without having permission to modify the user-defined spec, preventing feedback loops. The scale subresource allows a custom resource to be horizontally scaled using kubectl scale, integrating with the Horizontal Pod Autoscaler. This is used to dynamically adjust the capacity of cloud-native network functions based on real-time traffic load.
Frequently Asked Questions
Clear, technical answers to the most common questions about extending the Kubernetes API with Custom Resource Definitions.
A Custom Resource Definition (CRD) is a powerful Kubernetes API extension that allows you to define your own custom object types, effectively teaching Kubernetes to manage domain-specific resources alongside native ones like Pods and Deployments. Once a CRD is applied to a cluster, the Kubernetes API server instantly serves a new, RESTful, custom resource endpoint. You can then create instances of your custom resource (Custom Objects, or CRs) and manage them using standard kubectl commands. The CRD itself defines the schema, name, and scope of your new resource. To imbue these custom objects with real behavior, you typically deploy a Kubernetes Operator—a controller that runs a continuous reconciliation loop, watching the API server for changes to your custom resources and taking automated actions to drive the observed state toward the desired state you declared.
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
Core concepts that interact with Custom Resource Definitions to build declarative, self-healing systems for zero-touch network provisioning.
Kubernetes Operator
A software extension that uses Custom Resources to manage applications and their components. It encodes human operational knowledge into a control loop, automating the entire lifecycle of a stateful workload.
- Watches a CRD instance for changes
- Runs a reconciliation loop to drive observed state toward desired state
- Handles Day 2 Operations like scaling, backup, and upgrades without manual intervention
Reconciliation Loop
A continuous control mechanism that compares the observed state of a resource against its desired state declared in a CRD instance. If drift is detected, the loop automatically executes corrective actions.
- Core pattern in declarative configuration
- Ensures idempotency—applying the same spec twice yields the same result
- Used by every Kubernetes Operator to enforce intent
Declarative Configuration
A provisioning model where the desired end-state of a resource is specified in a YAML or JSON manifest, and an automated engine determines the sequence of steps to achieve that state.
- Contrasts with imperative scripting
- A CRD is the schema that defines what a valid declaration looks like
- Enables GitOps workflows where Git is the single source of truth
GitOps
An operational framework that uses a Git repository as the single source of truth for declarative infrastructure and application configurations. An automated reconciliation agent continuously enforces the desired state stored in Git onto the target cluster.
- CRDs define the custom resources stored in Git
- Tools like Argo CD and Flux implement the reconciliation loop
- Every change is version-controlled, auditable, and rollback-ready
Infrastructure as Code (IaC)
The practice of managing and provisioning computing infrastructure through machine-readable definition files rather than physical hardware configuration or interactive tools.
- CRDs extend IaC principles to domain-specific resources like Network Service Descriptors
- Enables versioning, testing, and automated deployment of network functions
- Forms the foundation for immutable infrastructure patterns
Drift Remediation
The automated process of detecting and correcting unauthorized or unintended changes to a system's configuration, restoring it to its declared desired state.
- A CRD's spec field defines the desired state; the status field reports observed state
- The reconciliation loop detects any mismatch between spec and status
- Critical for maintaining compliance in zero-touch provisioning environments

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