Docs redesign (#210)

This completely redesigns the docs and moves them to a new domain docs.crossplane.io and hosting on Netlify. 

This creates a custom Hugo theme affectionally called `Geekboot` based the work of both [Geekdoc](https://geekdocs.de/) and [Bootstrap](https://github.com/twbs/bootstrap/tree/main/site).

[Lighthouse testing on desktop](https://pagespeed.web.dev/report?url=https%3A%2F%2Fdocs.crossplane.io%2Fv1.10%2F&form_factor=desktop) gives the site a 100/100 in performance and best practices, 90/100 in accessibility and 92/100 in SEO.

Besides new layout and colors other new user-facing features include:
* Dark mode
* Fully responsive design and mobile ready
* Automated webp image conversion and optimization as well as lazy loading
* Tabs 
* Alerts and hint boxes
* Foldable/hide long outputs
* Linkable anchors inside tabs
* Improved code boxes with line numbers 
* Adds support for docs.crossplane.io/latest
* Right hand page table of contents 
* Improved text readability 

Infrastructure improves:
* Uses [Bootstrap](https://getbootstrap.com/) to dramatically simplify styling and site development 
* Prefetch links on hover using [instant.page](https://instant.page/)
* Highly optimized CSS using PostCSS and [PurgeCSS ](https://purgecss.com/) without requiring users to install additional tools
* Minimizes the use of JavaScript and bundles scripts with [Webpack](https://webpack.js.org/) to optimize load times
* Massive improvement of SCSS/CSS organization and overrides improving the development process for stylesheet changes
* Optimizes existing SVGs and converts all other template images to webp
* Minification on production builds to further reduce page sizes

This also bumps the `Makefile` Hugo version to [0.107.0](https://github.com/gohugoio/hugo/releases/tag/v0.107.0) to pick up build improvements related to code syntax highlighting, improving builds about about 20-30% in unscientific testing.
This commit is contained in:
Pete Lumbis 2022-12-01 11:11:29 -05:00 committed by GitHub
parent 6c606dcbef
commit f1e0f4d865
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
681 changed files with 22564 additions and 5860 deletions

8
.gitignore vendored
View File

@ -53,8 +53,14 @@ public/*
hugo
hugo-*
.hugo_build.lock
package-lock.json
hugo_stats.json
# From original Upbound Crossplane .gitignore #
# Webpack related files #
######################
utils/webpack/node_modules
# From original Crossplane .gitignore #
######################
/_site
/vendor

View File

@ -62,7 +62,7 @@ endif
# ====================================================================================
# Tools
HUGO_VERSION ?= 0.104.3
HUGO_VERSION ?= 0.107.0
HUGO := ./hugo-$(HUGO_VERSION)
$(HUGO):

View File

@ -8,3 +8,5 @@ For detailed information about contributing to documentation read the [Docs Cont
## License
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.
The docs.crossplane.io theme is based on [Geekdoc](https://github.com/thegeeklab/hugo-geekdoc) and [Bootstrap](https://github.com/twbs/bootstrap), both licensed under the MIT License.

View File

@ -2,24 +2,47 @@ baseURL: "/"
enableRobotsTXT: True
languageCode: "en-us"
title: "Crossplane"
theme: "crossplane"
uglyurls: true
theme: "geekboot"
enableGitInfo: true
uglyurls: false
disableKinds:
- taxonomy
- term
- RSS
build:
writeStats: true
markup:
goldmark:
renderer:
unsafe: true
tableOfContents:
startLevel: 1
endLevel: 9
highlight:
CodeFences: true
codeFences: true
noClasses: false
linenos: true
LineNumbersInTable: true
anchorLineNos: false # Need to fix the line number ID generation.
module:
mounts:
- source: content
target: content
- source: assets
target: assets
- source: content
target: assets/content
includeFiles:
- "**/**.png"
- "**/**.jpg"
- "**/**.jpeg"
- "**/**.gif"
params:
latest: "1.10"
upboundLink: "https://www.upbound.io/"
slackLink: "https://slack.crossplane.io/"
githubLink: "https://github.com/crossplane/crossplane"
@ -33,5 +56,9 @@ params:
prodFormLink: "https://docs.google.com/forms/d/e/1FAIpQLSev-5clADSdkwi_wiFqBCAECeIoAQDE91chBbeWbvyTjRCeYg/viewform"
infoMailToLink: "mailto:info@crossplane.io"
upboundGithubLink: "https://github.com/upbound"
latest: "1.10"
repoLink: "https://github.com/crossplane/crossplane"
anchors:
min: 2
max: 5
description: "Crossplane lets you build a control plane with Kubernetes-style declarative and API-driven configuration and management for anything."

View File

@ -1,3 +0,0 @@
---
layout: 404
---

View File

@ -1,7 +1,5 @@
---
title: crossplane
weight: 401
layout: redirect
docs_root: true
url: /docs/
---

View File

@ -1,3 +0,0 @@
---
layout: community
---

View File

@ -1,187 +0,0 @@
---
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](https://github.com/crossplane/crossplane.github.io) 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.

View File

@ -1,187 +0,0 @@
---
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](https://github.com/crossplane/crossplane.github.io) 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.

View File

@ -1,3 +1,6 @@
---
tocHidden: true
---
# Overview
![Crossplane](media/banner.png)

View File

@ -1,14 +1,11 @@
---
title: "Overview"
weight: -1
toc_include: false
aliases:
- /docs/master/index.html
cascade:
version: master
---
![Crossplane](/docs/master/media/banner.png)
{{< img src="media/banner.png" alt="Crossplane Popsicle Truck" size="large" >}}
Crossplane is an open source Kubernetes add-on that transforms your cluster into
a **universal control plane**. Crossplane enables platform teams to assemble
@ -21,9 +18,4 @@ higher level abstractions that can be versioned, managed, deployed and consumed
using your favorite tools and existing processes. [Install Crossplane]({{<ref "getting-started/install-configure" >}}) into any
Kubernetes cluster to get started.
Crossplane is a [Cloud Native Compute Foundation][cncf] project.
<!-- Named Links -->
[cncf]: https://www.cncf.io/
Crossplane is a [Cloud Native Compute Foundation](https://www.cncf.io/) project.

View File

@ -1,6 +1,6 @@
---
title: Adding Amazon Web Services (AWS) to Crossplane
toc_hide: true
tocHidden: true
---
In this guide, we will walk through the steps necessary to configure your AWS

View File

@ -1,6 +1,6 @@
---
title: Adding Microsoft Azure to Crossplane
toc_hide: true
tocHidden: true
---
In this guide, we will walk through the steps necessary to configure your Azure

View File

@ -1,6 +1,6 @@
---
title: Adding Google Cloud Platform (GCP) to Crossplane
toc_hide: true
tocHidden: true
---

View File

@ -241,10 +241,10 @@ scenarios, including:
take minutes to provision on-demand.
[managed-resources]: {{<ref "managed-resources" >}}
[xrs-and-mrs]: /docs/master/media/composition-xrs-and-mrs.svg
[xrs-and-mrs]: /master/media/composition-xrs-and-mrs.svg
[xr-ref]: {{<ref "../reference/composition" >}}
[how-it-works]: /docs/master/media/composition-how-it-works.svg
[how-it-works]: /master/media/composition-how-it-works.svg
[crd-docs]: https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/
[provider-kubernetes]: https://marketplace.upbound.io/providers/crossplane-contrib/provider-kubernetes
[provider-helm]: https://marketplace.upbound.io/providers/crossplane-contrib/provider-helm
[claims-and-xrs]: /docs/master/media/composition-claims-and-xrs.svg
[provider-helm]: https://marketplace.upbound.io/providers/crossplane-contrib/provider-helm/
[claims-and-xrs]: /master/media/composition-claims-and-xrs.svg

View File

@ -25,14 +25,8 @@ Composite Resources or XRs - not used directly. See the
Crossplane API conventions extend the Kubernetes API conventions for the schema
of Crossplane managed resources. Following is an example of a managed resource:
<ul class="nav nav-tabs">
<li class="active"><a href="#aws-tab-1" data-toggle="tab">AWS</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>
<div class="tab-content">
<div class="tab-pane fade in active" id="aws-tab-1" markdown="1">
{{< tabs >}}
{{< tab "AWS" >}}
The AWS provider supports provisioning an [RDS][rds] instance via the `RDSInstance`
managed resource it adds to Crossplane.
@ -81,8 +75,8 @@ You can then delete the `RDSInstance`:
kubectl delete rdsinstance rdspostgresql
```
</div>
<div class="tab-pane fade" id="gcp-tab-1" markdown="1">
{{< /tab >}}
{{< tab "GCP" >}}
The GCP provider supports provisioning a [CloudSQL][cloudsql] instance with the
`CloudSQLInstance` managed resource it adds to Crossplane.
@ -130,8 +124,8 @@ You can then delete the `CloudSQLInstance`:
kubectl delete cloudsqlinstance cloudsqlpostgresql
```
</div>
<div class="tab-pane fade" id="azure-tab-1" markdown="1">
{{< /tab >}}
{{< tab "Azure" >}}
The Azure provider supports provisioning an [Azure Database for PostgreSQL]
instance with the `PostgreSQLServer` managed resource it adds to Crossplane.
@ -199,8 +193,8 @@ kubectl delete postgresqlserver sqlserverpostgresql
kubectl delete resourcegroup sqlserverpostgresql-rg
```
</div>
</div>
{{< /tab >}}
{{< /tabs >}}
In Kubernetes, `spec` top field represents the desired state of the user.
Crossplane adheres to that and has its own conventions about how the fields

View File

@ -0,0 +1,505 @@
---
title: "Crossplane Documentation"
weight: 2000
---
## Code of conduct
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 -->
>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.
<!-- vale on -->
### Reporting violations
To report violations contact the Crossplane maintainers at `info@crossplane.io`
or the CNCF at `conduct@cncf.io`.
## Docs source
Crossplane documentation lives in two repositories:
* Crossplane documentation source is in the [Crossplane
repository](https://github.com/crossplane/crossplane) `/docs` directory.
* The Crossplane docs website is in the
[crossplane.github.io](https://github.com/crossplane/crossplane.github.io)
repository.
Use `crossplane/crossplane` for documentation contributions.
Use `crossplane/crossplane.github.io` for local development or updates involving
HTML, CSS or Hugo.
### 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.
### Issues and feature requests
Open an [issue](https://github.com/crossplane/crossplane/issues)
to report a problem or request documentation content.
## Contributing
Documentation content contributions are always welcome.
The Crossplane documentation source is in the [Crossplane
repository](https://github.com/crossplane/crossplane) `/docs` directory.
Crossplane recommends using the [website
repository](https://github.com/crossplane/crossplane.github.io) for local development.
When a contribution is ready, submit a pull request to the [Crossplane
repository](https://github.com/crossplane/crossplane).
### Local development
Build the Crossplane documentation site locally for development and
testing.
#### Clone the documentation site
Clone the [documentation
repository](https://github.com/crossplane/crossplane.github.io) with
```command
git clone https://github.com/crossplane/crossplane.github.io.git
```
#### Download the Hugo static site generator
Crossplane uses [Hugo](https://github.com/gohugoio/hugo), a static site
generator.
Download a Hugo v0.101.0 or later from the [Hugo
releases](https://github.com/gohugoio/hugo/releases/tag/v0.106.0).
#### Build the Crossplane documentation
From the `crossplane.github.io` folder run
```command
hugo server
```
Hugo builds the website and launch a local web server on
[http://localhost:1313](http://localhost:1313).
Any changes made are instantly reflected on the local web server. You
don't need to restart Hugo.
### Contribute to a specific version
The documentation location for the various Crossplane versions are different
for the Crossplane source and docs website.
#### Crossplane repository
In the [crossplane/crossplane](https://github.com/crossplane/crossplane)
repository documentation is in the `/docs` directory.
Each active release has a `/docs` folder in a branch called
`release-<version>`. For example, v1.10 docs are in the branch
[release-1.10](https://github.com/crossplane/crossplane/tree/release-1.10).
To contribute to a specific release submit a pull-request to the
`release-<version>` or `master` branch.
The next Crossplane release uses `master` as the starting documentation.
#### Website repository
The [docs website
repository](https://github.com/crossplane/crossplane.github.io) combines all
active versions in the `/content` directory.
## Style guidelines
The official Crossplane documentation style guide is still under construction.
Guiding principals for the documentation include:
<!-- vale off -->
* Avoid [passive voice](https://www.grammarly.com/blog/passive-voice/).
* Use [sentence-case headings](https://apastyle.apa.org/style-grammar-guidelines/capitalization/sentence-case).
* Wrap lines at 80 characters.
* Use [present tense](https://www.grammarly.com/blog/simple-present/).
* Spell out numbers less than 10, except for percentages, time and versions.
* Capitalize "Crossplane" and "Kubernetes."
* Spell out the first use of an acronym unless it's common to new Crossplane
users. When in doubt, spell it out first.
* Don't use [cliches](https://www.topcreativewritingcourses.com/blog/common-cliches-in-writing-and-how-to-avoid-them).
* Use contractions for phrases like "do not", "cannot", "is not" and related terms.
* Don't use Latin terms (i.e., e.g., etc.).
* Don't use [gerund](https://owl.purdue.edu/owl/general_writing/mechanics/gerunds_participles_and_infinitives/index.html) headings (-ing words).
* Try and limit sentences to 25 words or fewer.
* [Be descriptive in link text](https://usability.yale.edu/web-accessibility/articles/links#link-text). Don't use "click here" or "read more".
<!-- vale on -->
Crossplane documentation is adopting
[Vale](https://github.com/errata-ai/vale) and relies on the [Upbound Vale
definitions](https://github.com/upbound/vale) for style guidelines.
Beyond Vale, Crossplane recommends [Grammarly](https://www.grammarly.com/) and [Hemingway
Editor](https://hemingwayapp.com/) to improve writing quality.
## Docs site styling features
The Crossplane documentation supports multiple styling features to improve
readability.
### Images
Crossplane supports standard [Markdown image
syntax](https://www.markdownguide.org/basic-syntax/#images-1) but using the
`img` shortcode is strongly recommended.
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.
{{< /hint >}}
The shortcode requires a `src` (relative to the file using the shortcode), an
`alt` text and an optional `size`.
The `size` can be one of:
* `xtiny` - Resizes the image to 150px.
* `tiny` - Resizes the image to 320px.
* `small` - Resizes the image to 600px.
* `medium` - Resizes the image to 1200px.
* `large` - Resizes the image to 1800px.
By default the image isn't resized.
An example of using the `img` shortcode:
```html
{{</* img src="../media/banner.png" alt="Crossplane Popsicle Truck" size="small" */>}}
```
Which generates this responsive image (change your browser size to see it change):
{{<img src="../media/banner.png" alt="Crossplane Popsicle Truck" size="small" >}}
### Links
Crossplane docs support standard [Markdown
links](https://www.markdownguide.org/basic-syntax/#links) but Crossplane prefers link shortcodes
for links between docs pages. Using shortcodes prevents incorrect link creation
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:
`[Link text](link)`
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
```markdown
[master branch documentation]({{</* ref "master/_index.md" */>}})
```
<!-- [master branch documentation]({{<ref "master/_index.md" >}}) -->
The `ref` value is of the markdown file, including `.md` extension.
If the `ref` value points to a page that doesn't exist, Hugo fails to start.
#### 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.
```html
{{</* tabs */>}}
{{</* tab "First tab title" */>}}
An example tab. Place anything inside a tab.
{{</* /tab */>}}
{{</* tab "Second tab title" */>}}
A second example tab.
{{</* /tab */>}}
{{</* /tabs */>}}
```
This code block renders the following tabs
{{< tabs >}}
{{< tab "First tab title" >}}
An example tab. Place anything inside a tab.
{{< /tab >}}
{{< tab "Second tab title" >}}
A second example tab.
{{< /tab >}}
{{< /tabs >}}
Both `tab` and `tabs` require opening and closing tags. Unclosed tags causes
Hugo to fail.
### Hints and alert boxes
Hint and alert boxes provide call-outs to important information to the reader. Crossplane docs support four different hint box styles.
{{< hint "note" >}}
Notes are useful for calling out optional information.
{{< /hint >}}
{{< hint "tip" >}}
Use tips to provide context or a best practice.
{{< /hint >}}
{{< hint "important" >}}
Important hints are for drawing extra attention to something.
{{< /hint >}}
{{< hint "warning" >}}
Use warning boxes to alert users of things that may cause outages, lose data or
are irreversible changes.
{{< /hint >}}
Create a hint by using a shortcode in your markdown file:
```html
{{</* hint "note" */>}}
Your box content. This hint box is a note.
{{</* /hint */>}}
```
Use `note`, `tip`, `important`, or `warning` as the `hint` value.
The `hint` shortcode requires opening and closing tags. Unclosed tags causes
Hugo to fail.
### Hide long outputs
Some outputs may be verbose or only relevant for
a small audience. Use the `expand` shortcode to hide blocks of text by default.
{{<expand "A large XRD" >}}
```yaml
apiVersion: apiextensions.crossplane.io/v1
kind: CompositeResourceDefinition
metadata:
name: xpostgresqlinstances.database.example.org
spec:
group: database.example.org
names:
kind: XPostgreSQLInstance
plural: xpostgresqlinstances
claimNames:
kind: PostgreSQLInstance
plural: postgresqlinstances
versions:
- name: v1alpha1
served: true
referenceable: true
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
properties:
parameters:
type: object
properties:
storageGB:
type: integer
required:
- storageGB
required:
- parameters
```
{{< /expand >}}
The `expand` shortcode can have a title, the default is "Expand."
````yaml
{{</* expand "A large XRD" */>}}
```yaml
apiVersion: apiextensions.crossplane.io/v1
kind: CompositeResourceDefinition
metadata:
name: xpostgresqlinstances.database.example.org
```
{{</* /expand */>}}
````
The `expand` shortcode requires opening and closing tags. Unclosed tags causes
Hugo to fail.
## Adding new content
To create new content create a new markdown file in the appropriate location.
To create a new section, create a new directory and an `_index.md` file in the
root.
### 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: "A New Page"
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.
### Hiding pages
To hide a page from the left-hand navigation use `tocHidden: true` in the front
matter of the page. The docs website skips pages with `tocHidden:true` when building the menu.
## Docs website
The Crossplane document website is in a unique [website GitHub
repository](https://github.com/crossplane/crossplane.github.io).
Crossplane uses [Hugo](https://gohugo.io/), a static site generator. Hugo
influences the directory structure of the website repository.
The `/content` directory is the root directory for all documentation content.
The `/themes/geekboot` directory is the root directory for all website related
files, like HTML templates, shortcodes and global media files.
The `/utils/` directory is for JavaScript source code used in the website.
The `/themes/geekboot/assets` folder contains all (S)CSS and compiled JavaScript
for the website.
### CSS
Crossplane documentation uses [Bootstrap
5.2](https://getbootstrap.com/docs/5.2/getting-started/introduction/).
Unmodified Bootstrap SCSS files are in
`/themes/geekboot/assets/scss/bootstrap/`. Any docs-specific overrides are in
per-element SCSS files located one directory higher in
`/themes/geekboot/assets/scss/`.
{{<hint "important" >}}
Don't edit the original Bootstrap stylesheets. It makes the ability to
upgrade to future Bootstrap versions difficult or impossible.
{{< /hint >}}
#### Color themes
Crossplane docs support a light and dark color theme that's applied via CSS
variables.
Universal and default variables are defined in
`/themes/geekboot/assets/scss/_variables.scss`.
Provide theme specific color overrides in
`/themes/geekboot/assets/scss/light-mode.scss` or
`/themes/geekboot/assets/scss/light-mode.scss`.
{{<hint "note" >}}
When creating new styles rely on variables for any color function, even if both
themes share the color.
{{< /hint >}}
#### SCSS compilation
Hugo compiles the SCSS to CSS. Local development doesn't require SCSS installed.
For local development (when using `hugo server`) Hugo compiles SCSS without
any optimizations.
For production (publishing on Netlify or using `hugo server
--environment production`) Hugo compiles SCSS and optimizes the CSS with
[PostCSS](https://postcss.org/). The PostCSS configuration is in
`/postcss.config.js`. The optimizations includes:
* [postcss-lightningcss](https://github.com/onigoetz/postcss-lightningcss) - for
building, minimizing and generating a source map.
* [PurgeCSS](https://purgecss.com/plugins/postcss.html) - removes unused styles
to reduce the CSS file size.
* [postcss-sort-media-queries](https://github.com/yunusga/postcss-sort-media-queries)-
to organize and reduce CSS media queries to remove duplicate and unused
CSS.
Optimizing CSS locally with PostCSS requires installing extra packages.
* [Sass](https://sass-lang.com/install)
* [NPM](https://www.npmjs.com/)
* NPM packages defined in `/package.json` with `npm install`.
### JavaScript
A goal of the documentation website is to use as little JavaScript as possible. Unless
the script provides a significant improvement in performance, capability or user
experience.
To make local development there are no run-time dependencies for
JavaScript.
Runtime JavaScript is in `/themes/geekboot/assets/js/`. [Webpack](https://webpack.js.org/)
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.
* `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 JavaScript
The entire [Bootstap JavaScript
source](https://github.com/twbs/bootstrap/tree/main/js/src) is in
`/utils/webpack/src/js/bootstrap`.
Adding a new Bootstrap feature requires importing it in `globalScripts.js`.
By importing only the necessary Bootstrap JavaScript features, reduces the
bundle size.
## Annotated website tree
Expand the tab below to see an annotated `tree` output of the website repo.
{{<expand >}}
```shell
├── content # Root for all page content
│   ├── master
│   ├── v1.10
│   ├── v1.8
│   └── v1.9
├── themes # Entry point for theme-specific designs
│   └── geekboot
│   ├── assets # JS and stylesheets
│   │   ├── js # Bundled and optmized Javascript
│   │   └── scss # Bootstrap SCSS overrides
│   │   └── bootstrap # Bootstrap original SCSS files
│   ├── data
│   ├── layouts # HTML layouts and shortcodes
│   │   ├── _default # HTML layouts for page types
│   │   │   └── _markup # Hugo render hooks
│   │   ├── partials # HTML Template elements
│   │   │   ├── icons
│   │   │   └── utils
│   │   └── shortcodes # Shortcode features
│   └── static # Static files across the theme.
│   ├── fonts # Font files
│   └── img # Global images
└── utils # Files unrelated to Hugo
└── webpack # Files managed or related to webpack
└── src
└── js
└── bootstrap/ # Original Bootstrap JavaScript
└── colorMode.js # Color theme switcher
└── tabDeepAnchor.js # Enable anchors inside tabs
```
{{</expand>}}

View File

@ -45,10 +45,7 @@ prescriptive detail.
Feature freeze should be performed on all repos. In order to start the feature
freeze period, the following conditions should be met:
* All expected features should be
["complete"](https://github.com/crossplane/crossplane/blob/master/design/one-pager-definition-of-done.md)
and merged into main development branch. This includes user guides, examples,
API documentation, and test updates.
* All issues in the
[milestone](https://github.com/crossplane/crossplane/milestones) should be
closed
@ -167,7 +164,7 @@ For all repos with Helm charts:
* [Helm chart repository](https://charts.crossplane.io/)
For crossplane/crossplane:
* [Docs website](https://crossplane.io/docs/latest)
* [Docs website](https://docs.crossplane.io)
* [Configuration Packages](https://marketplace.upbound.io)
### Tag Next Pre-release

View File

@ -75,7 +75,7 @@ plane.
<!-- Named Links -->
[Open Service Broker]: https://www.openservicebrokerapi.org/
[Kubernetes Service Catalog]: https://kubernetes.io/docs/concepts/extend-kubernetes/service-catalog/
[Kubernetes Service Catalog]: https://github.com/kubernetes-retired/service-catalog
[GCP OSB]: https://cloud.google.com/kubernetes-engine/docs/concepts/google-cloud-platform-service-broker
[GCP Config Connector]: https://github.com/GoogleCloudPlatform/k8s-config-connector
[AWS Controllers for Kubernetes]: https://github.com/aws-controllers-k8s/community

View File

@ -3,7 +3,7 @@ title: Getting Started
weight: 4
---
![Crossplane](/docs/master/media/banner.png)
{{< img src="../media/banner.png" alt="Crossplane Popsicle Truck" size="large" >}}
Crossplane is an open source Kubernetes add-on that transforms your cluster into
a **universal control plane**. Crossplane enables platform teams to assemble
@ -13,12 +13,7 @@ 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]({{<ref "install-configure" >}}) into any
using your favorite tools and existing processes. [Install Crossplane]({{<ref "./install-configure" >}}) into any
Kubernetes cluster to get started.
Crossplane is a [Cloud Native Compute Foundation][cncf] project.
<!-- Named Links -->
[cncf]: https://www.cncf.io/
Crossplane is a [Cloud Native Compute Foundation](https://www.cncf.io/) project.

View File

@ -103,15 +103,8 @@ this by defining a `Composition` that can satisfy the XR we defined above. In
this case, our `Composition` will specify how to provision a public PostgreSQL
instance on the chosen provider.
<ul class="nav nav-tabs">
<li class="active"><a href="#aws-tab-2" data-toggle="tab">AWS (Default VPC)</a></li>
<li><a href="#aws-new-tab-2" data-toggle="tab">AWS (New VPC)</a></li>
<li><a href="#gcp-tab-2" data-toggle="tab">GCP</a></li>
<li><a href="#azure-tab-2" data-toggle="tab">Azure</a></li>
</ul>
<br>
<div class="tab-content">
<div class="tab-pane fade in active" id="aws-tab-2" markdown="1">
{{< tabs >}}
{{< tab "AWS (Default VPC)" >}}
> Note that this Composition will create an RDS instance using your default VPC,
> which may or may not allow connections from the internet depending on how it
@ -168,8 +161,8 @@ spec:
curl -OL https://raw.githubusercontent.com/crossplane/crossplane/master/docs/snippets/package/aws/composition.yaml
```
</div>
<div class="tab-pane fade" id="aws-new-tab-2" markdown="1">
{{< /tab >}}
{{< tab "AWS (New VPC)" >}}
> Note: this `Composition` for AWS also includes several networking managed
> resources that are required to provision a publicly available PostgreSQL
@ -342,8 +335,8 @@ spec:
curl -OL https://raw.githubusercontent.com/crossplane/crossplane/master/docs/snippets/package/aws-with-vpc/composition.yaml
```
</div>
<div class="tab-pane fade" id="gcp-tab-2" markdown="1">
{{< /tab >}}
{{< tab "GCP" >}}
```yaml
apiVersion: apiextensions.crossplane.io/v1
@ -398,8 +391,8 @@ spec:
curl -OL https://raw.githubusercontent.com/crossplane/crossplane/master/docs/snippets/package/gcp/composition.yaml
```
</div>
<div class="tab-pane fade" id="azure-tab-2" markdown="1">
{{< /tab >}}
{{< tab "Azure" >}}
> Note: the `Composition` for Azure also includes a `ResourceGroup` and
> `PostgreSQLServerFirewallRule` that are required to provision a publicly
@ -484,58 +477,8 @@ spec:
curl -OL https://raw.githubusercontent.com/crossplane/crossplane/master/docs/snippets/package/azure/composition.yaml
```
</div>
<div class="tab-pane fade" id="alibaba-tab-2" markdown="1">
```yaml
apiVersion: apiextensions.crossplane.io/v1
kind: Composition
metadata:
name: xpostgresqlinstances.alibaba.database.example.org
labels:
provider: alibaba
guide: quickstart
spec:
writeConnectionSecretsToNamespace: crossplane-system
compositeTypeRef:
apiVersion: database.example.org/v1alpha1
kind: XPostgreSQLInstance
resources:
- name: rdsinstance
base:
apiVersion: database.alibaba.crossplane.io/v1alpha1
kind: RDSInstance
spec:
forProvider:
engine: PostgreSQL
engineVersion: "9.4"
dbInstanceClass: rds.pg.s1.small
securityIPList: "0.0.0.0/0"
masterUsername: "myuser"
writeConnectionSecretToRef:
namespace: crossplane-system
patches:
- fromFieldPath: "metadata.uid"
toFieldPath: "spec.writeConnectionSecretToRef.name"
transforms:
- type: string
string:
fmt: "%s-postgresql"
- fromFieldPath: "spec.parameters.storageGB"
toFieldPath: "spec.forProvider.dbInstanceStorageInGB"
connectionDetails:
- fromConnectionSecretKey: username
- fromConnectionSecretKey: password
- fromConnectionSecretKey: endpoint
- fromConnectionSecretKey: port
```
```console
curl -OL https://raw.githubusercontent.com/crossplane/crossplane/master/docs/snippets/package/alibaba/composition.yaml
```
</div>
</div>
{{< /tab >}}
{{< /tabs >}}
## Build and Push The Configuration
@ -546,15 +489,8 @@ so that Crossplane users may install it.
> Hub] by default. You may need to run `docker login` before you are able to
> push a package.
<ul class="nav nav-tabs">
<li class="active"><a href="#aws-tab-3" data-toggle="tab">AWS (Default VPC)</a></li>
<li><a href="#aws-new-tab-3" data-toggle="tab">AWS (New VPC)</a></li>
<li><a href="#gcp-tab-3" data-toggle="tab">GCP</a></li>
<li><a href="#azure-tab-3" data-toggle="tab">Azure</a></li>
</ul>
<br>
<div class="tab-content">
<div class="tab-pane fade in active" id="aws-tab-3" markdown="1">
{{< tabs >}}
{{< tab "AWS (Default VPC)" >}}
```yaml
apiVersion: meta.pkg.crossplane.io/v1
@ -587,14 +523,14 @@ you may specify a specific package by using the `-f` flag.
```console
# Set this to the Docker Hub username or OCI registry you wish to use.
REG=my-package-repo
kubectl crossplane push configuration ${REG}/getting-started-with-aws:master
kubectl crossplane push configuration ${REG}/getting-started-with-aws:v1.10.1
```
> Note that the Crossplane CLI will not follow symbolic links for files in the
> root package directory.
</div>
<div class="tab-pane fade" id="aws-new-tab-3" markdown="1">
{{< /tab >}}
{{< tab "AWS (New VPC)" >}}
```yaml
apiVersion: meta.pkg.crossplane.io/v1
@ -627,14 +563,14 @@ you may specify a specific package by using the `-f` flag.
```console
# Set this to the Docker Hub username or OCI registry you wish to use.
REG=my-package-repo
kubectl crossplane push configuration ${REG}/getting-started-with-aws-with-vpc:master
kubectl crossplane push configuration ${REG}/getting-started-with-aws-with-vpc:v1.10.1
```
> Note that the Crossplane CLI will not follow symbolic links for files in the
> root package directory.
</div>
<div class="tab-pane fade" id="gcp-tab-3" markdown="1">
{{< /tab >}}
{{< tab "GCP" >}}
```yaml
apiVersion: meta.pkg.crossplane.io/v1
@ -666,14 +602,14 @@ you may specify a specific package by using the `-f` flag.
```console
# Set this to the Docker Hub username or OCI registry you wish to use.
REG=my-package-repo
kubectl crossplane push configuration ${REG}/getting-started-with-gcp:master
kubectl crossplane push configuration ${REG}/getting-started-with-gcp:v1.10.1
```
> Note that the Crossplane CLI will not follow symbolic links for files in the
> root package directory.
</div>
<div class="tab-pane fade" id="azure-tab-3" markdown="1">
{{< /tab >}}
{{< tab "Azure" >}}
```yaml
apiVersion: meta.pkg.crossplane.io/v1
@ -705,14 +641,14 @@ you may specify a specific package by using the `-f` flag.
```console
# Set this to the Docker Hub username or OCI registry you wish to use.
REG=my-package-repo
kubectl crossplane push configuration ${REG}/getting-started-with-azure:master
kubectl crossplane push configuration ${REG}/getting-started-with-azure:v1.10.1
```
> Note that the Crossplane CLI will not follow symbolic links for files in the
> root package directory.
</div>
</div>
{{< /tab >}}
{{< /tabs >}}
That's it! You've now built and pushed your package. Take a look at the
Crossplane [packages] documentation for more information about installing and

View File

@ -465,4 +465,4 @@ and Configuration packages.
[Uninstall]: {{<ref "../reference/uninstall" >}}
[Providers]: {{<ref "../concepts/providers" >}}
[certified by the CNCF]: https://github.com/cncf/crossplane-conformance
[Crossplane GitHub]: https://github.com/crossplane/crossplane
[Crossplane GitHub]: https://github.com/crossplane/crossplane

View File

@ -30,16 +30,9 @@ This means that we can create a `PostgreSQLInstance` XRC in the `default`
namespace to provision a PostgreSQL instance and all the supporting
infrastructure (VPCs, firewall rules, resource groups, etc) that it may need!
<ul class="nav nav-tabs">
<li class="active"><a href="#aws-tab-2" data-toggle="tab">AWS (Default VPC)</a></li>
<li><a href="#aws-new-tab-2" data-toggle="tab">AWS (New VPC)</a></li>
<li><a href="#gcp-tab-2" data-toggle="tab">GCP</a></li>
<li><a href="#azure-tab-2" data-toggle="tab">Azure</a></li>
</ul>
<br>
<div class="tab-content">
<div class="tab-pane fade in active" id="aws-tab-2" markdown="1">
{{< tabs >}}
{{< tab "AWS (Default VPC)" >}}
> Note that this resource will create an RDS instance using your default VPC,
> which may or may not allow connections from the internet depending on how it
> is configured.
@ -65,8 +58,9 @@ spec:
kubectl apply -f https://raw.githubusercontent.com/crossplane/crossplane/master/docs/snippets/compose/claim-aws.yaml
```
</div>
<div class="tab-pane fade" id="aws-new-tab-2" markdown="1">
{{< /tab >}}
{{< tab "AWS (New VPC)" >}}
> Note that this resource also includes several networking managed resources
> that are required to provision a publicly available PostgreSQL instance.
@ -94,8 +88,8 @@ spec:
kubectl apply -f https://raw.githubusercontent.com/crossplane/crossplane/master/docs/snippets/compose/claim-aws-new.yaml
```
</div>
<div class="tab-pane fade" id="gcp-tab-2" markdown="1">
{{< /tab >}}
{{< tab "GCP Azure" >}}
```yaml
apiVersion: database.example.org/v1alpha1
@ -117,8 +111,8 @@ spec:
kubectl apply -f https://raw.githubusercontent.com/crossplane/crossplane/master/docs/snippets/compose/claim-gcp.yaml
```
</div>
<div class="tab-pane fade" id="azure-tab-2" markdown="1">
{{< /tab >}}
{{< tab "Azure" >}}
```yaml
apiVersion: database.example.org/v1alpha1
@ -140,8 +134,9 @@ spec:
kubectl apply -f https://raw.githubusercontent.com/crossplane/crossplane/master/docs/snippets/compose/claim-azure.yaml
```
</div>
</div>
{{< /tab >}}
{{< /tabs >}}
After creating the `PostgreSQLInstance` Crossplane will begin provisioning a
database instance on your provider of choice. Once provisioning is complete, you

View File

@ -57,4 +57,3 @@ data:
- apigateway.aws.upbound.io
- cloudwatch.aws.upbound.io
```

View File

@ -331,7 +331,7 @@ This way even a tight integration of Crossplane in to [Cloudfoundry] is possible
[OCI images]: https://github.com/opencontainers/image-spec
[EKS Cluster]: https://marketplace.upbound.io/providers/crossplane-contrib/provider-aws/latest/resources/eks.aws.crossplane.io/Cluster/v1beta1
[provider-aws]: https://marketplace.upbound.io/providers/crossplane-contrib/provider-aws
[provider-helm]: https://marketplace.upbound.io/providerscrossplane-contrib/provider-helm
[provider-helm]: https://marketplace.upbound.io/providers/crossplane-contrib/provider-helm/
[Open Service Broker API]: https://github.com/openservicebrokerapi/servicebroker
[Crossplane Service Broker]: https://github.com/vshn/crossplane-service-broker
[Cloudfoundry]: https://www.cloudfoundry.org/

View File

@ -92,14 +92,8 @@ The next steps will be executed in your local environment.
```console
exit
```
<ul class="nav nav-tabs">
<li class="active"><a href="#aws-tab-1" data-toggle="tab">AWS</a></li>
<li><a href="#gcp-tab-1" data-toggle="tab">GCP</a></li>
</ul>
<br>
<div class="tab-content">
<div class="tab-pane fade" id="gcp-tab-1" markdown="1">
{{< tabs >}}
{{<tab "GCP" >}}
## Create GCP Service Account
@ -182,8 +176,8 @@ ahead and clean it up.
rm tmp/creds.json
```
</div>
<div class="tab-pane fade in active" id="aws-tab-1" markdown="1">
{{< /tab >}}
{{< tab "AWS" >}}
## Create AWS IAM User
@ -237,8 +231,8 @@ injecting it into the `provider-aws` controller `Pod`.
vault kv put secret/provider-creds/aws-default access_key="$ACCESS_KEY_ID" secret_key="$AWS_SECRET_ACCESS_KEY"
```
</div>
</div>
{{< /tab >}}
{{< /tabs >}}
## Create a Vault Policy for Reading Provider Credentials
@ -279,14 +273,8 @@ The next steps will be executed in your local environment.
exit
```
<ul class="nav nav-tabs">
<li class="active"><a href="#aws-tab-2" data-toggle="tab">AWS</a></li>
<li><a href="#gcp-tab-2" data-toggle="tab">GCP</a></li>
</ul>
<br>
<div class="tab-content">
<div class="tab-pane fade" id="gcp-tab-2" markdown="1">
{{< tabs >}}
{{< tab "GCP" >}}
## Install provider-gcp
You are now ready to install `provider-gcp`. Crossplane provides a
@ -299,7 +287,6 @@ injected into the container filesystem by assuming role `crossplane-providers`.
There is also so template formatting added to make sure the secret data is
presented in a form that `provider-gcp` is expecting.
{% raw %}
```console
echo "apiVersion: pkg.crossplane.io/v1alpha1
kind: ControllerConfig
@ -325,7 +312,6 @@ spec:
controllerConfigRef:
name: vault-config" | kubectl apply -f -
```
{% endraw %}
## Configure provider-gcp
@ -390,8 +376,8 @@ command:
kubectl get cloudsqlinstance -w
```
</div>
<div class="tab-pane fade in active" id="aws-tab-2" markdown="1">
{{< /tab >}}
{{< tab "AWS" >}}
## Install provider-aws
@ -405,7 +391,6 @@ injected into the container filesystem by assuming role `crossplane-providers`.
There is also some template formatting added to make sure the secret data is
presented in a form that `provider-aws` is expecting.
{% raw %}
```console
echo "apiVersion: pkg.crossplane.io/v1alpha1
kind: ControllerConfig
@ -435,7 +420,6 @@ spec:
controllerConfigRef:
name: aws-vault-config" | kubectl apply -f -
```
{% endraw %}
## Configure provider-aws
@ -496,8 +480,8 @@ command:
kubectl get bucket -w
```
</div>
</div>
{{< /tab >}}
{{< /tabs >}}
<!-- named links -->

View File

@ -1,5 +1,5 @@
---
toc_hide: true
tocHidden: true
---
# Crossplane Documentation Media

View File

Before

Width:  |  Height:  |  Size: 292 KiB

After

Width:  |  Height:  |  Size: 292 KiB

View File

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 101 KiB

View File

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 137 KiB

View File

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 57 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -1,3 +1,6 @@
---
tocHidden: true
---
# Overview
![Crossplane](media/banner.png)

View File

@ -1,14 +1,12 @@
---
title: "Overview"
weight: -1
toc_include: false
aliases:
- /docs/v1.10/index.html
cascade:
version: "1.10"
---
![Crossplane](/docs/master/media/banner.png)
{{< img src="media/banner.png" alt="Crossplane Popsicle Truck" eager=true >}}
Crossplane is an open source Kubernetes add-on that transforms your cluster into
a **universal control plane**. Crossplane enables platform teams to assemble

View File

@ -1,6 +1,6 @@
---
title: Adding Amazon Web Services (AWS) to Crossplane
toc_hide: true
tocHidden: true
---
In this guide, we will walk through the steps necessary to configure your AWS

View File

@ -1,6 +1,6 @@
---
title: Adding Microsoft Azure to Crossplane
toc_hide: true
tocHidden: true
---
In this guide, we will walk through the steps necessary to configure your Azure

View File

@ -1,6 +1,6 @@
---
title: Adding Google Cloud Platform (GCP) to Crossplane
toc_hide: true
tocHidden: true
---

View File

@ -241,10 +241,10 @@ scenarios, including:
take minutes to provision on-demand.
[managed-resources]: {{<ref "managed-resources" >}}
[xrs-and-mrs]: /docs/master/media/composition-xrs-and-mrs.svg
[xrs-and-mrs]: /v1.10/media/composition-xrs-and-mrs.svg
[xr-ref]: {{<ref "../reference/composition" >}}
[how-it-works]: /docs/master/media/composition-how-it-works.svg
[how-it-works]: /v1.10/media/composition-how-it-works.svg
[crd-docs]: https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/
[provider-kubernetes]: https://marketplace.upbound.io/providers/crossplane-contrib/provider-kubernetes
[provider-helm]: https://marketplace.upbound.io/providers/crossplane-contrib/provider-helm
[claims-and-xrs]: /docs/master/media/composition-claims-and-xrs.svg
[provider-helm]: https://marketplace.upbound.io/providers/crossplane-contrib/provider-helm/
[claims-and-xrs]: /v1.10/media/composition-claims-and-xrs.svg

View File

@ -25,14 +25,8 @@ Composite Resources or XRs - not used directly. See the
Crossplane API conventions extend the Kubernetes API conventions for the schema
of Crossplane managed resources. Following is an example of a managed resource:
<ul class="nav nav-tabs">
<li class="active"><a href="#aws-tab-1" data-toggle="tab">AWS</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>
<div class="tab-content">
<div class="tab-pane fade in active" id="aws-tab-1" markdown="1">
{{< tabs >}}
{{< tab "AWS" >}}
The AWS provider supports provisioning an [RDS][rds] instance via the `RDSInstance`
managed resource it adds to Crossplane.
@ -81,8 +75,8 @@ You can then delete the `RDSInstance`:
kubectl delete rdsinstance rdspostgresql
```
</div>
<div class="tab-pane fade" id="gcp-tab-1" markdown="1">
{{< /tab >}}
{{< tab "GCP" >}}
The GCP provider supports provisioning a [CloudSQL][cloudsql] instance with the
`CloudSQLInstance` managed resource it adds to Crossplane.
@ -130,8 +124,8 @@ You can then delete the `CloudSQLInstance`:
kubectl delete cloudsqlinstance cloudsqlpostgresql
```
</div>
<div class="tab-pane fade" id="azure-tab-1" markdown="1">
{{< /tab >}}
{{< tab "Azure" >}}
The Azure provider supports provisioning an [Azure Database for PostgreSQL]
instance with the `PostgreSQLServer` managed resource it adds to Crossplane.
@ -199,8 +193,8 @@ kubectl delete postgresqlserver sqlserverpostgresql
kubectl delete resourcegroup sqlserverpostgresql-rg
```
</div>
</div>
{{< /tab >}}
{{< /tabs >}}
In Kubernetes, `spec` top field represents the desired state of the user.
Crossplane adheres to that and has its own conventions about how the fields

Some files were not shown because too many files have changed in this diff Show More