Merge pull request #500 from plumbis/vale-xrd

This commit is contained in:
Jean du Plessis 2023-07-27 13:23:13 +02:00 committed by GitHub
commit 0968bbe309
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
33 changed files with 365 additions and 170 deletions

View File

@ -12,12 +12,11 @@ the Crossplane documentation.
Information on contributing to the Crossplane software project is in the
Crossplane
[CONTRIBUTING.md](https://github.com/crossplane/crossplane/blob/master/CONTRIBUTING.md)
[`CONTRIBUTING.md`](https://github.com/crossplane/crossplane/blob/master/CONTRIBUTING.md)
file.
## Code of conduct
Crossplane follows the [CNCF Code of
Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md).
Crossplane follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md).
Taken directly from the code:
<!-- vale off -->

View File

@ -191,11 +191,12 @@ For example, the following code block allows editing the key and secret fields.
aws_access_key_id = $@<aws_access_key>$@
aws_secret_access_key = $@<aws_secret_key>$@
```
{{</ editCode >}}
{{< /editCode >}}
<!-- vale off -->
To set a field as editable wrap a standard code block, including language highlighting hints in the `{{</* editCode */>}}` shortcode.
<!-- vale on -->
Wrap any editable element in dollar-sign followed by a at character (`$@`).
Wrap any editable element in dollar sign followed by a at character (`$@`).
````go
{{</* editCode */>}}

View File

@ -17,7 +17,7 @@ If you're having trouble with the Hugo shortcodes, ask for help in the
## Markdown
Crossplane documentation uses Hugo to render Markdown to
HTML. Hugo supports [Commonmark](https://commonmark.org/) and
[GitHub Flavored Markdown](https://github.github.com/gfm/) (`GFM`) through the
[GitHub Flavored Markdown](https://github.github.com/gfm/) through the
[Goldmark](https://github.com/yuin/goldmark/) parser.
{{< hint "note" >}}
@ -131,7 +131,7 @@ Images using the shortcode are automatically converted to `webp` image format,
compressed and use responsive image sizing.
{{<hint "note">}}
The `img` shortcode doesn't support .SVG files.
The `img` shortcode doesn't support `.svg` files.
{{< /hint >}}
The shortcode requires a `src`, an
@ -165,16 +165,19 @@ and notifies which links to change after moving a page.
### Between docs pages
For links between pages use a standard Markdown link in the form:
<!-- vale off -->
`[Link text](link)`
<!-- vale on -->
Crossplane recommends using the [Hugo ref
shortcode](https://gohugo.io/content-management/shortcodes/#ref-and-relref)
Crossplane recommends using the [Hugo ref shortcode](https://gohugo.io/content-management/shortcodes/#ref-and-relref)
with the path of the file relative to `/content` for the link location.
For example, to link to the `master` release index page use
<!-- vale off -->
```markdown
[master branch documentation]({{</* ref "master/_index.md" */>}})
```
<!-- vale on -->
<!-- [master branch documentation]({{<ref "master/_index.md" >}}) -->
@ -231,9 +234,11 @@ for the `table` shortcode. The docs support all Bootstrap table classes passed
to the shortcode.
### Striped tables
<!-- vale off -->
To create a table with
[striped rows](https://getbootstrap.com/docs/5.2/content/tables/#striped-rows):
```markdown
{{</* table "table table-striped" */>}}
| Title | A Column | Another Column |
@ -242,6 +247,7 @@ To create a table with
| A Row | more of the row | another column in the row |
{{</* /table */>}}
```
<!-- vale on -->
{{< table "table table-striped">}}
| Title | A Column | Another Column |

View File

@ -17,10 +17,10 @@ files, like HTML templates, shortcodes and global media files.
The `/utils/` directory is for JavaScript source code and files unrelated to
Hugo used in the website.
<!-- vale Crossplane.Spelling = NO -->
The `/themes/geekboot/assets` folder contains all (S)CSS and compiled JavaScript
for the website.
<!-- vale Crossplane.Spelling = YES -->
## CSS
Crossplane documentation uses [Bootstrap
5.2](https://getbootstrap.com/docs/5.2/getting-started/introduction/).
@ -91,13 +91,12 @@ has bundled, minified and compressed the JavaScript.
The source JavaScript is in `/utils/webpack/src/js` and
requires [Webpack](https://webpack.js.org/) to bundle and optimize the code.
* `colorMode.js` provides the ability to change the light/dark mode color theme.
* `colorMode.js` provides the ability to change the light and dark mode color theme.
* `tabDeepAnchor.js` rewrites anchor links inside tabs to open a tab and present
the anchor.
* `globalScripts.js` is the point of entry for Webpack to determine all
dependencies. This bundles [instant.page](https://instant.page/) and
[Bootstrap's
JavaScript](https://getbootstrap.com/docs/5.2/getting-started/javascript/).
[Bootstrap's JavaScript](https://getbootstrap.com/docs/5.2/getting-started/javascript/).
### Bootstrap JavaScript builder
The entire [Bootstrap JavaScript

View File

@ -8,7 +8,7 @@ hideFromLanding: true
Crossplane relies on [Vale](https://github.com/errata-ai/vale) to enforce the style guide.
Crossplane's Vale style definitions are in the
[utils/vale](https://github.com/crossplane/docs/tree/master/utils/vale)
[`utils/vale`](https://github.com/crossplane/docs/tree/master/utils/vale)
directory.
{{< hint "important" >}}
@ -21,9 +21,9 @@ content. The community approves PRs with Vale errors in unmodified document sect
Follow the directions on the Vale website to
[install the Vale binary](https://vale.sh/docs/vale-cli/installation/).
<!-- vale off -->
Crossplane CI uses [Vale v2.22.0](https://github.com/errata-ai/vale/releases/tag/v2.22.0) or later.
<!-- vale on -->
## Run Vale
Run Vale on all documentation from the command-line with
@ -62,6 +62,27 @@ Crossplane maintainers consider Vale warnings the same as errors.
Error levels aren't changed to make Vale style maintenance easier.
{{< /hint >}}
### Spelling errors and exceptions
Spelling exceptions are in `utils/vale/styles/Crossplane`.
* `allowed-jargon.txt` - technical terms allowed in the docs
* `brands.txt` - brand and product names
* `crossplane-words.txt` - words specific to Crossplane
* `provider-words.txt` - words related to Providers and Provider resources
* `spelling-exceptions.txt` - English words that are incorrectly flagged as errors
If Vale considers a word incorrect add an
exception to one of the text files along with your pull request.
<!-- vale off -->
Because of how Vale parses words the following are errors:
* Hugo shortcodes without a space between the quote and angle bracket.
For example `{{</* expand "Reference Composition"*/>}}`
* Markdown links containing a line break.
* Hugo `{{</* ref */>}}` links containing a line break.
* Markdown link styling outside of the square brackets.
For example `_[error]_` is an error. Use `[_works_]` instead.
<!-- vale on -->
### Ignore Vale rules
Vale can turn off specific rules or all rules inside a doc.
@ -74,6 +95,24 @@ After the ignored content turn the rules back on.
Vale ignores rules not turned back on for the rest of the document.
{{< /hint >}}
#### Sentence length
<!-- vale Google.WordList = NO -->
Vale counts words in a link URL in the `gitlab.SentenceLength` check.
<!-- vale Google.WordList = YES -->
Aim for 25 to 30 word sentences. If a URL triggers a Vale error wrap the sentence
in a rule disabling the rule.
```html
<!-- vale gitlab.SentenceLength = NO -->
The XRD `version` is like the
[API versioning used by Kubernetes](https://kubernetes.io/docs/reference/using-api/#api-versioning).
The version shows how mature or stable the API is and increments when changing,
adding or removing fields in the API.
<!-- vale gitlab.SentenceLength = YES -->
```
### Ignore all rules
Use `<!-- vale off -->` to ignore all Vale rules and `<!-- vale on -->` to turn

View File

@ -133,7 +133,7 @@ spec:
```
{{</expand >}}
{{<expand "Reference CompositeResourceDefinition">}}
{{<expand "Reference CompositeResourceDefinition" >}}
```yaml
apiVersion: apiextensions.crossplane.io/v1

View File

@ -185,7 +185,7 @@ The
object defines the name of the Kubernetes secret object where Crossplane saves
the connection details.
{{<hint "note">}}
{{<hint "note" >}}
The Crossplane creates the secret object in the same namespace as the Claim.
{{< /hint >}}

View File

@ -153,10 +153,12 @@ spec:
### XRD versions
<!-- vale gitlab.SentenceLength = NO -->
The XRD `version` is like the
[API versioning used by Kubernetes](https://kubernetes.io/docs/reference/using-api/#api-versioning).
The version shows how mature or stable the API is and increments when changing,
adding or removing fields in the API.
<!-- vale gitlab.SentenceLength = YES -->
Crossplane doesn't require specific versions or a specific version naming
convention, but following
@ -180,7 +182,7 @@ required or optional.
{{<hint "note" >}}
All `schemas` follow the Kubernetes custom resource definition
[Open APIv3 structural schema](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#specifying-a-structural-schema).
[OpenAPIv3 structural schema](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#specifying-a-structural-schema).
{{< /hint >}}
Each
@ -414,8 +416,7 @@ version can be `referenceable`.
{{< hint "note" >}}
Changing which version is `referenceable:true` requires [updating the
`compositeTypeRef.apiVersion`]({{<ref
"./compositions#enabling-composite-resources" >}})
`compositeTypeRef.apiVersion`]({{<ref "./compositions#enabling-composite-resources" >}})
of any Compositions referencing that XRD.
{{< /hint >}}
@ -432,10 +433,14 @@ webhooks](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/cu
New versions may define new optional parameters, but new required fields are
a "breaking change."
<!-- vale Crossplane.Spelling = NO -->
<!-- ignore to allow for CRDs -->
<!-- don't add to the spelling exceptions to catch when it's used instead of XRD -->
Crossplane XRDs use Kubernetes custom resource definitions for versioning.
Read the Kubernetes documentation on [versions in
CustomResourceDefinitions](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definition-versioning/)
Read the Kubernetes documentation on
[versions in CustomResourceDefinitions](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definition-versioning/)
for more background on versions and breaking changes.
<!-- vale Crossplane.Spelling = YES -->
Crossplane recommends implementing breaking schema changes as brand new XRDs.
{{< /hint >}}
@ -623,9 +628,9 @@ knowledge base article]({{<ref "/knowledge-base/guides/connection-details">}}).
### Set composite resource defaults
XRDs can set default parameters for composite resources and Claims.
<!-- vale Google.Headings = NO -->
<!-- vale off -->
#### defaultCompositeDeletePolicy
<!-- vale Google.Headings = YES -->
<!-- vale on -->
The `defaultCompositeDeletePolicy` defines the deletion policy for composite
resources and claims.
@ -658,9 +663,9 @@ spec:
# Removed for brevity
```
<!-- vale Google.Headings = NO -->
<!-- vale off -->
#### defaultCompositionRef
<!-- vale Google.Headings = YES -->
<!-- vale on -->
It's possible for multiple [Compositions]({{<ref "./compositions">}}) to
reference the same XRD. If more than one Composition references the same XRD,
the composite resource or Claim must select which Composition to use.
@ -687,9 +692,9 @@ spec:
# Removed for brevity
```
<!-- vale Google.Headings = NO -->
<!-- vale off -->
#### defaultCompositionUpdatePolicy
<!-- vale Google.Headings = YES -->
<!-- vale on -->
Changes to a Composition generate a new Composition revision. By default all
composite resources and Claims use the updated Composition revision.
@ -717,9 +722,9 @@ spec:
# Removed for brevity
```
<!-- vale Google.Headings = NO -->
<!-- vale off -->
#### enforcedCompositionRef
<!-- vale Google.Headings = YES -->
<!-- vale on -->
To require all composite resources or Claims to use a specific Composition use
the `enforcedCompositionRef` setting in the XRD.
@ -783,9 +788,9 @@ Status:
# Removed for brevity
```
<!-- vale Google.Headings = NO -->
<!-- vale off -->
#### WatchingCompositeResource
<!-- vale Google.Headings = YES -->
<!-- vale on -->
`Reason: WatchingCompositeResource` indicates Crossplane defined the new
Kubernetes custom resource definitions related to the composite resource and is
watching for the creation of new composite resources.
@ -796,9 +801,9 @@ Status: True
Reason: WatchingCompositeResource
```
<!-- vale Google.Headings = NO -->
<!-- vale off -->
#### TerminatingCompositeResource
<!-- vale Google.Headings = YES -->
<!-- vale on -->
`Reason: TerminatingCompositeResource` indicates Crossplane is deleting the
custom resource definitions related to the composite resource and is
terminating the composite resource controller.
@ -809,9 +814,9 @@ Status: False
Reason: TerminatingCompositeResource
```
<!-- vale Google.Headings = NO -->
<!-- vale off -->
#### WatchingCompositeResourceClaim
<!-- vale Google.Headings = YES -->
<!-- vale on -->
`Reason: WatchingCompositeResourceClaim` indicates Crossplane defined the new
Kubernetes custom resource definitions related to the offered Claims and is
watching for the creation of new Claims.
@ -822,9 +827,9 @@ Status: True
Reason: WatchingCompositeResourceClaim
```
<!-- vale Google.Headings = NO -->
<!-- vale off -->
#### TerminatingCompositeResourceClaim
<!-- vale Google.Headings = YES -->
<!-- vale on -->
`Reason: TerminatingCompositeResourceClaim` indicates Crossplane is deleting the
custom resource definitions related to the offered Claims and is
terminating the Claims controller.

View File

@ -92,9 +92,11 @@ By default, managed resources created by a composite resource have the name of
the composite resource, followed by a random suffix.
<!-- vale Google.FirstPerson = NO -->
<!-- vale Crossplane.Spelling = NO -->
For example, a composite resource named "my-composite-resource" creates external
resources named "my-composite-resource-fqvkw."
<!-- vale Google.FirstPerson = YES -->
<!-- vale Crossplane.Spelling = YES -->
Resource names can be deterministic by applying an
{{<hover label="annotation" line="5">}}annotation{{</hover>}} to the composite

View File

@ -61,8 +61,8 @@ Read more about Composite Resources in the
{{< /hint >}}
For example, a Composition can define a template to create a VM and an
associated storage bucket at the same time.
For example, a Composition can define a template to create a virtual machine
and an associated storage bucket at the same time.
The {{<hover label="resources" line="4">}}resources{{</hover>}} field lists the
individual resources with a
@ -797,7 +797,7 @@ the
| --- | --- |
| {{<hover label="conDeet" line="16">}}fromConnectionSecretKey{{</hover>}} | Create a secret key matching the key of a secret generated by the resource. |
| {{<hover label="conDeet" line="18">}}fromFieldPath{{</hover>}} | Create a secret key matching a field path of the resource. |
| {{<hover label="conDeet" line="20">}}value{{</hover>}} | Create a secret key with a pre-defined value. |
| {{<hover label="conDeet" line="20">}}value{{</hover>}} | Create a secret key with a predefined value. |
{{< /table >}}
{{<hint "note">}}

View File

@ -231,8 +231,8 @@ The `ObserveOnly` policy can also place existing resources under the control of
Crossplane.
{{< hint "tip" >}}
Read the [Import Existing Resources]({{<ref
"/knowledge-base/guides/import-existing-resources" >}}) guide for more
Read the [Import Existing Resources]({{<ref "/knowledge-base/guides/import-existing-resources" >}})
guide for more
information on using the `managementPolicy` to import existing resources.
{{< /hint >}}
@ -290,10 +290,11 @@ same Provider.
### providerRef
<!-- vale on -->
<!-- vale Crossplane.Spelling = NO -->
Crossplane deprecated the `providerRef` field in `crossplane-runtime`
[v0.10.0](https://github.com/crossplane/crossplane-runtime/releases/tag/v0.10.0).
Managed resources using `providerRef`must use [`providerConfigRef`](#providerconfigref).
<!-- vale Crossplane.Spelling = YES -->
<!-- vale off -->
### writeConnectionSecretToRef
@ -306,8 +307,7 @@ Crossplane stores these details in a Kubernetes Secret object specified by the
`writeConnectionSecretToRef` values.
For example, when creating an AWS RDS database instance with the Crossplane
[community AWS
provider](https://marketplace.upbound.io/providers/crossplane-contrib/provider-aws/v0.40.0)
[community AWS provider](https://marketplace.upbound.io/providers/crossplane-contrib/provider-aws/v0.40.0)
generates an endpoint, password, port and username data. The Provider saves
these variables in the Kubernetes secret
{{<hover label="secretname" line="9" >}}rds-secret{{</hover>}}, referenced by

View File

@ -414,7 +414,7 @@ spec:
```
{{< /expand >}}
{{< expand "Reference EnvironmentConfig">}}
{{< expand "Reference EnvironmentConfig" >}}
```yaml {copy-lines="all"}
apiVersion: apiextensions.crossplane.io/v1alpha1
kind: EnvironmentConfig
@ -719,8 +719,8 @@ Status:
{{<hint "important" >}}
EnvironmentConfigs are an alpha feature. They aren't enabled by default.
For more information about using an EnvironmentConfig, read the [Environment
Configs]({{<ref "./environment-configs">}}) documentation.
For more information about using an EnvironmentConfig, read the
[EnvironmentConfigs]({{<ref "./environment-configs">}}) documentation.
{{< /hint >}}
The
@ -776,8 +776,8 @@ Spec:
{{<hint "important" >}}
EnvironmentConfigs are an alpha feature. They aren't enabled by default.
For more information about using an EnvironmentConfig, read the [Environment
Configs]({{<ref "./environment-configs">}}) documentation.
For more information about using an EnvironmentConfig, read the
[EnvironmentConfigs]({{<ref "./environment-configs">}}) documentation.
{{< /hint >}}
The
@ -839,8 +839,8 @@ read from the `atProvider` or `Status` fields.
{{<hint "important" >}}
EnvironmentConfigs are an alpha feature. They aren't enabled by default.
For more information about using an EnvironmentConfig, read the [Environment
Configs]({{<ref "./environment-configs">}}) documentation.
For more information about using an EnvironmentConfig, read the
[EnvironmentConfigs]({{<ref "./environment-configs">}}) documentation.
{{< /hint >}}
The
@ -923,8 +923,8 @@ Annotations: EnvironmentPatch: value1-value2
{{<hint "important" >}}
EnvironmentConfigs are an alpha feature. They aren't enabled by default.
For more information about using an EnvironmentConfig, read the [Environment
Configs]({{<ref "./environment-configs">}}) documentation.
For more information about using an EnvironmentConfig, read the
[EnvironmentConfigs]({{<ref "./environment-configs">}}) documentation.
{{< /hint >}}
The

View File

@ -76,7 +76,7 @@ status of deployed resources and correcting any "drift." After checking a
resource Crossplane waits some time and checks again.
Crossplane monitors resources through a Kubernetes
_[watch](https://kubernetes.io/docs/reference/using-api/api-concepts/#efficient-detection-of-changes)_
[_watch_](https://kubernetes.io/docs/reference/using-api/api-concepts/#efficient-detection-of-changes)
or through periodic polling. Some resources may be both watched and polled.
Crossplane requests that the API server notifies Crossplane of any changes on
@ -215,14 +215,14 @@ permissions over cluster wide Crossplane resources.
<!-- allow "admin" -->
##### crossplane-admin
<!-- vale Google.WordList = YES -->
<!-- vale Crossplane.Spelling = NO -->
The `crossplane-admin` ClusterRole has the following permissions:
* full access to all Crossplane types
* full access to all secrets and namespaces (even those unrelated to Crossplane)
* read-only access to all cluster RBAC roles, CustomResourceDefinitions and
events
* ability to bind RBAC roles to other entities.
<!-- vale Crossplane.Spelling = YES -->
View the full RBAC policy with
```shell

View File

@ -312,7 +312,7 @@ the Provider's pod. The
[Crossplane ControllerConfig schema](https://doc.crds.dev/github.com/crossplane/crossplane/pkg.crossplane.io/ControllerConfig/v1alpha1)
defines the supported set of ControllerConfig settings.
The most common use-case for ControllerConfigs are providing `args` to a
The most common use case for ControllerConfigs are providing `args` to a
Provider's pod enabling optional services. For example, enabling
[external secret stores](https://docs.crossplane.io/knowledge-base/integrations/vault-as-secret-store/#enable-external-secret-stores-in-the-provider)
for a Provider.

View File

@ -4,7 +4,7 @@ weight: 4
description: An introduction to Crossplane and Crossplane quickstart guides.
---
{{< img src="/media/banner.png" alt="Crossplane Popsicle Truck" size="large" >}}
{{<img src="/media/banner.png" alt="Crossplane Popsicle Truck" size="large" >}}
## Hands-On
Want a hands-on example? Follow a Crossplane Quickstart for your cloud provider.

View File

@ -7,14 +7,16 @@ Crossplane connects your Kubernetes cluster to external,
non-Kubernetes resources, and allows platform teams to build custom Kubernetes
APIs to consume those resources.
<!-- vale gitlab.SentenceLength = NO -->
Crossplane creates Kubernetes
[CustomResourceDefinitions](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/)
[Custom Resource Definitions](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/)
(`CRDs`) to represent the external resources as native
[Kubernetes objects](https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/).
As native Kubernetes objects, you can use standard commands like `kubectl create`
and `kubectl describe`. The full
[Kubernetes API](https://kubernetes.io/docs/reference/using-api/) is available
for every Crossplane resource.
<!-- vale gitlab.SentenceLength = YES -->
Crossplane also acts as a
[Kubernetes Controller](https://kubernetes.io/docs/concepts/architecture/controller/)
@ -37,7 +39,7 @@ This table provides a summary of Crossplane components and their roles.
{{< table "table table-hover table-sm">}}
| Component | Abbreviation | Scope | Summary |
| --- | --- | --- | ---- |
| [Provider]({{<ref "#providers">}}) | | cluster | Creates new Kubernetes CustomResourceDefinitions for an external service. |
| [Provider]({{<ref "#providers">}}) | | cluster | Creates new Kubernetes Custom Resource Definitions for an external service. |
| [ProviderConfig]({{<ref "#provider-configurations">}}) | `PC` | cluster | Applies settings for a _Provider_. |
| [Managed Resource]({{<ref "#managed-resources">}}) | `MR` | cluster | A Provider resource created and managed by Crossplane inside the Kubernetes cluster. |
| [Composition]({{<ref "#compositions">}}) | | cluster | A template for creating multiple _managed resources_ at once. |
@ -48,7 +50,7 @@ This table provides a summary of Crossplane components and their roles.
## The Crossplane Pod
When installed in a Kubernetes cluster Crossplane creates an initial set of
CustomResourceDefinitions (`CRDs`) of the core Crossplane components.
Custom Resource Definitions (`CRDs`) of the core Crossplane components.
{{< expand "View the initial Crossplane CRDs" >}}
After installing Crossplane use `kubectl get crds` to view the Crossplane
@ -91,7 +93,7 @@ compute instances or S3 storage buckets.
The Provider defines the Kubernetes API definition for the external resource.
For example, the
[Upbound Provider-AWS](https://marketplace.upbound.io/providers/upbound/provider-aws/)
[Upbound Provider AWS](https://marketplace.upbound.io/providers/upbound/provider-aws/)
defines a
[`bucket`](https://marketplace.upbound.io/providers/upbound/provider-aws/v0.25.0/resources/s3.aws.upbound.io/Bucket/v1beta1)
resource for creating and managing AWS S3 storage buckets.
@ -177,7 +179,7 @@ resources. The _Composition_ is only a template for a collection of _managed
resources_ and their settings. A _Composite Resource_ creates the specific resources.
{{< hint "note" >}}
The _[Composite Resources]({{<ref "#composite-resources">}})_ section discusses
The [_Composite Resources_]({{<ref "#composite-resources">}})_ section discusses
_Composite Resources_.
{{< /hint >}}
@ -260,7 +262,7 @@ _Composite Resource Definitions_ (`XRDs`) create custom Kubernetes APIs used by
_Claims_ and _Composite Resources_.
{{< hint "note" >}}
The _[Claims]({{<ref "#claims">}})_ section discusses
The [_Claims_]({{<ref "#claims">}}) section discusses
_Claims_.
{{< /hint >}}
@ -402,7 +404,7 @@ while _Composite Resources_ are cluster scoped.
**Why does namespace scope matter?**
Having namespace scoped _Claims_ allows multiple teams, using unique namespaces,
to create the same types of resources, independent of each other. The compute
resources of team-A are unique to the compute resources of team-B.
resources of team A are unique to the compute resources of team B.
Directly creating _Composite Resources_ requires cluster-wide permissions,
shared with all teams.

View File

@ -5,17 +5,19 @@ tocHidden: true
---
{{< hint "important" >}}
This guide is part 2 of a series. Follow **[part 1]({{<ref "provider-aws" >}})**
This guide is part 2 of a series. Follow [**part 1**]({{<ref "provider-aws" >}})**
to install Crossplane and connect your Kubernetes cluster to AWS.
**[Part 3]({{<ref "provider-aws-part-3">}})** covers patching _composite resources_
[**Part 3**]({{<ref "provider-aws-part-3">}})** covers patching _composite resources_
and using Crossplane _packages_.
{{< /hint >}}
<!-- vale gitlab.SentenceLength = NO -->
This section creates a _[Composition](#create-a-composition)_,
_[Custom Resource Definition](#define-a-composite-resource)_ and a
_[Composite Resource Definition](#define-a-composite-resource)_ and a
_[Claim](#create-a-claim)_
to create a custom Kubernetes API to create AWS resources.
<!-- vale gitlab.SentenceLength = YES -->
## Prerequisites
* Complete [quickstart part 1]({{<ref "provider-aws" >}}) connecting Kubernetes
@ -922,7 +924,7 @@ the API settings when creating resources.
patches_ and making all this configuration portable in Crossplane _packages_.
## Next steps
* **[Continue to part 3]({{< ref "provider-aws-part-3">}})** to create a learn
* [**Continue to part 3**]({{< ref "provider-aws-part-3">}}) to create a learn
about _patching_ resources and creating Crossplane _packages_.
* Explore AWS resources that Crossplane can configure in the [Provider CRD reference](https://marketplace.upbound.io/providers/upbound/provider-family-aws/).
* Join the [Crossplane Slack](https://slack.crossplane.io/) and connect with Crossplane users and contributors.

View File

@ -7,10 +7,10 @@ tocHidden: true
{{< hint "important" >}}
This guide is part 3 of a series.
Follow **[part 1]({{<ref "provider-aws" >}})**
Follow [**part 1**]({{<ref "provider-aws" >}})
to install Crossplane and connect your Kubernetes cluster to AWS.
Follow **[part 2]({{<ref "provider-aws-part-2" >}})** to create a _composition_,
Follow [**part 2**]({{<ref "provider-aws-part-2" >}}) to create a _composition_,
_custom resource definition_ and a _claim_.
{{< /hint >}}
@ -20,8 +20,8 @@ use the custom API and apply their options. Part 2 didn't show how the options
set in a _claim_ change or get applied the associated _composite resources_.
## Prerequisites
* Complete quickstart [part 1]({{<ref "provider-aws" >}}) and [Part 2]({{<ref
"provider-aws-part-2" >}}) to install Crossplane and the quickstart
* Complete quickstart [part 1]({{<ref "provider-aws" >}}) and
[Part 2]({{<ref "provider-aws-part-2" >}}) to install Crossplane and the quickstart
configurations.
{{<expand "Skip parts 1 and 2 and just get started" >}}

View File

@ -11,16 +11,16 @@ authenticate to AWS and creating a _Managed Resource_ in AWS directly from your
Kubernetes cluster. This shows Crossplane can communicate with AWS.
* [Part 2]({{< ref "provider-aws-part-2" >}}) creates a
_Composite Resource Definition_ (XRD), _Composite Resource_ (XR) and a _Claim_
(XC) to show how to create and use custom APIs.
(XRC) to show how to create and use custom APIs.
* [Part 3]({{< ref "provider-aws-part-3" >}}) demonstrates how to patch
_Compositions_ with values used in a _Claim_ and how to build a Crossplane
_Package_ to make a Crossplane platform portable and reusable.
_Package_.
## Prerequisites
This quickstart requires:
* a Kubernetes cluster with at least 6 GB of RAM
* permissions to create pods and secrets in the Kubernetes cluster
* [Helm](https://helm.sh/) version `v3.2.0` or later
* [Helm](https://helm.sh/) version v3.2.0 or later
* an AWS account with permissions to create an S3 storage bucket
* AWS [access keys](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-creds)
@ -1207,6 +1207,6 @@ bucket.s3.aws.upbound.io "crossplane-bucket-45eed4ae0" deleted
```
## Next steps
* **[Continue to part 2]({{< ref "provider-aws-part-2">}})** to create a Crossplane _Composite Resource_ and _Claim_.
* [**Continue to part 2**]({{< ref "provider-aws-part-2">}})** to create a Crossplane _Composite Resource_ and _Claim_.
* Explore AWS resources that Crossplane can configure in the [Provider CRD reference](https://marketplace.upbound.io/providers/upbound/provider-family-aws/).
* Join the [Crossplane Slack](https://slack.crossplane.io/) and connect with Crossplane users and contributors.

View File

@ -5,10 +5,10 @@ tocHidden: true
---
{{< hint "important" >}}
This guide is part 2 of a series. Follow **[part 1]({{<ref "provider-azure" >}})**
This guide is part 2 of a series. Follow [**part 1**]({{<ref "provider-azure" >}})
to install Crossplane and connect your Kubernetes cluster to Azure.
**[Part 3]({{<ref "provider-azure-part-3">}})** covers patching _CompositeResources_
[**Part 3**]({{<ref "provider-azure-part-3">}})** covers patching _composite resources_
and using Crossplane _Packages_.
{{< /hint >}}
@ -521,7 +521,7 @@ inside the `spec` of the new Kubernetes object.
{{< hint "note" >}}
_XRDs_ follow the Kubernetes
[_CustomResourceDefinition_ rules for schemas](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#specifying-a-structural-schema).
[_Custom Resource Definition_ rules for schemas](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#specifying-a-structural-schema).
{{</hint >}}
Place the API
@ -1053,7 +1053,7 @@ the API settings when creating resources.
patches_ and making all this configuration portable in Crossplane _Packages_.
## Next steps
* **[Continue to part 3]({{< ref "provider-azure-part-3">}})** to learn
* [**Continue to part 3**]({{< ref "provider-azure-part-3">}}) to learn
about _patching_ resources and creating Crossplane _Packages_.
* Explore Azure resources that Crossplane can configure in the
[Provider CRD reference](https://marketplace.upbound.io/providers/upbound/provider-family-azure/).

View File

@ -7,10 +7,10 @@ tocHidden: true
{{< hint "important" >}}
This guide is part 3 of a series.
Follow **[part 1]({{<ref "provider-azure" >}})**
Follow [**part 1**]({{<ref "provider-azure" >}})
to install Crossplane and connect your Kubernetes cluster to Azure.
Follow **[part 2]({{<ref "provider-azure-part-2" >}})** to create a _composition_,
Follow [**part 2**]({{<ref "provider-azure-part-2" >}}) to create a _composition_,
_custom resource definition_ and a _claim_.
{{< /hint >}}
@ -21,8 +21,8 @@ Part 2 didn't show how the options set in a _Claim_ change or get
applied to the associated _composite resources_.
## Prerequisites
* Complete quickstart [part 1]({{<ref "provider-azure" >}}) and [part 2]({{<ref
"provider-azure-part-2" >}}) to install Crossplane and the quickstart
* Complete quickstart [part 1]({{<ref "provider-azure" >}}) and
[part 2]({{<ref "provider-azure-part-2" >}}) to install Crossplane and the quickstart
configurations.
{{<expand "Skip parts 1 and 2 and just get started" >}}
@ -38,7 +38,7 @@ crossplane-stable/crossplane \
--create-namespace
```
2. When the Crossplane pods finish installing and are ready, apply the Azure
1. When the Crossplane pods finish installing and are ready, apply the Azure
Provider
```yaml {label="provider",copy-lines="all"}
@ -510,7 +510,7 @@ kubectl delete virtualmachine claimed-eu-virtualmachine -n test
## Create a Crossplane configuration package
Crossplane _configuration packages_ allow users to combine their
_CustomResourceDefinition_ and _Composition_ files into a single OCI image.
_Custom Resource Definition_ and _Composition_ files into a single OCI image.
{{< hint "note" >}}
The [Open Container Initiative](https://opencontainers.org/faq/)

View File

@ -16,13 +16,13 @@ _Composite Resource Definition_ (XRD), _Composite Resource_ (XR) and a _Claim_
(XRC) to show how to create and use custom APIs.
* [Part 3]({{< ref "provider-azure-part-3" >}}) demonstrates how to patch
_Compositions_ with values used in a _Claim_ and how to build a Crossplane
_Package_ to make a Crossplane platform portable and reusable.
_Package_.
## Prerequisites
This quickstart requires:
* a Kubernetes cluster with at least 6 GB of RAM
* permissions to create pods and secrets in the Kubernetes cluster
* [Helm](https://helm.sh/) version `v3.2.0` or later
* [Helm](https://helm.sh/) version v3.2.0 or later
* an Azure account with permissions to create an
[Azure Virtual Machine](https://learn.microsoft.com/en-us/azure/virtual-machines/)
and
@ -1242,7 +1242,7 @@ virtualnetwork.network.azure.upbound.io "crossplane-quickstart-network" deleted
```
## Next steps
* **[Continue to part 2]({{< ref "provider-azure-part-2">}})** to create a
* [**Continue to part 2**]({{< ref "provider-azure-part-2">}}) to create a
Crossplane _Composite Resource_ and _Claim_.
* Explore Azure resources that Crossplane can configure in the
[Provider CRD reference](https://marketplace.upbound.io/providers/upbound/provider-family-azure/).

View File

@ -5,10 +5,10 @@ tocHidden: true
---
{{< hint "important" >}}
This guide is part 2 of a series. Follow **[part 1]({{<ref "provider-gcp" >}})**
This guide is part 2 of a series. Follow [**part 1**]({{<ref "provider-gcp" >}})
to install Crossplane and connect your Kubernetes cluster to GCP.
**[Part 3]({{<ref "provider-gcp-part-3">}})** covers patching
[**Part 3**]({{<ref "provider-gcp-part-3">}})** covers patching
_composite resources_ and using Crossplane _packages_.
{{< /hint >}}
@ -960,7 +960,7 @@ _composition patches_ and making all this configuration portable in Crossplane
_packages_.
## Next steps
* **[Continue to part 3]({{< ref "provider-gcp-part-3">}})** to create a learn
* [**Continue to part 3**]({{< ref "provider-gcp-part-3">}})** to create a learn
about _patching_ resources and creating Crossplane _packages_.
* Explore GCP resources that Crossplane can configure in the
[Provider CRD reference](https://marketplace.upbound.io/providers/upbound/provider-family-gcp/).

View File

@ -7,10 +7,10 @@ tocHidden: true
{{< hint "important" >}}
This guide is part 3 of a series.
Follow **[part 1]({{<ref "provider-gcp" >}})**
Follow [**part 1**]({{<ref "provider-gcp" >}})
to install Crossplane and connect your Kubernetes cluster to GCP.
Follow **[part 2]({{<ref "provider-gcp-part-2" >}})** to create a _composition_,
Follow [**part 2**]({{<ref "provider-gcp-part-2" >}})** to create a _composition_,
_custom resource definition_ and a _claim_.
{{< /hint >}}
@ -20,8 +20,8 @@ use the custom API and apply their options. Part 2 didn't show how the options
set in a _claim_ change or get applied the associated _composite resources_.
## Prerequisites
* Complete quickstart [part 1]({{<ref "provider-gcp" >}}) and [Part 2]({{<ref
"provider-gcp-part-2" >}}) to install Crossplane and the quickstart
* Complete quickstart [part 1]({{<ref "provider-gcp" >}}) and
[Part 2]({{<ref "provider-gcp-part-2" >}}) to install Crossplane and the quickstart
configurations.
{{<expand "Skip parts 1 and 2 and just get started" >}}

View File

@ -16,12 +16,12 @@ _Composite Resource Definition_ (XRD), _Composite Resource_ (XR) and a _Claim_
(XRC) to show how to create and use custom APIs.
* [Part 3]({{< ref "provider-gcp-part-3" >}}) demonstrates how to patch
_Compositions_ with values used in a _Claim_ and how to build a Crossplane
_Package_ to make a Crossplane platform portable and reusable.
_Package_.
## Prerequisites
This quickstart requires:
* a Kubernetes cluster with at least 6 GB of RAM
* permissions to create pods and secrets in the Kubernetes cluster
* [Helm](https://helm.sh/) version `v3.2.0` or later
* [Helm](https://helm.sh/) version v3.2.0 or later
* a GCP account with permissions to create a storage bucket
* GCP [account keys](https://cloud.google.com/iam/docs/creating-managing-service-account-keys)
* GCP [Project ID](https://support.google.com/googleapi/answer/7014113?hl=en)
@ -1247,7 +1247,7 @@ bucket.storage.gcp.upbound.io "crossplane-bucket-8b7gw" deleted
```
## Next steps
* **[Continue to part 2]({{< ref "provider-gcp-part-2">}})** to create a
* [**Continue to part 2**]({{< ref "provider-gcp-part-2">}}) to create a
Crossplane _Composite Resource_ and _Claim_.
* Explore GCP resources that can Crossplane can configure in the
[Provider CRD reference](https://marketplace.upbound.io/providers/upbound/provider-family-gcp/).

View File

@ -42,7 +42,13 @@ Microsoft.Quotes = NO
Microsoft.GeneralURL = NO
# ignore indivudal tokens
TokenIgnores = ({{< img)
# Ignore the markdown link to check the last word of the link: ](.
# Ignore markdown image with alt: ![
# ignore v#.##
# ignore ##px
TokenIgnores = (\(#.*\)),(\]\(),(http.*),({{<\s*\/?expand),(\!\[),(\d.*px)
# ignore whole tags:
# Ignore hugo tags
BlockIgnores = (\{\{<\s*\/?.*>\}\}),(\{\{\<\/\*.*\*\/\>\}\})
# ignore whole tags
BlockIgnores = (\{\{\<\s*hover.*\>\}\})

View File

@ -8,6 +8,14 @@
# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
extends: spelling
message: 'Spelling check: "%s"?'
level: warning
level: error
custom: true
ignore:
- Crossplane/spelling-exceptions.txt
- Crossplane/brands.txt
- Crossplane/crossplane-words.txt
- Crossplane/provider-words.txt
- Crossplane/allowed-jargon.txt
filters:
- v\d\.\d\d
- \/.*

View File

@ -0,0 +1,55 @@
API's
APIs
bool
boolean
booleans
CUE
Enum
Env
JSONPath
kubeconfig
kubectl
minikube
namespace
namespaced
namespaces
proselint
semver
shortcode
shortcodes
ESS
SLAs
stdin
stdout
Subnet
subnet
subnets
Substrings
OCI
syscall
tolerations
VM
32-bit
64-bit
float64
SHA-1
SHA-256
SHA-512
base64
RBAC
ServiceAccounts
ServiceAccount
ClusterRole
ClusterRoles
key-pair
CI
command-line
YAML
CSS
SCSS
docs-specific
CRD
CLI
kube-controller-manager
kube-apiserver
cluster-wide

View File

@ -0,0 +1,27 @@
Bootstrap
Geekdocs
Grammarly
HashiCorp
Kustomize
Netlify
OpenAPI
OpenAPIv3
PostgreSQL
Upbound
Upbound's
Upjet
Velero
VSCode
Webpack
Zendesk
write-good
CNCF
CC-BY
Commonmark
Goldmark
PostCSS
postcss-lightningcss
PurgeCSS
postcss-sort-media-queries
NPM
instant.page

View File

@ -0,0 +1,52 @@
clampMax
clampMin
CompositeResourceDefinition
CompositeResourceDefinitions
CRDs
Crossplane
Crossplane's
EnvironmentConfig
EnvironmentConfigs
external-name
finalizer
finalizers
ProviderConfig
XCluster
XNetwork
xpkg
XRD
XRD's
XRDs
XRs
XR
XRC
ControllerConfig
ProviderConfigs
StoreConfig
PatchSet
PatchSets
FromCompositeFieldPath
ToCompositeFieldPath
CombineFromComposite
CombineToComposite
FromEnvironmentFieldPath
ToEnvironmentFieldPath
CombineFromEnvironment
CombineToEnvironment
TrimPrefix
TrimSuffix
fromFieldPath
ControllerConfigs
UnknownPackageRevisionHealth
StoreConfigs
crossplane-admin
UnhealthyPackageRevision
ActivePackageRevision
crossplane-edit
HealthyPackageRevision
crossplane-view
crossplane-browse
InactivePackageRevision
crossplane.yaml
definition.yaml
composition.yaml

View File

@ -0,0 +1,16 @@
Dataflow
EC2
EKS
GCP's
S3
VPC
GKE
provider-aws-s3
GCP
provider-aws-iam
DynmoDB
Pub/Sub
europe-central2
us-central1
eu-north-1
us-east-2

View File

@ -1,62 +1,39 @@
API's
APIs
bool
boolean
booleans
Bootstrap
clampMax
clampMin
conformant
CRDs
Crossplane
Crossplane's
CUE
Dataflow
Datastore
editCode
Enum
Env
finalizer
finalizers
GCP's
Geekdocs
Grammarly
HashiCorp
JSONPath
kubeconfig
kubectl
Kustomize
minikube
namespace
namespaced
namespaces
Netlify
PostgreSQL
proselint
semver
shortcode
shortcodes
SLAs
stdin
stdout
Subnet
subnet
subnets
Substrings
syscall
tolerations
cross-reference
Cross-resource
cross-resource
per-object
per-resource
pre-existing
pre-provisioned
top-level
untrusted
Upbound
Upbound's
Upjet
Velero
VSCode
Webpack
XCluster
XNetwork
xpkg
XRD
XRD's
XRDs
XRs
Zendesk
UpperCamelCase
UpperCamelCased
in-memory
non-empty
resource-specific
race-conditions
user-defined
poll-interval
double-check
double-checks
read-only
non-Kubernetes
comma-seperated
in-depth
how-to
version-specific
step-by-step
free-form
left-hand
right-hand
call-outs
/tab
/tabs
per-element
run-time
hands-on
dry-run
end-points
multi-region

View File

@ -138,7 +138,6 @@ tokens:
- it was
- magnitude
- methodology
- minimize
- modify
- monitor
- necessitate