mirror of https://github.com/crossplane/docs.git
Merge branch 'master' of github.com:upbound/crossplane.github.io
This commit is contained in:
commit
5a378464de
|
|
@ -0,0 +1,14 @@
|
||||||
|
|
||||||
|
# Push new changes to the live site
|
||||||
|
publish:
|
||||||
|
$(eval ROOT_DIR = $(shell pwd -P))
|
||||||
|
git -C "$(ROOT_DIR)" add -A
|
||||||
|
@if git -C "$(ROOT_DIR)" diff-index --cached --quiet HEAD --; then\
|
||||||
|
echo "no changes detected";\
|
||||||
|
else \
|
||||||
|
echo "committing changes...";\
|
||||||
|
git -C "$(ROOT_DIR)" -c user.email="info@crossplane.io" -c user.name="Crossplane" commit --message="docs snapshot for crossplane version \`$(DOCS_VERSION)\`"; \
|
||||||
|
echo "pushing changes..."; \
|
||||||
|
git -C "$(ROOT_DIR)" push; \
|
||||||
|
echo "crossplane.github.io changes published"; \
|
||||||
|
fi
|
||||||
|
|
@ -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/
|
||||||
|
|
@ -0,0 +1,141 @@
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: v0.8.0
|
||||||
|
creationTimestamp: null
|
||||||
|
name: configurations.meta.pkg.crossplane.io
|
||||||
|
spec:
|
||||||
|
group: meta.pkg.crossplane.io
|
||||||
|
names:
|
||||||
|
kind: Configuration
|
||||||
|
listKind: ConfigurationList
|
||||||
|
plural: configurations
|
||||||
|
singular: configuration
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: A Configuration is the description of a Crossplane Configuration
|
||||||
|
package.
|
||||||
|
properties:
|
||||||
|
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: 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: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: ConfigurationSpec specifies the configuration of a Configuration.
|
||||||
|
properties:
|
||||||
|
crossplane:
|
||||||
|
description: Semantic version constraints of Crossplane that package
|
||||||
|
is compatible with.
|
||||||
|
properties:
|
||||||
|
version:
|
||||||
|
description: Semantic version constraints of Crossplane that package
|
||||||
|
is compatible with.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- version
|
||||||
|
type: object
|
||||||
|
dependsOn:
|
||||||
|
description: Dependencies on other packages.
|
||||||
|
items:
|
||||||
|
description: Dependency is a dependency on another package. One
|
||||||
|
of Provider or Configuration may be supplied.
|
||||||
|
properties:
|
||||||
|
configuration:
|
||||||
|
description: Configuration is the name of a Configuration package
|
||||||
|
image.
|
||||||
|
type: string
|
||||||
|
provider:
|
||||||
|
description: Provider is the name of a Provider package image.
|
||||||
|
type: string
|
||||||
|
version:
|
||||||
|
description: Version is the semantic version constraints of
|
||||||
|
the dependency image.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- version
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- spec
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
- name: v1alpha1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: A Configuration is the description of a Crossplane Configuration
|
||||||
|
package.
|
||||||
|
properties:
|
||||||
|
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: 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: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: ConfigurationSpec specifies the configuration of a Configuration.
|
||||||
|
properties:
|
||||||
|
crossplane:
|
||||||
|
description: Semantic version constraints of Crossplane that package
|
||||||
|
is compatible with.
|
||||||
|
properties:
|
||||||
|
version:
|
||||||
|
description: Semantic version constraints of Crossplane that package
|
||||||
|
is compatible with.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- version
|
||||||
|
type: object
|
||||||
|
dependsOn:
|
||||||
|
description: Dependencies on other packages.
|
||||||
|
items:
|
||||||
|
description: Dependency is a dependency on another package. One
|
||||||
|
of Provider or Configuration may be supplied.
|
||||||
|
properties:
|
||||||
|
configuration:
|
||||||
|
description: Configuration is the name of a Configuration package
|
||||||
|
image.
|
||||||
|
type: string
|
||||||
|
provider:
|
||||||
|
description: Provider is the name of a Provider package image.
|
||||||
|
type: string
|
||||||
|
version:
|
||||||
|
description: Version is the semantic version constraints of
|
||||||
|
the dependency image.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- version
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- spec
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: false
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: []
|
||||||
|
storedVersions: []
|
||||||
|
|
@ -0,0 +1,263 @@
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: v0.8.0
|
||||||
|
creationTimestamp: null
|
||||||
|
name: providers.meta.pkg.crossplane.io
|
||||||
|
spec:
|
||||||
|
group: meta.pkg.crossplane.io
|
||||||
|
names:
|
||||||
|
kind: Provider
|
||||||
|
listKind: ProviderList
|
||||||
|
plural: providers
|
||||||
|
singular: provider
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: A Provider is the description of a Crossplane Provider package.
|
||||||
|
properties:
|
||||||
|
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: 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: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: ProviderSpec specifies the configuration of a Provider.
|
||||||
|
properties:
|
||||||
|
controller:
|
||||||
|
description: Configuration for the packaged Provider's controller.
|
||||||
|
properties:
|
||||||
|
image:
|
||||||
|
description: Image is the packaged Provider controller image.
|
||||||
|
type: string
|
||||||
|
permissionRequests:
|
||||||
|
description: PermissionRequests for RBAC rules required for this
|
||||||
|
provider's controller to function. The RBAC manager is responsible
|
||||||
|
for assessing the requested permissions.
|
||||||
|
items:
|
||||||
|
description: PolicyRule holds information that describes a policy
|
||||||
|
rule, but does not contain information about who the rule
|
||||||
|
applies to or which namespace the rule applies to.
|
||||||
|
properties:
|
||||||
|
apiGroups:
|
||||||
|
description: APIGroups is the name of the APIGroup that
|
||||||
|
contains the resources. If multiple API groups are specified,
|
||||||
|
any action requested against one of the enumerated resources
|
||||||
|
in any API group will be allowed.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
nonResourceURLs:
|
||||||
|
description: NonResourceURLs is a set of partial urls that
|
||||||
|
a user should have access to. *s are allowed, but only
|
||||||
|
as the full, final step in the path Since non-resource
|
||||||
|
URLs are not namespaced, this field is only applicable
|
||||||
|
for ClusterRoles referenced from a ClusterRoleBinding.
|
||||||
|
Rules can either apply to API resources (such as "pods"
|
||||||
|
or "secrets") or non-resource URL paths (such as "/api"), but
|
||||||
|
not both.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
resourceNames:
|
||||||
|
description: ResourceNames is an optional white list of
|
||||||
|
names that the rule applies to. An empty set means that
|
||||||
|
everything is allowed.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
resources:
|
||||||
|
description: Resources is a list of resources this rule
|
||||||
|
applies to. '*' represents all resources.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
verbs:
|
||||||
|
description: Verbs is a list of Verbs that apply to ALL
|
||||||
|
the ResourceKinds contained in this rule. '*' represents
|
||||||
|
all verbs.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- verbs
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
type: object
|
||||||
|
crossplane:
|
||||||
|
description: Semantic version constraints of Crossplane that package
|
||||||
|
is compatible with.
|
||||||
|
properties:
|
||||||
|
version:
|
||||||
|
description: Semantic version constraints of Crossplane that package
|
||||||
|
is compatible with.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- version
|
||||||
|
type: object
|
||||||
|
dependsOn:
|
||||||
|
description: Dependencies on other packages.
|
||||||
|
items:
|
||||||
|
description: Dependency is a dependency on another package. One
|
||||||
|
of Provider or Configuration may be supplied.
|
||||||
|
properties:
|
||||||
|
configuration:
|
||||||
|
description: Configuration is the name of a Configuration package
|
||||||
|
image.
|
||||||
|
type: string
|
||||||
|
provider:
|
||||||
|
description: Provider is the name of a Provider package image.
|
||||||
|
type: string
|
||||||
|
version:
|
||||||
|
description: Version is the semantic version constraints of
|
||||||
|
the dependency image.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- version
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- controller
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- spec
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
- name: v1alpha1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: A Provider is the description of a Crossplane Provider package.
|
||||||
|
properties:
|
||||||
|
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: 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: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: ProviderSpec specifies the configuration of a Provider.
|
||||||
|
properties:
|
||||||
|
controller:
|
||||||
|
description: Configuration for the packaged Provider's controller.
|
||||||
|
properties:
|
||||||
|
image:
|
||||||
|
description: Image is the packaged Provider controller image.
|
||||||
|
type: string
|
||||||
|
permissionRequests:
|
||||||
|
description: PermissionRequests for RBAC rules required for this
|
||||||
|
provider's controller to function. The RBAC manager is responsible
|
||||||
|
for assessing the requested permissions.
|
||||||
|
items:
|
||||||
|
description: PolicyRule holds information that describes a policy
|
||||||
|
rule, but does not contain information about who the rule
|
||||||
|
applies to or which namespace the rule applies to.
|
||||||
|
properties:
|
||||||
|
apiGroups:
|
||||||
|
description: APIGroups is the name of the APIGroup that
|
||||||
|
contains the resources. If multiple API groups are specified,
|
||||||
|
any action requested against one of the enumerated resources
|
||||||
|
in any API group will be allowed.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
nonResourceURLs:
|
||||||
|
description: NonResourceURLs is a set of partial urls that
|
||||||
|
a user should have access to. *s are allowed, but only
|
||||||
|
as the full, final step in the path Since non-resource
|
||||||
|
URLs are not namespaced, this field is only applicable
|
||||||
|
for ClusterRoles referenced from a ClusterRoleBinding.
|
||||||
|
Rules can either apply to API resources (such as "pods"
|
||||||
|
or "secrets") or non-resource URL paths (such as "/api"), but
|
||||||
|
not both.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
resourceNames:
|
||||||
|
description: ResourceNames is an optional white list of
|
||||||
|
names that the rule applies to. An empty set means that
|
||||||
|
everything is allowed.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
resources:
|
||||||
|
description: Resources is a list of resources this rule
|
||||||
|
applies to. '*' represents all resources.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
verbs:
|
||||||
|
description: Verbs is a list of Verbs that apply to ALL
|
||||||
|
the ResourceKinds contained in this rule. '*' represents
|
||||||
|
all verbs.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- verbs
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
type: object
|
||||||
|
crossplane:
|
||||||
|
description: Semantic version constraints of Crossplane that package
|
||||||
|
is compatible with.
|
||||||
|
properties:
|
||||||
|
version:
|
||||||
|
description: Semantic version constraints of Crossplane that package
|
||||||
|
is compatible with.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- version
|
||||||
|
type: object
|
||||||
|
dependsOn:
|
||||||
|
description: Dependencies on other packages.
|
||||||
|
items:
|
||||||
|
description: Dependency is a dependency on another package. One
|
||||||
|
of Provider or Configuration may be supplied.
|
||||||
|
properties:
|
||||||
|
configuration:
|
||||||
|
description: Configuration is the name of a Configuration package
|
||||||
|
image.
|
||||||
|
type: string
|
||||||
|
provider:
|
||||||
|
description: Provider is the name of a Provider package image.
|
||||||
|
type: string
|
||||||
|
version:
|
||||||
|
description: Version is the semantic version constraints of
|
||||||
|
the dependency image.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- version
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- controller
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- spec
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: false
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: []
|
||||||
|
storedVersions: []
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
title: Crossplane
|
title: Crossplane
|
||||||
layout: redirect
|
layout: redirect
|
||||||
to: "https://crossplane.io/docs/v1.9/api-docs/crossplane.html"
|
to: "https://doc.crds.dev/github.com/crossplane/crossplane"
|
||||||
---
|
---
|
||||||
|
|
@ -31,8 +31,8 @@ Run `setup.sh` to read `aws` credentials and region, and create an `aws
|
||||||
provider` instance in Crossplane:
|
provider` instance in Crossplane:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -O https://raw.githubusercontent.com/crossplane/crossplane/release-1.9/docs/snippets/configure/aws/providerconfig.yaml
|
curl -O https://raw.githubusercontent.com/crossplane/crossplane/master/docs/snippets/configure/aws/providerconfig.yaml
|
||||||
curl -O https://raw.githubusercontent.com/crossplane/crossplane/release-1.9/docs/snippets/configure/aws/setup.sh
|
curl -O https://raw.githubusercontent.com/crossplane/crossplane/master/docs/snippets/configure/aws/setup.sh
|
||||||
chmod +x setup.sh
|
chmod +x setup.sh
|
||||||
./setup.sh [--profile aws_profile]
|
./setup.sh [--profile aws_profile]
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ account will have access to the services and roles sufficient to run the
|
||||||
Crossplane GCP examples.
|
Crossplane GCP examples.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -O https://raw.githubusercontent.com/crossplane/crossplane/release-1.9/docs/snippets/configure/gcp/credentials.sh
|
curl -O https://raw.githubusercontent.com/crossplane/crossplane/master/docs/snippets/configure/gcp/credentials.sh
|
||||||
./credentials.sh
|
./credentials.sh
|
||||||
# ... EXAMPLE OUTPUT ONLY
|
# ... EXAMPLE OUTPUT ONLY
|
||||||
# export ORGANIZATION_ID=987654321
|
# export ORGANIZATION_ID=987654321
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ title: Configuring Crossplane with Argo CD
|
||||||
weight: 270
|
weight: 270
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
[Argo CD](https://argoproj.github.io/cd/) and [Crossplane](https://crossplane.io)
|
[Argo CD](https://argoproj.github.io/cd/) and [Crossplane](https://crossplane.io)
|
||||||
are a great combination. Argo CD provides GitOps while Crossplane turns any Kubernetes
|
are a great combination. Argo CD provides GitOps while Crossplane turns any Kubernetes
|
||||||
cluster into a Universal Control Plane for all of your resources. There are
|
cluster into a Universal Control Plane for all of your resources. There are
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
---
|
||||||
|
title: Feature Lifecycle
|
||||||
|
toc: true
|
||||||
|
weight: 309
|
||||||
|
indent: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Feature Lifecycle
|
||||||
|
|
||||||
|
Crossplane follows a similar feature lifecycle to [upstream
|
||||||
|
Kubernetes][kube-features]. All major new features must be added in alpha. Alpha
|
||||||
|
features are expected to eventually graduate to beta, and then to general
|
||||||
|
availability (GA). Features that languish at alpha or beta may be subject to
|
||||||
|
deprecation.
|
||||||
|
|
||||||
|
## Alpha Features
|
||||||
|
|
||||||
|
Alpha are off by default, and must be enabled by a feature flag, for example
|
||||||
|
`--enable-composition-revisions`. API types pertaining to alpha features use a
|
||||||
|
`vNalphaN` style API version, like `v1alpha`. **Alpha features are subject to
|
||||||
|
removal or breaking changes without notice**, and generally not considered ready
|
||||||
|
for use in production.
|
||||||
|
|
||||||
|
In some cases alpha features require fields be added to existing beta or GA
|
||||||
|
API types. In these cases fields must clearly be marked (i.e in their OpenAPI
|
||||||
|
schema) as alpha and subject to alpha API constraints (or lack thereof).
|
||||||
|
|
||||||
|
All alpha features should have an issue tracking their graduation to beta.
|
||||||
|
|
||||||
|
## Beta Features
|
||||||
|
|
||||||
|
Beta features are on by default, but may be disabled by a feature flag. API
|
||||||
|
types pertaining to beta features use a `vNbetaN` style API version, like
|
||||||
|
`v1beta1`. Beta features are considered to be well tested, and will not be
|
||||||
|
removed completely without being marked deprecated for at least two releases.
|
||||||
|
|
||||||
|
The schema and/or semantics of objects may change in incompatible ways in a
|
||||||
|
subsequent beta or stable release. When this happens, we will provide
|
||||||
|
instructions for migrating to the next version. This may require deleting,
|
||||||
|
editing, and re-creating API objects. The editing process may require some
|
||||||
|
thought. This may require downtime for applications that rely on the feature.
|
||||||
|
|
||||||
|
In some cases beta features require fields be added to existing GA API types. In
|
||||||
|
these cases fields must clearly be marked (i.e in their OpenAPI schema) as beta
|
||||||
|
and subject to beta API constraints (or lack thereof).
|
||||||
|
|
||||||
|
All beta features should have an issue tracking their graduation to GA.
|
||||||
|
|
||||||
|
## GA Features
|
||||||
|
|
||||||
|
GA features are always enabled - they cannot be disabled. API types pertaining
|
||||||
|
to GA features use `vN` style API versions, like `v1`. GA features are widely
|
||||||
|
used and thoroughly tested. They guarantee API stability - only backward
|
||||||
|
compatible changes are allowed.
|
||||||
|
|
||||||
|
[kube-features]: https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/#feature-stages
|
||||||
|
|
@ -3,6 +3,10 @@ title: Install Crossplane
|
||||||
weight: 301
|
weight: 301
|
||||||
---
|
---
|
||||||
|
|
||||||
|
Crossplane can be easily installed into any existing Kubernetes cluster using
|
||||||
|
the regularly published Helm chart. The Helm chart contains all the custom
|
||||||
|
|
||||||
|
|
||||||
Crossplane can be easily installed into any existing Kubernetes cluster using
|
Crossplane can be easily installed into any existing Kubernetes cluster using
|
||||||
the regularly published Helm chart. The Helm chart contains all the custom
|
the regularly published Helm chart. The Helm chart contains all the custom
|
||||||
resources and controllers needed to deploy and configure Crossplane.
|
resources and controllers needed to deploy and configure Crossplane.
|
||||||
|
|
@ -158,5 +162,5 @@ imagePullSecrets:
|
||||||
<!-- Named Links -->
|
<!-- Named Links -->
|
||||||
|
|
||||||
[Kubernetes cluster]: https://kubernetes.io/docs/setup/
|
[Kubernetes cluster]: https://kubernetes.io/docs/setup/
|
||||||
[Minikube]: https://minikube.sigs.k8s.io/docs/start/
|
[Minikube]: https://kubernetes.io/docs/tasks/tools/install-minikube/
|
||||||
[Helm]: https://helm.sh/docs/intro/using_helm/
|
[Helm]: https://docs.helm.sh/using_helm/
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
apiVersion: database.example.org/v1alpha1
|
||||||
|
kind: PostgreSQLInstance
|
||||||
|
metadata:
|
||||||
|
name: my-db
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
parameters:
|
||||||
|
storageGB: 20
|
||||||
|
compositionSelector:
|
||||||
|
matchLabels:
|
||||||
|
provider: aws
|
||||||
|
vpc: new
|
||||||
|
writeConnectionSecretToRef:
|
||||||
|
name: db-conn
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
apiVersion: database.example.org/v1alpha1
|
||||||
|
kind: PostgreSQLInstance
|
||||||
|
metadata:
|
||||||
|
name: my-db
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
parameters:
|
||||||
|
storageGB: 20
|
||||||
|
compositionSelector:
|
||||||
|
matchLabels:
|
||||||
|
provider: aws
|
||||||
|
writeConnectionSecretToRef:
|
||||||
|
name: db-conn
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
apiVersion: database.example.org/v1alpha1
|
||||||
|
kind: PostgreSQLInstance
|
||||||
|
metadata:
|
||||||
|
name: my-db
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
parameters:
|
||||||
|
storageGB: 20
|
||||||
|
compositionSelector:
|
||||||
|
matchLabels:
|
||||||
|
provider: azure
|
||||||
|
writeConnectionSecretToRef:
|
||||||
|
name: db-conn
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
apiVersion: database.example.org/v1alpha1
|
||||||
|
kind: PostgreSQLInstance
|
||||||
|
metadata:
|
||||||
|
name: my-db
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
parameters:
|
||||||
|
storageGB: 20
|
||||||
|
compositionSelector:
|
||||||
|
matchLabels:
|
||||||
|
provider: gcp
|
||||||
|
writeConnectionSecretToRef:
|
||||||
|
name: db-conn
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Pod
|
||||||
|
metadata:
|
||||||
|
name: see-db
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: see-db
|
||||||
|
image: postgres:12
|
||||||
|
command: ['psql']
|
||||||
|
args: ['-c', 'SELECT current_database();']
|
||||||
|
env:
|
||||||
|
- name: PGDATABASE
|
||||||
|
value: postgres
|
||||||
|
- name: PGHOST
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: db-conn
|
||||||
|
key: endpoint
|
||||||
|
- name: PGUSER
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: db-conn
|
||||||
|
key: username
|
||||||
|
- name: PGPASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: db-conn
|
||||||
|
key: password
|
||||||
|
- name: PGPORT
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: db-conn
|
||||||
|
key: port
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
---
|
||||||
|
apiVersion: aws.crossplane.io/v1beta1
|
||||||
|
kind: ProviderConfig
|
||||||
|
metadata:
|
||||||
|
name: default
|
||||||
|
spec:
|
||||||
|
credentials:
|
||||||
|
source: Secret
|
||||||
|
secretRef:
|
||||||
|
namespace: crossplane-system
|
||||||
|
name: aws-creds
|
||||||
|
key: creds
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# This is a helper script that uses ~/.aws/credentials and ~/.aws/config
|
||||||
|
# to build an aws provider object
|
||||||
|
#
|
||||||
|
# aws configuration (credentials and default region) is required for this
|
||||||
|
# script
|
||||||
|
|
||||||
|
set -e -o pipefail
|
||||||
|
|
||||||
|
# change to script directory
|
||||||
|
cd "$( cd "$( dirname "${BASH_SOURCE[0]}")" && pwd )"
|
||||||
|
|
||||||
|
aws_profile=
|
||||||
|
|
||||||
|
while (( "$#" )); do
|
||||||
|
if test -z "$2"; then
|
||||||
|
echo "invalid value for $1 option"
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
case "$1" in
|
||||||
|
-p|--profile)
|
||||||
|
aws_profile=$2
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# make sure kubectl is configured
|
||||||
|
kubectl cluster-info > /dev/null || echo "KUBECONFIG is not configured properly"
|
||||||
|
|
||||||
|
# if aws_profile is not provided, use default
|
||||||
|
aws_profile="${aws_profile:-default}"
|
||||||
|
|
||||||
|
# retrieve aws profile credentials, save it under 'default' profile, and base64 encode it
|
||||||
|
AWS_CREDS_BASE64=$(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)" | base64 | tr -d "\n")
|
||||||
|
|
||||||
|
if test -z "$AWS_CREDS_BASE64"; then
|
||||||
|
echo "error reading credentials from aws config"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "apiVersion: v1
|
||||||
|
data:
|
||||||
|
creds: $AWS_CREDS_BASE64
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: aws-creds
|
||||||
|
namespace: crossplane-system
|
||||||
|
type: Opaque" | kubectl apply -f -
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
---
|
||||||
|
apiVersion: azure.crossplane.io/v1beta1
|
||||||
|
kind: ProviderConfig
|
||||||
|
metadata:
|
||||||
|
name: default
|
||||||
|
spec:
|
||||||
|
credentials:
|
||||||
|
source: Secret
|
||||||
|
secretRef:
|
||||||
|
namespace: crossplane-system
|
||||||
|
name: azure-creds
|
||||||
|
key: creds
|
||||||
|
|
@ -0,0 +1,84 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# This is a helper script to create a project, service account, and credentials.json
|
||||||
|
# file for use in Crossplane GCP examples
|
||||||
|
#
|
||||||
|
# gcloud is required for use and must be configured with privileges to perform these tasks
|
||||||
|
#
|
||||||
|
set -e -o pipefail
|
||||||
|
ROLES=(roles/iam.serviceAccountUser roles/cloudsql.admin roles/container.admin roles/redis.admin roles/compute.networkAdmin roles/storage.admin)
|
||||||
|
SERVICES=(container.googleapis.com sqladmin.googleapis.com redis.googleapis.com compute.googleapis.com servicenetworking.googleapis.com)
|
||||||
|
KEYFILE=crossplane-gcp-provider-key.json
|
||||||
|
RAND=$RANDOM
|
||||||
|
|
||||||
|
if ! command -v gcloud > /dev/null; then
|
||||||
|
echo "Please install gcloud: https://cloud.google.com/sdk/install"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
tab () { sed 's/^/ /' ; }
|
||||||
|
# list your organizations (if applicable), take note of the specific organization ID you want to use
|
||||||
|
# if you have more than one organization (not common)
|
||||||
|
gcloud organizations list --format '[box]' 2>&1 | tab
|
||||||
|
|
||||||
|
ORGANIZATION_ID=$(gcloud organizations list --format 'value(ID)' --limit 1)
|
||||||
|
read -e -p "Choose an Organization ID [$ORGANIZATION_ID]: " PROMPT_ORGANIZATION_ID
|
||||||
|
ORGANIZATION_ID=${PROMPT_ORGANIZATION_ID:-$ORGANIZATION_ID}
|
||||||
|
|
||||||
|
gcloud projects list --format '[box]' 2>&1 | tab
|
||||||
|
|
||||||
|
# create a new id
|
||||||
|
EXAMPLE_PROJECT_ID="crossplane-example-$RAND"
|
||||||
|
read -e -p "Choose or create a Project ID [$EXAMPLE_PROJECT_ID]: " PROMPT_EXAMPLE_PROJECT_ID
|
||||||
|
EXAMPLE_PROJECT_ID=${PROMPT_EXAMPLE_PROJECT_ID:-$EXAMPLE_PROJECT_ID}
|
||||||
|
|
||||||
|
EXAMPLE_PROJECT_ID_FOUND=$(gcloud projects list --filter PROJECT_ID="$EXAMPLE_PROJECT_ID" --format="value(PROJECT_ID)")
|
||||||
|
|
||||||
|
if [[ -z $EXAMPLE_PROJECT_ID_FOUND ]]; then
|
||||||
|
ACCOUNT_ID=$(gcloud beta billing accounts list --format 'value(ACCOUNT_ID)' --limit 1)
|
||||||
|
gcloud beta billing accounts list --format '[box]' 2>&1 | tab
|
||||||
|
read -e -p "Choose a Billing Account ID [$ACCOUNT_ID]: " PROMPT_ACCOUNT_ID
|
||||||
|
ACCOUNT_ID=${PROMPT_ACCOUNT_ID:-$ACCOUNT_ID}
|
||||||
|
|
||||||
|
echo -e "\n* Creating Project $EXAMPLE_PROJECT_ID ... "
|
||||||
|
gcloud projects create $EXAMPLE_PROJECT_ID --enable-cloud-apis --organization $ORGANIZATION_ID 2>&1 | tab
|
||||||
|
|
||||||
|
echo "* Linking Billing Account $ACCOUNT_ID with Project $EXAMPLE_PROJECT_ID ... "
|
||||||
|
gcloud beta billing projects link $EXAMPLE_PROJECT_ID --billing-account=$ACCOUNT_ID 2>&1 | tab
|
||||||
|
else
|
||||||
|
echo -n "\n* Using Project $EXAMPLE_PROJECT_NAME ... $EXAMPLE_PROJECT_ID"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# enable Kubernetes API
|
||||||
|
for service in "${SERVICES[@]}"; do
|
||||||
|
# enable Google API
|
||||||
|
echo "* Enabling Service $service on $EXAMPLE_PROJECT_ID"
|
||||||
|
gcloud --project $EXAMPLE_PROJECT_ID services enable $service 2>&1 | tab
|
||||||
|
done
|
||||||
|
|
||||||
|
# create service account
|
||||||
|
SA_NAME="example-$RAND"
|
||||||
|
echo " * Creating a Service Account"
|
||||||
|
gcloud --project $EXAMPLE_PROJECT_ID iam service-accounts create $SA_NAME --display-name "Crossplane Example" 2>&1 | tab
|
||||||
|
# export service account email
|
||||||
|
EXAMPLE_SA="${SA_NAME}@${EXAMPLE_PROJECT_ID}.iam.gserviceaccount.com"
|
||||||
|
|
||||||
|
# assign roles
|
||||||
|
for role in "${ROLES[@]}"; do
|
||||||
|
echo "* Adding Role $role to $EXAMPLE_SA on $EXAMPLE_PROJECT_ID"
|
||||||
|
gcloud projects add-iam-policy-binding $EXAMPLE_PROJECT_ID --member "serviceAccount:$EXAMPLE_SA" --role="$role" 2>&1 | tab
|
||||||
|
done
|
||||||
|
|
||||||
|
# create service account key (this will create a `crossplane-gcp-provider-key.json` file in your current working directory)
|
||||||
|
echo " * Creating $EXAMPLE_SA Key File $KEYFILE"
|
||||||
|
gcloud --project $EXAMPLE_PROJECT_ID iam service-accounts keys create --iam-account $EXAMPLE_SA $KEYFILE 2>&1 | tab
|
||||||
|
|
||||||
|
cat <<EOS
|
||||||
|
#
|
||||||
|
# Run the following for the variables that are used throughout the GCP example projects
|
||||||
|
#
|
||||||
|
export ORGANIZATION_ID=$ORGANIZATION_ID
|
||||||
|
export PROJECT_ID=$EXAMPLE_PROJECT_ID
|
||||||
|
export EXAMPLE_SA=$EXAMPLE_SA
|
||||||
|
export BASE64ENCODED_GCP_PROVIDER_CREDS=\$(base64 $KEYFILE | tr -d "\n")
|
||||||
|
EOS
|
||||||
|
|
@ -0,0 +1,160 @@
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.crossplane.io/v1
|
||||||
|
kind: Composition
|
||||||
|
metadata:
|
||||||
|
name: vpcpostgresqlinstances.aws.database.example.org
|
||||||
|
labels:
|
||||||
|
provider: aws
|
||||||
|
guide: quickstart
|
||||||
|
vpc: new
|
||||||
|
spec:
|
||||||
|
writeConnectionSecretsToNamespace: crossplane-system
|
||||||
|
compositeTypeRef:
|
||||||
|
apiVersion: database.example.org/v1alpha1
|
||||||
|
kind: XPostgreSQLInstance
|
||||||
|
resources:
|
||||||
|
- name: vpc
|
||||||
|
base:
|
||||||
|
apiVersion: ec2.aws.crossplane.io/v1beta1
|
||||||
|
kind: VPC
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
region: us-east-1
|
||||||
|
cidrBlock: 192.168.0.0/16
|
||||||
|
enableDnsSupport: true
|
||||||
|
enableDnsHostNames: true
|
||||||
|
- name: subnet-a
|
||||||
|
base:
|
||||||
|
apiVersion: ec2.aws.crossplane.io/v1beta1
|
||||||
|
kind: Subnet
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
zone: us-east-1a
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
region: us-east-1
|
||||||
|
cidrBlock: 192.168.64.0/18
|
||||||
|
vpcIdSelector:
|
||||||
|
matchControllerRef: true
|
||||||
|
availabilityZone: us-east-1a
|
||||||
|
- name: subnet-b
|
||||||
|
base:
|
||||||
|
apiVersion: ec2.aws.crossplane.io/v1beta1
|
||||||
|
kind: Subnet
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
zone: us-east-1b
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
region: us-east-1
|
||||||
|
cidrBlock: 192.168.128.0/18
|
||||||
|
vpcIdSelector:
|
||||||
|
matchControllerRef: true
|
||||||
|
availabilityZone: us-east-1b
|
||||||
|
- name: subnet-c
|
||||||
|
base:
|
||||||
|
apiVersion: ec2.aws.crossplane.io/v1beta1
|
||||||
|
kind: Subnet
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
zone: us-east-1c
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
region: us-east-1
|
||||||
|
cidrBlock: 192.168.192.0/18
|
||||||
|
vpcIdSelector:
|
||||||
|
matchControllerRef: true
|
||||||
|
availabilityZone: us-east-1c
|
||||||
|
- name: dbsubnetgroup
|
||||||
|
base:
|
||||||
|
apiVersion: database.aws.crossplane.io/v1beta1
|
||||||
|
kind: DBSubnetGroup
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
region: us-east-1
|
||||||
|
description: An excellent formation of subnetworks.
|
||||||
|
subnetIdSelector:
|
||||||
|
matchControllerRef: true
|
||||||
|
- name: internetgateway
|
||||||
|
base:
|
||||||
|
apiVersion: ec2.aws.crossplane.io/v1beta1
|
||||||
|
kind: InternetGateway
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
region: us-east-1
|
||||||
|
vpcIdSelector:
|
||||||
|
matchControllerRef: true
|
||||||
|
- name: routetable
|
||||||
|
base:
|
||||||
|
apiVersion: ec2.aws.crossplane.io/v1beta1
|
||||||
|
kind: RouteTable
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
region: us-east-1
|
||||||
|
vpcIdSelector:
|
||||||
|
matchControllerRef: true
|
||||||
|
routes:
|
||||||
|
- destinationCidrBlock: 0.0.0.0/0
|
||||||
|
gatewayIdSelector:
|
||||||
|
matchControllerRef: true
|
||||||
|
associations:
|
||||||
|
- subnetIdSelector:
|
||||||
|
matchLabels:
|
||||||
|
zone: us-east-1a
|
||||||
|
- subnetIdSelector:
|
||||||
|
matchLabels:
|
||||||
|
zone: us-east-1b
|
||||||
|
- subnetIdSelector:
|
||||||
|
matchLabels:
|
||||||
|
zone: us-east-1c
|
||||||
|
- name: securitygroup
|
||||||
|
base:
|
||||||
|
apiVersion: ec2.aws.crossplane.io/v1beta1
|
||||||
|
kind: SecurityGroup
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
region: us-east-1
|
||||||
|
vpcIdSelector:
|
||||||
|
matchControllerRef: true
|
||||||
|
groupName: crossplane-getting-started
|
||||||
|
description: Allow access to PostgreSQL
|
||||||
|
ingress:
|
||||||
|
- fromPort: 5432
|
||||||
|
toPort: 5432
|
||||||
|
ipProtocol: tcp
|
||||||
|
ipRanges:
|
||||||
|
- cidrIp: 0.0.0.0/0
|
||||||
|
description: Everywhere
|
||||||
|
- name: rdsinstance
|
||||||
|
base:
|
||||||
|
apiVersion: database.aws.crossplane.io/v1beta1
|
||||||
|
kind: RDSInstance
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
region: us-east-1
|
||||||
|
dbSubnetGroupNameSelector:
|
||||||
|
matchControllerRef: true
|
||||||
|
vpcSecurityGroupIDSelector:
|
||||||
|
matchControllerRef: true
|
||||||
|
dbInstanceClass: db.t2.small
|
||||||
|
masterUsername: masteruser
|
||||||
|
engine: postgres
|
||||||
|
engineVersion: "12"
|
||||||
|
skipFinalSnapshotBeforeDeletion: true
|
||||||
|
publiclyAccessible: true
|
||||||
|
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.allocatedStorage"
|
||||||
|
connectionDetails:
|
||||||
|
- fromConnectionSecretKey: username
|
||||||
|
- fromConnectionSecretKey: password
|
||||||
|
- fromConnectionSecretKey: endpoint
|
||||||
|
- fromConnectionSecretKey: port
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
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.8.0-0"
|
||||||
|
dependsOn:
|
||||||
|
- provider: crossplane/provider-aws
|
||||||
|
version: ">=v0.24.1"
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
---
|
||||||
|
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
|
||||||
|
connectionSecretKeys:
|
||||||
|
- username
|
||||||
|
- password
|
||||||
|
- endpoint
|
||||||
|
- port
|
||||||
|
versions:
|
||||||
|
- name: v1alpha1
|
||||||
|
served: true
|
||||||
|
referenceable: true
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
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:
|
||||||
|
- parameters
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.crossplane.io/v1
|
||||||
|
kind: Composition
|
||||||
|
metadata:
|
||||||
|
name: xpostgresqlinstances.aws.database.example.org
|
||||||
|
labels:
|
||||||
|
provider: aws
|
||||||
|
guide: quickstart
|
||||||
|
vpc: default
|
||||||
|
spec:
|
||||||
|
writeConnectionSecretsToNamespace: crossplane-system
|
||||||
|
compositeTypeRef:
|
||||||
|
apiVersion: database.example.org/v1alpha1
|
||||||
|
kind: XPostgreSQLInstance
|
||||||
|
resources:
|
||||||
|
- name: rdsinstance
|
||||||
|
base:
|
||||||
|
apiVersion: database.aws.crossplane.io/v1beta1
|
||||||
|
kind: RDSInstance
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
region: us-east-1
|
||||||
|
dbInstanceClass: db.t2.small
|
||||||
|
masterUsername: masteruser
|
||||||
|
engine: postgres
|
||||||
|
engineVersion: "12"
|
||||||
|
skipFinalSnapshotBeforeDeletion: true
|
||||||
|
publiclyAccessible: true
|
||||||
|
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.allocatedStorage"
|
||||||
|
connectionDetails:
|
||||||
|
- fromConnectionSecretKey: username
|
||||||
|
- fromConnectionSecretKey: password
|
||||||
|
- fromConnectionSecretKey: endpoint
|
||||||
|
- fromConnectionSecretKey: port
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
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.8.0-0"
|
||||||
|
dependsOn:
|
||||||
|
- provider: crossplane/provider-aws
|
||||||
|
version: ">=v0.24.1"
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
---
|
||||||
|
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
|
||||||
|
connectionSecretKeys:
|
||||||
|
- username
|
||||||
|
- password
|
||||||
|
- endpoint
|
||||||
|
- port
|
||||||
|
versions:
|
||||||
|
- name: v1alpha1
|
||||||
|
served: true
|
||||||
|
referenceable: true
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
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:
|
||||||
|
- parameters
|
||||||
|
|
@ -0,0 +1,73 @@
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.crossplane.io/v1
|
||||||
|
kind: Composition
|
||||||
|
metadata:
|
||||||
|
name: xpostgresqlinstances.azure.database.example.org
|
||||||
|
labels:
|
||||||
|
provider: azure
|
||||||
|
guide: quickstart
|
||||||
|
spec:
|
||||||
|
writeConnectionSecretsToNamespace: crossplane-system
|
||||||
|
compositeTypeRef:
|
||||||
|
apiVersion: database.example.org/v1alpha1
|
||||||
|
kind: XPostgreSQLInstance
|
||||||
|
resources:
|
||||||
|
- name: resourcegroup
|
||||||
|
base:
|
||||||
|
apiVersion: azure.crossplane.io/v1alpha3
|
||||||
|
kind: ResourceGroup
|
||||||
|
spec:
|
||||||
|
location: West US 2
|
||||||
|
- name: postgresqlserver
|
||||||
|
base:
|
||||||
|
apiVersion: database.azure.crossplane.io/v1beta1
|
||||||
|
kind: PostgreSQLServer
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
administratorLogin: myadmin
|
||||||
|
resourceGroupNameSelector:
|
||||||
|
matchControllerRef: true
|
||||||
|
location: West US 2
|
||||||
|
sslEnforcement: Disabled
|
||||||
|
version: "11"
|
||||||
|
storageProfile:
|
||||||
|
storageMB: 5120
|
||||||
|
sku:
|
||||||
|
tier: GeneralPurpose
|
||||||
|
capacity: 2
|
||||||
|
family: Gen5
|
||||||
|
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.storageProfile.storageMB"
|
||||||
|
transforms:
|
||||||
|
- type: math
|
||||||
|
math:
|
||||||
|
multiply: 1024
|
||||||
|
connectionDetails:
|
||||||
|
- fromConnectionSecretKey: username
|
||||||
|
- fromConnectionSecretKey: password
|
||||||
|
- fromConnectionSecretKey: endpoint
|
||||||
|
- type: FromValue
|
||||||
|
name: port
|
||||||
|
value: "5432"
|
||||||
|
- name: firewallrule
|
||||||
|
base:
|
||||||
|
apiVersion: database.azure.crossplane.io/v1alpha3
|
||||||
|
kind: PostgreSQLServerFirewallRule
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
serverNameSelector:
|
||||||
|
matchControllerRef: true
|
||||||
|
resourceGroupNameSelector:
|
||||||
|
matchControllerRef: true
|
||||||
|
properties:
|
||||||
|
startIpAddress: 0.0.0.0
|
||||||
|
endIpAddress: 255.255.255.254
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
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.8.0-0"
|
||||||
|
dependsOn:
|
||||||
|
- provider: crossplane/provider-azure
|
||||||
|
version: ">=v0.18.1"
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
---
|
||||||
|
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
|
||||||
|
connectionSecretKeys:
|
||||||
|
- username
|
||||||
|
- password
|
||||||
|
- endpoint
|
||||||
|
- port
|
||||||
|
versions:
|
||||||
|
- name: v1alpha1
|
||||||
|
served: true
|
||||||
|
referenceable: true
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
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:
|
||||||
|
- parameters
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
---
|
||||||
|
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
|
||||||
|
connectionSecretKeys:
|
||||||
|
- username
|
||||||
|
- password
|
||||||
|
- endpoint
|
||||||
|
- port
|
||||||
|
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
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.crossplane.io/v1
|
||||||
|
kind: Composition
|
||||||
|
metadata:
|
||||||
|
name: xpostgresqlinstances.gcp.database.example.org
|
||||||
|
labels:
|
||||||
|
provider: gcp
|
||||||
|
guide: quickstart
|
||||||
|
spec:
|
||||||
|
writeConnectionSecretsToNamespace: crossplane-system
|
||||||
|
compositeTypeRef:
|
||||||
|
apiVersion: database.example.org/v1alpha1
|
||||||
|
kind: XPostgreSQLInstance
|
||||||
|
resources:
|
||||||
|
- name: cloudsqlinstance
|
||||||
|
base:
|
||||||
|
apiVersion: database.gcp.crossplane.io/v1beta1
|
||||||
|
kind: CloudSQLInstance
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
databaseVersion: POSTGRES_12
|
||||||
|
region: us-central1
|
||||||
|
settings:
|
||||||
|
tier: db-custom-1-3840
|
||||||
|
dataDiskType: PD_SSD
|
||||||
|
ipConfiguration:
|
||||||
|
ipv4Enabled: true
|
||||||
|
authorizedNetworks:
|
||||||
|
- value: "0.0.0.0/0"
|
||||||
|
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.settings.dataDiskSizeGb"
|
||||||
|
connectionDetails:
|
||||||
|
- fromConnectionSecretKey: username
|
||||||
|
- fromConnectionSecretKey: password
|
||||||
|
- fromConnectionSecretKey: endpoint
|
||||||
|
- type: FromValue
|
||||||
|
name: port
|
||||||
|
value: "5432"
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
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.8.0-0"
|
||||||
|
dependsOn:
|
||||||
|
- provider: crossplane/provider-gcp
|
||||||
|
version: ">=v0.20.0"
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
---
|
||||||
|
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
|
||||||
|
connectionSecretKeys:
|
||||||
|
- username
|
||||||
|
- password
|
||||||
|
- endpoint
|
||||||
|
- port
|
||||||
|
versions:
|
||||||
|
- name: v1alpha1
|
||||||
|
served: true
|
||||||
|
referenceable: true
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
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:
|
||||||
|
- parameters
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
apiVersion: database.aws.crossplane.io/v1beta1
|
||||||
|
kind: RDSInstance
|
||||||
|
metadata:
|
||||||
|
name: rdspostgresql
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
region: us-east-1
|
||||||
|
dbInstanceClass: db.t2.small
|
||||||
|
masterUsername: masteruser
|
||||||
|
allocatedStorage: 20
|
||||||
|
engine: postgres
|
||||||
|
engineVersion: "12"
|
||||||
|
skipFinalSnapshotBeforeDeletion: true
|
||||||
|
writeConnectionSecretToRef:
|
||||||
|
namespace: crossplane-system
|
||||||
|
name: aws-rdspostgresql-conn
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
apiVersion: azure.crossplane.io/v1alpha3
|
||||||
|
kind: ResourceGroup
|
||||||
|
metadata:
|
||||||
|
name: sqlserverpostgresql-rg
|
||||||
|
spec:
|
||||||
|
location: West US 2
|
||||||
|
---
|
||||||
|
apiVersion: database.azure.crossplane.io/v1beta1
|
||||||
|
kind: PostgreSQLServer
|
||||||
|
metadata:
|
||||||
|
name: sqlserverpostgresql
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
administratorLogin: myadmin
|
||||||
|
resourceGroupNameRef:
|
||||||
|
name: sqlserverpostgresql-rg
|
||||||
|
location: West US 2
|
||||||
|
sslEnforcement: Disabled
|
||||||
|
version: "11"
|
||||||
|
sku:
|
||||||
|
tier: GeneralPurpose
|
||||||
|
capacity: 2
|
||||||
|
family: Gen5
|
||||||
|
storageProfile:
|
||||||
|
storageMB: 20480
|
||||||
|
writeConnectionSecretToRef:
|
||||||
|
namespace: crossplane-system
|
||||||
|
name: sqlserverpostgresql-conn
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
apiVersion: database.gcp.crossplane.io/v1beta1
|
||||||
|
kind: CloudSQLInstance
|
||||||
|
metadata:
|
||||||
|
name: cloudsqlpostgresql
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
databaseVersion: POSTGRES_12
|
||||||
|
region: us-central1
|
||||||
|
settings:
|
||||||
|
tier: db-custom-1-3840
|
||||||
|
dataDiskType: PD_SSD
|
||||||
|
dataDiskSizeGb: 10
|
||||||
|
writeConnectionSecretToRef:
|
||||||
|
namespace: crossplane-system
|
||||||
|
name: cloudsqlpostgresql-conn
|
||||||
Loading…
Reference in New Issue