G/co/crd/setup ((install)) -
Use kubectl replace --force if needed, but prefer apply for declarative management. Conclusion Setting up a CRD — following the g/co/crd/setup approach — is straightforward once you understand the steps: define, apply, verify, and use. CRDs unlock the true extensibility of Kubernetes, letting you model your infrastructure exactly how your team needs it.
Try building a simple controller (e.g., with Kubebuilder) that reacts to your new CRD. Have questions about CRD setup? Drop a comment below or reach out to our team.
Double-check the schema section in your CRD — the structure must match exactly. g/co/crd/setup
apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: databasebackups.stable.example.com spec: group: stable.example.com versions: - name: v1 served: true storage: true schema: openAPIV3Schema: type: object properties: spec: type: object properties: backupSchedule: type: string retentionDays: type: integer scope: Namespaced names: plural: databasebackups singular: databasebackup kind: DatabaseBackup shortNames: - dbb Use kubectl to apply your CRD:
kubectl apply -f my-resource-crd.yaml To follow the g/co/crd/setup pattern, you could wrap this in a script or Makefile: Use kubectl replace --force if needed, but prefer
April 14, 2026 Reading time: 5 minutes Introduction If you’ve been working with Kubernetes for a while, you’ve likely heard about Custom Resource Definitions (CRDs). They allow you to extend Kubernetes’ API and create your own resource types, just like pods or services.
kubectl apply -f my-backup.yaml List your custom resources: Try building a simple controller (e
# Example: ./g/co/crd/setup.sh kubectl apply -f ./crds/ kubectl wait --for=condition=established --timeout=60s crd/databasebackups.stable.example.com echo "CRD setup complete." Check that your CRD was created successfully: