mirror of https://github.com/crossplane/docs.git
docs snapshot for crossplane version `v1.7`
This commit is contained in:
parent
86391397c0
commit
dca9f57b72
|
@ -0,0 +1,21 @@
|
|||
# Overview
|
||||
|
||||

|
||||
|
||||
Crossplane is an open source Kubernetes add-on that transforms your cluster into
|
||||
a **universal control plane**. Crossplane enables platform teams to assemble
|
||||
infrastructure from multiple vendors, and expose higher level self-service APIs
|
||||
for application teams to consume, without having to write any code.
|
||||
|
||||
Crossplane extends your Kubernetes cluster to support orchestrating any
|
||||
infrastructure or managed service. Compose Crossplane's granular resources into
|
||||
higher level abstractions that can be versioned, managed, deployed and consumed
|
||||
using your favorite tools and existing processes. [Install Crossplane] into any
|
||||
Kubernetes cluster to get started.
|
||||
|
||||
Crossplane is a [Cloud Native Compute Foundation][cncf] project.
|
||||
|
||||
<!-- Named Links -->
|
||||
|
||||
[Install Crossplane]: getting-started/install-configure.md
|
||||
[cncf]: https://www.cncf.io/
|
|
@ -2,11 +2,10 @@
|
|||
title: "Overview"
|
||||
weight: -1
|
||||
toc_include: false
|
||||
aliases:
|
||||
- /docs/v1.7/index.html
|
||||
cascade:
|
||||
version: 1.7
|
||||
---
|
||||
|
||||

|
||||
|
||||
Crossplane is an open source Kubernetes add-on that transforms your cluster into
|
||||
|
|
|
@ -3,8 +3,6 @@ title: API Documentation
|
|||
weight: 400
|
||||
---
|
||||
|
||||
|
||||
|
||||
The Crossplane ecosystem contains many CRDs that map to API types represented by
|
||||
external infrastructure providers. The documentation for these CRDs are
|
||||
auto-generated on [doc.crds.dev]. To find the CRDs available for providers
|
||||
|
|
|
@ -24,12 +24,12 @@ spec:
|
|||
apiVersion:
|
||||
description: 'APIVersion defines the versioned schema of this representation
|
||||
of an object. Servers should convert recognized schemas to the latest
|
||||
internal value, and may reject unrecognized values. More info: {{<ref "https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions" >}}#resources'
|
||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||
type: string
|
||||
kind:
|
||||
description: 'Kind is a string value representing the REST resource this
|
||||
object represents. Servers may infer this from the endpoint the client
|
||||
submits requests to. Cannot be updated. In CamelCase. More info: {{<ref "https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions" >}}#types-kinds'
|
||||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
|
@ -83,12 +83,12 @@ spec:
|
|||
apiVersion:
|
||||
description: 'APIVersion defines the versioned schema of this representation
|
||||
of an object. Servers should convert recognized schemas to the latest
|
||||
internal value, and may reject unrecognized values. More info: {{<ref "https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions" >}}#resources'
|
||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||
type: string
|
||||
kind:
|
||||
description: 'Kind is a string value representing the REST resource this
|
||||
object represents. Servers may infer this from the endpoint the client
|
||||
submits requests to. Cannot be updated. In CamelCase. More info: {{<ref "https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions" >}}#types-kinds'
|
||||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
|
|
|
@ -23,12 +23,12 @@ spec:
|
|||
apiVersion:
|
||||
description: 'APIVersion defines the versioned schema of this representation
|
||||
of an object. Servers should convert recognized schemas to the latest
|
||||
internal value, and may reject unrecognized values. More info: {{<ref "https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions" >}}#resources'
|
||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||
type: string
|
||||
kind:
|
||||
description: 'Kind is a string value representing the REST resource this
|
||||
object represents. Servers may infer this from the endpoint the client
|
||||
submits requests to. Cannot be updated. In CamelCase. More info: {{<ref "https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions" >}}#types-kinds'
|
||||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
|
@ -143,12 +143,12 @@ spec:
|
|||
apiVersion:
|
||||
description: 'APIVersion defines the versioned schema of this representation
|
||||
of an object. Servers should convert recognized schemas to the latest
|
||||
internal value, and may reject unrecognized values. More info: {{<ref "https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions" >}}#resources'
|
||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||
type: string
|
||||
kind:
|
||||
description: 'Kind is a string value representing the REST resource this
|
||||
object represents. Servers may infer this from the endpoint the client
|
||||
submits requests to. Cannot be updated. In CamelCase. More info: {{<ref "https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions" >}}#types-kinds'
|
||||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
---
|
||||
title: crossplane
|
||||
weight: 401
|
||||
title: Crossplane
|
||||
layout: redirect
|
||||
to: https://doc.crds.dev/github.com/crossplane/crossplane
|
||||
to: "https://doc.crds.dev/github.com/crossplane/crossplane"
|
||||
---
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
---
|
||||
title: provider-alibaba
|
||||
weight: 402
|
||||
layout: redirect
|
||||
to: https://doc.crds.dev/github.com/crossplane/provider-alibaba
|
||||
layout: redirect
|
||||
---
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
---
|
||||
title: provider-aws
|
||||
weight: 403
|
||||
layout: redirect
|
||||
to: https://doc.crds.dev/github.com/crossplane/provider-aws
|
||||
---
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
---
|
||||
title: provider-azure
|
||||
weight: 404
|
||||
layout: redirect
|
||||
to: https://doc.crds.dev/github.com/crossplane/provider-azure
|
||||
---
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
---
|
||||
title: provider-gcp
|
||||
weight: 405
|
||||
layout: redirect
|
||||
to: https://doc.crds.dev/github.com/crossplane/provider-gcp
|
||||
---
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
---
|
||||
title: provider-helm
|
||||
weight: 407
|
||||
layout: redirect
|
||||
to: https://doc.crds.dev/github.com/crossplane-contrib/provider-helm
|
||||
---
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
---
|
||||
title: provider-rook
|
||||
weight: 406
|
||||
layout: redirect
|
||||
to: https://doc.crds.dev/github.com/crossplane/provider-rook
|
||||
---
|
||||
|
|
|
@ -3,6 +3,7 @@ title: Adding Google Cloud Platform (GCP) to Crossplane
|
|||
toc_hide: true
|
||||
---
|
||||
|
||||
|
||||
In this guide, we will walk through the steps necessary to configure your GCP
|
||||
account to be ready for integration with Crossplane. The general steps we will
|
||||
take are summarized below:
|
||||
|
|
|
@ -3,8 +3,6 @@ title: Concepts
|
|||
weight: 100
|
||||
---
|
||||
|
||||
# Overview
|
||||
|
||||
Crossplane introduces multiple building blocks that enable you to provision,
|
||||
compose, and consume infrastructure using the Kubernetes API. These individual
|
||||
concepts work together to allow for powerful separation of concern between
|
||||
|
|
|
@ -3,10 +3,6 @@ title: Composite Resources
|
|||
weight: 103
|
||||
---
|
||||
|
||||
|
||||
|
||||
## Overview
|
||||
|
||||
Crossplane Composite Resources are opinionated Kubernetes Custom Resources that
|
||||
are _composed_ of [Managed Resources][managed-resources]. We often call them XRs
|
||||
for short.
|
||||
|
@ -245,10 +241,10 @@ scenarios, including:
|
|||
take minutes to provision on-demand.
|
||||
|
||||
[managed-resources]: {{<ref "managed-resources" >}}
|
||||
[xrs-and-mrs]: /docs/v1.7/media/composition-xrs-and-mrs.svg
|
||||
[xrs-and-mrs]: /docs/master/media/composition-xrs-and-mrs.svg
|
||||
[xr-ref]: {{<ref "../reference/composition" >}}
|
||||
[how-it-works]: /docs/v1.7/media/composition-how-it-works.svg
|
||||
[how-it-works]: /docs/master/media/composition-how-it-works.svg
|
||||
[crd-docs]: https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/
|
||||
[provider-kubernetes]: https://github.com/crossplane-contrib/provider-kubernetes
|
||||
[provider-helm]: https://github.com/crossplane-contrib/provider-helm
|
||||
[claims-and-xrs]: /docs/v1.7/media/composition-claims-and-xrs.svg
|
||||
[claims-and-xrs]: /docs/master/media/composition-claims-and-xrs.svg
|
||||
|
|
|
@ -4,9 +4,6 @@ weight: 102
|
|||
---
|
||||
|
||||
|
||||
|
||||
## Overview
|
||||
|
||||
A Managed Resource (MR) is Crossplane's representation of a resource in an external
|
||||
system - most commonly a cloud provider. Managed Resources are opinionated,
|
||||
Crossplane Resource Model ([XRM][term-xrm]) compliant Kubernetes Custom
|
||||
|
@ -445,3 +442,4 @@ including Velero.
|
|||
[provider]: {{<ref "providers" >}}
|
||||
[issue-727]: https://github.com/crossplane/crossplane/issues/727
|
||||
[issue-1143]: https://github.com/crossplane/crossplane/issues/1143
|
||||
[managed-api-patterns]: https://github.com/crossplane/crossplane/blob/master/design/one-pager-managed-resource-api-design.md
|
|
@ -1,10 +1,8 @@
|
|||
---
|
||||
title: Packages
|
||||
title: Crossplane Packages
|
||||
weight: 104
|
||||
---
|
||||
|
||||
|
||||
|
||||
Crossplane packages are opinionated [OCI images] that contain a stream of YAML
|
||||
that can be parsed by the Crossplane package manager. Crossplane packages come
|
||||
in two varieties: [Providers] and Configurations. Ultimately, the primary
|
||||
|
@ -480,13 +478,13 @@ by [pre-pulling images] onto nodes in the cluster.
|
|||
<!-- Named Links -->
|
||||
|
||||
[OCI images]: https://github.com/opencontainers/image-spec
|
||||
[Providers]: {{<ref "providers" >}}
|
||||
[Providers]: providers.md
|
||||
[provider-docs]: https://doc.crds.dev/github.com/crossplane/crossplane/meta.pkg.crossplane.io/Provider/v1
|
||||
[configuration-docs]: https://doc.crds.dev/github.com/crossplane/crossplane/meta.pkg.crossplane.io/Configuration/v1
|
||||
[lock-api]: https://doc.crds.dev/github.com/crossplane/crossplane/pkg.crossplane.io/Lock/v1beta1
|
||||
[getting-started-with-gcp]: https://github.com/crossplane/crossplane/tree/release-1.7/docs/snippets/package/gcp
|
||||
[specification]: https://github.com/Masterminds/semver#basic-comparisons
|
||||
[composition]: {{<ref "composition" >}}
|
||||
[composition]: composition.md
|
||||
[IAM Roles for Service Accounts]: https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html
|
||||
[controller-config-docs]: https://doc.crds.dev/github.com/crossplane/crossplane/pkg.crossplane.io/ControllerConfig/v1alpha1
|
||||
[package format]: https://github.com/crossplane/crossplane/blob/1aa83092172bdf0d2ed64754d33517c612ff7368/design/one-pager-package-format-v2.md
|
||||
|
|
|
@ -3,8 +3,6 @@ title: Providers
|
|||
weight: 101
|
||||
---
|
||||
|
||||
# Providers
|
||||
|
||||
Providers are Crossplane packages that bundle a set of [Managed
|
||||
Resources][managed-resources] and their respective controllers to allow
|
||||
Crossplane to provision the respective infrastructure resource.
|
||||
|
|
|
@ -2,9 +2,6 @@
|
|||
title: Terminology
|
||||
weight: 110
|
||||
---
|
||||
|
||||
# Terminology
|
||||
|
||||
## A Note on Style
|
||||
|
||||
Each type of Kubernetes resource has a ‘Pascal case’ name - i.e. a title case
|
||||
|
|
|
@ -3,8 +3,6 @@ title: Contributing
|
|||
weight: 1000
|
||||
---
|
||||
|
||||
# Contributing
|
||||
|
||||
The best place to start if you're thinking about contributing to Crossplane is
|
||||
our [`CONTRIBUTING.md`] file. The following documents supplement that guide.
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@ title: Adding Secret Store Support
|
|||
weight: 1004
|
||||
---
|
||||
|
||||
|
||||
|
||||
To add support for [External Secret Stores] in a provider, we need the following
|
||||
changes at a high level:
|
||||
|
||||
|
|
|
@ -0,0 +1,187 @@
|
|||
---
|
||||
title: "Crossplane Documentation"
|
||||
weight: 2000
|
||||
---
|
||||
|
||||
- [Code of Conduct](#code-of-conduct)
|
||||
- [Reporting](#reporting)
|
||||
- [Licensing](#licensing)
|
||||
- [Directory structure](#directory-structure)
|
||||
- [Run Hugo](#run-hugo)
|
||||
- [Documentation issues and feature requests](#documentation-issues-and-feature-requests)
|
||||
- [Contributing](#contributing)
|
||||
- [Front matter](#front-matter)
|
||||
- [New Crossplane versions](#new-crossplane-versions)
|
||||
- [Excluding pages from the Table of Contents](#excluding-pages-from-the-table-of-contents)
|
||||
- [Links](#links)
|
||||
- [Linking between docs pages](#linking-between-docs-pages)
|
||||
- [Linking to external sites](#linking-to-external-sites)
|
||||
- [Tabs](#tabs)
|
||||
|
||||
## Code of Conduct
|
||||
We follow the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md).
|
||||
|
||||
Taken directly from the CNCF CoC:
|
||||
>As contributors and maintainers in the CNCF community, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
|
||||
>
|
||||
>We are committed to making participation in the CNCF community a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.
|
||||
|
||||
### Reporting
|
||||
To report violations contact the Crossplane maintainers at `info@crossplane.io` or the CNCF at `conduct@cncf.io`.
|
||||
|
||||
## Licensing
|
||||
The Crossplane documentation is under the [Creative Commons Attribution](https://creativecommons.org/licenses/by/4.0/) license. CC-BY allows reuse, remixing and republishing of Crossplane documentation with attribution to the Crossplane organization.
|
||||
|
||||
|
||||
### Directory structure
|
||||
The relevant directories of the docs repository are:
|
||||
| Directory | Purpose |
|
||||
| ----- | ---- |
|
||||
| `content` | Markdown files for all individual pages. |
|
||||
| `static/images` | Location for all image files. |
|
||||
| `themes` | HTML templates and Hugo tooling. |
|
||||
|
||||
All markdown content exists within the `/content` directory.
|
||||
All image files exist within `static/images`.
|
||||
|
||||
### Run Hugo
|
||||
* Follow the [Hugo documentation](https://gohugo.io/getting-started/installing/) to install Hugo.
|
||||
* Run `hugo server`
|
||||
* Go to [http://localhost:1313](http://localhost:1313)
|
||||
|
||||
Crossplane documentation uses [Hugo v0.101.0](https://github.com/gohugoio/hugo/releases/tag/v0.101.0), but newer versions are compatible.
|
||||
|
||||
### Documentation issues and feature requests
|
||||
Use [GitHub Issues](https://github.com/crossplane/crossplane.github.io/issues) to report a problem or request documentation content.
|
||||
|
||||
## Contributing
|
||||
|
||||
The `/content` directory contains all documentation pages.
|
||||
Each version of Crossplane software maintains a unique directory within `content`.
|
||||
|
||||
### Front matter
|
||||
Each page contains metadata called [front matter](https://gohugo.io/content-management/front-matter/). Each page requires front matter to render.
|
||||
|
||||
```yaml
|
||||
---
|
||||
title: "Troubleshooting Crossplane"
|
||||
weight: 610
|
||||
---
|
||||
```
|
||||
|
||||
`title` defines the name of the page.
|
||||
`weight` determines the ordering of the page in the table of contents. Lower weight pages come before higher weights in the table of contents. The value of `weight` is otherwise arbitrary.
|
||||
|
||||
The `weight` of a directory's `_index.md` page moves the entire section of content in the table of contents.
|
||||
|
||||
#### New Crossplane versions
|
||||
To create documentation for a new version of Crossplane copy the current `master` folder and rename it to the desired version.
|
||||
The naming convention follows `v<major>.<minor>`. Maintenance release and individual builds do not have unique documentation.
|
||||
|
||||
After creating a new directory edit the `/content/<version>/_index.md` file to set the version for all sub-pages define `verison:` as a child element under `cascade:`.
|
||||
For example, set the version to `v8.6`:
|
||||
```
|
||||
---
|
||||
title: "Overview"
|
||||
weight: 1
|
||||
toc_include: false
|
||||
cascade:
|
||||
version: 8.6
|
||||
---
|
||||
```
|
||||
|
||||
You **must** set the version number as a valid float to generate the version drop down menus within the docs.
|
||||
|
||||
The version set in the front matter is independent from the directory name.
|
||||
|
||||
#### Excluding pages from the Table of Contents
|
||||
Pages can be hidden from the left-side table of contents with front matter settings.
|
||||
|
||||
To exclude a page from the table of contents set
|
||||
|
||||
`toc_include: false`
|
||||
|
||||
in the page front matter.
|
||||
|
||||
For example,
|
||||
|
||||
```
|
||||
---
|
||||
title: "Overview"
|
||||
weight: 1
|
||||
toc_include: false
|
||||
---
|
||||
```
|
||||
|
||||
The `/content/<version>/_index.md` page must have this set.
|
||||
|
||||
### Links
|
||||
#### Linking between docs pages
|
||||
Link between pages or sections within the documentation using standard [markdown link syntax](https://www.markdownguide.org/basic-syntax/#links). Use 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 "Official Providers" page create a markdown link like this:
|
||||
|
||||
```markdown
|
||||
[a link to the Official Providers page]({{</* ref "providers/_index.md" */>}})
|
||||
```
|
||||
|
||||
The `ref` value is of the markdown file, including `.md` extension. Don't link to a web address.
|
||||
|
||||
If the `ref` value points to a page that doesn't exist, Hugo fails to start.
|
||||
|
||||
For example, providing `index.md` instead of `_index.md` would cause an error like the this:
|
||||
```shell
|
||||
Start building sites …
|
||||
hugo v0.101.0-466fa43c16709b4483689930a4f9ac8add5c9f66 darwin/arm64 BuildDate=2022-06-16T07:09:16Z VendorInfo=gohugoio
|
||||
ERROR 2022/09/13 13:53:46 [en] REF_NOT_FOUND: Ref "contributing/index.md": "/home/user/crossplane.github.io/content/contributing.md:64:41": page not found
|
||||
Error: Error building site: logged 1 error
|
||||
```
|
||||
|
||||
Using `ref` ensures links render in the staging environment and prevents broken links.
|
||||
|
||||
#### Linking to external sites
|
||||
Minimize linking to external sites. When linking to any page outside of `crossplane.io` use standard [markdown link syntax](https://www.markdownguide.org/basic-syntax/#links) without using the `ref` shortcode.
|
||||
|
||||
For example,
|
||||
```markdown
|
||||
[Go to Upbound](http://upbound.io)
|
||||
```
|
||||
|
||||
### Tabs
|
||||
Use tabs to present information about a single topic with multiple exclusive options. For example, creating a resource via command-line or GUI.
|
||||
|
||||
To create a tab set, first create a `tabs` shortcode and use multiple `tab` shortcodes inside for each tab.
|
||||
|
||||
Each `tabs` shortcode requires a name that's unique to the page it's on. Each `tab` name is the title of the tab on the webpage.
|
||||
|
||||
For example
|
||||
```
|
||||
{{</* tabs "my-unique-name" */>}}
|
||||
|
||||
{{</* tab "Command-line" */>}}
|
||||
An example tab. Place anything inside a tab.
|
||||
{{</* /tab */>}}
|
||||
|
||||
{{</* tab "GUI" */>}}
|
||||
A second example tab.
|
||||
{{</* /tab */>}}
|
||||
|
||||
{{</* /tabs */>}}
|
||||
```
|
||||
|
||||
This code block renders the following tabs
|
||||
{{< tabs "my-unique-name" >}}
|
||||
|
||||
{{< tab "Command-line" >}}
|
||||
An example tab. Place anything inside a tab.
|
||||
{{< /tab >}}
|
||||
|
||||
{{< tab "GUI" >}}
|
||||
A second example tab.
|
||||
{{< /tab >}}
|
||||
|
||||
{{< /tabs >}}
|
||||
|
||||
|
||||
Both `tab` and `tabs` require opening and closing tags. Unclosed tags causes Hugo to fail.
|
||||
|
|
@ -3,8 +3,6 @@ title: Observability Developer Guide
|
|||
weight: 1002
|
||||
---
|
||||
|
||||
|
||||
|
||||
## Introduction
|
||||
|
||||
Observability is crucial to Crossplane users; both those operating Crossplane
|
||||
|
|
|
@ -3,8 +3,6 @@ title: Provider Development Guide
|
|||
weight: 1001
|
||||
---
|
||||
|
||||
|
||||
|
||||
Crossplane allows you to manage infrastructure directly from Kubernetes. Each
|
||||
infrastructure API resource that Crossplane orchestrates is known as a "managed
|
||||
resource". This guide will walk through the process of adding support for a new
|
||||
|
|
|
@ -3,8 +3,6 @@ title: Release Process
|
|||
weight: 1003
|
||||
---
|
||||
|
||||
|
||||
|
||||
This document is meant to be a complete end-to-end guide for how to release new
|
||||
versions of software for Crossplane and its related projects.
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@ title: FAQ
|
|||
weight: 1200
|
||||
---
|
||||
|
||||
|
||||
|
||||
### Where did the name Crossplane come from?
|
||||
|
||||
Crossplane is the fusing of cross-cloud control plane. We wanted to use a noun
|
||||
|
|
|
@ -3,8 +3,6 @@ title: Related Projects
|
|||
weight: 1201
|
||||
---
|
||||
|
||||
|
||||
|
||||
While there are many projects that address similar issues, none of them
|
||||
encapsulate the full use case that Crossplane addresses. This list is not
|
||||
exhaustive and is not meant to provide a deep analysis of the following
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
---
|
||||
title: "Getting Started"
|
||||
weight: 1
|
||||
title: Getting Started
|
||||
weight: 4
|
||||
---
|
||||

|
||||
|
||||

|
||||
|
||||
Crossplane is an open source Kubernetes add-on that transforms your cluster into
|
||||
a **universal control plane**. Crossplane enables platform teams to assemble
|
||||
|
|
|
@ -3,8 +3,6 @@ title: Create a Configuration
|
|||
weight: 4
|
||||
---
|
||||
|
||||
|
||||
|
||||
In the [previous section] we were able to create a PostgreSQL database because
|
||||
we had installed a configuration package that defined the `PostgreSQLInstance`
|
||||
type and a `Composition` of managed resources that mapped to it. Crossplane
|
||||
|
@ -47,7 +45,7 @@ into a package.
|
|||
## Create CompositeResourceDefinition
|
||||
|
||||
First we'll create a `CompositeResourceDefinition` (XRD) to define the schema of
|
||||
our `XPostgreSQLInstance` and its `PostgreSQLInstance` resource claim.
|
||||
our `XPostgreSQLInstance` and its `PostgreSQLInstance` resource claim.
|
||||
|
||||
```yaml
|
||||
apiVersion: apiextensions.crossplane.io/v1
|
||||
|
|
|
@ -2,119 +2,95 @@
|
|||
title: Install & Configure
|
||||
weight: 2
|
||||
---
|
||||
|
||||
## Choosing Your Crossplane Distribution
|
||||
|
||||
Users looking to use Crossplane for the first time have two options available to
|
||||
them today. The first way is to use the version of Crossplane which is
|
||||
them today. The first way is to use the version of Crossplane which is
|
||||
maintained and released by the community and found on the [Crossplane GitHub].
|
||||
|
||||
The second option is to use a vendor supported Crossplane distribution. These
|
||||
distributions are [certified by the CNCF] to be conformant with Crossplane, but
|
||||
may include additional features or tooling around it that makes it easier to use
|
||||
The second option is to use a vendor supported Crossplane distribution. These
|
||||
distributions are [certified by the CNCF] to be conformant with Crossplane, but
|
||||
may include additional features or tooling around it that makes it easier to use
|
||||
in production environments.
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a href="#using-upstream-crossplane" data-toggle="tab">Crossplane (upstream)</a></li>
|
||||
<li><a href="#using-a-downstream-distro" data-toggle="tab">Downstream Distributions</a></li>
|
||||
</ul>
|
||||
<br>
|
||||
<!-- Begin Distro Tabs -->
|
||||
<div class="tab-content">
|
||||
<!-- Begin Upstream Tab -->
|
||||
<div class="tab-pane fade in active" id="using-upstream-crossplane" markdown="1">
|
||||
{{% tabs "Crossplane Distros" %}}
|
||||
|
||||
{{% tab "Crossplane (upstream)" %}}
|
||||
|
||||
## Start with Upstream Crossplane
|
||||
|
||||
Installing Crossplane into an existing Kubernetes cluster will require a bit
|
||||
more setup, but can provide more flexibility for users who need it.
|
||||
more setup, but can provide more flexibility for users who need it.
|
||||
|
||||
### Get a Kubernetes Cluster
|
||||
<!-- inside Crossplane (upstream) -->
|
||||
{{% tabs "Kubernetes Clusters" %}}
|
||||
|
||||
{{% tab "macOS via Homebrew" %}}
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a href="#setup-mac-brew" data-toggle="tab">macOS via Homebrew</a></li>
|
||||
<li><a href="#setup-mac-linux" data-toggle="tab">macOS / Linux</a></li>
|
||||
<li><a href="#setup-windows" data-toggle="tab">Windows</a></li>
|
||||
</ul>
|
||||
<br>
|
||||
<!-- Begin Get Cluster Tabs -->
|
||||
<div class="tab-content">
|
||||
<!-- Begin MacOS Tab -->
|
||||
<div class="tab-pane fade in active" id="setup-mac-brew" markdown="1">
|
||||
For macOS via Homebrew use the following:
|
||||
|
||||
```console
|
||||
```bash
|
||||
brew upgrade
|
||||
brew install kind
|
||||
brew install kubectl
|
||||
brew install helm
|
||||
|
||||
kind create cluster --image kindest/node:v1.23.0 --wait 5m
|
||||
```
|
||||
</div>
|
||||
<!-- End MacOS Tab -->
|
||||
<!-- close "macOS via Homebrew" -->
|
||||
{{% /tab %}}
|
||||
|
||||
{{% tab "macOS / Linux" %}}
|
||||
|
||||
<!-- Begin Linux Tab -->
|
||||
<div class="tab-pane fade" id="setup-mac-linux" markdown="1">
|
||||
For macOS / Linux use the following:
|
||||
|
||||
* [Kubernetes cluster]
|
||||
* [Kind]
|
||||
* [Minikube], minimum version `v0.28+`
|
||||
* etc.
|
||||
* [Kubernetes cluster](https://kubernetes.io/docs/setup/)
|
||||
* [Kind](https://kind.sigs.k8s.io/docs/user/quick-start/)
|
||||
* [Minikube](https://minikube.sigs.k8s.io/docs/start/), minimum version `v0.28+`
|
||||
* etc.
|
||||
* [Helm](https://helm.sh/docs/intro/using_helm/), minimum version `v3.0.0+`.
|
||||
|
||||
* [Helm], minimum version `v3.0.0+`.
|
||||
<!-- close "macOS / Linux" -->
|
||||
{{% /tab %}}
|
||||
|
||||
</div>
|
||||
<!-- End Linux Tab -->
|
||||
|
||||
<!-- Begin Windows Tab -->
|
||||
<div class="tab-pane fade" id="setup-windows" markdown="1">
|
||||
{{% tab "Windows" %}}
|
||||
For Windows use the following:
|
||||
|
||||
* [Kubernetes cluster]
|
||||
* [Kind]
|
||||
* [Minikube], minimum version `v0.28+`
|
||||
* etc.
|
||||
* [Kubernetes cluster](https://kubernetes.io/docs/setup/)
|
||||
* [Kind](https://kind.sigs.k8s.io/docs/user/quick-start/)
|
||||
* [Minikube](https://minikube.sigs.k8s.io/docs/start/), minimum version `v0.28+`
|
||||
* etc.
|
||||
* [Helm](https://helm.sh/docs/intro/using_helm/), minimum version `v3.0.0+`.
|
||||
|
||||
* [Helm], minimum version `v3.0.0+`.
|
||||
<!-- close "Windows" -->
|
||||
{{% /tab %}}
|
||||
|
||||
</div>
|
||||
<!-- End Windows Tab -->
|
||||
</div>
|
||||
<!-- End Get Cluster Tabs -->
|
||||
<!-- close "Kubernetes Clusters" -->
|
||||
{{% /tabs %}}
|
||||
|
||||
### Install Crossplane
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a href="#install-tab-helm3" data-toggle="tab">Helm 3 (stable)</a></li>
|
||||
<li><a href="#install-tab-helm3-latest" data-toggle="tab">Helm 3 (latest)</a></li>
|
||||
</ul>
|
||||
<br>
|
||||
<!-- Begin Helm Tabs -->
|
||||
<div class="tab-content">
|
||||
{{% tabs "install with helm" %}}
|
||||
|
||||
<!-- Begin Stable Tab -->
|
||||
<div class="tab-pane fade in active" id="install-tab-helm3" markdown="1">
|
||||
{{% tab "Helm 3 (stable)" %}}
|
||||
Use Helm 3 to install the latest official `stable` release of Crossplane, suitable for community use and testing:
|
||||
|
||||
```console
|
||||
```bash
|
||||
kubectl create namespace crossplane-system
|
||||
|
||||
helm repo add crossplane-stable https://charts.crossplane.io/stable
|
||||
helm repo update
|
||||
|
||||
helm install crossplane --namespace crossplane-system crossplane-stable/crossplane
|
||||
```
|
||||
|
||||
</div>
|
||||
<!-- End Stable Tab -->
|
||||
<!-- close "Helm 3 (stable)" -->
|
||||
{{% /tab %}}
|
||||
|
||||
<!-- Begin Latest Tab -->
|
||||
<div class="tab-pane fade" id="install-tab-helm3-latest" markdown="1">
|
||||
{{% tab "Helm 3 (latest)" %}}
|
||||
<!-- fold start -->
|
||||
Use Helm 3 to install the latest pre-release version of Crossplane:
|
||||
|
||||
```console
|
||||
```bash
|
||||
kubectl create namespace crossplane-system
|
||||
|
||||
helm repo add crossplane-master https://charts.crossplane.io/master/
|
||||
|
@ -127,20 +103,18 @@ helm install crossplane --namespace crossplane-system crossplane-master/crosspla
|
|||
|
||||
For example:
|
||||
|
||||
```console
|
||||
```bash
|
||||
helm install crossplane --namespace crossplane-system crossplane-master/crossplane \
|
||||
--version 0.11.0-rc.100.gbc5d311 --devel
|
||||
```
|
||||
|
||||
</div>
|
||||
<!-- End Latest Tab -->
|
||||
|
||||
</div>
|
||||
<!-- End Helm Tabs -->
|
||||
<!-- close "Helm 3 (latest)" -->
|
||||
{{% /tab %}}
|
||||
<!-- close "install with helm" -->
|
||||
{{% /tabs %}}
|
||||
|
||||
### Check Crossplane Status
|
||||
|
||||
```console
|
||||
```bash
|
||||
helm list -n crossplane-system
|
||||
|
||||
kubectl get all -n crossplane-system
|
||||
|
@ -151,29 +125,18 @@ kubectl get all -n crossplane-system
|
|||
The Crossplane CLI extends `kubectl` with functionality to build, push, and
|
||||
install [Crossplane packages]:
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a href="#install-tab-cli" data-toggle="tab">Stable</a></li>
|
||||
<li><a href="#install-tab-cli-latest" data-toggle="tab">Latest</a></li>
|
||||
</ul>
|
||||
<br>
|
||||
{{% tabs "crossplane CLI" %}}
|
||||
|
||||
<!-- Begin CLI Tabs -->
|
||||
<div class="tab-content">
|
||||
|
||||
<!-- Begin CLI Stable Tab -->
|
||||
<div class="tab-pane fade in active" id="install-tab-cli" markdown="1">
|
||||
|
||||
```console
|
||||
{{% tab "Stable" %}}
|
||||
```bash
|
||||
curl -sL https://raw.githubusercontent.com/crossplane/crossplane/master/install.sh | sh
|
||||
```
|
||||
<!-- close "Stable" -->
|
||||
{{% /tab %}}
|
||||
|
||||
</div>
|
||||
<!-- End CLI Stable Tab -->
|
||||
{{% tab "Latest" %}}
|
||||
|
||||
<!-- Begin CLI Latest Tab -->
|
||||
<div class="tab-pane fade" id="install-tab-cli-latest" markdown="1">
|
||||
|
||||
```console
|
||||
```bash
|
||||
curl -sL https://raw.githubusercontent.com/crossplane/crossplane/master/install.sh | CHANNEL=master sh
|
||||
```
|
||||
|
||||
|
@ -181,15 +144,14 @@ You may also specify `VERSION` for download if you would like to select a
|
|||
specific version from the given release channel. If a version is not specified
|
||||
the latest version from the release channel will be used.
|
||||
|
||||
```console
|
||||
```bash
|
||||
curl -sL https://raw.githubusercontent.com/crossplane/crossplane/master/install.sh | CHANNEL=master VERSION=v1.0.0-rc.0.130.g94f34fd3 sh
|
||||
```
|
||||
<!-- close "Latest" -->
|
||||
{{% /tab %}}
|
||||
|
||||
</div>
|
||||
<!-- End CLI Latest Tab -->
|
||||
|
||||
</div>
|
||||
<!-- End CLI tabs -->
|
||||
<!-- close "crossplane CLI" -->
|
||||
{{% /tabs %}}
|
||||
|
||||
## Select a Getting Started Configuration
|
||||
|
||||
|
@ -220,32 +182,21 @@ single `storageGB` parameter, and creates a connection `Secret` with keys for
|
|||
`username`, `password`, and `endpoint`. A `Configuration` exists for each
|
||||
provider that can satisfy a `PostgreSQLInstance`. Let's get started!
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a href="#aws-tab-1" data-toggle="tab">AWS (Default VPC)</a></li>
|
||||
<li><a href="#aws-new-tab-1" data-toggle="tab">AWS (New VPC)</a></li>
|
||||
<li><a href="#gcp-tab-1" data-toggle="tab">GCP</a></li>
|
||||
<li><a href="#azure-tab-1" data-toggle="tab">Azure</a></li>
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
<!-- Begin Cloud Provider Tabs -->
|
||||
<div class="tab-content">
|
||||
|
||||
<!-- Begin AWS Default VPC Tab -->
|
||||
<div class="tab-pane fade in active" id="aws-tab-1" markdown="1">
|
||||
{{% tabs "getting started" %}}
|
||||
|
||||
{{% tab "AWS (Default VPC)" %}}
|
||||
### Install Configuration Package
|
||||
|
||||
> If you prefer to see the contents of this configuration package and how it is
|
||||
> constructed prior to install, skip ahead to the [create a configuration]
|
||||
> section.
|
||||
|
||||
```console
|
||||
kubectl crossplane install configuration registry.upbound.io/xp/getting-started-with-aws:v1.7.3
|
||||
```bash
|
||||
kubectl crossplane install configuration registry.upbound.io/xp/getting-started-with-aws:latest
|
||||
```
|
||||
|
||||
Wait until all packages become healthy:
|
||||
```
|
||||
```bash
|
||||
watch kubectl get pkg
|
||||
```
|
||||
|
||||
|
@ -253,13 +204,13 @@ watch kubectl get pkg
|
|||
|
||||
Using an AWS account with permissions to manage RDS databases:
|
||||
|
||||
```console
|
||||
```bash
|
||||
AWS_PROFILE=default && echo -e "[default]\naws_access_key_id = $(aws configure get aws_access_key_id --profile $AWS_PROFILE)\naws_secret_access_key = $(aws configure get aws_secret_access_key --profile $AWS_PROFILE)" > creds.conf
|
||||
```
|
||||
|
||||
### Create a Provider Secret
|
||||
|
||||
```console
|
||||
```bash
|
||||
kubectl create secret generic aws-creds -n crossplane-system --from-file=creds=./creds.conf
|
||||
```
|
||||
|
||||
|
@ -281,28 +232,25 @@ spec:
|
|||
name: aws-creds
|
||||
key: creds
|
||||
```
|
||||
```console
|
||||
```bash
|
||||
kubectl apply -f https://raw.githubusercontent.com/crossplane/crossplane/release-1.7/docs/snippets/configure/aws/providerconfig.yaml
|
||||
```
|
||||
<!-- close "AWS (Default VPC)" -->
|
||||
{{% /tab %}}
|
||||
|
||||
</div>
|
||||
<!-- End AWS Default VPC Tab -->
|
||||
|
||||
<!-- Begin AWS New VPC Tab -->
|
||||
<div class="tab-pane fade" id="aws-new-tab-1" markdown="1">
|
||||
|
||||
{{% tab "AWS (New VPC)" %}}
|
||||
### Install Configuration Package
|
||||
|
||||
> If you prefer to see the contents of this configuration package and how it is
|
||||
> constructed prior to install, skip ahead to the [create a configuration]
|
||||
> section.
|
||||
|
||||
```console
|
||||
kubectl crossplane install configuration registry.upbound.io/xp/getting-started-with-aws-with-vpc:v1.7.3
|
||||
```bash
|
||||
kubectl crossplane install configuration registry.upbound.io/xp/getting-started-with-aws-with-vpc:latest
|
||||
```
|
||||
|
||||
Wait until all packages become healthy:
|
||||
```
|
||||
```bash
|
||||
watch kubectl get pkg
|
||||
```
|
||||
|
||||
|
@ -310,13 +258,13 @@ watch kubectl get pkg
|
|||
|
||||
Using an AWS account with permissions to manage RDS databases:
|
||||
|
||||
```console
|
||||
```bash
|
||||
AWS_PROFILE=default && echo -e "[default]\naws_access_key_id = $(aws configure get aws_access_key_id --profile $AWS_PROFILE)\naws_secret_access_key = $(aws configure get aws_secret_access_key --profile $AWS_PROFILE)" > creds.conf
|
||||
```
|
||||
|
||||
### Create a Provider Secret
|
||||
|
||||
```console
|
||||
```bash
|
||||
kubectl create secret generic aws-creds -n crossplane-system --from-file=creds=./creds.conf
|
||||
```
|
||||
|
||||
|
@ -338,15 +286,14 @@ spec:
|
|||
name: aws-creds
|
||||
key: creds
|
||||
```
|
||||
```console
|
||||
|
||||
```bash
|
||||
kubectl apply -f https://raw.githubusercontent.com/crossplane/crossplane/release-1.7/docs/snippets/configure/aws/providerconfig.yaml
|
||||
```
|
||||
<!-- close "AWS (New VPC)" -->
|
||||
{{% /tab %}}
|
||||
|
||||
</div>
|
||||
<!-- End AWS New VPC Tab -->
|
||||
|
||||
<!-- Begin GCP Tab -->
|
||||
<div class="tab-pane fade" id="gcp-tab-1" markdown="1">
|
||||
{{% tab "GCP" %}}
|
||||
|
||||
### Install Configuration Package
|
||||
|
||||
|
@ -354,8 +301,8 @@ kubectl apply -f https://raw.githubusercontent.com/crossplane/crossplane/release
|
|||
> constructed prior to install, skip ahead to the [create a configuration]
|
||||
> section.
|
||||
|
||||
```console
|
||||
kubectl crossplane install configuration registry.upbound.io/xp/getting-started-with-gcp:v1.7.3
|
||||
```bash
|
||||
kubectl crossplane install configuration registry.upbound.io/xp/getting-started-with-gcp:latest
|
||||
```
|
||||
|
||||
Wait until all packages become healthy:
|
||||
|
@ -365,7 +312,7 @@ watch kubectl get pkg
|
|||
|
||||
### Get GCP Account Keyfile
|
||||
|
||||
```console
|
||||
```bash
|
||||
# replace this with your own gcp project id and the name of the service account
|
||||
# that will be created.
|
||||
PROJECT_ID=my-project
|
||||
|
@ -389,7 +336,7 @@ gcloud iam service-accounts keys create creds.json --project $PROJECT_ID --iam-a
|
|||
|
||||
### Create a Provider Secret
|
||||
|
||||
```console
|
||||
```bash
|
||||
kubectl create secret generic gcp-creds -n crossplane-system --from-file=creds=./creds.json
|
||||
```
|
||||
|
||||
|
@ -398,7 +345,7 @@ kubectl create secret generic gcp-creds -n crossplane-system --from-file=creds=.
|
|||
We will create the following `ProviderConfig` object to configure credentials
|
||||
for GCP Provider:
|
||||
|
||||
```console
|
||||
```bash
|
||||
# replace this with your own gcp project id
|
||||
PROJECT_ID=my-project
|
||||
echo "apiVersion: gcp.crossplane.io/v1beta1
|
||||
|
@ -414,12 +361,10 @@ spec:
|
|||
name: gcp-creds
|
||||
key: creds" | kubectl apply -f -
|
||||
```
|
||||
<!-- close "GCP" -->
|
||||
{{% /tab %}}
|
||||
|
||||
</div>
|
||||
<!-- End GCP Tab -->
|
||||
|
||||
<!-- Begin Azure Tab -->
|
||||
<div class="tab-pane fade" id="azure-tab-1" markdown="1">
|
||||
{{% tab "Azure" %}}
|
||||
|
||||
### Install Configuration Package
|
||||
|
||||
|
@ -427,8 +372,8 @@ spec:
|
|||
> constructed prior to install, skip ahead to the [create a configuration]
|
||||
> section.
|
||||
|
||||
```console
|
||||
kubectl crossplane install configuration registry.upbound.io/xp/getting-started-with-azure:v1.7.3
|
||||
```bash
|
||||
kubectl crossplane install configuration registry.upbound.io/xp/getting-started-with-azure:latest
|
||||
```
|
||||
|
||||
Wait until all packages become healthy:
|
||||
|
@ -438,14 +383,14 @@ watch kubectl get pkg
|
|||
|
||||
### Get Azure Principal Keyfile
|
||||
|
||||
```console
|
||||
```bash
|
||||
# create service principal with Owner role
|
||||
az ad sp create-for-rbac --sdk-auth --role Owner > "creds.json"
|
||||
az ad sp create-for-rbac --role Contributor --scopes /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx > "creds.json"
|
||||
```
|
||||
|
||||
### Create a Provider Secret
|
||||
|
||||
```console
|
||||
```bash
|
||||
kubectl create secret generic azure-creds -n crossplane-system --from-file=creds=./creds.json
|
||||
```
|
||||
|
||||
|
@ -468,32 +413,27 @@ spec:
|
|||
key: creds
|
||||
```
|
||||
|
||||
```console
|
||||
```bash
|
||||
kubectl apply -f https://raw.githubusercontent.com/crossplane/crossplane/release-1.7/docs/snippets/configure/azure/providerconfig.yaml
|
||||
```
|
||||
<!-- close "Azure" -->
|
||||
{{% /tab %}}
|
||||
|
||||
</div>
|
||||
<!-- End Azure Tab -->
|
||||
|
||||
</div>
|
||||
<!-- End Cloud Provider Tabs -->
|
||||
{{% /tabs %}}
|
||||
|
||||
## Next Steps
|
||||
|
||||
Now that you have configured Crossplane with support for `PostgreSQLInstance`,
|
||||
you can [provision infrastructure].
|
||||
<!-- close "Crossplane (upstream)" -->
|
||||
{{% /tab %}}
|
||||
|
||||
</div>
|
||||
<!-- End Upstream Tab -->
|
||||
|
||||
<!-- Begin Downstream Tab -->
|
||||
<div class="tab-pane fade" id="using-a-downstream-distro" markdown="1">
|
||||
|
||||
{{% tab "Downstream Distribution" %}}
|
||||
## Start with a Downstream Distribution
|
||||
|
||||
Upbound, the founders of Crossplane, maintains a free and open source downstream
|
||||
distribution of Crossplane which makes getting started with Crossplane easy.
|
||||
Universal Crossplane, or UXP for short, connects to Upbound's hosted management
|
||||
distribution of Crossplane which makes getting started with Crossplane easy.
|
||||
Universal Crossplane, or UXP for short, connects to Upbound's hosted management
|
||||
console and Registry to make it easier to develop, debug, and manage Provider
|
||||
and Configuration packages.
|
||||
|
||||
|
@ -502,11 +442,11 @@ and Configuration packages.
|
|||
<i>Want see another hosted Crossplane service listed? Please [reach out on
|
||||
Slack][Slack] and our community will highlight it here!</i>
|
||||
|
||||
</div>
|
||||
<!-- End Downstream Tab -->
|
||||
<!-- close "Downstream Distribution" -->
|
||||
{{% /tab %}}
|
||||
|
||||
</div>
|
||||
<!-- End Distro Tabs -->
|
||||
<!-- close "Crossplane Distros" -->
|
||||
{{% /tabs %}}
|
||||
|
||||
## More Info
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@ title: Provision Infrastructure
|
|||
weight: 3
|
||||
---
|
||||
|
||||
|
||||
|
||||
Composite resources (XRs) are always cluster scoped - they exist outside of any
|
||||
namespace. This allows an XR to represent infrastructure that might be consumed
|
||||
from several different namespaces. This is often true for VPC networks - an
|
||||
|
|
|
@ -3,8 +3,6 @@ title: Guides
|
|||
weight: 200
|
||||
---
|
||||
|
||||
# Guides
|
||||
|
||||
This section contains guides for using Crossplane in specific scenarios or
|
||||
alongside other technologies. If you are interested in writing and
|
||||
maintaining a guide for your own use-case please feel free to [open an issue] to
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
---
|
||||
title: Composition Revisions
|
||||
weight: 260
|
||||
---
|
||||
|
||||
|
||||
|
||||
This guide discusses the use of "Composition Revisions" to safely make and roll
|
||||
back changes to a Crossplane [`Composition`][composition-type]. It assumes
|
||||
familiarity with Crossplane, and particularly with
|
||||
|
|
|
@ -3,8 +3,6 @@ title: Multi-Tenant Crossplane
|
|||
weight: 240
|
||||
---
|
||||
|
||||
# Multi-Tenant Crossplane
|
||||
|
||||
This guide describes how to use Crossplane effectively in multi-tenant
|
||||
environments by utilizing Kubernetes primitives and compatible policy
|
||||
enforcement projects in the cloud-native ecosystem.
|
||||
|
@ -23,14 +21,15 @@ those with more complex environments, may choose to incorporate third-party
|
|||
policy engines, or scale to multiple Crossplane clusters. The following sections
|
||||
describe each of these scenarios in greater detail.
|
||||
|
||||
- [TL;DR](#tldr)
|
||||
- [Background](#background)
|
||||
- [Cluster Scoped Managed Resources](#cluster-scoped-managed-resources)
|
||||
- [Namespace Scoped Claims](#namespace-scoped-claims)
|
||||
- [Single Cluster Multi Tenancy](#single-cluster-multi-tenancy)
|
||||
- [Cluster-Scoped Managed Resources](#cluster-scoped-managed-resources)
|
||||
- [Namespace Scoped Claims](#namespace-scoped-claims)
|
||||
- [Single Cluster Multi-Tenancy](#single-cluster-multi-tenancy)
|
||||
- [Composition as an Isolation Mechanism](#composition-as-an-isolation-mechanism)
|
||||
- [Namespaces as an Isolation Mechanism](#namespaces-as-an-isolation-mechanism)
|
||||
- [Policy Enforcement with Open Policy Agent](#policy-enforcement-with-open-policy-agent)
|
||||
- [Multi Cluster Multi Tenancy](#multi-cluster-multi-tenancy)
|
||||
- [Multi-Cluster Multi-Tenancy](#multi-cluster-multi-tenancy)
|
||||
- [Reproducible Platforms with Configuration Packages](#reproducible-platforms-with-configuration-packages)
|
||||
- [Control Plane of Control Planes](#control-plane-of-control-planes)
|
||||
- [Service Provisioning using Open Service Broker API](#service-provisioning-using-open-service-broker-api)
|
||||
|
@ -221,7 +220,7 @@ spec:
|
|||
key: creds
|
||||
```
|
||||
|
||||
2. Define a `Composition` that patches the name of the Claim reference in the XR
|
||||
2. Define a `Composition` that patches the namespace of the Claim reference in the XR
|
||||
to the `providerConfigRef` of the `RDSInstance`.
|
||||
|
||||
```yaml
|
||||
|
|
|
@ -1,13 +1,9 @@
|
|||
---
|
||||
title: Self-Signed CA Certs
|
||||
toc: true
|
||||
weight: 270
|
||||
indent: true
|
||||
title: Self-Signed CA Certs
|
||||
weight: 270
|
||||
---
|
||||
|
||||
|
||||
|
||||
> ! Using self-signed certificates is not advised in production, it is
|
||||
> Using self-signed certificates is not advised in production, it is
|
||||
recommended to only use self-signed certificates for testing.
|
||||
|
||||
When Crossplane loads Configuration and Provider Packages from private
|
||||
|
@ -50,4 +46,4 @@ in an `override.yaml` file would look like this:
|
|||
registryCaBundleConfig:
|
||||
name: ca-bundle-config
|
||||
key: ca-bundle
|
||||
```
|
||||
```
|
||||
|
|
|
@ -3,8 +3,6 @@ title: Upgrading to v0.14
|
|||
weight: 210
|
||||
---
|
||||
|
||||
|
||||
|
||||
Crossplane made a small handful of breaking changes in v0.14. The most broadly
|
||||
impactful change was updating the `CompositeResourceDefinition` (XRD) schema to
|
||||
support defining multiple versions of a composite resource (XR) at once. This
|
||||
|
|
|
@ -3,8 +3,6 @@ title: Upgrading to v1.x
|
|||
weight: 220
|
||||
---
|
||||
|
||||
|
||||
|
||||
Crossplane versions post v1.0 do not introduce any breaking changes, but may
|
||||
make some backward compatible changes to the core Crossplane CRDs. Helm [does
|
||||
not currently touch CRDs](https://github.com/helm/helm/issues/6581) when a chart
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
title: Vault as an External Secret Store
|
||||
weight: 230
|
||||
---
|
||||
\
|
||||
|
||||
This guide walks through the steps required to configure Crossplane and
|
||||
its Providers to use [Vault] as an [External Secret Store]. For the sake of
|
||||
|
|
|
@ -4,7 +4,6 @@ weight: 230
|
|||
---
|
||||
|
||||
|
||||
|
||||
> This guide is adapted from the [Vault on Minikube] and [Vault Kubernetes
|
||||
> Sidecar] guides.
|
||||
|
||||
|
@ -314,7 +313,8 @@ kubectl get cloudsqlinstance -w
|
|||
[Vault Kubernetes Sidecar]: https://learn.hashicorp.com/tutorials/vault/kubernetes-sidecar
|
||||
[Vault]: https://www.vaultproject.io/
|
||||
[Vault Kubernetes Sidecar]: https://www.vaultproject.io/docs/platform/k8s/injector
|
||||
[provider-gcp]: https://github.com/crossplane/provider-gcp
|
||||
[provider-gcp]: https://github.com/crossplane-contrib/provider-gcp
|
||||
[provider-aws]: https://github.com/crossplane-contrib/provider-aws
|
||||
[AWS]: https://www.vaultproject.io/docs/secrets/aws
|
||||
[Azure]: https://www.vaultproject.io/docs/secrets/azure
|
||||
[GCP]: https://www.vaultproject.io/docs/secrets/gcp
|
||||
|
|
|
@ -3,8 +3,6 @@ title: Reference
|
|||
weight: 300
|
||||
---
|
||||
|
||||
# Overview
|
||||
|
||||
The reference documentation includes answers to frequently asked questions,
|
||||
information about similar projects, and links to resources that can help you
|
||||
learn more about Crossplane and Kubernetes. If you have additional information
|
||||
|
@ -12,10 +10,10 @@ that you think would be valuable for the community, please feel free to [open a
|
|||
pull request] and add it.
|
||||
|
||||
1. [Install]
|
||||
1. [Configure]
|
||||
1. [Uninstall]
|
||||
1. [Troubleshoot]
|
||||
1. [Learn More]
|
||||
2. [Configure]
|
||||
3. [Uninstall]
|
||||
4. [Troubleshoot]
|
||||
5. [Learn More]
|
||||
|
||||
<!-- Named Links -->
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ title: Composition
|
|||
weight: 304
|
||||
---
|
||||
|
||||
|
||||
This reference provides detailed examples of defining, configuring, and using
|
||||
Composite Resources in Crossplane. You can also refer to Crossplane's [API
|
||||
documentation][api-docs] for more details. If you're looking for a more general
|
||||
|
@ -644,8 +645,6 @@ the composed resource. The name of this check can be a little confusing in that
|
|||
a field that exists with a zero value (e.g. an empty string or zero integer) is
|
||||
not considered to be 'empty', and thus will pass the readiness check.
|
||||
|
||||
`None`. Considers the composed resource to be ready as soon as it exists.
|
||||
|
||||
```yaml
|
||||
# The composed resource will be considered ready if and when 'online' status
|
||||
# field exists.
|
||||
|
@ -778,7 +777,7 @@ so:
|
|||
[crd-docs]: https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/
|
||||
[raise an issue]: https://github.com/crossplane/crossplane/issues/new?assignees=&labels=enhancement&template=feature_request.md
|
||||
[issue-2524]: https://github.com/crossplane/crossplane/issues/2524
|
||||
[field-paths]: https://github.com/kubernetes/community/blob/61f3d0/contributors/devel/sig-architecture/api-conventions.md#selecting-fields
|
||||
[field-paths]: https://github.com/kubernetes/community/blob/61f3d0/contributors/devel/sig-architecture/api-conventions.md#selecting-fields
|
||||
[pkg/fmt]: https://pkg.go.dev/fmt
|
||||
[trouble-ref]: {{<ref "troubleshoot" >}}
|
||||
[crossplane-contrib]: https://github.com/crossplane-contrib
|
||||
|
|
|
@ -3,8 +3,6 @@ title: Configure Your Cloud Provider Account
|
|||
weight: 302
|
||||
---
|
||||
|
||||
|
||||
|
||||
In order for Crossplane to be able to manage resources in a specific cloud
|
||||
provider, you will need to create an account for Crossplane to use. Use the
|
||||
links below for cloud-specific instructions to create an account that can be
|
||||
|
|
|
@ -5,6 +5,8 @@ weight: 301
|
|||
|
||||
|
||||
|
||||
# Install Crossplane
|
||||
|
||||
Crossplane can be easily installed into any existing Kubernetes cluster using
|
||||
the regularly published Helm chart. The Helm chart contains all the custom
|
||||
resources and controllers needed to deploy and configure Crossplane.
|
||||
|
@ -160,5 +162,5 @@ imagePullSecrets:
|
|||
<!-- Named Links -->
|
||||
|
||||
[Kubernetes cluster]: https://kubernetes.io/docs/setup/
|
||||
[Minikube]: https://minikube.sigs.k8s.io/docs/start/
|
||||
[Helm]: https://helm.sh/docs/intro/using_helm/
|
||||
[Minikube]: https://kubernetes.io/docs/tasks/tools/install-minikube/
|
||||
[Helm]: https://docs.helm.sh/using_helm/
|
||||
|
|
|
@ -3,8 +3,6 @@ title: Learn More
|
|||
weight: 307
|
||||
---
|
||||
|
||||
|
||||
|
||||
If you have any questions, please drop us a note on [Crossplane Slack][join-crossplane-slack] or [contact us][contact-us]!
|
||||
|
||||
***Learn more about using Crossplane***
|
||||
|
|
|
@ -3,7 +3,8 @@ title: Release Cycle
|
|||
weight: 308
|
||||
---
|
||||
|
||||
|
||||
Starting with the v1.10.0 release, Crossplane is released on a quarterly (13
|
||||
week) cadence. A cycle is comprised of three general stages:
|
||||
|
||||
Starting with the v1.0.0 release, Crossplane is released on an eight week
|
||||
cadence. A cycle is comprised of three general stages:
|
||||
|
|
|
@ -3,8 +3,6 @@ title: Troubleshoot
|
|||
weight: 306
|
||||
---
|
||||
|
||||
# Troubleshooting
|
||||
|
||||
* [Requested Resource Not Found]
|
||||
* [Resource Status and Conditions]
|
||||
* [Resource Events]
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
---
|
||||
title: Uninstall
|
||||
title: Uninstall Crossplane
|
||||
weight: 303
|
||||
---
|
||||
|
||||
# Uninstalling
|
||||
|
||||
Crossplane has a number of components that must be cleaned up in order to
|
||||
guarantee proper removal from the cluster. When deleting objects, it is best to
|
||||
consider parent-child relationships and clean up the children first to ensure
|
||||
|
|
|
@ -3,8 +3,6 @@ title: xpkg Specification
|
|||
weight: 305
|
||||
---
|
||||
|
||||
# Overview
|
||||
|
||||
Crossplane supports two types of [packages]: Providers and Configurations. These
|
||||
packages are distributed as generic [OCI images], which contain [YAML] content
|
||||
informing the Crossplane package manager how to alter the state of a cluster by
|
||||
|
|
|
@ -1,14 +1,29 @@
|
|||
apiVersion: meta.pkg.crossplane.io/v1alpha1
|
||||
apiVersion: meta.pkg.crossplane.io/v1
|
||||
kind: Configuration
|
||||
metadata:
|
||||
name: getting-started-with-aws-with-vpc
|
||||
annotations:
|
||||
meta.crossplane.io/maintainer: Crossplane Maintainers <info@crossplane.io>
|
||||
meta.crossplane.io/source: github.com/crossplane/crossplane
|
||||
meta.crossplane.io/license: Apache-2.0
|
||||
meta.crossplane.io/description: |
|
||||
An introductory example to Crossplane and Composition for AWS.
|
||||
meta.crossplane.io/readme: |
|
||||
An introductory example to Crossplane and Composition for AWS.
|
||||
This will enable provisioning of an RDS database instance.
|
||||
The example also illustrates how to specify a non-default VPC.
|
||||
|
||||
[Install &
|
||||
Configure](https://crossplane.io/docs/master/getting-started/install-configure.html)
|
||||
|
||||
[Provision a PostgreSQL RDS
|
||||
Database](https://crossplane.io/docs/master/getting-started/provision-infrastructure.html)
|
||||
guide: quickstart
|
||||
provider: aws
|
||||
vpc: new
|
||||
spec:
|
||||
crossplane:
|
||||
version: ">=v1.4.0-0"
|
||||
version: ">=v1.8.0-0"
|
||||
dependsOn:
|
||||
- provider: crossplane/provider-aws
|
||||
version: ">=v0.18.2"
|
||||
version: ">=v0.24.1"
|
||||
|
|
|
@ -26,12 +26,14 @@ spec:
|
|||
properties:
|
||||
spec:
|
||||
type: object
|
||||
description: "The OpenAPIV3Schema of this Composite Resource Definition."
|
||||
properties:
|
||||
parameters:
|
||||
type: object
|
||||
properties:
|
||||
storageGB:
|
||||
type: integer
|
||||
description: "The desired storage capacity of the database, in GB."
|
||||
required:
|
||||
- storageGB
|
||||
required:
|
||||
|
|
|
@ -1,14 +1,29 @@
|
|||
apiVersion: meta.pkg.crossplane.io/v1alpha1
|
||||
apiVersion: meta.pkg.crossplane.io/v1
|
||||
kind: Configuration
|
||||
metadata:
|
||||
name: getting-started-with-aws
|
||||
annotations:
|
||||
meta.crossplane.io/maintainer: Crossplane Maintainers <info@crossplane.io>
|
||||
meta.crossplane.io/source: github.com/crossplane/crossplane
|
||||
meta.crossplane.io/license: Apache-2.0
|
||||
meta.crossplane.io/description: |
|
||||
An introductory example to Crossplane and Composition for AWS.
|
||||
meta.crossplane.io/readme: |
|
||||
An introductory example to Crossplane and Composition for AWS.
|
||||
This will enable provisioning of an RDS database instance.
|
||||
|
||||
[Install &
|
||||
Configure](https://crossplane.io/docs/master/getting-started/install-configure.html)
|
||||
|
||||
[Provision a PostgreSQL RDS
|
||||
Database](https://crossplane.io/docs/master/getting-started/provision-infrastructure.html)
|
||||
labels:
|
||||
guide: quickstart
|
||||
provider: aws
|
||||
vpc: default
|
||||
spec:
|
||||
crossplane:
|
||||
version: ">=v1.4.0-0"
|
||||
version: ">=v1.8.0-0"
|
||||
dependsOn:
|
||||
- provider: crossplane/provider-aws
|
||||
version: ">=v0.18.2"
|
||||
version: ">=v0.24.1"
|
||||
|
|
|
@ -26,12 +26,14 @@ spec:
|
|||
properties:
|
||||
spec:
|
||||
type: object
|
||||
description: "The OpenAPIV3Schema of this Composite Resource Definition."
|
||||
properties:
|
||||
parameters:
|
||||
type: object
|
||||
properties:
|
||||
storageGB:
|
||||
type: integer
|
||||
description: "The desired storage capacity of the database, in GB."
|
||||
required:
|
||||
- storageGB
|
||||
required:
|
||||
|
|
|
@ -30,6 +30,8 @@ spec:
|
|||
location: West US 2
|
||||
sslEnforcement: Disabled
|
||||
version: "11"
|
||||
storageProfile:
|
||||
storageMB: 5120
|
||||
sku:
|
||||
tier: GeneralPurpose
|
||||
capacity: 2
|
||||
|
|
|
@ -1,13 +1,27 @@
|
|||
apiVersion: meta.pkg.crossplane.io/v1alpha1
|
||||
apiVersion: meta.pkg.crossplane.io/v1
|
||||
kind: Configuration
|
||||
metadata:
|
||||
name: getting-started-with-azure
|
||||
annotations:
|
||||
meta.crossplane.io/maintainer: Crossplane Maintainers <info@crossplane.io>
|
||||
meta.crossplane.io/source: github.com/crossplane/crossplane
|
||||
meta.crossplane.io/license: Apache-2.0
|
||||
meta.crossplane.io/description: |
|
||||
An introductory example to Crossplane and Composition for Azure.
|
||||
meta.crossplane.io/readme: |
|
||||
An introductory example to Crossplane and Composition for Azure.
|
||||
This will enable provisioning of an Azure SQL database instance.
|
||||
|
||||
[Install &
|
||||
Configure](https://crossplane.io/docs/master/getting-started/install-configure.html)
|
||||
|
||||
[Provision a PostgreSQL Azure SQL
|
||||
Database](https://crossplane.io/docs/master/getting-started/provision-infrastructure.html)
|
||||
guide: quickstart
|
||||
provider: azure
|
||||
spec:
|
||||
crossplane:
|
||||
version: ">=v1.4.0-0"
|
||||
version: ">=v1.8.0-0"
|
||||
dependsOn:
|
||||
- provider: crossplane/provider-azure
|
||||
version: ">=v0.13.0"
|
||||
version: ">=v0.18.1"
|
||||
|
|
|
@ -26,12 +26,14 @@ spec:
|
|||
properties:
|
||||
spec:
|
||||
type: object
|
||||
description: "The OpenAPIV3Schema of this Composite Resource Definition."
|
||||
properties:
|
||||
parameters:
|
||||
type: object
|
||||
properties:
|
||||
storageGB:
|
||||
type: integer
|
||||
description: "The desired storage capacity of the database, in GB."
|
||||
required:
|
||||
- storageGB
|
||||
required:
|
||||
|
|
|
@ -1,13 +1,27 @@
|
|||
apiVersion: meta.pkg.crossplane.io/v1alpha1
|
||||
apiVersion: meta.pkg.crossplane.io/v1
|
||||
kind: Configuration
|
||||
metadata:
|
||||
name: getting-started-with-gcp
|
||||
annotations:
|
||||
meta.crossplane.io/maintainer: Crossplane Maintainers <info@crossplane.io>
|
||||
meta.crossplane.io/source: github.com/crossplane/crossplane
|
||||
meta.crossplane.io/license: Apache-2.0
|
||||
meta.crossplane.io/description: |
|
||||
An introductory example to Crossplane and Composition for GCP.
|
||||
meta.crossplane.io/readme: |
|
||||
An introductory example to Crossplane and Composition for GCP.
|
||||
This will enable provisioning of a Cloud SQL database instance.
|
||||
|
||||
[Install &
|
||||
Configure](https://crossplane.io/docs/master/getting-started/install-configure.html)
|
||||
|
||||
[Provision a PostgreSQL Cloud SQL
|
||||
Database](https://crossplane.io/docs/master/getting-started/provision-infrastructure.html)
|
||||
guide: quickstart
|
||||
provider: gcp
|
||||
spec:
|
||||
crossplane:
|
||||
version: ">=v1.4.0-0"
|
||||
version: ">=v1.8.0-0"
|
||||
dependsOn:
|
||||
- provider: crossplane/provider-gcp
|
||||
version: ">=v0.13.0"
|
||||
version: ">=v0.20.0"
|
||||
|
|
|
@ -26,12 +26,14 @@ spec:
|
|||
properties:
|
||||
spec:
|
||||
type: object
|
||||
description: "The OpenAPIV3Schema of this Composite Resource Definition."
|
||||
properties:
|
||||
parameters:
|
||||
type: object
|
||||
properties:
|
||||
storageGB:
|
||||
type: integer
|
||||
description: "The desired storage capacity of the database, in GB."
|
||||
required:
|
||||
- storageGB
|
||||
required:
|
||||
|
|
Loading…
Reference in New Issue