🔌 Define Your Own Kubernetes Objects
Kubernetes has Pods, Services, Deployments. Custom Resource Definitions (CRD) create your own objects. Extend Kubernetes for your needs.
📝 Create a CRD
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: databases.myapp.com
spec:
group: myapp.com
versions:
- name: v1
served: true
storage: true
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
properties:
engine:
type: string
enum: ["postgres", "mysql"]
version:
type: string
replicas:
type: integer
minimum: 1
maximum: 10
scope: Namespaced
names:
plural: databases
singular: database
kind: Database
shortNames:
- db
🎯 Use Custom Resource
apiVersion: myapp.com/v1 kind: Database metadata: name: my-postgres spec: engine: postgres version: "15" replicas: 3 # Apply CRD kubectl apply -f database-crd.yaml # Create custom resource kubectl apply -f my-postgres.yaml # List custom resources kubectl get databases kubectl get db # Describe kubectl describe database my-postgres
💡 Use Cases
- Database CRD (PostgreSQL, MySQL)
- Application deployment CRD
- Resource quota CRD (custom limits)
- Config management CRD
- Operator pattern (controller manages CRD)
“Created Database CRD for PostgreSQL. Now kubectl get db shows all databases. Kubernetes is extensible. CRDs are powerful.”
