Double check all MR examples (#966)

* Drop note about (only) AWS MRs supporting v2

A few of the other providers like GCP and Azure now do. The rest will
fast follow.

Also, it's not misleading to say the others don't support v2. That reads
like they're incompatible, which they're not. They're just not
namespaced yet.

Signed-off-by: Nic Cope <nicc@rk0n.org>

* Only use modern namespaced provider-upjet-aws MRs

* Make sure they're using v2.0.0 providers
* Make sure they use m.example.org style API groups
* Make sure they're namespaced

Signed-off-by: Nic Cope <nicc@rk0n.org>

---------

Signed-off-by: Nic Cope <nicc@rk0n.org>
This commit is contained in:
Nic Cope 2025-08-13 00:56:45 -07:00 committed by GitHub
parent f1a6d852f4
commit 2a39bc9cba
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 267 additions and 173 deletions

View File

@ -78,7 +78,7 @@ metadata:
status: status:
bucketRegion: us-east-2 bucketRegion: us-east-2
--- ---
apiVersion: s3.aws.upbound.io/v1beta1 apiVersion: s3.aws.m.upbound.io/v1beta1
kind: Bucket kind: Bucket
metadata: metadata:
annotations: annotations:
@ -86,6 +86,7 @@ metadata:
generateName: test-xrender- generateName: test-xrender-
labels: labels:
crossplane.io/composite: test-xrender crossplane.io/composite: test-xrender
namespace: default
ownerReferences: ownerReferences:
- apiVersion: nopexample.org/v1 - apiVersion: nopexample.org/v1
blockOwnerDeletion: true blockOwnerDeletion: true
@ -343,7 +344,7 @@ The `<package-kind>` is either a `configuration`, `function` or `provider`.
For example, to install the latest version of the For example, to install the latest version of the
[AWS S3 provider](https://github.com/crossplane-contrib/provider-upjet-aws): [AWS S3 provider](https://github.com/crossplane-contrib/provider-upjet-aws):
`crossplane xpkg install provider xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v1.21.1` `crossplane xpkg install provider xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v2.0.0`
#### Flags #### Flags
{{< table "table table-sm table-striped">}} {{< table "table table-sm table-striped">}}
@ -522,7 +523,7 @@ already installed in Crossplane.
For example, to update to the latest version of the For example, to update to the latest version of the
[AWS S3 provider](https://github.com/crossplane-contrib/provider-upjet-aws): [AWS S3 provider](https://github.com/crossplane-contrib/provider-upjet-aws):
`crossplane xpkg update provider xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v1.21.1` `crossplane xpkg update provider xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v2.0.0`
<!-- vale Google.Headings = NO --> <!-- vale Google.Headings = NO -->
@ -746,52 +747,52 @@ Configuration/platform-ref-aws
├─ ConfigurationRevision/platform-ref-aws-9ad7b5db2899 v0.9.0 - True Active HealthyPackageRevision ├─ ConfigurationRevision/platform-ref-aws-9ad7b5db2899 v0.9.0 - True Active HealthyPackageRevision
├─ Configuration/upbound-configuration-aws-network v0.7.0 True True - HealthyPackageRevision ├─ Configuration/upbound-configuration-aws-network v0.7.0 True True - HealthyPackageRevision
│ ├─ ConfigurationRevision/upbound-configuration-aws-network-97be9100cfe1 v0.7.0 - True Active HealthyPackageRevision │ ├─ ConfigurationRevision/upbound-configuration-aws-network-97be9100cfe1 v0.7.0 - True Active HealthyPackageRevision
│ ├─ Provider/upbound-provider-aws-ec2 v0.47.0 True True - HealthyPackageRevision │ ├─ Provider/upbound-provider-aws-ec2 v2.0.0 True True - HealthyPackageRevision
│ │ ├─ ProviderRevision/upbound-provider-aws-ec2-cfeb0cd0f1d2 v0.47.0 - True Active HealthyPackageRevision │ │ ├─ ProviderRevision/upbound-provider-aws-ec2-cfeb0cd0f1d2 v2.0.0 - True Active HealthyPackageRevision
│ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision │ │ └─ Provider/upbound-provider-family-aws v2.0.0 True True - HealthyPackageRevision
│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision │ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v2.0.0 - True Active HealthyPackageRevision
│ └─ Function/upbound-function-patch-and-transform v0.2.1 True True - HealthyPackageRevision │ └─ Function/upbound-function-patch-and-transform v0.2.1 True True - HealthyPackageRevision
│ └─ FunctionRevision/upbound-function-patch-and-transform-a2f88f8d8715 v0.2.1 - True Active HealthyPackageRevision │ └─ FunctionRevision/upbound-function-patch-and-transform-a2f88f8d8715 v0.2.1 - True Active HealthyPackageRevision
├─ Configuration/upbound-configuration-aws-database v0.5.0 True True - HealthyPackageRevision ├─ Configuration/upbound-configuration-aws-database v0.5.0 True True - HealthyPackageRevision
│ ├─ ConfigurationRevision/upbound-configuration-aws-database-3112f0a765c5 v0.5.0 - True Active HealthyPackageRevision │ ├─ ConfigurationRevision/upbound-configuration-aws-database-3112f0a765c5 v0.5.0 - True Active HealthyPackageRevision
│ ├─ Provider/upbound-provider-aws-rds v0.47.0 True True - HealthyPackageRevision │ ├─ Provider/upbound-provider-aws-rds v2.0.0 True True - HealthyPackageRevision
│ │ ├─ ProviderRevision/upbound-provider-aws-rds-58f96aa9fc4b v0.47.0 - True Active HealthyPackageRevision │ │ ├─ ProviderRevision/upbound-provider-aws-rds-58f96aa9fc4b v2.0.0 - True Active HealthyPackageRevision
│ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision │ │ └─ Provider/upbound-provider-family-aws v2.0.0 True True - HealthyPackageRevision
│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision │ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v2.0.0 - True Active HealthyPackageRevision
│ └─ Configuration/upbound-configuration-aws-network v0.7.0 True True - HealthyPackageRevision │ └─ Configuration/upbound-configuration-aws-network v0.7.0 True True - HealthyPackageRevision
│ ├─ ConfigurationRevision/upbound-configuration-aws-network-97be9100cfe1 v0.7.0 - True Active HealthyPackageRevision │ ├─ ConfigurationRevision/upbound-configuration-aws-network-97be9100cfe1 v0.7.0 - True Active HealthyPackageRevision
│ ├─ Provider/upbound-provider-aws-ec2 v0.47.0 True True - HealthyPackageRevision │ ├─ Provider/upbound-provider-aws-ec2 v2.0.0 True True - HealthyPackageRevision
│ │ ├─ ProviderRevision/upbound-provider-aws-ec2-cfeb0cd0f1d2 v0.47.0 - True Active HealthyPackageRevision │ │ ├─ ProviderRevision/upbound-provider-aws-ec2-cfeb0cd0f1d2 v2.0.0 - True Active HealthyPackageRevision
│ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision │ │ └─ Provider/upbound-provider-family-aws v2.0.0 True True - HealthyPackageRevision
│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision │ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v2.0.0 - True Active HealthyPackageRevision
│ └─ Function/upbound-function-patch-and-transform v0.2.1 True True - HealthyPackageRevision │ └─ Function/upbound-function-patch-and-transform v0.2.1 True True - HealthyPackageRevision
│ └─ FunctionRevision/upbound-function-patch-and-transform-a2f88f8d8715 v0.2.1 - True Active HealthyPackageRevision │ └─ FunctionRevision/upbound-function-patch-and-transform-a2f88f8d8715 v0.2.1 - True Active HealthyPackageRevision
├─ Configuration/upbound-configuration-aws-eks v0.5.0 True True - HealthyPackageRevision ├─ Configuration/upbound-configuration-aws-eks v0.5.0 True True - HealthyPackageRevision
│ ├─ ConfigurationRevision/upbound-configuration-aws-eks-83c9d65f4a47 v0.5.0 - True Active HealthyPackageRevision │ ├─ ConfigurationRevision/upbound-configuration-aws-eks-83c9d65f4a47 v0.5.0 - True Active HealthyPackageRevision
│ ├─ Configuration/upbound-configuration-aws-network v0.7.0 True True - HealthyPackageRevision │ ├─ Configuration/upbound-configuration-aws-network v0.7.0 True True - HealthyPackageRevision
│ │ ├─ ConfigurationRevision/upbound-configuration-aws-network-97be9100cfe1 v0.7.0 - True Active HealthyPackageRevision │ │ ├─ ConfigurationRevision/upbound-configuration-aws-network-97be9100cfe1 v0.7.0 - True Active HealthyPackageRevision
│ │ ├─ Provider/upbound-provider-aws-ec2 v0.47.0 True True - HealthyPackageRevision │ │ ├─ Provider/upbound-provider-aws-ec2 v2.0.0 True True - HealthyPackageRevision
│ │ │ ├─ ProviderRevision/upbound-provider-aws-ec2-cfeb0cd0f1d2 v0.47.0 - True Active HealthyPackageRevision │ │ │ ├─ ProviderRevision/upbound-provider-aws-ec2-cfeb0cd0f1d2 v2.0.0 - True Active HealthyPackageRevision
│ │ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision │ │ │ └─ Provider/upbound-provider-family-aws v2.0.0 True True - HealthyPackageRevision
│ │ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision │ │ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v2.0.0 - True Active HealthyPackageRevision
│ │ └─ Function/upbound-function-patch-and-transform v0.2.1 True True - HealthyPackageRevision │ │ └─ Function/upbound-function-patch-and-transform v0.2.1 True True - HealthyPackageRevision
│ │ └─ FunctionRevision/upbound-function-patch-and-transform-a2f88f8d8715 v0.2.1 - True Active HealthyPackageRevision │ │ └─ FunctionRevision/upbound-function-patch-and-transform-a2f88f8d8715 v0.2.1 - True Active HealthyPackageRevision
│ ├─ Provider/crossplane-contrib-provider-helm v0.16.0 True True - HealthyPackageRevision │ ├─ Provider/crossplane-contrib-provider-helm v0.16.0 True True - HealthyPackageRevision
│ │ └─ ProviderRevision/crossplane-contrib-provider-helm-b4cc4c2c8db3 v0.16.0 - True Active HealthyPackageRevision │ │ └─ ProviderRevision/crossplane-contrib-provider-helm-b4cc4c2c8db3 v0.16.0 - True Active HealthyPackageRevision
│ ├─ Provider/crossplane-contrib-provider-kubernetes v0.10.0 True True - HealthyPackageRevision │ ├─ Provider/crossplane-contrib-provider-kubernetes v0.10.0 True True - HealthyPackageRevision
│ │ └─ ProviderRevision/crossplane-contrib-provider-kubernetes-63506a3443e0 v0.10.0 - True Active HealthyPackageRevision │ │ └─ ProviderRevision/crossplane-contrib-provider-kubernetes-63506a3443e0 v0.10.0 - True Active HealthyPackageRevision
│ ├─ Provider/upbound-provider-aws-ec2 v0.47.0 True True - HealthyPackageRevision │ ├─ Provider/upbound-provider-aws-ec2 v2.0.0 True True - HealthyPackageRevision
│ │ ├─ ProviderRevision/upbound-provider-aws-ec2-cfeb0cd0f1d2 v0.47.0 - True Active HealthyPackageRevision │ │ ├─ ProviderRevision/upbound-provider-aws-ec2-cfeb0cd0f1d2 v2.0.0 - True Active HealthyPackageRevision
│ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision │ │ └─ Provider/upbound-provider-family-aws v2.0.0 True True - HealthyPackageRevision
│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision │ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v2.0.0 - True Active HealthyPackageRevision
│ ├─ Provider/upbound-provider-aws-eks v0.47.0 True True - HealthyPackageRevision │ ├─ Provider/upbound-provider-aws-eks v2.0.0 True True - HealthyPackageRevision
│ │ ├─ ProviderRevision/upbound-provider-aws-eks-641a096d79d8 v0.47.0 - True Active HealthyPackageRevision │ │ ├─ ProviderRevision/upbound-provider-aws-eks-641a096d79d8 v2.0.0 - True Active HealthyPackageRevision
│ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision │ │ └─ Provider/upbound-provider-family-aws v2.0.0 True True - HealthyPackageRevision
│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision │ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v2.0.0 - True Active HealthyPackageRevision
│ ├─ Provider/upbound-provider-aws-iam v0.47.0 True True - HealthyPackageRevision │ ├─ Provider/upbound-provider-aws-iam v2.0.0 True True - HealthyPackageRevision
│ │ ├─ ProviderRevision/upbound-provider-aws-iam-438eac423037 v0.47.0 - True Active HealthyPackageRevision │ │ ├─ ProviderRevision/upbound-provider-aws-iam-438eac423037 v2.0.0 - True Active HealthyPackageRevision
│ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision │ │ └─ Provider/upbound-provider-family-aws v2.0.0 True True - HealthyPackageRevision
│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision │ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v2.0.0 - True Active HealthyPackageRevision
│ └─ Function/upbound-function-patch-and-transform v0.2.1 True True - HealthyPackageRevision │ └─ Function/upbound-function-patch-and-transform v0.2.1 True True - HealthyPackageRevision
│ └─ FunctionRevision/upbound-function-patch-and-transform-a2f88f8d8715 v0.2.1 - True Active HealthyPackageRevision │ └─ FunctionRevision/upbound-function-patch-and-transform-a2f88f8d8715 v0.2.1 - True Active HealthyPackageRevision
├─ Configuration/upbound-configuration-app v0.2.0 True True - HealthyPackageRevision ├─ Configuration/upbound-configuration-app v0.2.0 True True - HealthyPackageRevision
@ -841,10 +842,10 @@ Configuration/platform-ref-aws
├─ ConfigurationRevision/platform-ref-aws-9ad7b5db2899 v0.9.0 - True Active HealthyPackageRevision ├─ ConfigurationRevision/platform-ref-aws-9ad7b5db2899 v0.9.0 - True Active HealthyPackageRevision
├─ Configuration/upbound-configuration-aws-network v0.2.0 True True - HealthyPackageRevision ├─ Configuration/upbound-configuration-aws-network v0.2.0 True True - HealthyPackageRevision
│ ├─ ConfigurationRevision/upbound-configuration-aws-network-288fcd1b88dd v0.2.0 - True Active HealthyPackageRevision │ ├─ ConfigurationRevision/upbound-configuration-aws-network-288fcd1b88dd v0.2.0 - True Active HealthyPackageRevision
│ └─ Provider/upbound-provider-aws-ec2 v1.0.0 True True - HealthyPackageRevision │ └─ Provider/upbound-provider-aws-ec2 v2.0.0 True True - HealthyPackageRevision
│ ├─ ProviderRevision/upbound-provider-aws-ec2-5cfd948d082f v1.0.0 - True Active HealthyPackageRevision │ ├─ ProviderRevision/upbound-provider-aws-ec2-5cfd948d082f v2.0.0 - True Active HealthyPackageRevision
│ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision │ └─ Provider/upbound-provider-family-aws v2.0.0 True True - HealthyPackageRevision
│ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v2.0.0 - True Active HealthyPackageRevision
# Removed for brevity # Removed for brevity
``` ```
@ -855,8 +856,8 @@ crossplane beta trace configuration platform-ref-aws --show-package-revisions no
NAME VERSION INSTALLED HEALTHY STATE STATUS NAME VERSION INSTALLED HEALTHY STATE STATUS
Configuration/platform-ref-aws v0.9.0 True True - HealthyPackageRevision Configuration/platform-ref-aws v0.9.0 True True - HealthyPackageRevision
├─ Configuration/upbound-configuration-aws-network v0.2.0 True True - HealthyPackageRevision ├─ Configuration/upbound-configuration-aws-network v0.2.0 True True - HealthyPackageRevision
│ └─ Provider/upbound-provider-aws-ec2 v1.0.0 True True - HealthyPackageRevision │ └─ Provider/upbound-provider-aws-ec2 v2.0.0 True True - HealthyPackageRevision
│ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision │ └─ Provider/upbound-provider-family-aws v2.0.0 True True - HealthyPackageRevision
# Removed for brevity # Removed for brevity
``` ```
@ -936,9 +937,9 @@ provider manifests of the resources to validate.
apiVersion: pkg.crossplane.io/v1 apiVersion: pkg.crossplane.io/v1
kind: Provider kind: Provider
metadata: metadata:
name: provider-aws-iam name: crossplane-contrib-provider-aws-iam
spec: spec:
package: xpkg.crossplane.io/crossplane-contrib/provider-aws-iam:v1.21.1 package: xpkg.crossplane.io/crossplane-contrib/provider-aws-iam:v2.0.0
``` ```
Now include the XR or managed resource to validate. Now include the XR or managed resource to validate.
@ -948,9 +949,10 @@ For example, to validate an
provide a managed resource YAML file. provide a managed resource YAML file.
```yaml {label="iamAK"} ```yaml {label="iamAK"}
apiVersion: iam.aws.upbound.io/v1beta1 apiVersion: iam.aws.m.upbound.io/v1beta1
kind: AccessKey kind: AccessKey
metadata: metadata:
namespace: default
name: sample-access-key-0 name: sample-access-key-0
spec: spec:
forProvider: forProvider:
@ -964,7 +966,7 @@ resource YAML files as input.
```shell ```shell
crossplane beta validate provider.yaml managedResource.yaml crossplane beta validate provider.yaml managedResource.yaml
[✓] iam.aws.upbound.io/v1beta1, Kind=AccessKey, sample-access-key-0 validated successfully [✓] iam.aws.m.upbound.io/v1beta1, Kind=AccessKey, sample-access-key-0 validated successfully
Total 1 resources: 0 missing schemas, 1 success case, 0 failure cases Total 1 resources: 0 missing schemas, 1 success case, 0 failure cases
``` ```
@ -982,10 +984,10 @@ option with `crossplane beta validate` to pipe the output from
crossplane render xr.yaml composition.yaml function.yaml --include-full-xr | crossplane beta validate schemas.yaml - crossplane render xr.yaml composition.yaml function.yaml --include-full-xr | crossplane beta validate schemas.yaml -
[x] schema validation error example.crossplane.io/v1beta1, Kind=XR, example : status.conditions[0].lastTransitionTime: Invalid value: "null": status.conditions[0].lastTransitionTime in body must be of type string: "null" [x] schema validation error example.crossplane.io/v1beta1, Kind=XR, example : status.conditions[0].lastTransitionTime: Invalid value: "null": status.conditions[0].lastTransitionTime in body must be of type string: "null"
[x] schema validation error example.crossplane.io/v1beta1, Kind=XR, example : spec: Required value [x] schema validation error example.crossplane.io/v1beta1, Kind=XR, example : spec: Required value
[✓] iam.aws.upbound.io/v1beta1, Kind=AccessKey, sample-access-key-0 validated successfully [✓] iam.aws.m.upbound.io/v1beta1, Kind=AccessKey, sample-access-key-0 validated successfully
[✓] iam.aws.upbound.io/v1beta1, Kind=AccessKey, sample-access-key-1 validated successfully [✓] iam.aws.m.upbound.io/v1beta1, Kind=AccessKey, sample-access-key-1 validated successfully
[✓] iam.aws.upbound.io/v1beta1, Kind=User, test-user-0 validated successfully [✓] iam.aws.m.upbound.io/v1beta1, Kind=User, test-user-0 validated successfully
[✓] iam.aws.upbound.io/v1beta1, Kind=User, test-user-1 validated successfully [✓] iam.aws.m.upbound.io/v1beta1, Kind=User, test-user-1 validated successfully
Total 5 resources: 0 missing schemas, 4 success cases, 1 failure cases Total 5 resources: 0 missing schemas, 4 success cases, 1 failure cases
``` ```
@ -1082,10 +1084,10 @@ Provide the directory name and a resource YAML file to the
crossplane beta validate schema resources.yaml crossplane beta validate schema resources.yaml
[x] schema validation error example.crossplane.io/v1beta1, Kind=XR, example : status.conditions[0].lastTransitionTime: Invalid value: "null": status.conditions[0].lastTransitionTime in body must be of type string: "null" [x] schema validation error example.crossplane.io/v1beta1, Kind=XR, example : status.conditions[0].lastTransitionTime: Invalid value: "null": status.conditions[0].lastTransitionTime in body must be of type string: "null"
[x] CEL validation error example.crossplane.io/v1beta1, Kind=XR, example : spec: Invalid value: "object": no such key: minReplicas evaluating rule: replicas should be greater than or equal to minReplicas. [x] CEL validation error example.crossplane.io/v1beta1, Kind=XR, example : spec: Invalid value: "object": no such key: minReplicas evaluating rule: replicas should be greater than or equal to minReplicas.
[✓] iam.aws.upbound.io/v1beta1, Kind=AccessKey, sample-access-key-0 validated successfully [✓] iam.aws.m.upbound.io/v1beta1, Kind=AccessKey, sample-access-key-0 validated successfully
[✓] iam.aws.upbound.io/v1beta1, Kind=AccessKey, sample-access-key-1 validated successfully [✓] iam.aws.m.upbound.io/v1beta1, Kind=AccessKey, sample-access-key-1 validated successfully
[✓] iam.aws.upbound.io/v1beta1, Kind=User, test-user-0 validated successfully [✓] iam.aws.m.upbound.io/v1beta1, Kind=User, test-user-0 validated successfully
[✓] iam.aws.upbound.io/v1beta1, Kind=User, test-user-1 validated successfully [✓] iam.aws.m.upbound.io/v1beta1, Kind=User, test-user-1 validated successfully
Total 5 resources: 0 missing schemas, 4 success cases, 1 failure cases Total 5 resources: 0 missing schemas, 4 success cases, 1 failure cases
``` ```

View File

@ -36,14 +36,6 @@ This guide requires:
* An AWS account with permissions to create an S3 storage bucket * An AWS account with permissions to create an S3 storage bucket
* AWS [access keys](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-creds) * AWS [access keys](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-creds)
{{<hint "note">}}
AWS managed resources fully support Crossplane v2.
<!-- vale gitlab.FutureTense = NO -->
Maintainers are actively working to update managed resources for other systems including Azure,
GCP, Terraform, Helm, GitHub, etc to support Crossplane v2.
<!-- vale gitlab.FutureTense = YES -->
{{</hint>}}
## Install support for the managed resource ## Install support for the managed resource
@ -151,11 +143,11 @@ customizes the settings of the AWS Provider.
All providers need a configuration to tell them where to load credentials. All providers need a configuration to tell them where to load credentials.
Create this provider configuration: Create this cluster-wide provider configuration:
```yaml {label="providerconfig",copy-lines="all"} ```yaml {label="providerconfig",copy-lines="all"}
apiVersion: aws.upbound.io/v1beta1 apiVersion: aws.m.upbound.io/v1beta1
kind: ProviderConfig kind: ClusterProviderConfig
metadata: metadata:
name: default name: default
spec: spec:
@ -176,6 +168,15 @@ kubectl apply -f providerconfig.yaml
This tells the provider to load credentials from This tells the provider to load credentials from
[the secret](#save-the-providers-credentials). [the secret](#save-the-providers-credentials).
{{<hint "note">}}
This example uses a `ClusterProviderConfig` that applies to managed resources
across all namespaces.
You can also use a namespaced `ProviderConfig` that only applies to managed
resources in a specific namespace. See the [`providerConfigRef`]({{<ref "../managed-resources/managed-resources#providerconfigref">}})
section in the managed resources docs for more details.
{{</hint>}}
## Use the managed resource ## Use the managed resource
{{<hint "note">}} {{<hint "note">}}

View File

@ -6,7 +6,7 @@ weight: 306
If you use the Crossplane CLI to install a `Provider` or If you use the Crossplane CLI to install a `Provider` or
`Configuration` (for example, `crossplane xpkg install provider `Configuration` (for example, `crossplane xpkg install provider
xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v1.21.1`) and get `the server xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v2.0.0`) and get `the server
could not find the requested resource` error, more often than not, that's an could not find the requested resource` error, more often than not, that's an
indicator that your Crossplane CLI needs updating. In other words indicator that your Crossplane CLI needs updating. In other words
Crossplane graduated some API from alpha to beta or stable and the old Crossplane graduated some API from alpha to beta or stable and the old
@ -105,9 +105,9 @@ spec:
apiVersion: pkg.crossplane.io/v1 apiVersion: pkg.crossplane.io/v1
kind: Provider kind: Provider
metadata: metadata:
name: provider-aws name: crossplane-contrib-provider-aws-s3
spec: spec:
package: xpkg.crossplane.io/crossplane-contrib/provider-aws:v0.33.0 package: xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v2.0.0
runtimeConfigRef: runtimeConfigRef:
apiVersion: pkg.crossplane.io/v1beta1 apiVersion: pkg.crossplane.io/v1beta1
kind: DeploymentRuntimeConfig kind: DeploymentRuntimeConfig
@ -156,9 +156,9 @@ spec:
apiVersion: pkg.crossplane.io/v1 apiVersion: pkg.crossplane.io/v1
kind: Provider kind: Provider
metadata: metadata:
name: provider-aws name: crossplane-contrib-provider-aws-s3
spec: spec:
package: xpkg.crossplane.io/crossplane-contrib/provider-aws:v0.33.0 package: xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v2.0.0
runtimeConfigRef: runtimeConfigRef:
apiVersion: pkg.crossplane.io/v1beta1 apiVersion: pkg.crossplane.io/v1beta1
kind: DeploymentRuntimeConfig kind: DeploymentRuntimeConfig

View File

@ -38,55 +38,55 @@ command may take minutes to return.
```shell {copy-lines="1"} ```shell {copy-lines="1"}
kubectl get managed kubectl get managed
NAME READY SYNCED EXTERNAL-NAME AGE NAME READY SYNCED EXTERNAL-NAME AGE
securitygroup.ec2.aws.upbound.io/my-db-7mc7h-j84h8 True True sg-0da6e9c29113596b6 3m1s securitygroup.ec2.aws.m.upbound.io/my-db-7mc7h-j84h8 True True sg-0da6e9c29113596b6 3m1s
securitygroup.ec2.aws.upbound.io/my-db-8bhr2-9wsx9 True True sg-02695166f010ec05b 2m26s securitygroup.ec2.aws.m.upbound.io/my-db-8bhr2-9wsx9 True True sg-02695166f010ec05b 2m26s
NAME READY SYNCED EXTERNAL-NAME AGE NAME READY SYNCED EXTERNAL-NAME AGE
route.ec2.aws.upbound.io/my-db-7mc7h-vw985 True True r-rtb-05822b8df433e4e2b1080289494 3m1s route.ec2.aws.m.upbound.io/my-db-7mc7h-vw985 True True r-rtb-05822b8df433e4e2b1080289494 3m1s
route.ec2.aws.upbound.io/my-db-8bhr2-7m2wq False True 2m26s route.ec2.aws.m.upbound.io/my-db-8bhr2-7m2wq False True 2m26s
NAME READY SYNCED EXTERNAL-NAME AGE NAME READY SYNCED EXTERNAL-NAME AGE
securitygrouprule.ec2.aws.upbound.io/my-db-7mc7h-mkd9s True True sgrule-778063708 3m1s securitygrouprule.ec2.aws.m.upbound.io/my-db-7mc7h-mkd9s True True sgrule-778063708 3m1s
securitygrouprule.ec2.aws.upbound.io/my-db-8bhr2-lzr89 False True 2m26s securitygrouprule.ec2.aws.m.upbound.io/my-db-8bhr2-lzr89 False True 2m26s
NAME READY SYNCED EXTERNAL-NAME AGE NAME READY SYNCED EXTERNAL-NAME AGE
routetable.ec2.aws.upbound.io/my-db-7mc7h-mnqvm True True rtb-05822b8df433e4e2b 3m1s routetable.ec2.aws.m.upbound.io/my-db-7mc7h-mnqvm True True rtb-05822b8df433e4e2b 3m1s
routetable.ec2.aws.upbound.io/my-db-8bhr2-dfhj6 True True rtb-02e875abd25658254 2m26s routetable.ec2.aws.m.upbound.io/my-db-8bhr2-dfhj6 True True rtb-02e875abd25658254 2m26s
NAME READY SYNCED EXTERNAL-NAME AGE NAME READY SYNCED EXTERNAL-NAME AGE
subnet.ec2.aws.upbound.io/my-db-7mc7h-7m49d True True subnet-0c1ab32c5ec129dd1 3m2s subnet.ec2.aws.m.upbound.io/my-db-7mc7h-7m49d True True subnet-0c1ab32c5ec129dd1 3m2s
subnet.ec2.aws.upbound.io/my-db-7mc7h-9t64t True True subnet-07075c17c7a72f79e 3m2s subnet.ec2.aws.m.upbound.io/my-db-7mc7h-9t64t True True subnet-07075c17c7a72f79e 3m2s
subnet.ec2.aws.upbound.io/my-db-7mc7h-rs8t8 True True subnet-08e88e826a42e55b4 3m2s subnet.ec2.aws.m.upbound.io/my-db-7mc7h-rs8t8 True True subnet-08e88e826a42e55b4 3m2s
subnet.ec2.aws.upbound.io/my-db-8bhr2-9sjpx True True subnet-05d21c7b52f7ac8ca 2m26s subnet.ec2.aws.m.upbound.io/my-db-8bhr2-9sjpx True True subnet-05d21c7b52f7ac8ca 2m26s
subnet.ec2.aws.upbound.io/my-db-8bhr2-dvrxf True True subnet-0432310376b5d09de 2m26s subnet.ec2.aws.m.upbound.io/my-db-8bhr2-dvrxf True True subnet-0432310376b5d09de 2m26s
subnet.ec2.aws.upbound.io/my-db-8bhr2-t7dpr True True subnet-0080fdcb6e9b70632 2m26s subnet.ec2.aws.m.upbound.io/my-db-8bhr2-t7dpr True True subnet-0080fdcb6e9b70632 2m26s
NAME READY SYNCED EXTERNAL-NAME AGE NAME READY SYNCED EXTERNAL-NAME AGE
vpc.ec2.aws.upbound.io/my-db-7mc7h-ktbbh True True vpc-08d7dd84e0c12f33e 3m3s vpc.ec2.aws.m.upbound.io/my-db-7mc7h-ktbbh True True vpc-08d7dd84e0c12f33e 3m3s
vpc.ec2.aws.upbound.io/my-db-8bhr2-mrh2x True True vpc-06994bf323fc1daea 2m26s vpc.ec2.aws.m.upbound.io/my-db-8bhr2-mrh2x True True vpc-06994bf323fc1daea 2m26s
NAME READY SYNCED EXTERNAL-NAME AGE NAME READY SYNCED EXTERNAL-NAME AGE
internetgateway.ec2.aws.upbound.io/my-db-7mc7h-s2x4v True True igw-0189c4da07a3142dc 3m1s internetgateway.ec2.aws.m.upbound.io/my-db-7mc7h-s2x4v True True igw-0189c4da07a3142dc 3m1s
internetgateway.ec2.aws.upbound.io/my-db-8bhr2-q7dzl True True igw-01bf2a1dbbebf6a27 2m26s internetgateway.ec2.aws.m.upbound.io/my-db-8bhr2-q7dzl True True igw-01bf2a1dbbebf6a27 2m26s
NAME READY SYNCED EXTERNAL-NAME AGE NAME READY SYNCED EXTERNAL-NAME AGE
routetableassociation.ec2.aws.upbound.io/my-db-7mc7h-28qb4 True True rtbassoc-0718d680b5a0e68fe 3m1s routetableassociation.ec2.aws.m.upbound.io/my-db-7mc7h-28qb4 True True rtbassoc-0718d680b5a0e68fe 3m1s
routetableassociation.ec2.aws.upbound.io/my-db-7mc7h-9hdlr True True rtbassoc-0faaedb88c6e1518c 3m1s routetableassociation.ec2.aws.m.upbound.io/my-db-7mc7h-9hdlr True True rtbassoc-0faaedb88c6e1518c 3m1s
routetableassociation.ec2.aws.upbound.io/my-db-7mc7h-txhmz True True rtbassoc-0e5010724ca027864 3m1s routetableassociation.ec2.aws.m.upbound.io/my-db-7mc7h-txhmz True True rtbassoc-0e5010724ca027864 3m1s
routetableassociation.ec2.aws.upbound.io/my-db-8bhr2-bvgkt False True 2m26s routetableassociation.ec2.aws.m.upbound.io/my-db-8bhr2-bvgkt False True 2m26s
routetableassociation.ec2.aws.upbound.io/my-db-8bhr2-d9gbg False True 2m26s routetableassociation.ec2.aws.m.upbound.io/my-db-8bhr2-d9gbg False True 2m26s
routetableassociation.ec2.aws.upbound.io/my-db-8bhr2-k6k8m False True 2m26s routetableassociation.ec2.aws.m.upbound.io/my-db-8bhr2-k6k8m False True 2m26s
NAME READY SYNCED EXTERNAL-NAME AGE NAME READY SYNCED EXTERNAL-NAME AGE
instance.rds.aws.upbound.io/my-db-7mc7h-5d6w4 False True my-db-7mc7h-5d6w4 3m1s instance.rds.aws.m.upbound.io/my-db-7mc7h-5d6w4 False True my-db-7mc7h-5d6w4 3m1s
instance.rds.aws.upbound.io/my-db-8bhr2-tx9kf False True my-db-8bhr2-tx9kf 2m26s instance.rds.aws.m.upbound.io/my-db-8bhr2-tx9kf False True my-db-8bhr2-tx9kf 2m26s
NAME READY SYNCED EXTERNAL-NAME AGE NAME READY SYNCED EXTERNAL-NAME AGE
subnetgroup.rds.aws.upbound.io/my-db-7mc7h-8c8n9 True True my-db-7mc7h-8c8n9 3m2s subnetgroup.rds.aws.m.upbound.io/my-db-7mc7h-8c8n9 True True my-db-7mc7h-8c8n9 3m2s
subnetgroup.rds.aws.upbound.io/my-db-8bhr2-mc5ps True True my-db-8bhr2-mc5ps 2m27s subnetgroup.rds.aws.m.upbound.io/my-db-8bhr2-mc5ps True True my-db-8bhr2-mc5ps 2m27s
NAME READY SYNCED EXTERNAL-NAME AGE NAME READY SYNCED EXTERNAL-NAME AGE
bucket.s3.aws.upbound.io/crossplane-bucket-867737b10 True True bucket.s3.aws.m.upbound.io/crossplane-bucket-867737b10 True True
crossplane-bucket-867737b10 5m26s crossplane-bucket-867737b10 5m26s
``` ```
@ -121,13 +121,13 @@ Use `kubectl get managed` to view remaining _managed resources_.
```shell {copy-lines="1"} ```shell {copy-lines="1"}
kubectl get managed kubectl get managed
NAME READY SYNCED EXTERNAL-NAME AGE NAME READY SYNCED EXTERNAL-NAME AGE
bucket.s3.aws.upbound.io/crossplane-bucket-867737b10 True True crossplane-bucket-867737b10 8h bucket.s3.aws.m.upbound.io/crossplane-bucket-867737b10 True True crossplane-bucket-867737b10 8h
``` ```
Use `kubectl delete` to remove the resources. Use `kubectl delete` to remove the resources.
```shell ```shell
kubectl delete bucket.s3.aws.upbound.io/crossplane-bucket-867737b10 kubectl delete bucket.s3.aws.m.upbound.io/crossplane-bucket-867737b10
``` ```
<!-- vale Google.Headings = NO --> <!-- vale Google.Headings = NO -->
@ -139,7 +139,7 @@ List the installed _providers_ with `kubectl get providers`.
```shell {copy-lines="1"} ```shell {copy-lines="1"}
kubectl get providers kubectl get providers
NAME INSTALLED HEALTHY PACKAGE AGE NAME INSTALLED HEALTHY PACKAGE AGE
crossplane-contrib-provider-aws True True xpkg.crossplane.io/crossplane-contrib/provider-aws:v1.21.1 8h crossplane-contrib-provider-aws-s3 True True xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v2.0.0 8h
``` ```
Remove the installed _providers_ with `kubectl delete provider`. Remove the installed _providers_ with `kubectl delete provider`.

View File

@ -275,7 +275,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/utils/ptr" "k8s.io/utils/ptr"
"github.com/upbound/provider-aws/apis/s3/v1beta1" "github.com/crossplane-contrib/provider-upjet-aws/apis/s3/v1beta1"
"github.com/crossplane/function-sdk-go/errors" "github.com/crossplane/function-sdk-go/errors"
"github.com/crossplane/function-sdk-go/logging" "github.com/crossplane/function-sdk-go/logging"
@ -432,7 +432,7 @@ using the same strongly typed structs Crossplane uses in its providers.
You must get the AWS Provider Go module to use this type: You must get the AWS Provider Go module to use this type:
```shell ```shell
go get github.com/upbound/provider-aws@v1.14.0 go get github.com/crossplane-contrib/provider-upjet-aws@v2.0.0
``` ```
Crossplane provides a Crossplane provides a
@ -528,7 +528,7 @@ func TestRunFunction(t *testing.T) {
Desired: &fnv1.State{ Desired: &fnv1.State{
Resources: map[string]*fnv1.Resource{ Resources: map[string]*fnv1.Resource{
"xbuckets-test-bucket-a": {Resource: resource.MustStructJSON(`{ "xbuckets-test-bucket-a": {Resource: resource.MustStructJSON(`{
"apiVersion": "s3.aws.upbound.io/v1beta1", "apiVersion": "s3.aws.m.upbound.io/v1beta1",
"kind": "Bucket", "kind": "Bucket",
"metadata": { "metadata": {
"annotations": { "annotations": {
@ -545,7 +545,7 @@ func TestRunFunction(t *testing.T) {
} }
}`)}, }`)},
"xbuckets-test-bucket-b": {Resource: resource.MustStructJSON(`{ "xbuckets-test-bucket-b": {Resource: resource.MustStructJSON(`{
"apiVersion": "s3.aws.upbound.io/v1beta1", "apiVersion": "s3.aws.m.upbound.io/v1beta1",
"kind": "Bucket", "kind": "Bucket",
"metadata": { "metadata": {
"annotations": { "annotations": {
@ -727,7 +727,7 @@ kind: XBuckets
metadata: metadata:
name: example-buckets name: example-buckets
--- ---
apiVersion: s3.aws.upbound.io/v1beta1 apiVersion: s3.aws.m.upbound.io/v1beta1
kind: Bucket kind: Bucket
metadata: metadata:
annotations: annotations:
@ -742,7 +742,7 @@ spec:
forProvider: forProvider:
region: us-east-2 region: us-east-2
--- ---
apiVersion: s3.aws.upbound.io/v1beta1 apiVersion: s3.aws.m.upbound.io/v1beta1
kind: Bucket kind: Bucket
metadata: metadata:
annotations: annotations:
@ -757,7 +757,7 @@ spec:
forProvider: forProvider:
region: us-east-2 region: us-east-2
--- ---
apiVersion: s3.aws.upbound.io/v1beta1 apiVersion: s3.aws.m.upbound.io/v1beta1
kind: Bucket kind: Bucket
metadata: metadata:
annotations: annotations:

View File

@ -187,7 +187,7 @@ async def RunFunction(self, req: fnv1.RunFunctionRequest, _: grpc.aio.ServicerCo
for name in names: for name in names:
rsp.desired.resources[f"xbuckets-{name}"].resource.update( rsp.desired.resources[f"xbuckets-{name}"].resource.update(
{ {
"apiVersion": "s3.aws.upbound.io/v1beta1", "apiVersion": "s3.aws.m.upbound.io/v1beta1",
"kind": "Bucket", "kind": "Bucket",
"metadata": { "metadata": {
"annotations": { "annotations": {
@ -261,7 +261,7 @@ class FunctionRunner(grpcv1.FunctionRunnerService):
# https://protobuf.dev/reference/python/python-generated/#map-fields # https://protobuf.dev/reference/python/python-generated/#map-fields
rsp.desired.resources[f"xbuckets-{name}"].resource.update( rsp.desired.resources[f"xbuckets-{name}"].resource.update(
{ {
"apiVersion": "s3.aws.upbound.io/v1beta1", "apiVersion": "s3.aws.m.upbound.io/v1beta1",
"kind": "Bucket", "kind": "Bucket",
"metadata": { "metadata": {
"annotations": { "annotations": {
@ -399,7 +399,7 @@ class TestFunctionRunner(unittest.IsolatedAsyncioTestCase):
"xbuckets-test-bucket-a": fnv1.Resource( "xbuckets-test-bucket-a": fnv1.Resource(
resource=resource.dict_to_struct( resource=resource.dict_to_struct(
{ {
"apiVersion": "s3.aws.upbound.io/v1beta1", "apiVersion": "s3.aws.m.upbound.io/v1beta1",
"kind": "Bucket", "kind": "Bucket",
"metadata": { "metadata": {
"annotations": { "annotations": {
@ -415,7 +415,7 @@ class TestFunctionRunner(unittest.IsolatedAsyncioTestCase):
"xbuckets-test-bucket-b": fnv1.Resource( "xbuckets-test-bucket-b": fnv1.Resource(
resource=resource.dict_to_struct( resource=resource.dict_to_struct(
{ {
"apiVersion": "s3.aws.upbound.io/v1beta1", "apiVersion": "s3.aws.m.upbound.io/v1beta1",
"kind": "Bucket", "kind": "Bucket",
"metadata": { "metadata": {
"annotations": { "annotations": {
@ -588,7 +588,7 @@ kind: XBuckets
metadata: metadata:
name: example-buckets name: example-buckets
--- ---
apiVersion: s3.aws.upbound.io/v1beta1 apiVersion: s3.aws.m.upbound.io/v1beta1
kind: Bucket kind: Bucket
metadata: metadata:
annotations: annotations:
@ -603,7 +603,7 @@ spec:
forProvider: forProvider:
region: us-east-2 region: us-east-2
--- ---
apiVersion: s3.aws.upbound.io/v1beta1 apiVersion: s3.aws.m.upbound.io/v1beta1
kind: Bucket kind: Bucket
metadata: metadata:
annotations: annotations:
@ -618,7 +618,7 @@ spec:
forProvider: forProvider:
region: us-east-2 region: us-east-2
--- ---
apiVersion: s3.aws.upbound.io/v1beta1 apiVersion: s3.aws.m.upbound.io/v1beta1
kind: Bucket kind: Bucket
metadata: metadata:
annotations: annotations:

View File

@ -19,14 +19,6 @@ Examples of managed resources include:
* Google Cloud GKE `Cluster` defined in [provider-upjet-gcp](https://github.com/crossplane-contrib/provider-upjet-gcp). * Google Cloud GKE `Cluster` defined in [provider-upjet-gcp](https://github.com/crossplane-contrib/provider-upjet-gcp).
* Microsoft Azure PostgreSQL `Database` defined in [provider-upjet-azure](https://github.com/crossplane-contrib/provider-upjet-azure). * Microsoft Azure PostgreSQL `Database` defined in [provider-upjet-azure](https://github.com/crossplane-contrib/provider-upjet-azure).
{{<hint "important">}}
AWS managed resources fully support Crossplane v2.
<!-- vale gitlab.FutureTense = NO -->
Maintainers are actively working to update managed resources for other systems including Azure,
GCP, Terraform, Helm, GitHub, etc to support Crossplane v2.
<!-- vale gitlab.FutureTense = YES -->
{{</hint>}}
## Managed resource fields ## Managed resource fields
@ -194,7 +186,7 @@ resource that created the `InternetGateway`.
Some providers don't support changing the fields of some managed resources after Some providers don't support changing the fields of some managed resources after
creation. For example, you can't change the `region` of an Amazon AWS creation. For example, you can't change the `region` of an Amazon AWS
`RDSInstance`. These fields are _immutable fields_. Amazon requires you delete RDS `Instance`. These fields are _immutable fields_. Amazon requires you delete
and recreate the resource. and recreate the resource.
Crossplane allows you to edit the immutable field of a managed resource, but Crossplane allows you to edit the immutable field of a managed resource, but
@ -281,12 +273,13 @@ spec:
managementPolicies: ["Observe", "Create", "Update", "Delete"] managementPolicies: ["Observe", "Create", "Update", "Delete"]
initProvider: initProvider:
scalingConfig: scalingConfig:
- desiredSize: 1 desiredSize: 1
forProvider: forProvider:
region: us-west-1 region: us-west-1
clusterName: my-cluster
scalingConfig: scalingConfig:
- maxSize: 4 maxSize: 4
minSize: 1 minSize: 1
``` ```
<!-- vale off --> <!-- vale off -->
@ -385,16 +378,22 @@ This matches the {{<hover label="pc" line="4">}}name{{</hover>}} of a ProviderCo
```yaml {label="pcref",copy-lines="none"}} ```yaml {label="pcref",copy-lines="none"}}
apiVersion: ec2.aws.m.upbound.io/v1beta1 apiVersion: ec2.aws.m.upbound.io/v1beta1
kind: Instance kind: Instance
metadata:
namespace: default
name: my-instance
spec: spec:
forProvider: forProvider:
# Removed for brevity # Removed for brevity
providerConfigRef: user-keys providerConfigRef:
name: user-keys
kind: ProviderConfig
``` ```
```yaml {label="pc"} ```yaml {label="pc"}
apiVersion: aws.m.crossplane.io/v1beta1 apiVersion: aws.m.upbound.io/v1beta1
kind: ProviderConfig kind: ProviderConfig
metadata: metadata:
namespace: default
name: user-keys name: user-keys
# Removed for brevity # Removed for brevity
``` ```
@ -405,6 +404,52 @@ different managed resources to authenticate with different credentials to the
same Provider. same Provider.
{{< /hint >}} {{< /hint >}}
#### ProviderConfig types
The AWS provider supports two types of ProviderConfig resources:
**ProviderConfig** (namespace-scoped):
```yaml
# ProviderConfig - only applies to MRs in same namespace
apiVersion: aws.m.upbound.io/v1beta1
kind: ProviderConfig
metadata:
namespace: default
name: my-config
```
**ClusterProviderConfig** (cluster-wide):
```yaml
# ClusterProviderConfig - applies to MRs across all namespaces
apiVersion: aws.m.upbound.io/v1beta1
kind: ClusterProviderConfig
metadata:
name: my-cluster-config
```
When referencing any ProviderConfig, managed resources must specify both `name` and `kind`:
```yaml
spec:
providerConfigRef:
name: my-cluster-config
kind: ClusterProviderConfig
```
```yaml
spec:
providerConfigRef:
name: my-config
kind: ProviderConfig # References namespaced ProviderConfig
```
If you omit `providerConfigRef` entirely, it defaults to:
```yaml
spec:
providerConfigRef:
name: default
kind: ClusterProviderConfig
```
<!-- vale off --> <!-- vale off -->
### writeConnectionSecretToRef ### writeConnectionSecretToRef
<!-- vale on --> <!-- vale on -->
@ -416,7 +461,7 @@ Crossplane stores these details in a Kubernetes Secret object specified by the
`writeConnectionSecretToRef` values. `writeConnectionSecretToRef` values.
For example, when creating an AWS RDS database instance with the Crossplane For example, when creating an AWS RDS database instance with the Crossplane
[community AWS provider](https://github.com/crossplane-contrib/provider-aws) [AWS provider](https://github.com/crossplane-contrib/provider-upjet-aws)
generates an endpoint, password, port and username data. The Provider saves generates an endpoint, password, port and username data. The Provider saves
these variables in the Kubernetes secret these variables in the Kubernetes secret
{{<hover label="secretname" line="10" >}}rds-secret{{</hover>}}, referenced by {{<hover label="secretname" line="10" >}}rds-secret{{</hover>}}, referenced by
@ -425,8 +470,8 @@ the
field. field.
```yaml {label="secretname",copy-lines="none"} ```yaml {label="secretname",copy-lines="none"}
apiVersion: database.aws.m.crossplane.io/v1beta1 apiVersion: rds.aws.m.upbound.io/v1beta1
kind: RDSInstance kind: Instance
metadata: metadata:
namespace: default namespace: default
name: my-rds-instance name: my-rds-instance
@ -483,15 +528,15 @@ the name `my-rds-instance` as an external resource inside the Provider's
environment. environment.
```yaml {label="external-name",copy-lines="none"} ```yaml {label="external-name",copy-lines="none"}
apiVersion: database.aws.m.crossplane.io/v1beta1 apiVersion: rds.aws.m.upbound.io/v1beta1
kind: RDSInstance kind: Instance
metadata: metadata:
namespace: default namespace: default
name: my-rds-instance name: my-rds-instance
``` ```
```shell ```shell
kubectl get rdsinstance kubectl get instance
NAME READY SYNCED EXTERNAL-NAME AGE NAME READY SYNCED EXTERNAL-NAME AGE
my-rds-instance True True my-rds-instance 11m my-rds-instance True True my-rds-instance 11m
``` ```
@ -506,8 +551,8 @@ the name {{<hover label="custom-name" line="5">}}my-custom-name{{</hover >}}
for the external resource inside AWS. for the external resource inside AWS.
```yaml {label="custom-name",copy-lines="none"} ```yaml {label="custom-name",copy-lines="none"}
apiVersion: database.aws.m.crossplane.io/v1beta1 apiVersion: rds.aws.m.upbound.io/v1beta1
kind: RDSInstance kind: Instance
metadata: metadata:
namespace: default namespace: default
name: my-rds-instance name: my-rds-instance
@ -516,7 +561,7 @@ metadata:
``` ```
```shell {copy-lines="1"} ```shell {copy-lines="1"}
kubectl get rdsinstance kubectl get instance
NAME READY SYNCED EXTERNAL-NAME AGE NAME READY SYNCED EXTERNAL-NAME AGE
my-rds-instance True True my-custom-name 11m my-rds-instance True True my-custom-name 11m
``` ```

View File

@ -82,7 +82,7 @@ metadata:
name: protect-production-database name: protect-production-database
spec: spec:
of: of:
apiVersion: rds.m.aws.m.upbound.io/v1beta1 apiVersion: rds.aws.m.upbound.io/v1beta1
kind: Instance kind: Instance
resourceRef: resourceRef:
name: my-database name: my-database

View File

@ -210,7 +210,7 @@ metadata:
name: backup-on-deletion name: backup-on-deletion
spec: spec:
watch: watch:
apiVersion: rds.aws.crossplane.io/v1alpha1 apiVersion: rds.aws.m.upbound.io/v1beta1
kind: Instance kind: Instance
# Note: Watching for deletion requires function logic # Note: Watching for deletion requires function logic
# to check deletion timestamp # to check deletion timestamp

View File

@ -16,7 +16,7 @@ logic for any external resources.
Examples of providers include: Examples of providers include:
* [Provider AWS](https://github.com/upbound/provider-aws) * [Provider AWS](https://github.com/crossplane-contrib/provider-upjet-aws)
* [Provider Azure](https://github.com/upbound/provider-azure) * [Provider Azure](https://github.com/upbound/provider-azure)
* [Provider GCP](https://github.com/upbound/provider-gcp) * [Provider GCP](https://github.com/upbound/provider-gcp)
* [Provider Kubernetes](https://github.com/crossplane-contrib/provider-kubernetes) * [Provider Kubernetes](https://github.com/crossplane-contrib/provider-kubernetes)
@ -52,15 +52,15 @@ registry with the `--registry` flag on the [Crossplane pod]({{<ref "../guides/po
{{< /hint >}} {{< /hint >}}
For example, to install the For example, to install the
[AWS Community Provider](https://github.com/crossplane-contrib/provider-aws), [AWS Provider](https://github.com/crossplane-contrib/provider-upjet-aws),
```yaml {label="install"} ```yaml {label="install"}
apiVersion: pkg.crossplane.io/v1 apiVersion: pkg.crossplane.io/v1
kind: Provider kind: Provider
metadata: metadata:
name: provider-aws name: crossplane-contrib-provider-aws-s3-s3
spec: spec:
package: xpkg.crossplane.io/crossplane-contrib/provider-aws:v0.39.0 package: xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v2.0.0
``` ```
By default, the Provider pod installs in the same namespace as Crossplane By default, the Provider pod installs in the same namespace as Crossplane
@ -86,7 +86,7 @@ For information on the specification of Provider packages read the
apiVersion: meta.pkg.crossplane.io/v1 apiVersion: meta.pkg.crossplane.io/v1
kind: Provider kind: Provider
metadata: metadata:
name: provider-aws name: crossplane-contrib-provider-aws-s3
spec: spec:
# Removed for brevity # Removed for brevity
``` ```
@ -105,14 +105,14 @@ Use the
{{<hover label="helm" line="5" >}}--set provider.packages{{</hover >}} {{<hover label="helm" line="5" >}}--set provider.packages{{</hover >}}
argument with `helm install`. argument with `helm install`.
For example, to install the AWS Community Provider, For example, to install the AWS S3 Provider,
```shell {label="helm"} ```shell {label="helm"}
helm install crossplane \ helm install crossplane \
crossplane-stable/crossplane \ crossplane-stable/crossplane \
--namespace crossplane-system \ --namespace crossplane-system \
--create-namespace \ --create-namespace \
--set provider.packages='{xpkg.crossplane.io/crossplane-contrib/provider-aws:v0.39.0}' --set provider.packages='{xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v2.0.0}'
``` ```
### Install offline ### Install offline
@ -137,9 +137,9 @@ and repeatable installations.
apiVersion: pkg.crossplane.io/v1 apiVersion: pkg.crossplane.io/v1
kind: Provider kind: Provider
metadata: metadata:
name: provider-aws name: crossplane-contrib-provider-aws-s3
spec: spec:
package: xpkg.crossplane.io/crossplane-contrib/provider-aws@sha256:ee6bece46dbb54cc3f0233961f5baac317fa4e4a81b41198bdc72fc472d113d0 package: xpkg.crossplane.io/crossplane-contrib/provider-aws-s3@sha256:ee6bece46dbb54cc3f0233961f5baac317fa4e4a81b41198bdc72fc472d113d0
``` ```
{{< /hint >}} {{< /hint >}}
@ -174,7 +174,7 @@ configuration.
apiVersion: pkg.crossplane.io/v1 apiVersion: pkg.crossplane.io/v1
kind: Provider kind: Provider
metadata: metadata:
name: provider-aws name: crossplane-contrib-provider-aws-s3
spec: spec:
packagePullPolicy: Always packagePullPolicy: Always
# Removed for brevity # Removed for brevity
@ -203,7 +203,7 @@ For example, to change the upgrade behavior to require manual upgrades, set
apiVersion: pkg.crossplane.io/v1 apiVersion: pkg.crossplane.io/v1
kind: Provider kind: Provider
metadata: metadata:
name: provider-aws name: crossplane-contrib-provider-aws-s3
spec: spec:
revisionActivationPolicy: Manual revisionActivationPolicy: Manual
# Removed for brevity # Removed for brevity
@ -237,7 +237,7 @@ For example, to change the default setting and store 10 revisions use
apiVersion: pkg.crossplane.io/v1 apiVersion: pkg.crossplane.io/v1
kind: Provider kind: Provider
metadata: metadata:
name: provider-aws name: crossplane-contrib-provider-aws-s3
spec: spec:
revisionHistoryLimit: 10 revisionHistoryLimit: 10
# Removed for brevity # Removed for brevity
@ -268,7 +268,7 @@ For example, to use the secret named
apiVersion: pkg.crossplane.io/v1 apiVersion: pkg.crossplane.io/v1
kind: Provider kind: Provider
metadata: metadata:
name: provider-aws name: crossplane-contrib-provider-aws-s3
spec: spec:
packagePullSecrets: packagePullSecrets:
- name: example-secret - name: example-secret
@ -295,7 +295,7 @@ For example, to disable dependency resolution configure
apiVersion: pkg.crossplane.io/v1 apiVersion: pkg.crossplane.io/v1
kind: Provider kind: Provider
metadata: metadata:
name: provider-aws name: crossplane-contrib-provider-aws-s3
spec: spec:
skipDependencyResolution: true skipDependencyResolution: true
# Removed for brevity # Removed for brevity
@ -363,7 +363,7 @@ version, configure
apiVersion: pkg.crossplane.io/v1 apiVersion: pkg.crossplane.io/v1
kind: Provider kind: Provider
metadata: metadata:
name: provider-aws name: crossplane-contrib-provider-aws-s3
spec: spec:
ignoreCrossplaneConstraints: true ignoreCrossplaneConstraints: true
# Removed for brevity # Removed for brevity
@ -382,8 +382,8 @@ For example, this installation of the Getting Started Configuration is
```shell {copy-lines="1"} ```shell {copy-lines="1"}
kubectl get providers kubectl get providers
NAME INSTALLED HEALTHY PACKAGE AGE NAME INSTALLED HEALTHY PACKAGE AGE
provider-aws-s3 True False xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v1.21.1 12s crossplane-contrib-provider-aws-s3 True False xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v2.0.0 12s
``` ```
To see more information on why the Provider isn't `HEALTHY` use To see more information on why the Provider isn't `HEALTHY` use
@ -396,7 +396,7 @@ API Version: pkg.crossplane.io/v1
Kind: ProviderRevision Kind: ProviderRevision
Spec: Spec:
Desired State: Active Desired State: Active
Image: xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v1.21.1 Image: xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v2.0.0
Revision: 1 Revision: 1
Status: Status:
Conditions: Conditions:
@ -434,10 +434,10 @@ View the `ProviderRevisions` with
```shell {label="getPR",copy-lines="1"} ```shell {label="getPR",copy-lines="1"}
kubectl get providerrevisions kubectl get providerrevisions
NAME HEALTHY REVISION IMAGE STATE DEP-FOUND DEP-INSTALLED AGE NAME HEALTHY REVISION IMAGE STATE DEP-FOUND DEP-INSTALLED AGE
provider-aws-s3-dbc7f981d81f True 1 xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v1.21.1 Active 1 1 10d provider-aws-s3-dbc7f981d81f True 1 xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v2.0.0 Active 1 1 10d
provider-nop-552a394a8acc True 2 xpkg.crossplane.io/crossplane-contrib/provider-nop:v0.3.0 Active 11d provider-nop-552a394a8acc True 2 xpkg.crossplane.io/crossplane-contrib/provider-nop:v0.3.0 Active 11d
provider-nop-7e62d2a1a709 True 1 xpkg.crossplane.io/crossplane-contrib/provider-nop:v0.2.0 Inactive 13d provider-nop-7e62d2a1a709 True 1 xpkg.crossplane.io/crossplane-contrib/provider-nop:v0.2.0 Inactive 13d
crossplane-contrib-provider-family-aws-710d8cfe9f53 True 1 xpkg.crossplane.io/crossplane-contrib/provider-family-aws:v1.21.1 Active 10d crossplane-contrib-provider-family-aws-710d8cfe9f53 True 1 xpkg.crossplane.io/crossplane-contrib/provider-family-aws:v2.0.0 Active 10d
``` ```
By default Crossplane keeps a single By default Crossplane keeps a single
@ -480,7 +480,7 @@ During the install a Provider report `INSTALLED` as `True` and `HEALTHY` as
```shell {copy-lines="1"} ```shell {copy-lines="1"}
kubectl get providers kubectl get providers
NAME INSTALLED HEALTHY PACKAGE AGE NAME INSTALLED HEALTHY PACKAGE AGE
crossplane-contrib-provider-aws True Unknown xpkg.crossplane.io/crossplane-contrib/provider-aws:v0.39.0 63s crossplane-contrib-provider-aws-s3 True Unknown xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v2.0.0 63s
``` ```
After the Provider install completes and it's ready for use the `HEALTHY` status After the Provider install completes and it's ready for use the `HEALTHY` status
@ -489,7 +489,7 @@ reports `True`.
```shell {copy-lines="1"} ```shell {copy-lines="1"}
kubectl get providers kubectl get providers
NAME INSTALLED HEALTHY PACKAGE AGE NAME INSTALLED HEALTHY PACKAGE AGE
crossplane-contrib-provider-aws True True xpkg.crossplane.io/crossplane-contrib/provider-aws:v0.39.0 88s crossplane-contrib-provider-aws-s3 True True xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v2.0.0 88s
``` ```
{{<hint "important" >}} {{<hint "important" >}}
@ -657,7 +657,7 @@ kind: Provider
metadata: metadata:
name: provider-gcp-iam name: provider-gcp-iam
spec: spec:
package: xpkg.crossplane.io/crossplane-contrib/provider-gcp-iam:v1.12.1 package: xpkg.crossplane.io/crossplane-contrib/provider-gcp-iam:v2.0.0
runtimeConfigRef: runtimeConfigRef:
name: enable-ess name: enable-ess
--- ---
@ -819,9 +819,10 @@ the key named
{{<hover label="providerconfig" line="10" >}}aws-creds{{</hover >}}. {{<hover label="providerconfig" line="10" >}}aws-creds{{</hover >}}.
<!-- vale write-good.Weasel = YES --> <!-- vale write-good.Weasel = YES -->
```yaml {label="providerconfig"} ```yaml {label="providerconfig"}
apiVersion: aws.crossplane.io/v1beta1 apiVersion: aws.m.upbound.io/v1beta1
kind: ProviderConfig kind: ProviderConfig
metadata: metadata:
namespace: default
name: aws-provider name: aws-provider
spec: spec:
credentials: credentials:
@ -839,6 +840,52 @@ Read the documentation on a specific Provider for instructions on configuring
authentication for that Provider. authentication for that Provider.
{{< /hint >}} {{< /hint >}}
#### ProviderConfig types
The AWS provider supports two types of ProviderConfig resources:
**ProviderConfig** (namespace-scoped):
```yaml
apiVersion: aws.m.upbound.io/v1beta1
kind: ProviderConfig
metadata:
namespace: default
name: my-config
# Applies only to MRs in the same namespace
```
**ClusterProviderConfig** (cluster-wide):
```yaml
apiVersion: aws.m.upbound.io/v1beta1
kind: ClusterProviderConfig
metadata:
name: my-cluster-config
# Applies to MRs across all namespaces
```
When referencing any ProviderConfig, managed resources must specify both `name` and `kind`:
```yaml
spec:
providerConfigRef:
name: my-cluster-config
kind: ClusterProviderConfig
```
```yaml
spec:
providerConfigRef:
name: my-config
kind: ProviderConfig # References namespaced ProviderConfig
```
If you omit `providerConfigRef` entirely, it defaults to:
```yaml
spec:
providerConfigRef:
name: default
kind: ClusterProviderConfig
```
<!-- vale write-good.TooWordy = NO --> <!-- vale write-good.TooWordy = NO -->
<!-- allow multiple --> <!-- allow multiple -->
ProviderConfig objects apply to individual Managed Resources. A single ProviderConfig objects apply to individual Managed Resources. A single
@ -855,9 +902,10 @@ For example, two AWS ProviderConfigs, named
use different Kubernetes secrets. use different Kubernetes secrets.
```yaml {label="user"} ```yaml {label="user"}
apiVersion: aws.crossplane.io/v1beta1 apiVersion: aws.m.upbound.io/v1beta1
kind: ProviderConfig kind: ProviderConfig
metadata: metadata:
namespace: default
name: user-keys name: user-keys
spec: spec:
credentials: credentials:
@ -869,9 +917,10 @@ spec:
``` ```
```yaml {label="admin"} ```yaml {label="admin"}
apiVersion: aws.crossplane.io/v1beta1 apiVersion: aws.m.upbound.io/v1beta1
kind: ProviderConfig kind: ProviderConfig
metadata: metadata:
namespace: default
name: admin-keys name: admin-keys
spec: spec:
credentials: credentials:
@ -889,15 +938,17 @@ resource using the
{{<hover label="user-bucket" line="9" >}}user-keys{{< /hover >}} ProviderConfig. {{<hover label="user-bucket" line="9" >}}user-keys{{< /hover >}} ProviderConfig.
```yaml {label="user-bucket"} ```yaml {label="user-bucket"}
apiVersion: s3.aws.upbound.io/v1beta1 apiVersion: s3.aws.m.upbound.io/v1beta1
kind: Bucket kind: Bucket
metadata: metadata:
namespace: default
name: user-bucket name: user-bucket
spec: spec:
forProvider: forProvider:
region: us-east-2 region: us-east-2
providerConfigRef: providerConfigRef:
name: user-keys name: user-keys
kind: ProviderConfig
``` ```
This creates a second {{<hover label="admin-bucket" line="2" >}}Bucket{{< /hover >}} This creates a second {{<hover label="admin-bucket" line="2" >}}Bucket{{< /hover >}}
@ -905,13 +956,15 @@ resource using the
{{<hover label="admin-bucket" line="9" >}}admin-keys{{< /hover >}} ProviderConfig. {{<hover label="admin-bucket" line="9" >}}admin-keys{{< /hover >}} ProviderConfig.
```yaml {label="admin-bucket"} ```yaml {label="admin-bucket"}
apiVersion: s3.aws.upbound.io/v1beta1 apiVersion: s3.aws.m.upbound.io/v1beta1
kind: Bucket kind: Bucket
metadata: metadata:
name: user-bucket namespace: default
name: admin-bucket
spec: spec:
forProvider: forProvider:
region: us-east-2 region: us-east-2
providerConfigRef: providerConfigRef:
name: admin-keys name: admin-keys
kind: ProviderConfig
``` ```

View File

@ -215,14 +215,6 @@ watch-rds@{animate: true}
Follow [Get Started with Managed Resources]({{<ref "../get-started/get-started-with-managed-resources">}}) Follow [Get Started with Managed Resources]({{<ref "../get-started/get-started-with-managed-resources">}})
to see how managed resources work. to see how managed resources work.
{{<hint "note">}}
AWS managed resources fully support Crossplane v2.
<!-- vale gitlab.FutureTense = NO -->
Maintainers are actively working to update managed resources for other systems including Azure,
GCP, Terraform, Helm, GitHub, etc to support Crossplane v2.
<!-- vale gitlab.FutureTense = YES -->
{{</hint>}}
### Operations ### Operations

View File

@ -3,6 +3,7 @@ Adler32
apiGroups apiGroups
clampMax clampMax
clampMin clampMin
ClusterProviderConfig
ClusterUsages ClusterUsages
CombineFromComposite CombineFromComposite
CombineFromEnvironment CombineFromEnvironment