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 | ||||
| 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: | ||||
| 
 | ||||
| ```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/release-1.9/docs/snippets/configure/aws/setup.sh | ||||
| curl -O https://raw.githubusercontent.com/crossplane/crossplane/master/docs/snippets/configure/aws/providerconfig.yaml | ||||
| curl -O https://raw.githubusercontent.com/crossplane/crossplane/master/docs/snippets/configure/aws/setup.sh | ||||
| chmod +x setup.sh | ||||
| ./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. | ||||
| 
 | ||||
| ```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 | ||||
| # ... EXAMPLE OUTPUT ONLY | ||||
| # export ORGANIZATION_ID=987654321 | ||||
|  |  | |||
|  | @ -3,7 +3,6 @@ title: Configuring Crossplane with Argo CD | |||
| weight: 270 | ||||
| ---   | ||||
| 
 | ||||
| 
 | ||||
| [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 | ||||
| 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 | ||||
| --- | ||||
| 
 | ||||
| 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 | ||||
| the regularly published Helm chart. The Helm chart contains all the custom | ||||
| resources and controllers needed to deploy and configure Crossplane. | ||||
|  | @ -158,5 +162,5 @@ imagePullSecrets: | |||
| <!-- Named Links --> | ||||
| 
 | ||||
| [Kubernetes cluster]: https://kubernetes.io/docs/setup/ | ||||
| [Minikube]: https://minikube.sigs.k8s.io/docs/start/ | ||||
| [Helm]: https://helm.sh/docs/intro/using_helm/ | ||||
| [Minikube]: https://kubernetes.io/docs/tasks/tools/install-minikube/ | ||||
| [Helm]: https://docs.helm.sh/using_helm/ | ||||
|  |  | |||
|  | @ -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