Kind
Group/Version
apiextensions.crossplane.io/v1
apiextensions.crossplane.io/v1

A CompositeResourceDefinition defines the schema for a new custom Kubernetes API.

Read the Crossplane documentation for more information about CustomResourceDefinitions.


CompositeResourceDefinitionSpec specifies the desired state of the definition.
ClaimNames specifies the names of an optional composite resource claim. When claim names are specified Crossplane will create a namespaced ‘composite resource claim’ CRD that corresponds to the defined composite resource. This composite resource claim acts as a namespaced proxy for the composite resource; creating, updating, or deleting the claim will create, update, or delete a corresponding composite resource. You may add claim names to an existing CompositeResourceDefinition, but they cannot be changed or removed once they have been set.
kind is the serialized kind of the resource. It is normally CamelCase and singular. Custom resource instances will use this value as the kind attribute in API calls.
listKind is the serialized kind of the list for this resource. Defaults to “kindList”.
plural is the plural name of the resource to serve. The custom resources are served under /apis/<group>/<version>/.../<plural>. Must match the name of the CustomResourceDefinition (in the form <names.plural>.<group>). Must be all lowercase.
singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased kind.
Conversion defines all conversion settings for the defined Composite resource.

strategy specifies how custom resources are converted between versions. Allowed values are:

  • "None": The converter only change the apiVersion and would not touch any other field in the custom resource.
  • "Webhook": API Server will call to an external webhook to do the conversion. Additional information is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhook to be set.
webhook describes how to call the conversion webhook. Required when strategy is set to "Webhook".
clientConfig is the instructions for how to call the webhook if strategy is Webhook.
caBundle is a PEM encoded CA bundle which will be used to validate the webhook’s server certificate. If unspecified, system trust roots on the apiserver are used.

service is a reference to the service for this webhook. Either service or url must be specified.

If the webhook is running within the cluster, then you should use service.

name is the name of the service. Required
namespace is the namespace of the service. Required
path is an optional URL path at which the webhook will be contacted.
port is an optional service port at which the webhook will be contacted. port should be a valid port number (1-65535, inclusive). Defaults to 443 for backward compatibility.

url gives the location of the webhook, in standard URL form (scheme://host:port/path). Exactly one of url or service must be specified.

The host should not refer to a service running in the cluster; use the service field instead. The host might be resolved via external DNS in some apiservers (e.g., kube-apiserver cannot resolve in-cluster DNS as that would be a layering violation). host may also be an IP address.

Please note that using localhost or 127.0.0.1 as a host is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.

The scheme must be “https”; the URL must begin with “https://”.

A path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.

Attempting to use a user or basic auth e.g. “user:password@” is not allowed. Fragments ("#…") and query parameters ("?…") are not allowed, either.

Default: Background
DefaultCompositeDeletePolicy is the policy used when deleting the Composite that is associated with the Claim if no policy has been specified.
DefaultCompositionRef refers to the Composition resource that will be used in case no composition selector is given.
Name of the Composition.
Default: Automatic
DefaultCompositionUpdatePolicy is the policy used when updating composites after a new Composition Revision has been created if no policy has been specified on the composite.
EnforcedCompositionRef refers to the Composition resource that will be used by all composite instances whose schema is defined by this definition.
Name of the Composition.
Group specifies the API group of the defined composite resource. Composite resources are served under /apis/<group>/.... Must match the name of the XRD (in the form <names.plural>.<group>).
Metadata specifies the desired metadata for the defined composite resource and claim CRD’s.
Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations
Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels and services. These labels are added to the composite resource and claim CRD’s in addition to any labels defined by CompositionResourceDefinition metadata.labels.
Names specifies the resource and kind names of the defined composite resource.
kind is the serialized kind of the resource. It is normally CamelCase and singular. Custom resource instances will use this value as the kind attribute in API calls.
listKind is the serialized kind of the list for this resource. Defaults to “kindList”.
plural is the plural name of the resource to serve. The custom resources are served under /apis/<group>/<version>/.../<plural>. Must match the name of the CustomResourceDefinition (in the form <names.plural>.<group>). Must be all lowercase.
singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased kind.
CompositeResourceDefinitionVersion describes a version of an XR.
CustomResourceColumnDefinition specifies a column for server side printing.
description is a human readable description of this column.
format is an optional OpenAPI type definition for this column. The ’name’ format is applied to the primary identifier column to assist in clients identifying column is the resource name. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
jsonPath is a simple JSON path (i.e. with array notation) which is evaluated against each custom resource to produce the value for this column.
name is a human readable name for the column.
priority is an integer defining the relative importance of this column compared to others. Lower numbers are considered higher priority. Columns that may be omitted in limited space scenarios should be given a priority greater than 0.
type is an OpenAPI type definition for this column. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
The deprecated field specifies that this version is deprecated and should not be used.
DeprecationWarning specifies the message that should be shown to the user when using this version.
Name of this version, e.g. “v1”, “v2beta1”, etc. Composite resources are served under this version at /apis/<group>/<version>/... if served is true.
Referenceable specifies that this version may be referenced by a Composition in order to configure which resources an XR may be composed of. Exactly one version must be marked as referenceable; all Compositions must target only the referenceable version. The referenceable version must be served. It’s mapped to the CRD’s spec.versions[*].storage field.
Schema describes the schema used for validation, pruning, and defaulting of this version of the defined composite resource. Fields required by all composite resources will be injected into this schema automatically, and will override equivalently named fields in this schema. Omitting this schema results in a schema that contains only the fields required by all composite resources.
OpenAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.
Served specifies that this version should be served via REST APIs.
CompositeResourceDefinitionStatus shows the observed state of the definition.
A Condition that may apply to a resource.
LastTransitionTime is the last time this condition transitioned from one status to another.
A Message containing details about this condition’s last transition from one status to another, if any.
ObservedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.
A Reason for this condition’s last transition from one status to another.
Status of this condition; is it currently True, False, or Unknown?
Type of this condition. At most one of each condition type may apply to a resource at any point in time.
Controllers represents the status of the controllers that power this composite resource definition.
The CompositeResourceClaimTypeRef is the type of composite resource claim that Crossplane is currently reconciling for this definition. Its version will eventually become consistent with the definition’s referenceable version. Note that clients may interact with any served type; this is simply the type that Crossplane interacts with.
APIVersion of the type.
Kind of the type.
The CompositeResourceTypeRef is the type of composite resource that Crossplane is currently reconciling for this definition. Its version will eventually become consistent with the definition’s referenceable version. Note that clients may interact with any served type; this is simply the type that Crossplane interacts with.
APIVersion of the type.
Kind of the type.
apiextensions.crossplane.io/v1
apiextensions.crossplane.io/v1

A CompositionRevision represents a revision of a Composition. Crossplane creates new revisions when there are changes to the Composition.

Crossplane creates and manages CompositionRevisions. Don’t directly edit CompositionRevisions.


CompositionRevisionSpec specifies the desired state of the composition revision.
CompositeTypeRef specifies the type of composite resource that this composition is compatible with.
APIVersion of the type.
Kind of the type.
Default: Resources

Mode controls what type or “mode” of Composition will be used.

“Pipeline” indicates that a Composition specifies a pipeline of Composition Functions, each of which is responsible for producing composed resources that Crossplane should create or update.

“Resources” indicates that a Composition uses what is commonly referred to as “Patch & Transform” or P&T composition. This mode of Composition uses an array of resources, each a template for a composed resource.

All Compositions should use Pipeline mode. Resources mode is deprecated. Resources mode won’t be removed in Crossplane 1.x, and will remain the default to avoid breaking legacy Compositions. However, it’s no longer accepting new features, and only accepting security related bug fixes.

A PatchSet is a set of patches that can be reused from all resources within a Composition.
Name of this PatchSet.
Patch objects are applied between composite and composed resources. Their behaviour depends on the Type selected. The default Type, FromCompositeFieldPath, copies a value from the composite resource to the composed resource, applying any defined transformers.
Combine is the patch configuration for a CombineFromComposite or CombineToComposite patch.
Strategy defines the strategy to use to combine the input variable values. Currently only string is supported.
String declares that input variables should be combined into a single string, using the relevant settings for formatting purposes.
Format the input using a Go format string. See https://golang.org/pkg/fmt/ for details.
A CombineVariable defines the source of a value that is combined with others to form and patch an output value. Currently, this only supports retrieving values from a field path.
FromFieldPath is the path of the field on the source whose value is to be used as input.
FromFieldPath is the path of the field on the resource whose value is to be used as input. Required when type is FromCompositeFieldPath or ToCompositeFieldPath.
PatchSetName to include patches from. Required when type is PatchSet.
Policy configures the specifics of patching behaviour.
FromFieldPath specifies how to patch from a field path. The default is ‘Optional’, which means the patch will be a no-op if the specified fromFieldPath does not exist. Use ‘Required’ if the patch should fail if the specified path does not exist.
MergeOptions Specifies merge options on a field path.
Specifies that already existing elements in a merged slice should be preserved
Specifies that already existing values in a merged map should be preserved
ToFieldPath is the path of the field on the resource whose value will be changed with the result of transforms. Leave empty if you’d like to propagate to the same path as fromFieldPath.
Transform is a unit of process whose input is transformed into an output with the supplied configuration.
Convert is used to cast the input into the given output type.

The expected input format.

  • quantity - parses the input as a K8s resource.Quantity. Only used during string -> float64 conversions.
  • json - parses the input as a JSON string. Only used during string -> object or string -> list conversions.

If this property is null, the default conversion is applied.

ToType is the type of the output of this transform.
Map uses the input as a key in the given map and returns the value.
Match is a more complex version of Map that matches a list of patterns.
Default: Value
Determines to what value the transform should fallback if no pattern matches.
The fallback value that should be returned by the transform if now pattern matches.
MatchTransformPattern is a transform that returns the value that matches a pattern.
Literal exactly matches the input string (case sensitive). Is required if type is literal.
Regexp to match against the input string. Is required if type is regexp.
The value that is used as result of the transform if the pattern matches.
Default: literal

Type specifies how the pattern matches the input.

  • literal - the pattern value has to exactly match (case sensitive) the input string. This is the default.

  • regexp - the pattern treated as a regular expression against which the input string is tested. Crossplane will throw an error if the key is not a valid regexp.

Math is used to transform the input via mathematical operations such as multiplication.
ClampMax makes sure that the value is not bigger than the given value.
ClampMin makes sure that the value is not smaller than the given value.
Multiply the value.
Default: Multiply
Type of the math transform to be run.
String is used to transform the input into a string or a different kind of string. Note that the input does not necessarily need to be a string.
Optional conversion method to be specified. ToUpper and ToLower change the letter case of the input string. ToBase64 and FromBase64 perform a base64 conversion based on the input string. ToJson converts any input value into its raw JSON representation. ToSha1, ToSha256 and ToSha512 generate a hash value based on the input converted to JSON. ToAdler32 generate a addler32 hash based on the input string.
Format the input using a Go format string. See https://golang.org/pkg/fmt/ for details.
Join defines parameters to join a slice of values to a string.
Separator defines the character that should separate the values from each other in the joined string.
Extract a match from the input using a regular expression.
Group number to match. 0 (the default) matches the entire expression.
Match string. May optionally include submatches, aka capture groups. See https://pkg.go.dev/regexp/ for details.
Trim the prefix or suffix from the input
Default: Format
Type of the string transform to be run.
Type of the transform to be run.
Default: FromCompositeFieldPath
Type sets the patching behaviour to be used. Each patch type may require its own fields to be set on the Patch object.
A PipelineStep in a Composition Function pipeline.
FunctionCredentials are optional credentials that a Composition Function needs to run.
Name of this set of credentials.
A SecretRef is a reference to a secret containing credentials that should be supplied to the function.
Name of the secret.
Namespace of the secret.
Source of the function credentials.
FunctionRef is a reference to the Composition Function this step should execute.
Name of the referenced Function.
Input is an optional, arbitrary Kubernetes resource (i.e. a resource with an apiVersion and kind) that will be passed to the Composition Function as the ‘input’ of its RunFunctionRequest.
Step name. Must be unique within its Pipeline.
Default: map[name:default]

PublishConnectionDetailsWithStoreConfig specifies the secret store config with which the connection details of composite resources dynamically provisioned using this composition will be published.

THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored unless the relevant Crossplane feature flag is enabled, and may be changed or removed without notice.

Name of the referenced StoreConfig.
ComposedTemplate is used to provide information about how the composed resource should be processed.
Base is the target resource that the patches will be applied on.
ConnectionDetail includes the information about the propagation of the connection information from one secret to another.
FromConnectionSecretKey is the key that will be used to fetch the value from the composed resource’s connection secret.
FromFieldPath is the path of the field on the composed resource whose value to be used as input. Name must be specified if the type is FromFieldPath.
Name of the connection secret key that will be propagated to the connection secret of the composition instance. Leave empty if you’d like to use the same key name.

Type sets the connection detail fetching behaviour to be used. Each connection detail type may require its own fields to be set on the ConnectionDetail object. If the type is omitted Crossplane will attempt to infer it based on which other fields were specified. If multiple fields are specified the order of precedence is:

  1. FromValue
  2. FromConnectionSecretKey
  3. FromFieldPath
Value that will be propagated to the connection secret of the composite resource. May be set to inject a fixed, non-sensitive connection secret value, for example a well-known port.
A Name uniquely identifies this entry within its Composition’s resources array. Names are optional but strongly recommended. When all entries in the resources array are named entries may added, deleted, and reordered as long as their names do not change. When entries are not named the length and order of the resources array should be treated as immutable. Either all or no entries must be named.
Patch objects are applied between composite and composed resources. Their behaviour depends on the Type selected. The default Type, FromCompositeFieldPath, copies a value from the composite resource to the composed resource, applying any defined transformers.
Combine is the patch configuration for a CombineFromComposite or CombineToComposite patch.
Strategy defines the strategy to use to combine the input variable values. Currently only string is supported.
String declares that input variables should be combined into a single string, using the relevant settings for formatting purposes.
Format the input using a Go format string. See https://golang.org/pkg/fmt/ for details.
A CombineVariable defines the source of a value that is combined with others to form and patch an output value. Currently, this only supports retrieving values from a field path.
FromFieldPath is the path of the field on the source whose value is to be used as input.
FromFieldPath is the path of the field on the resource whose value is to be used as input. Required when type is FromCompositeFieldPath or ToCompositeFieldPath.
PatchSetName to include patches from. Required when type is PatchSet.
Policy configures the specifics of patching behaviour.
FromFieldPath specifies how to patch from a field path. The default is ‘Optional’, which means the patch will be a no-op if the specified fromFieldPath does not exist. Use ‘Required’ if the patch should fail if the specified path does not exist.
MergeOptions Specifies merge options on a field path.
Specifies that already existing elements in a merged slice should be preserved
Specifies that already existing values in a merged map should be preserved
ToFieldPath is the path of the field on the resource whose value will be changed with the result of transforms. Leave empty if you’d like to propagate to the same path as fromFieldPath.
Transform is a unit of process whose input is transformed into an output with the supplied configuration.
Convert is used to cast the input into the given output type.

The expected input format.

  • quantity - parses the input as a K8s resource.Quantity. Only used during string -> float64 conversions.
  • json - parses the input as a JSON string. Only used during string -> object or string -> list conversions.

If this property is null, the default conversion is applied.

ToType is the type of the output of this transform.
Map uses the input as a key in the given map and returns the value.
Match is a more complex version of Map that matches a list of patterns.
Default: Value
Determines to what value the transform should fallback if no pattern matches.
The fallback value that should be returned by the transform if now pattern matches.
MatchTransformPattern is a transform that returns the value that matches a pattern.
Literal exactly matches the input string (case sensitive). Is required if type is literal.
Regexp to match against the input string. Is required if type is regexp.
The value that is used as result of the transform if the pattern matches.
Default: literal

Type specifies how the pattern matches the input.

  • literal - the pattern value has to exactly match (case sensitive) the input string. This is the default.

  • regexp - the pattern treated as a regular expression against which the input string is tested. Crossplane will throw an error if the key is not a valid regexp.

Math is used to transform the input via mathematical operations such as multiplication.
ClampMax makes sure that the value is not bigger than the given value.
ClampMin makes sure that the value is not smaller than the given value.
Multiply the value.
Default: Multiply
Type of the math transform to be run.
String is used to transform the input into a string or a different kind of string. Note that the input does not necessarily need to be a string.
Optional conversion method to be specified. ToUpper and ToLower change the letter case of the input string. ToBase64 and FromBase64 perform a base64 conversion based on the input string. ToJson converts any input value into its raw JSON representation. ToSha1, ToSha256 and ToSha512 generate a hash value based on the input converted to JSON. ToAdler32 generate a addler32 hash based on the input string.
Format the input using a Go format string. See https://golang.org/pkg/fmt/ for details.
Join defines parameters to join a slice of values to a string.
Separator defines the character that should separate the values from each other in the joined string.
Extract a match from the input using a regular expression.
Group number to match. 0 (the default) matches the entire expression.
Match string. May optionally include submatches, aka capture groups. See https://pkg.go.dev/regexp/ for details.
Trim the prefix or suffix from the input
Default: Format
Type of the string transform to be run.
Type of the transform to be run.
Default: FromCompositeFieldPath
Type sets the patching behaviour to be used. Each patch type may require its own fields to be set on the Patch object.
Default: [map[matchCondition:map[status:True type:Ready] type:MatchCondition]]
ReadinessCheck is used to indicate how to tell whether a resource is ready for consumption.
FieldPath shows the path of the field whose value will be used.
MatchCondition specifies the condition you’d like to match if you’re using “MatchCondition” type.
Default: True
Status is the status of the condition you’d like to match.
Default: Ready
Type indicates the type of condition you’d like to use.
MatchInt is the value you’d like to match if you’re using “MatchInt” type.
MatchString is the value you’d like to match if you’re using “MatchString” type.
Type indicates the type of probe you’d like to use.

Revision number. Newer revisions have larger numbers.

This number can change. When a Composition transitions from state A -> B -> A there will be only two CompositionRevisions. Crossplane will edit the original CompositionRevision to change its revision number from 0 to 2.

WriteConnectionSecretsToNamespace specifies the namespace in which the connection secrets of composite resource dynamically provisioned using this composition will be created. This field is planned to be replaced in a future release in favor of PublishConnectionDetailsWithStoreConfigRef. Currently, both could be set independently and connection details would be published to both without affecting each other as long as related fields at MR level specified.
CompositionRevisionStatus shows the observed state of the composition revision.
A Condition that may apply to a resource.
LastTransitionTime is the last time this condition transitioned from one status to another.
A Message containing details about this condition’s last transition from one status to another, if any.
ObservedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.
A Reason for this condition’s last transition from one status to another.
Status of this condition; is it currently True, False, or Unknown?
Type of this condition. At most one of each condition type may apply to a resource at any point in time.
apiextensions.crossplane.io/v1
apiextensions.crossplane.io/v1

A Composition defines a collection of managed resources or functions that Crossplane uses to create and manage new composite resources.

Read the Crossplane documentation for more information about Compositions.


CompositionSpec specifies desired state of a composition.
CompositeTypeRef specifies the type of composite resource that this composition is compatible with.
APIVersion of the type.
Kind of the type.
Default: Resources

Mode controls what type or “mode” of Composition will be used.

“Pipeline” indicates that a Composition specifies a pipeline of Composition Functions, each of which is responsible for producing composed resources that Crossplane should create or update.

“Resources” indicates that a Composition uses what is commonly referred to as “Patch & Transform” or P&T composition. This mode of Composition uses an array of resources, each a template for a composed resource.

All Compositions should use Pipeline mode. Resources mode is deprecated. Resources mode won’t be removed in Crossplane 1.x, and will remain the default to avoid breaking legacy Compositions. However, it’s no longer accepting new features, and only accepting security related bug fixes.

A PatchSet is a set of patches that can be reused from all resources within a Composition.
Name of this PatchSet.
Patch objects are applied between composite and composed resources. Their behaviour depends on the Type selected. The default Type, FromCompositeFieldPath, copies a value from the composite resource to the composed resource, applying any defined transformers.
Combine is the patch configuration for a CombineFromComposite or CombineToComposite patch.
Strategy defines the strategy to use to combine the input variable values. Currently only string is supported.
String declares that input variables should be combined into a single string, using the relevant settings for formatting purposes.
Format the input using a Go format string. See https://golang.org/pkg/fmt/ for details.
A CombineVariable defines the source of a value that is combined with others to form and patch an output value. Currently, this only supports retrieving values from a field path.
FromFieldPath is the path of the field on the source whose value is to be used as input.
FromFieldPath is the path of the field on the resource whose value is to be used as input. Required when type is FromCompositeFieldPath or ToCompositeFieldPath.
PatchSetName to include patches from. Required when type is PatchSet.
Policy configures the specifics of patching behaviour.
FromFieldPath specifies how to patch from a field path. The default is ‘Optional’, which means the patch will be a no-op if the specified fromFieldPath does not exist. Use ‘Required’ if the patch should fail if the specified path does not exist.
MergeOptions Specifies merge options on a field path.
Specifies that already existing elements in a merged slice should be preserved
Specifies that already existing values in a merged map should be preserved
ToFieldPath is the path of the field on the resource whose value will be changed with the result of transforms. Leave empty if you’d like to propagate to the same path as fromFieldPath.
Transform is a unit of process whose input is transformed into an output with the supplied configuration.
Convert is used to cast the input into the given output type.

The expected input format.

  • quantity - parses the input as a K8s resource.Quantity. Only used during string -> float64 conversions.
  • json - parses the input as a JSON string. Only used during string -> object or string -> list conversions.

If this property is null, the default conversion is applied.

ToType is the type of the output of this transform.
Map uses the input as a key in the given map and returns the value.
Match is a more complex version of Map that matches a list of patterns.
Default: Value
Determines to what value the transform should fallback if no pattern matches.
The fallback value that should be returned by the transform if now pattern matches.
MatchTransformPattern is a transform that returns the value that matches a pattern.
Literal exactly matches the input string (case sensitive). Is required if type is literal.
Regexp to match against the input string. Is required if type is regexp.
The value that is used as result of the transform if the pattern matches.
Default: literal

Type specifies how the pattern matches the input.

  • literal - the pattern value has to exactly match (case sensitive) the input string. This is the default.

  • regexp - the pattern treated as a regular expression against which the input string is tested. Crossplane will throw an error if the key is not a valid regexp.

Math is used to transform the input via mathematical operations such as multiplication.
ClampMax makes sure that the value is not bigger than the given value.
ClampMin makes sure that the value is not smaller than the given value.
Multiply the value.
Default: Multiply
Type of the math transform to be run.
String is used to transform the input into a string or a different kind of string. Note that the input does not necessarily need to be a string.
Optional conversion method to be specified. ToUpper and ToLower change the letter case of the input string. ToBase64 and FromBase64 perform a base64 conversion based on the input string. ToJson converts any input value into its raw JSON representation. ToSha1, ToSha256 and ToSha512 generate a hash value based on the input converted to JSON. ToAdler32 generate a addler32 hash based on the input string.
Format the input using a Go format string. See https://golang.org/pkg/fmt/ for details.
Join defines parameters to join a slice of values to a string.
Separator defines the character that should separate the values from each other in the joined string.
Extract a match from the input using a regular expression.
Group number to match. 0 (the default) matches the entire expression.
Match string. May optionally include submatches, aka capture groups. See https://pkg.go.dev/regexp/ for details.
Trim the prefix or suffix from the input
Default: Format
Type of the string transform to be run.
Type of the transform to be run.
Default: FromCompositeFieldPath
Type sets the patching behaviour to be used. Each patch type may require its own fields to be set on the Patch object.
A PipelineStep in a Composition Function pipeline.
FunctionCredentials are optional credentials that a Composition Function needs to run.
Name of this set of credentials.
A SecretRef is a reference to a secret containing credentials that should be supplied to the function.
Name of the secret.
Namespace of the secret.
Source of the function credentials.
FunctionRef is a reference to the Composition Function this step should execute.
Name of the referenced Function.
Input is an optional, arbitrary Kubernetes resource (i.e. a resource with an apiVersion and kind) that will be passed to the Composition Function as the ‘input’ of its RunFunctionRequest.
Step name. Must be unique within its Pipeline.
Default: map[name:default]

PublishConnectionDetailsWithStoreConfig specifies the secret store config with which the connection details of composite resources dynamically provisioned using this composition will be published.

THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored unless the relevant Crossplane feature flag is enabled, and may be changed or removed without notice.

Name of the referenced StoreConfig.
ComposedTemplate is used to provide information about how the composed resource should be processed.
Base is the target resource that the patches will be applied on.
ConnectionDetail includes the information about the propagation of the connection information from one secret to another.
FromConnectionSecretKey is the key that will be used to fetch the value from the composed resource’s connection secret.
FromFieldPath is the path of the field on the composed resource whose value to be used as input. Name must be specified if the type is FromFieldPath.
Name of the connection secret key that will be propagated to the connection secret of the composition instance. Leave empty if you’d like to use the same key name.

Type sets the connection detail fetching behaviour to be used. Each connection detail type may require its own fields to be set on the ConnectionDetail object. If the type is omitted Crossplane will attempt to infer it based on which other fields were specified. If multiple fields are specified the order of precedence is:

  1. FromValue
  2. FromConnectionSecretKey
  3. FromFieldPath
Value that will be propagated to the connection secret of the composite resource. May be set to inject a fixed, non-sensitive connection secret value, for example a well-known port.
A Name uniquely identifies this entry within its Composition’s resources array. Names are optional but strongly recommended. When all entries in the resources array are named entries may added, deleted, and reordered as long as their names do not change. When entries are not named the length and order of the resources array should be treated as immutable. Either all or no entries must be named.
Patch objects are applied between composite and composed resources. Their behaviour depends on the Type selected. The default Type, FromCompositeFieldPath, copies a value from the composite resource to the composed resource, applying any defined transformers.
Combine is the patch configuration for a CombineFromComposite or CombineToComposite patch.
Strategy defines the strategy to use to combine the input variable values. Currently only string is supported.
String declares that input variables should be combined into a single string, using the relevant settings for formatting purposes.
Format the input using a Go format string. See https://golang.org/pkg/fmt/ for details.
A CombineVariable defines the source of a value that is combined with others to form and patch an output value. Currently, this only supports retrieving values from a field path.
FromFieldPath is the path of the field on the source whose value is to be used as input.
FromFieldPath is the path of the field on the resource whose value is to be used as input. Required when type is FromCompositeFieldPath or ToCompositeFieldPath.
PatchSetName to include patches from. Required when type is PatchSet.
Policy configures the specifics of patching behaviour.
FromFieldPath specifies how to patch from a field path. The default is ‘Optional’, which means the patch will be a no-op if the specified fromFieldPath does not exist. Use ‘Required’ if the patch should fail if the specified path does not exist.
MergeOptions Specifies merge options on a field path.
Specifies that already existing elements in a merged slice should be preserved
Specifies that already existing values in a merged map should be preserved
ToFieldPath is the path of the field on the resource whose value will be changed with the result of transforms. Leave empty if you’d like to propagate to the same path as fromFieldPath.
Transform is a unit of process whose input is transformed into an output with the supplied configuration.
Convert is used to cast the input into the given output type.

The expected input format.

  • quantity - parses the input as a K8s resource.Quantity. Only used during string -> float64 conversions.
  • json - parses the input as a JSON string. Only used during string -> object or string -> list conversions.

If this property is null, the default conversion is applied.

ToType is the type of the output of this transform.
Map uses the input as a key in the given map and returns the value.
Match is a more complex version of Map that matches a list of patterns.
Default: Value
Determines to what value the transform should fallback if no pattern matches.
The fallback value that should be returned by the transform if now pattern matches.
MatchTransformPattern is a transform that returns the value that matches a pattern.
Literal exactly matches the input string (case sensitive). Is required if type is literal.
Regexp to match against the input string. Is required if type is regexp.
The value that is used as result of the transform if the pattern matches.
Default: literal

Type specifies how the pattern matches the input.

  • literal - the pattern value has to exactly match (case sensitive) the input string. This is the default.

  • regexp - the pattern treated as a regular expression against which the input string is tested. Crossplane will throw an error if the key is not a valid regexp.

Math is used to transform the input via mathematical operations such as multiplication.
ClampMax makes sure that the value is not bigger than the given value.
ClampMin makes sure that the value is not smaller than the given value.
Multiply the value.
Default: Multiply
Type of the math transform to be run.
String is used to transform the input into a string or a different kind of string. Note that the input does not necessarily need to be a string.
Optional conversion method to be specified. ToUpper and ToLower change the letter case of the input string. ToBase64 and FromBase64 perform a base64 conversion based on the input string. ToJson converts any input value into its raw JSON representation. ToSha1, ToSha256 and ToSha512 generate a hash value based on the input converted to JSON. ToAdler32 generate a addler32 hash based on the input string.
Format the input using a Go format string. See https://golang.org/pkg/fmt/ for details.
Join defines parameters to join a slice of values to a string.
Separator defines the character that should separate the values from each other in the joined string.
Extract a match from the input using a regular expression.
Group number to match. 0 (the default) matches the entire expression.
Match string. May optionally include submatches, aka capture groups. See https://pkg.go.dev/regexp/ for details.
Trim the prefix or suffix from the input
Default: Format
Type of the string transform to be run.
Type of the transform to be run.
Default: FromCompositeFieldPath
Type sets the patching behaviour to be used. Each patch type may require its own fields to be set on the Patch object.
Default: [map[matchCondition:map[status:True type:Ready] type:MatchCondition]]
ReadinessCheck is used to indicate how to tell whether a resource is ready for consumption.
FieldPath shows the path of the field whose value will be used.
MatchCondition specifies the condition you’d like to match if you’re using “MatchCondition” type.
Default: True
Status is the status of the condition you’d like to match.
Default: Ready
Type indicates the type of condition you’d like to use.
MatchInt is the value you’d like to match if you’re using “MatchInt” type.
MatchString is the value you’d like to match if you’re using “MatchString” type.
Type indicates the type of probe you’d like to use.
WriteConnectionSecretsToNamespace specifies the namespace in which the connection secrets of composite resource dynamically provisioned using this composition will be created. This field is planned to be replaced in a future release in favor of PublishConnectionDetailsWithStoreConfigRef. Currently, both could be set independently and connection details would be published to both without affecting each other as long as related fields at MR level specified.
apiextensions.crossplane.io/v1beta1
apiextensions.crossplane.io/v1beta1

An EnvironmentConfig contains user-defined unstructured values for use in a Composition.

Read the Crossplane documentation for more information about EnvironmentConfigs.


The data of this EnvironmentConfig. This may contain any kind of structure that can be serialized into JSON.
apiextensions.crossplane.io/v1alpha1
apiextensions.crossplane.io/v1alpha1

A Usage defines a deletion blocking relationship between two resources.

Usages prevent accidental deletion of a single resource or deletion of resources with dependent resources.

Read the Crossplane documentation for more information about Compositions.


UsageSpec defines the desired state of Usage.
By is the resource that is “using the other resource”.
API version of the referent.
Reference to the resource.
Name of the referent.
Selector to the resource. This field will be ignored if ResourceRef is set.
MatchControllerRef ensures an object with the same controller reference as the selecting object is selected.
MatchLabels ensures an object with matching labels is selected.
Of is the resource that is “being used”.
API version of the referent.
Reference to the resource.
Name of the referent.
Selector to the resource. This field will be ignored if ResourceRef is set.
MatchControllerRef ensures an object with the same controller reference as the selecting object is selected.
MatchLabels ensures an object with matching labels is selected.
Reason is the reason for blocking deletion of the resource.
ReplayDeletion will trigger a deletion on the used resource during the deletion of the usage itself, if it was attempted to be deleted at least once.
UsageStatus defines the observed state of Usage.
A Condition that may apply to a resource.
LastTransitionTime is the last time this condition transitioned from one status to another.
A Message containing details about this condition’s last transition from one status to another, if any.
ObservedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.
A Reason for this condition’s last transition from one status to another.
Status of this condition; is it currently True, False, or Unknown?
Type of this condition. At most one of each condition type may apply to a resource at any point in time.
pkg.crossplane.io/v1
pkg.crossplane.io/v1

A ConfigurationRevision represents a revision of a Configuration. Crossplane creates new revisions when there are changes to a Configuration.

Crossplane creates and manages ConfigurationRevision. Don’t directly edit ConfigurationRevisions.


PackageRevisionSpec specifies the desired state of a PackageRevision.
Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
DesiredState of the PackageRevision. Can be either Active or Inactive.
Default: false
IgnoreCrossplaneConstraints indicates to the package manager whether to honor Crossplane version constrains specified by the package. Default is false.
Package image used by install Pod to extract package contents.
Default: IfNotPresent
PackagePullPolicy defines the pull policy for the package. It is also applied to any images pulled for the package, such as a provider’s controller image. Default is IfNotPresent.
LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.
Default:
Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
Revision number. Indicates when the revision will be garbage collected based on the parent’s RevisionHistoryLimit.
Default: false
SkipDependencyResolution indicates to the package manager whether to skip resolving dependencies for a package. Setting this value to true may have unintended consequences. Default is false.
PackageRevisionStatus represents the observed state of a PackageRevision.
A Condition that may apply to a resource.
LastTransitionTime is the last time this condition transitioned from one status to another.
A Message containing details about this condition’s last transition from one status to another, if any.
ObservedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.
A Reason for this condition’s last transition from one status to another.
Status of this condition; is it currently True, False, or Unknown?
Type of this condition. At most one of each condition type may apply to a resource at any point in time.
Dependency information.
A TypedReference refers to an object by Name, Kind, and APIVersion. It is commonly used to reference cluster-scoped objects or objects where the namespace is already known.
APIVersion of the referenced object.
Kind of the referenced object.
Name of the referenced object.
UID of the referenced object.
PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which namespace the rule applies to.
pkg.crossplane.io/v1
pkg.crossplane.io/v1

A Configuration installs an OCI compatible Crossplane package, extending Crossplane with support for new kinds of CompositeResourceDefinitions and Compositions.

Read the Crossplane documentation for more information about Configuration packages.


ConfigurationSpec specifies details about a request to install a configuration to Crossplane.
Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
Default: false
IgnoreCrossplaneConstraints indicates to the package manager whether to honor Crossplane version constrains specified by the package. Default is false.
Package is the name of the package that is being requested.
Default: IfNotPresent
PackagePullPolicy defines the pull policy for the package. Default is IfNotPresent.
LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.
Default:
Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
Default: Automatic
RevisionActivationPolicy specifies how the package controller should update from one revision to the next. Options are Automatic or Manual. Default is Automatic.
Default: 1
RevisionHistoryLimit dictates how the package controller cleans up old inactive package revisions. Defaults to 1. Can be disabled by explicitly setting to 0.
Default: false
SkipDependencyResolution indicates to the package manager whether to skip resolving dependencies for a package. Setting this value to true may have unintended consequences. Default is false.
ConfigurationStatus represents the observed state of a Configuration.
A Condition that may apply to a resource.
LastTransitionTime is the last time this condition transitioned from one status to another.
A Message containing details about this condition’s last transition from one status to another, if any.
ObservedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.
A Reason for this condition’s last transition from one status to another.
Status of this condition; is it currently True, False, or Unknown?
Type of this condition. At most one of each condition type may apply to a resource at any point in time.
CurrentIdentifier is the most recent package source that was used to produce a revision. The package manager uses this field to determine whether to check for package updates for a given source when packagePullPolicy is set to IfNotPresent. Manually removing this field will cause the package manager to check that the current revision is correct for the given package source.
CurrentRevision is the name of the current package revision. It will reflect the most up to date revision, whether it has been activated or not.
pkg.crossplane.io/v1alpha1
pkg.crossplane.io/v1alpha1

A ControllerConfig applies settings to controllers like Provider pods. Deprecated: Use the DeploymentRuntimeConfig instead.

Read the Package Runtime Configuration design document for more details.


ControllerConfigSpec specifies the configuration for a packaged controller. Values provided will override package manager defaults. Labels and annotations are passed to both the controller Deployment and ServiceAccount.
If specified, the pod’s scheduling constraints
Describes node affinity scheduling rules for the pod.
An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
A node selector term, associated with the corresponding weight.
A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
The label key that the selector applies to.
Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
The label key that the selector applies to.
Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
The label key that the selector applies to.
Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
The label key that the selector applies to.
Represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
Required. A pod affinity term, associated with the corresponding weight.
A label query over a set of resources, in this case pods. If it’s null, this PodAffinityTerm matches with no Pods.
A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
key is the label key that the selector applies to.
operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means “this pod’s namespace”. An empty selector ({}) matches all namespaces.