Provider families & multi-cloud
One platform API, many backends.
Because a claim is just an API you defined, the backend that fulfills it can change without the developer noticing. That is the multi-cloud angle: the same XPostgresInstance XRD can have an AWS composition and a GCP composition, and a selector decides which one fulfills a given claim — so a developer asks for “a Postgres instance” and gets one on whichever cloud your policy chooses. The platform API is stable; the implementation is swappable.
apiVersion: acme.io/v1alpha1kind: PostgresInstancemetadata: { name: orders-db, namespace: team-orders }spec:size: smallcompositionSelector:matchLabels: { provider: aws } # or gcp — same claim, different backendwriteConnectionSecretToRef: { name: orders-db-conn }
Provider families
Modern cloud providers are split into families — provider-aws-rds, provider-aws-ec2, provider-aws-s3 — each a smaller package, all sharing one ProviderConfig for the family. You install only the services you use, which keeps the control plane lean and the CRD count manageable. A composition can mix resources across families (RDS + EC2 + IAM) freely, since they all reconcile through the same AWS credentials.