
- Explain why separate app and infrastructure workflows are problematic.
- Understand Crossplane’s core concepts and architecture.
- Define platform APIs with XRDs and map those APIs to concrete resources using Compositions.
- Compose Kubernetes resources and cloud infrastructure together in a single abstraction.
- Push application code to Git; Argo CD deploys the app.
- Need a database → switch to Terraform, author HCL.
- Infrastructure team reviews and applies the Terraform plan (multi-day SLA).
- Platform team or devops manually creates Kubernetes Secrets with connection strings.
- Argo CD syncs the secret; app finally connects.


- Single abstraction: one YAML file to declare app + DB + networking + security.
- Namespace isolation: teams operate in their own namespaces with RBAC boundaries.
- Continuous reconciliation: detect drift and self-heal cloud and Kubernetes resources.

Crossplane lets platform teams create Kubernetes-native platform APIs so developers use the same GitOps, kubectl, and YAML workflows they already know — simplifying self-service and reducing mean time to provision.

- Platform team authors an XRD to define a platform API (schema, fields, defaults).
- Platform team creates one or more Compositions that map the XRD to concrete resources.
- Developers create instances of the XR (Composite Resources) in their namespaces; Crossplane matches the XR to a Composition and provisions everything automatically.
spec.forProvider section containing provider-specific configuration. Crossplane performs the cloud API calls and continuously reconciles state.
Example managed resource (S3 bucket):
- Describe fields, types, required properties, and defaults.
- Set the
scopetoNamespacedorCluster. Namespaced XRs enable multi-tenancy by allowing teams to create XRs directly in their namespaces (no claims/proxy objects required).
function-patch-and-transform, which maps values from the XR into the composed resources.
Typical Composition pipeline flow:
- Developer creates an XR instance.
- Crossplane selects a matching Composition.
- The Composition pipeline runs functions that render composed resource manifests.
- Crossplane creates and continuously reconciles those composed resources.
function-patch-and-transform can map spec.size from an XR to spec.forProvider.instanceClass in an RDS managed resource, translating friendly sizes (e.g., medium) into provider-specific instance classes (e.g., db.r5.large).
Compose Kubernetes resources and cloud infrastructure together
Compositions are not limited to cloud managed resources. Any Kubernetes resource can be composed — Deployments, Services, ConfigMaps, Ingresses, Secrets — alongside cloud resources such as RDS instances and SecurityGroups. This enables a single platform API to provision an entire microservice stack: app Deployment, network routing, DB instance, and the Secret with credentials.

- A Kubernetes Deployment and Service
- An Ingress resource
- An RDS instance (managed resource)
- A Security Group and network configuration
- A Secret containing the DB connection string (populated by Crossplane)
kubectl apply, continuous reconciliation — that’s the platform API experience Crossplane enables.
Best practices and operational notes
- Use Namespaced XRs for team multi-tenancy; set RBAC to control who can create which XRs.
- Keep Compositions declarative and idempotent; prefer pipeline functions for transformation logic.
- Install Providers as packages and centralize ProviderConfig credentials in platform-managed namespaces.
- Treat XRDs and Compositions as platform code: version, review, and store them in Git to enable GitOps workflows.
- XRDs define your platform API and the schema developers use.
- XRs (Composite Resources) are instances of that API; namespaced XRs simplify multi-tenancy.
- Compositions map XRs to concrete Kubernetes and cloud managed resources, typically using pipeline mode with functions for rendering and transformation.
- You can compose any Kubernetes resource alongside cloud infrastructure to provide unified, GitOps-friendly platform APIs.

- Crossplane: https://crossplane.io/
- Kubernetes kubectl reference: https://kubernetes.io/docs/reference/kubectl/
- Argo CD (GitOps): https://argo-cd.readthedocs.io/en/stable/
- Terraform: https://www.terraform.io/