Break concepts out by component

Ideally these would nest under concepts in the side bar but that's not
possible.

Signed-off-by: Nic Cope <nicc@rk0n.org>
This commit is contained in:
Nic Cope 2025-03-28 21:41:42 -07:00
parent e6822614de
commit dc39ca3f50
22 changed files with 81 additions and 68 deletions

View File

@ -21,7 +21,13 @@ Crossplane organizes its documentation into the following sections:
* [Get Started]({{<ref "get-started">}}) explains how to install Crossplane and
create a control plane.
* [Concepts]({{<ref "concepts">}}) introduces Crossplane's key concepts.
* [Composition]({{<ref "composition">}}) covers the key concepts of composition.
* [Managed Resources]({{<ref "composition">}}) covers the key concepts of
managed resources.
* [Packages]({{<ref "composition">}}) covers the key concepts of the Crossplane
package manager.
* [Guides]({{<ref "guides">}}) guide you through common use cases, like
monitoring Crossplane or extending it by writing a composition function.

View File

@ -8,6 +8,3 @@ cascade:
The Crossplane API describes the types and parameters for the core Crossplane
components.
For details on the components read the [Concepts]({{<ref "../concepts/">}})
section.

View File

@ -38,8 +38,8 @@ Server Version: v1.17.0
## render
The `crossplane render` command previews the output of a
[composite resource]({{<ref "../concepts/composite-resources">}}) after applying
any [composition functions]({{<ref "../concepts/compositions">}}).
[composite resource]({{<ref "../composition/composite-resources">}}) after applying
any [composition functions]({{<ref "../composition/compositions">}}).
{{< hint "important" >}}
The `crossplane render` command requires you to use composition functions.
@ -178,7 +178,7 @@ built-in support in [function-go-templating](https://github.com/crossplane-contr
## xpkg
The `crossplane xpkg` commands create, install and update Crossplane
[packages]({{<ref "../concepts/packages">}}) as well as enable authentication
[packages]({{<ref "../packages/packages">}}) as well as enable authentication
and publishing of Crossplane packages to a Crossplane package registry.
### xpkg build
@ -193,9 +193,9 @@ The CLI applies the required annotations and values to meet the
[Crossplane XPKG specification](https://github.com/crossplane/crossplane/blob/main/contributing/specifications/xpkg.md).
The `crossplane` CLI supports building
[configuration]({{< ref "../concepts/packages" >}}),
[function]({{<ref "../concepts/compositions">}}) and
[provider]({{<ref "../concepts/providers" >}}) package types.
[configuration]({{< ref "../packages/packages" >}}),
[function]({{<ref "../composition/compositions">}}) and
[provider]({{<ref "../packages/providers" >}}) package types.
#### Flags
@ -270,9 +270,9 @@ with the command
The `<name>` input isn't used. Crossplane reserves the `<name>` for future releases.
The `<template>` value may be one of four well known templates:
* `configuration-template` - A template to build a Crossplane [Configuration]({{<ref "../concepts/packages">}}) from the [crossplane/configuration-template](https://github.com/crossplane/configuration-template) repository.
* `function-template-go` - A template to build Crossplane Go [composition functions]({{<ref "../concepts/compositions">}}) from the [crossplane/function-template-go](https://github.com/crossplane/function-template-go) repository.
* `function-template-python` - A template to build Crossplane Python [composition functions]({{<ref "../concepts/compositions">}}) from the [crossplane/function-template-python](https://github.com/crossplane/function-template-go) repository.
* `configuration-template` - A template to build a Crossplane [Configuration]({{<ref "../packages/packages">}}) from the [crossplane/configuration-template](https://github.com/crossplane/configuration-template) repository.
* `function-template-go` - A template to build Crossplane Go [composition functions]({{<ref "../composition/compositions">}}) from the [crossplane/function-template-go](https://github.com/crossplane/function-template-go) repository.
* `function-template-python` - A template to build Crossplane Python [composition functions]({{<ref "../composition/compositions">}}) from the [crossplane/function-template-python](https://github.com/crossplane/function-template-go) repository.
* `provider-template` - A template to build a basic Crossplane provider from the [Crossplane/provider-template](https://github.com/crossplane/provider-template) repository.
* `provider-template-upjet` - A template for building [Upjet](https://github.com/crossplane/upjet) based Crossplane providers from existing Terraform providers. Copies from the [upbound/upjet-provider-template](https://github.com/upbound/upjet-provider-template) repository.
@ -352,7 +352,7 @@ returns an error if the `wait` time expires before the package is `HEALTHY`.
#### Require manual package activation
Set the package to require
[manual activation]({{<ref "../concepts/packages#revision-activation-policy" >}}),
[manual activation]({{<ref "../packages/packages#revision-activation-policy" >}}),
preventing an automatic upgrade of a package with `--manual-activation`
#### Authenticate to a private registry
@ -372,7 +372,7 @@ cache.
Store more inactive copies of a package with `--revision-history-limit`.
Read more about
[package revisions]({{< ref "../concepts/packages#configuration-revisions" >}})
[package revisions]({{< ref "../packages/packages#configuration-revisions" >}})
in the package documentation.
### xpkg login
@ -515,9 +515,9 @@ migration to the new APIs and resources, the `crossplane beta convert` command
converts a Crossplane resource to a new version or kind.
Use the `crossplane beta convert` command to convert a
ControllerConfig to a [DeploymentRuntimeConfig]({{<ref "../concepts/providers#runtime-configuration">}})
ControllerConfig to a [DeploymentRuntimeConfig]({{<ref "../packages/providers#runtime-configuration">}})
or a legacy Composition using `mode: Resources` to a
[Composition pipeline function]({{< ref "../concepts/compositions" >}}).
[Composition pipeline function]({{< ref "../composition/compositions" >}}).
Provide the `crossplane beta convert` command the conversion type, the input
file and optionally, an output file. By default the command writes the output to
@ -829,7 +829,7 @@ Configuration/platform-ref-aws v0.9.0 True
### beta validate
The `crossplane beta validate` command validates
[compositions]({{<ref "../concepts/compositions">}}) against provider or XRD
[compositions]({{<ref "../composition/compositions">}}) against provider or XRD
schemas using the Kubernetes API server's validation library
with extra validation such as checking for unknown fields,
a common source of difficult to debug issues in Crossplane.

View File

@ -0,0 +1,5 @@
---
title: Composition
weight: 51
description: Understand Crossplane's core components
---

View File

@ -483,7 +483,7 @@ Changing or expanding the XRD schema requires restarting the [Crossplane pod]({{
### Manage connection secrets
When a composite resource creates managed resources, Crossplane provides any
[connection secrets]({{<ref "./managed-resources#writeconnectionsecrettoref">}})
[connection secrets]({{<ref "../managed-resources/managed-resources#writeconnectionsecrettoref">}})
to the composite resource. This requires the creators of composite resources to
know the secrets provided by a managed resource. In other cases, Crossplane
administrators may not want to expose some or all the generated connection
@ -542,7 +542,7 @@ recreate the XRD to change the `connectionSecretKeys`.
{{</hint >}}
For more information on connection secrets read the
[Connection Secrets knowledge base article]({{<ref "connection-details">}}).
[Connection Secrets knowledge base article]({{<ref "../managed-resources/connection-details">}}).
### Set composite resource defaults
XRDs can set default parameters for composite resources.

View File

@ -284,7 +284,7 @@ spec:
### Manage connection secrets
When a composite resource creates resources, Crossplane provides any
[connection secrets]({{<ref "./managed-resources#writeconnectionsecrettoref">}})
[connection secrets]({{<ref "../managed-resources/managed-resources#writeconnectionsecrettoref">}})
to the composite resource.
{{<hint "important" >}}
@ -317,7 +317,7 @@ spec:
# Removed for brevity
```
For more information on connection secrets read the [Connection Secrets knowledge base article]({{<ref "connection-details">}}).
For more information on connection secrets read the [Connection Secrets knowledge base article]({{<ref "../managed-resources/connection-details">}}).
### Pausing composite resources
@ -395,7 +395,7 @@ The conditions of composite resources match the conditions of their managed
resources.
Read the
[conditions section]({{<ref "./managed-resources#conditions">}}) of the
[conditions section]({{<ref "../managed-resources/managed-resources#conditions">}}) of the
managed resources documentation for details.
## Composite resource labels

View File

@ -137,7 +137,7 @@ spec:
{{< hint "tip" >}}
Functions are Crossplane Packages. Read more about Packages in the
[Packages documentation]({{<ref "packages" >}}).
[Packages documentation]({{<ref "../packages/packages" >}}).
{{< /hint >}}
By default, the Function pod installs in the same namespace as Crossplane

View File

@ -694,7 +694,7 @@ my-app True True app-yaml 56s
The `COMPOSITION` column shows what composition the `App` is using.
You can create multiple compositions for each kind of XR.
[Read the XR page]({{<ref "../concepts/composite-resources">}}) to learn how to
[Read the XR page]({{<ref "../composition/composite-resources">}}) to learn how to
select which composition Crossplane uses.
{{</hint>}}

View File

@ -70,11 +70,11 @@ support features like loops and conditionals.
{{<expand "Confused about Compositions, XRDs and XRs?" >}}
Crossplane has four core components that users commonly mix up:
* [Composition]({{<ref "../concepts/compositions">}}) - A template to define
* [Composition]({{<ref "../composition/compositions">}}) - A template to define
how to create resources.
* [composite resource Definition]({{<ref "../concepts/composite-resource-definitions">}})
* [composite resource Definition]({{<ref "../composition/composite-resource-definitions">}})
(`XRD`) - A custom API specification.
* [composite resource]({{<ref "../concepts/composite-resources">}}) (`XR`) -
* [composite resource]({{<ref "../composition/composite-resources">}}) (`XR`) -
Created by using the custom API defined in a composite resource Definition.
XRs use the Composition template to create new managed resources.
{{</expand >}}
@ -94,7 +94,7 @@ spec:
```
{{<hint "tip" >}}
Read the [Composition page]({{<ref "../concepts/compositions">}}) to learn more
Read the [Composition page]({{<ref "../composition/compositions">}}) to learn more
about Compositions and composition functions.
{{< /hint >}}
@ -117,7 +117,7 @@ identifies the resource inside the Composition. It isn't related to the external
name used with the Provider.
The contents of the `base` are identical to creating a standalone
[managed resource]({{<ref "../concepts/managed-resources">}}).
[managed resource]({{<ref "../managed-resources/managed-resources">}}).
This example uses
[provider-upjet-aws](https://github.com/crossplane-contrib/provider-upjet-aws)
@ -148,7 +148,7 @@ resources:
region: "us-east-2"
```
When a [composite resource]({{<ref "../concepts/composite-resources" >}}) uses
When a [composite resource]({{<ref "../composition/composite-resources" >}}) uses
this function, the composite resource creates two new managed resources with all
the provided `spec.forProvider` settings.
@ -393,7 +393,7 @@ can read and write from this data store as part of the patch process.
<!-- vale off -->
{{< hint "note" >}}
<!-- vale on -->
Read the [EnvironmentConfigs]({{<ref "../concepts/environment-configs" >}}) page
Read the [EnvironmentConfigs]({{<ref "../composition/environment-configs" >}}) page
for more information on using EnvironmentConfigs.
{{< /hint >}}
@ -405,8 +405,8 @@ to use with
<!-- vale gitlab.SentenceLength = NO -->
<!-- ignore false positive -->
Use either a
[reference]({{<ref "../concepts/managed-resources#matching-by-name-reference" >}})
or a [selector]({{<ref "../concepts/managed-resources#matching-by-selector" >}}) to
[reference]({{<ref "../managed-resources/managed-resources#matching-by-name-reference" >}})
or a [selector]({{<ref "../managed-resources/managed-resources#matching-by-selector" >}}) to
identify the EnvironmentConfigs to use.
<!-- vale Google.Quotes = YES -->
@ -476,7 +476,7 @@ resources:
toFieldPath: spec.forProvider.tags
```
The [EnvironmentConfigs]({{<ref "../concepts/environment-configs" >}}) page has
The [EnvironmentConfigs]({{<ref "../composition/environment-configs" >}}) page has
more information on EnvironmentConfigs options and usage.
## Types of patches
@ -857,7 +857,7 @@ Status:
EnvironmentConfigs are an alpha feature. They aren't enabled by default.
For more information about using an EnvironmentConfig, read the
[EnvironmentConfigs documentation]({{<ref "../concepts/environment-configs">}}).
[EnvironmentConfigs documentation]({{<ref "../composition/environment-configs">}}).
{{< /hint >}}
The `FromEnvironmentFieldPath` patch takes values from the in-memory environment
@ -906,7 +906,7 @@ Spec:
{{<hint "important" >}}
For more information about using an EnvironmentConfig, read the
[EnvironmentConfigs documentation]({{<ref "../concepts/environment-configs">}}).
[EnvironmentConfigs documentation]({{<ref "../composition/environment-configs">}}).
{{< /hint >}}
The `ToEnvironmentFieldPath` patch takes a value from the composed resource and
@ -948,7 +948,7 @@ wrote the value to the environment.
{{<hint "important" >}}
For more information about using an EnvironmentConfig, read the
[EnvironmentConfigs documentation]({{<ref "../concepts/environment-configs">}}).
[EnvironmentConfigs documentation]({{<ref "../composition/environment-configs">}}).
{{< /hint >}}
The `CombineFromEnvironment` patch combines multiple values from the in-memory
@ -1016,7 +1016,7 @@ Annotations: EnvironmentPatch: value1-value2
{{<hint "important" >}}
For more information about using an EnvironmentConfig, read the
[EnvironmentConfigs documentation]({{<ref "../concepts/environment-configs">}}).
[EnvironmentConfigs documentation]({{<ref "../composition/environment-configs">}}).
{{< /hint >}}
The `CombineToEnvironment` patch combines multiple values from the composed
@ -1834,12 +1834,12 @@ By default an XRD writes all secret keys listed in the composed resources
`connectionDetails` to the combined secret object.
Read the
[CompositeResourceDefinition documentation]({{<ref "../concepts/composite-resource-definitions#manage-connection-secrets">}})
[CompositeResourceDefinition documentation]({{<ref "../composition/composite-resource-definitions#manage-connection-secrets">}})
for more information on restricting secret keys.
{{< /hint >}}
For more information on connection secrets read the
[Connection Secrets concepts age]({{<ref "../concepts/connection-details">}}).
[Connection Secrets concepts age]({{<ref "../managed-resources/connection-details">}}).
## Resource readiness checks

View File

@ -8,7 +8,7 @@ Composition functions (or just functions, for short) are custom programs that
template Crossplane resources. Crossplane calls composition functions to
determine what resources it should create when you create a composite resource
(XR). Read the
[concepts]({{<ref "../concepts/compositions" >}})
[concepts]({{<ref "../composition/compositions" >}})
page to learn more about composition functions.
You can write a function to template resources using a general purpose
@ -19,7 +19,7 @@ conditionals. This guide explains how to write a composition function in
{{< hint "important" >}}
It helps to be familiar with
[how composition functions work]({{<ref "../concepts/compositions#how-composition-functions-work" >}})
[how composition functions work]({{<ref "../composition/compositions#how-composition-functions-work" >}})
before following this guide.
{{< /hint >}}
@ -139,7 +139,7 @@ should delete the `input` and `package/input` directories.
The `input` directory defines a Go struct that a function can use to take input,
using the `input` field from a Composition. The
[composition functions]({{<ref "../concepts/compositions/#function-input" >}})
[composition functions]({{<ref "../composition/compositions/#function-input" >}})
documentation explains how to pass an input to a composition function.
The `package/input` directory contains an OpenAPI schema generated from the
@ -775,7 +775,7 @@ spec:
{{<hint "tip">}}
Read the composition functions documentation to learn more about
[testing composition functions]({{< ref "../concepts/compositions#test-a-composition" >}}).
[testing composition functions]({{< ref "../composition/compositions#test-a-composition" >}}).
{{</hint>}}
## Build and push the function to a package registry
@ -792,7 +792,7 @@ then pushing all the packages to a single tag in the registry.
Pushing your function to a registry allows you to use your function in a
Crossplane control plane. See the
[composition functions documentation]({{<ref "../concepts/compositions" >}})
[composition functions documentation]({{<ref "../composition/compositions" >}})
to learn how to use a function in a control plane.
Use Docker to build a runtime for each platform.
@ -843,7 +843,7 @@ crossplane xpkg build \
{{<hint "tip">}}
Crossplane packages are special OCI images. Read more about packages in the
[packages documentation]({{< ref "../concepts/packages" >}}).
[packages documentation]({{< ref "../packages/packages" >}}).
{{</hint>}}
Push both package files to a registry. Pushing both files to one tag in the

View File

@ -8,7 +8,7 @@ Composition functions (or just functions, for short) are custom programs that
template Crossplane resources. Crossplane calls composition functions to
determine what resources it should create when you create a composite resource
(XR). Read the
[concepts]({{<ref "../concepts/compositions" >}})
[concepts]({{<ref "../composition/compositions" >}})
page to learn more about composition functions.
You can write a function to template resources using a general purpose
@ -19,7 +19,7 @@ conditionals. This guide explains how to write a composition function in
{{< hint "important" >}}
It helps to be familiar with
[how composition functions work]({{<ref "../concepts/compositions#how-composition-functions-work" >}})
[how composition functions work]({{<ref "../composition/compositions#how-composition-functions-work" >}})
before following this guide.
{{< /hint >}}
@ -129,7 +129,7 @@ The `package/input` directory defines the OpenAPI schema for the a function's
input. The function in this guide doesn't accept an input. Delete the
`package/input` directory.
The [composition functions]({{<ref "../concepts/compositions" >}})
The [composition functions]({{<ref "../composition/compositions" >}})
documentation explains composition function inputs.
{{<hint "tip">}}
@ -636,7 +636,7 @@ spec:
{{<hint "tip">}}
Read the composition functions documentation to learn more about
[testing composition functions]({{< ref "../concepts/compositions#test-a-composition" >}}).
[testing composition functions]({{< ref "../composition/compositions#test-a-composition" >}}).
{{</hint>}}
## Build and push the function to a package registry
@ -653,7 +653,7 @@ then pushing all the packages to a single tag in the registry.
Pushing your function to a registry allows you to use your function in a
Crossplane control plane. See the
[composition functions documentation]({{<ref "../concepts/compositions" >}}).
[composition functions documentation]({{<ref "../composition/compositions" >}}).
to learn how to use a function in a control plane.
Use Docker to build a runtime for each platform.
@ -712,7 +712,7 @@ crossplane xpkg build \
{{<hint "tip">}}
Crossplane packages are special OCI images. Read more about packages in the
[packages documentation]({{< ref "../concepts/packages" >}}).
[packages documentation]({{< ref "../packages/packages" >}}).
{{</hint>}}
Push both package files to a registry. Pushing both files to one tag in the

View File

@ -0,0 +1,5 @@
---
title: Managed Resources
weight: 52
description: Understand Crossplane's core components
---

View File

@ -1,6 +1,6 @@
---
title: Connection Details
weight: 110
weight: 20
description: "How to create and manage connection details across Crossplane managed resources, composite resources and Compositions"
---

View File

@ -198,7 +198,7 @@ the same composite resource.
{{<hint "note" >}}
Learn more about composite resources in the
[Composite Resources]({{<ref "./composite-resources">}}) section.
[Composite Resources]({{<ref "../composition/composite-resources">}}) section.
{{</hint >}}
Matching only a controller reference simplifies the matching process without
@ -281,7 +281,7 @@ resources:
{{<hint "note" >}}
These examples use Function Patch and Transform. Learn more about functions and
Compositions in the [Compositions]({{<ref "./compositions">}}) section.
Compositions in the [Compositions]({{<ref "../composition/compositions">}}) section.
{{</hint >}}
@ -463,7 +463,7 @@ The following is a list of common policy combinations:
<!-- vale on -->
The `providerConfigRef` on a managed resource tells the Provider which
[ProviderConfig]({{<ref "./providers#provider-configuration">}}) to
[ProviderConfig]({{<ref "../packages/providers#provider-configuration">}}) to
use when creating the managed resource.
Use a ProviderConfig to define the authentication method to use when
@ -572,7 +572,7 @@ secrets store like [HashiCorp Vault](https://www.vaultproject.io/).
Using `publishConnectionDetailsTo` requires enabling Crossplane
External Secrets Stores (ESS). Enable ESS inside a Provider with a
[DeploymentRuntimeConfig]({{<ref "providers#runtime-configuration" >}}) and
[DeploymentRuntimeConfig]({{<ref "../packages/providers#runtime-configuration" >}}) and
in Crossplane with the `--enable-external-secret-stores` argument.
{{< hint "note" >}}

View File

@ -1,6 +1,6 @@
---
title: Usages
weight: 95
weight: 30
state: beta
alphaVersion: "1.14"
betaVersion: "1.19"

View File

@ -1,5 +1,5 @@
---
title: Concepts
weight: 50
title: Packages
weight: 53
description: Understand Crossplane's core components
---

View File

@ -7,22 +7,22 @@ weight: 200
A _Configuration_ package is an
[OCI container image](https://opencontainers.org/) containing a collection of
[Compositions]({{<ref "./compositions" >}}),
[Composite Resource Definitions]({{<ref "./composite-resource-definitions" >}})
[Compositions]({{<ref "../composition/compositions" >}}),
[Composite Resource Definitions]({{<ref "../composition/composite-resource-definitions" >}})
and any required [Providers]({{<ref "./providers">}}) or
[Functions]({{<ref "./compositions" >}}).
[Functions]({{<ref "../composition/compositions" >}}).
Configuration packages make your Crossplane configuration fully portable.
{{<hint "important" >}}
Crossplane [Providers]({{<ref "./providers">}}) and
[Functions]({{<ref "./compositions">}}) are also Crossplane packages.
[Functions]({{<ref "../composition/compositions">}}) are also Crossplane packages.
This document describes how to install and manage configuration packages.
Refer to the
[Provider]({{<ref "./providers">}}) and
[Composition Functions]({{<ref "./compositions">}}) chapters for
[Composition Functions]({{<ref "../composition/compositions">}}) chapters for
details on their usage of packages.
{{< /hint >}}

View File

@ -30,7 +30,7 @@ Find more providers in Crossplane's [public package registries](https://www.cros
Providers define every external resource they can create in Kubernetes as a
Kubernetes API endpoint.
These endpoints are
[_Managed Resources_]({{<ref "managed-resources" >}}).
[_Managed Resources_]({{<ref "../managed-resources/managed-resources" >}}).
<!-- vale write-good.Passive = YES -->

View File

@ -233,5 +233,5 @@ using the package manager. This allows you to deploy several control planes with
identical capabilities - for example one control plane per region or per
service.
Read about Crossplane packages in [Concepts]({{<ref "../concepts/packages">}})
Read about Crossplane packages in [Concepts]({{<ref "../packages/packages">}})
to learn about the package manager.