Crossplane · Schema
Crossplane Composition
Schema for a Crossplane Composition that defines how to compose infrastructure resources into higher-level composite resources by mapping patches and configuring managed resources.
Apache 2.0CNCFCloud NativeCompositionControl PlaneCustom Resource DefinitionsGraduatedInfrastructure as CodeKubernetesMulti-CloudOpen SourcePlatform EngineeringProviders
Properties
| Name | Type | Description |
|---|---|---|
| apiVersion | string | API version for the Crossplane Composition resource. |
| kind | string | Resource kind identifier. |
| metadata | object | Standard Kubernetes object metadata. |
| spec | object | Specification for the Composition defining resource templates and patches. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://github.com/api-evangelist/crossplane/blob/main/composition-schema.json",
"title": "Crossplane Composition",
"description": "Schema for a Crossplane Composition that defines how to compose infrastructure resources into higher-level composite resources by mapping patches and configuring managed resources.",
"type": "object",
"required": ["apiVersion", "kind", "metadata", "spec"],
"properties": {
"apiVersion": {
"type": "string",
"const": "apiextensions.crossplane.io/v1",
"description": "API version for the Crossplane Composition resource."
},
"kind": {
"type": "string",
"const": "Composition",
"description": "Resource kind identifier."
},
"metadata": {
"type": "object",
"description": "Standard Kubernetes object metadata.",
"required": ["name"],
"properties": {
"name": {
"type": "string",
"description": "Unique name for this Composition."
},
"labels": {
"type": "object",
"description": "Key-value pairs for organizing and selecting Compositions.",
"additionalProperties": { "type": "string" }
},
"annotations": {
"type": "object",
"description": "Non-identifying metadata for the Composition.",
"additionalProperties": { "type": "string" }
}
}
},
"spec": {
"type": "object",
"description": "Specification for the Composition defining resource templates and patches.",
"required": ["compositeTypeRef", "resources"],
"properties": {
"compositeTypeRef": {
"type": "object",
"description": "Reference to the CompositeResourceDefinition (XRD) this Composition satisfies.",
"required": ["apiVersion", "kind"],
"properties": {
"apiVersion": {
"type": "string",
"description": "API version of the composite resource type."
},
"kind": {
"type": "string",
"description": "Kind of the composite resource type."
}
}
},
"writeConnectionSecretsToNamespace": {
"type": "string",
"description": "Namespace where connection secrets for composed resources are written."
},
"patchSets": {
"type": "array",
"description": "Reusable sets of patches that can be referenced by composed resources.",
"items": {
"type": "object",
"required": ["name", "patches"],
"properties": {
"name": {
"type": "string",
"description": "Name used to reference this patch set."
},
"patches": {
"type": "array",
"description": "Patches included in this set.",
"items": { "$ref": "#/$defs/patch" }
}
}
}
},
"resources": {
"type": "array",
"description": "List of composed resource templates that make up this Composition.",
"items": {
"type": "object",
"required": ["name", "base"],
"properties": {
"name": {
"type": "string",
"description": "Unique name identifying this composed resource within the Composition."
},
"base": {
"type": "object",
"description": "Base resource manifest used as a template for provisioning.",
"required": ["apiVersion", "kind"],
"properties": {
"apiVersion": {
"type": "string",
"description": "API version of the managed resource."
},
"kind": {
"type": "string",
"description": "Kind of the managed resource."
},
"spec": {
"type": "object",
"description": "Specification for the base managed resource."
},
"metadata": {
"type": "object",
"description": "Metadata for the base managed resource."
}
}
},
"patches": {
"type": "array",
"description": "Patches to apply from the composite resource to this composed resource.",
"items": { "$ref": "#/$defs/patch" }
},
"connectionDetails": {
"type": "array",
"description": "Connection details to expose from this composed resource.",
"items": {
"type": "object",
"properties": {
"fromConnectionSecretKey": {
"type": "string",
"description": "Key in the composed resource connection secret."
},
"name": {
"type": "string",
"description": "Name of the connection detail in the composite resource."
},
"type": {
"type": "string",
"enum": ["FromConnectionSecretKey", "FromFieldPath", "FromValue"],
"description": "Type of connection detail source."
},
"value": {
"type": "string",
"description": "Static value for the connection detail."
}
}
}
},
"readinessChecks": {
"type": "array",
"description": "Checks to determine if this composed resource is ready.",
"items": {
"type": "object",
"required": ["type"],
"properties": {
"type": {
"type": "string",
"enum": ["MatchString", "MatchInteger", "NonEmpty", "None", "MatchCondition", "MatchTrue", "MatchFalse"],
"description": "Type of readiness check."
},
"fieldPath": {
"type": "string",
"description": "Path to the field to check for readiness."
},
"matchString": {
"type": "string",
"description": "Expected string value for MatchString checks."
},
"matchInteger": {
"type": "integer",
"description": "Expected integer value for MatchInteger checks."
}
}
}
}
}
}
},
"mode": {
"type": "string",
"enum": ["Resources", "Pipeline"],
"description": "Mode of the Composition, either Resources or Pipeline."
},
"pipeline": {
"type": "array",
"description": "Pipeline steps for Pipeline mode Compositions.",
"items": {
"type": "object",
"required": ["step", "functionRef"],
"properties": {
"step": {
"type": "string",
"description": "Name of this pipeline step."
},
"functionRef": {
"type": "object",
"description": "Reference to a Composition Function.",
"required": ["name"],
"properties": {
"name": {
"type": "string",
"description": "Name of the Composition Function to invoke."
}
}
},
"input": {
"type": "object",
"description": "Input to pass to the Composition Function."
}
}
}
}
}
}
},
"$defs": {
"patch": {
"type": "object",
"description": "A patch that maps values between composite and composed resources.",
"properties": {
"type": {
"type": "string",
"enum": [
"FromCompositeFieldPath",
"ToCompositeFieldPath",
"CombineFromComposite",
"CombineToComposite",
"PatchSet"
],
"description": "Type of patch operation."
},
"fromFieldPath": {
"type": "string",
"description": "Source field path in the composite or composed resource."
},
"toFieldPath": {
"type": "string",
"description": "Destination field path in the composed or composite resource."
},
"patchSetName": {
"type": "string",
"description": "Name of the PatchSet to apply (when type is PatchSet)."
},
"transforms": {
"type": "array",
"description": "Transforms to apply to the patched value.",
"items": {
"type": "object",
"required": ["type"],
"properties": {
"type": {
"type": "string",
"enum": ["map", "match", "math", "string", "convert"],
"description": "Type of transform to apply."
},
"map": {
"type": "object",
"description": "Map transform key-value pairs.",
"additionalProperties": { "type": "string" }
},
"math": {
"type": "object",
"description": "Math transform configuration.",
"properties": {
"type": { "type": "string" },
"multiply": { "type": "number" }
}
},
"string": {
"type": "object",
"description": "String transform configuration.",
"properties": {
"type": { "type": "string" },
"fmt": { "type": "string" }
}
},
"convert": {
"type": "object",
"description": "Type conversion transform.",
"properties": {
"toType": { "type": "string" }
}
}
}
}
},
"policy": {
"type": "object",
"description": "Policy for handling missing field paths.",
"properties": {
"fromFieldPath": {
"type": "string",
"enum": ["Optional", "Required"],
"description": "Policy for missing source field."
}
}
}
}
}
}
}