Sync latest master -> v2.0

Signed-off-by: Nic Cope <nicc@rk0n.org>
This commit is contained in:
Nic Cope 2025-08-13 12:05:42 -07:00
parent 8f06000374
commit 77f96231dc
11 changed files with 265 additions and 172 deletions

View File

@ -78,7 +78,7 @@ metadata:
status:
bucketRegion: us-east-2
---
apiVersion: s3.aws.upbound.io/v1beta1
apiVersion: s3.aws.m.upbound.io/v1beta1
kind: Bucket
metadata:
annotations:
@ -86,6 +86,7 @@ metadata:
generateName: test-xrender-
labels:
crossplane.io/composite: test-xrender
namespace: default
ownerReferences:
- apiVersion: nopexample.org/v1
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
[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
{{< table "table table-sm table-striped">}}
@ -522,7 +523,7 @@ already installed in Crossplane.
For example, to update to the latest version of the
[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 -->
@ -746,52 +747,52 @@ Configuration/platform-ref-aws
├─ ConfigurationRevision/platform-ref-aws-9ad7b5db2899 v0.9.0 - True Active HealthyPackageRevision
├─ Configuration/upbound-configuration-aws-network v0.7.0 True True - HealthyPackageRevision
│ ├─ ConfigurationRevision/upbound-configuration-aws-network-97be9100cfe1 v0.7.0 - True Active HealthyPackageRevision
│ ├─ Provider/upbound-provider-aws-ec2 v0.47.0 True True - HealthyPackageRevision
│ │ ├─ ProviderRevision/upbound-provider-aws-ec2-cfeb0cd0f1d2 v0.47.0 - True Active HealthyPackageRevision
│ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision
│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision
│ ├─ Provider/upbound-provider-aws-ec2 v2.0.0 True True - HealthyPackageRevision
│ │ ├─ ProviderRevision/upbound-provider-aws-ec2-cfeb0cd0f1d2 v2.0.0 - True Active HealthyPackageRevision
│ │ └─ Provider/upbound-provider-family-aws v2.0.0 True True - 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
│ └─ FunctionRevision/upbound-function-patch-and-transform-a2f88f8d8715 v0.2.1 - True Active HealthyPackageRevision
├─ Configuration/upbound-configuration-aws-database v0.5.0 True True - HealthyPackageRevision
│ ├─ ConfigurationRevision/upbound-configuration-aws-database-3112f0a765c5 v0.5.0 - True Active HealthyPackageRevision
│ ├─ Provider/upbound-provider-aws-rds v0.47.0 True True - HealthyPackageRevision
│ │ ├─ ProviderRevision/upbound-provider-aws-rds-58f96aa9fc4b v0.47.0 - True Active HealthyPackageRevision
│ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision
│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision
│ ├─ Provider/upbound-provider-aws-rds v2.0.0 True True - HealthyPackageRevision
│ │ ├─ ProviderRevision/upbound-provider-aws-rds-58f96aa9fc4b v2.0.0 - True Active HealthyPackageRevision
│ │ └─ Provider/upbound-provider-family-aws v2.0.0 True True - HealthyPackageRevision
│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v2.0.0 - True Active HealthyPackageRevision
│ └─ Configuration/upbound-configuration-aws-network v0.7.0 True True - HealthyPackageRevision
│ ├─ ConfigurationRevision/upbound-configuration-aws-network-97be9100cfe1 v0.7.0 - True Active HealthyPackageRevision
│ ├─ Provider/upbound-provider-aws-ec2 v0.47.0 True True - HealthyPackageRevision
│ │ ├─ ProviderRevision/upbound-provider-aws-ec2-cfeb0cd0f1d2 v0.47.0 - True Active HealthyPackageRevision
│ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision
│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision
│ ├─ Provider/upbound-provider-aws-ec2 v2.0.0 True True - HealthyPackageRevision
│ │ ├─ ProviderRevision/upbound-provider-aws-ec2-cfeb0cd0f1d2 v2.0.0 - True Active HealthyPackageRevision
│ │ └─ Provider/upbound-provider-family-aws v2.0.0 True True - 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
│ └─ FunctionRevision/upbound-function-patch-and-transform-a2f88f8d8715 v0.2.1 - True Active HealthyPackageRevision
├─ Configuration/upbound-configuration-aws-eks v0.5.0 True True - HealthyPackageRevision
│ ├─ ConfigurationRevision/upbound-configuration-aws-eks-83c9d65f4a47 v0.5.0 - True Active HealthyPackageRevision
│ ├─ Configuration/upbound-configuration-aws-network v0.7.0 True True - HealthyPackageRevision
│ │ ├─ ConfigurationRevision/upbound-configuration-aws-network-97be9100cfe1 v0.7.0 - True Active HealthyPackageRevision
│ │ ├─ Provider/upbound-provider-aws-ec2 v0.47.0 True True - HealthyPackageRevision
│ │ │ ├─ ProviderRevision/upbound-provider-aws-ec2-cfeb0cd0f1d2 v0.47.0 - True Active HealthyPackageRevision
│ │ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision
│ │ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision
│ │ ├─ Provider/upbound-provider-aws-ec2 v2.0.0 True True - HealthyPackageRevision
│ │ │ ├─ ProviderRevision/upbound-provider-aws-ec2-cfeb0cd0f1d2 v2.0.0 - True Active HealthyPackageRevision
│ │ │ └─ Provider/upbound-provider-family-aws v2.0.0 True True - 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
│ │ └─ FunctionRevision/upbound-function-patch-and-transform-a2f88f8d8715 v0.2.1 - True Active HealthyPackageRevision
│ ├─ Provider/crossplane-contrib-provider-helm v0.16.0 True True - HealthyPackageRevision
│ │ └─ ProviderRevision/crossplane-contrib-provider-helm-b4cc4c2c8db3 v0.16.0 - True Active HealthyPackageRevision
│ ├─ Provider/crossplane-contrib-provider-kubernetes v0.10.0 True True - HealthyPackageRevision
│ │ └─ ProviderRevision/crossplane-contrib-provider-kubernetes-63506a3443e0 v0.10.0 - True Active HealthyPackageRevision
│ ├─ Provider/upbound-provider-aws-ec2 v0.47.0 True True - HealthyPackageRevision
│ │ ├─ ProviderRevision/upbound-provider-aws-ec2-cfeb0cd0f1d2 v0.47.0 - True Active HealthyPackageRevision
│ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision
│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision
│ ├─ Provider/upbound-provider-aws-eks v0.47.0 True True - HealthyPackageRevision
│ │ ├─ ProviderRevision/upbound-provider-aws-eks-641a096d79d8 v0.47.0 - True Active HealthyPackageRevision
│ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision
│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision
│ ├─ Provider/upbound-provider-aws-iam v0.47.0 True True - HealthyPackageRevision
│ │ ├─ ProviderRevision/upbound-provider-aws-iam-438eac423037 v0.47.0 - True Active HealthyPackageRevision
│ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision
│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision
│ ├─ Provider/upbound-provider-aws-ec2 v2.0.0 True True - HealthyPackageRevision
│ │ ├─ ProviderRevision/upbound-provider-aws-ec2-cfeb0cd0f1d2 v2.0.0 - True Active HealthyPackageRevision
│ │ └─ Provider/upbound-provider-family-aws v2.0.0 True True - HealthyPackageRevision
│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v2.0.0 - True Active HealthyPackageRevision
│ ├─ Provider/upbound-provider-aws-eks v2.0.0 True True - HealthyPackageRevision
│ │ ├─ ProviderRevision/upbound-provider-aws-eks-641a096d79d8 v2.0.0 - True Active HealthyPackageRevision
│ │ └─ Provider/upbound-provider-family-aws v2.0.0 True True - HealthyPackageRevision
│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v2.0.0 - True Active HealthyPackageRevision
│ ├─ Provider/upbound-provider-aws-iam v2.0.0 True True - HealthyPackageRevision
│ │ ├─ ProviderRevision/upbound-provider-aws-iam-438eac423037 v2.0.0 - True Active HealthyPackageRevision
│ │ └─ Provider/upbound-provider-family-aws v2.0.0 True True - 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
│ └─ FunctionRevision/upbound-function-patch-and-transform-a2f88f8d8715 v0.2.1 - True Active 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
├─ Configuration/upbound-configuration-aws-network v0.2.0 True True - HealthyPackageRevision
│ ├─ ConfigurationRevision/upbound-configuration-aws-network-288fcd1b88dd v0.2.0 - True Active HealthyPackageRevision
│ └─ Provider/upbound-provider-aws-ec2 v1.0.0 True True - HealthyPackageRevision
│ ├─ ProviderRevision/upbound-provider-aws-ec2-5cfd948d082f v1.0.0 - True Active HealthyPackageRevision
│ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision
│ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision
│ └─ Provider/upbound-provider-aws-ec2 v2.0.0 True True - HealthyPackageRevision
│ ├─ ProviderRevision/upbound-provider-aws-ec2-5cfd948d082f v2.0.0 - True Active HealthyPackageRevision
│ └─ Provider/upbound-provider-family-aws v2.0.0 True True - HealthyPackageRevision
│ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v2.0.0 - True Active HealthyPackageRevision
# Removed for brevity
```
@ -855,8 +856,8 @@ crossplane beta trace configuration platform-ref-aws --show-package-revisions no
NAME VERSION INSTALLED HEALTHY STATE STATUS
Configuration/platform-ref-aws v0.9.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-family-aws v1.0.0 True True - HealthyPackageRevision
│ └─ Provider/upbound-provider-aws-ec2 v2.0.0 True True - HealthyPackageRevision
│ └─ Provider/upbound-provider-family-aws v2.0.0 True True - HealthyPackageRevision
# Removed for brevity
```
@ -936,9 +937,9 @@ provider manifests of the resources to validate.
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-aws-iam
name: crossplane-contrib-provider-aws-iam
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.
@ -948,9 +949,10 @@ For example, to validate an
provide a managed resource YAML file.
```yaml {label="iamAK"}
apiVersion: iam.aws.upbound.io/v1beta1
apiVersion: iam.aws.m.upbound.io/v1beta1
kind: AccessKey
metadata:
namespace: default
name: sample-access-key-0
spec:
forProvider:
@ -964,7 +966,7 @@ resource YAML files as input.
```shell
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
```
@ -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 -
[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
[✓] iam.aws.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.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=AccessKey, sample-access-key-0 validated successfully
[✓] iam.aws.m.upbound.io/v1beta1, Kind=AccessKey, sample-access-key-1 validated successfully
[✓] iam.aws.m.upbound.io/v1beta1, Kind=User, test-user-0 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
```
@ -1082,10 +1084,10 @@ Provide the directory name and a resource YAML file to the
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] 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.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.upbound.io/v1beta1, Kind=User, test-user-1 validated successfully
[✓] iam.aws.m.upbound.io/v1beta1, Kind=AccessKey, sample-access-key-0 validated successfully
[✓] iam.aws.m.upbound.io/v1beta1, Kind=AccessKey, sample-access-key-1 validated successfully
[✓] iam.aws.m.upbound.io/v1beta1, Kind=User, test-user-0 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
```

View File

@ -36,14 +36,6 @@ This guide requires:
* 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)
{{<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
@ -151,11 +143,11 @@ customizes the settings of the AWS Provider.
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"}
apiVersion: aws.m.upbound.io/v1beta1
kind: ProviderConfig
kind: ClusterProviderConfig
metadata:
name: default
spec:
@ -176,6 +168,15 @@ kubectl apply -f providerconfig.yaml
This tells the provider to load credentials from
[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
{{<hint "note">}}

View File

@ -6,7 +6,7 @@ weight: 306
If you use the Crossplane CLI to install a `Provider` or
`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
indicator that your Crossplane CLI needs updating. In other words
Crossplane graduated some API from alpha to beta or stable and the old
@ -105,9 +105,9 @@ spec:
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-aws
name: crossplane-contrib-provider-aws-s3
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:
apiVersion: pkg.crossplane.io/v1beta1
kind: DeploymentRuntimeConfig
@ -156,9 +156,9 @@ spec:
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-aws
name: crossplane-contrib-provider-aws-s3
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:
apiVersion: pkg.crossplane.io/v1beta1
kind: DeploymentRuntimeConfig

View File

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

View File

@ -275,7 +275,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"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/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:
```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
@ -528,7 +528,7 @@ func TestRunFunction(t *testing.T) {
Desired: &fnv1.State{
Resources: map[string]*fnv1.Resource{
"xbuckets-test-bucket-a": {Resource: resource.MustStructJSON(`{
"apiVersion": "s3.aws.upbound.io/v1beta1",
"apiVersion": "s3.aws.m.upbound.io/v1beta1",
"kind": "Bucket",
"metadata": {
"annotations": {
@ -545,7 +545,7 @@ func TestRunFunction(t *testing.T) {
}
}`)},
"xbuckets-test-bucket-b": {Resource: resource.MustStructJSON(`{
"apiVersion": "s3.aws.upbound.io/v1beta1",
"apiVersion": "s3.aws.m.upbound.io/v1beta1",
"kind": "Bucket",
"metadata": {
"annotations": {
@ -727,7 +727,7 @@ kind: XBuckets
metadata:
name: example-buckets
---
apiVersion: s3.aws.upbound.io/v1beta1
apiVersion: s3.aws.m.upbound.io/v1beta1
kind: Bucket
metadata:
annotations:
@ -742,7 +742,7 @@ spec:
forProvider:
region: us-east-2
---
apiVersion: s3.aws.upbound.io/v1beta1
apiVersion: s3.aws.m.upbound.io/v1beta1
kind: Bucket
metadata:
annotations:
@ -757,7 +757,7 @@ spec:
forProvider:
region: us-east-2
---
apiVersion: s3.aws.upbound.io/v1beta1
apiVersion: s3.aws.m.upbound.io/v1beta1
kind: Bucket
metadata:
annotations:

View File

@ -187,7 +187,7 @@ async def RunFunction(self, req: fnv1.RunFunctionRequest, _: grpc.aio.ServicerCo
for name in names:
rsp.desired.resources[f"xbuckets-{name}"].resource.update(
{
"apiVersion": "s3.aws.upbound.io/v1beta1",
"apiVersion": "s3.aws.m.upbound.io/v1beta1",
"kind": "Bucket",
"metadata": {
"annotations": {
@ -261,7 +261,7 @@ class FunctionRunner(grpcv1.FunctionRunnerService):
# https://protobuf.dev/reference/python/python-generated/#map-fields
rsp.desired.resources[f"xbuckets-{name}"].resource.update(
{
"apiVersion": "s3.aws.upbound.io/v1beta1",
"apiVersion": "s3.aws.m.upbound.io/v1beta1",
"kind": "Bucket",
"metadata": {
"annotations": {
@ -399,7 +399,7 @@ class TestFunctionRunner(unittest.IsolatedAsyncioTestCase):
"xbuckets-test-bucket-a": fnv1.Resource(
resource=resource.dict_to_struct(
{
"apiVersion": "s3.aws.upbound.io/v1beta1",
"apiVersion": "s3.aws.m.upbound.io/v1beta1",
"kind": "Bucket",
"metadata": {
"annotations": {
@ -415,7 +415,7 @@ class TestFunctionRunner(unittest.IsolatedAsyncioTestCase):
"xbuckets-test-bucket-b": fnv1.Resource(
resource=resource.dict_to_struct(
{
"apiVersion": "s3.aws.upbound.io/v1beta1",
"apiVersion": "s3.aws.m.upbound.io/v1beta1",
"kind": "Bucket",
"metadata": {
"annotations": {
@ -588,7 +588,7 @@ kind: XBuckets
metadata:
name: example-buckets
---
apiVersion: s3.aws.upbound.io/v1beta1
apiVersion: s3.aws.m.upbound.io/v1beta1
kind: Bucket
metadata:
annotations:
@ -603,7 +603,7 @@ spec:
forProvider:
region: us-east-2
---
apiVersion: s3.aws.upbound.io/v1beta1
apiVersion: s3.aws.m.upbound.io/v1beta1
kind: Bucket
metadata:
annotations:
@ -618,7 +618,7 @@ spec:
forProvider:
region: us-east-2
---
apiVersion: s3.aws.upbound.io/v1beta1
apiVersion: s3.aws.m.upbound.io/v1beta1
kind: Bucket
metadata:
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).
* 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
@ -194,7 +186,7 @@ resource that created the `InternetGateway`.
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
`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.
Crossplane allows you to edit the immutable field of a managed resource, but
@ -281,12 +273,13 @@ spec:
managementPolicies: ["Observe", "Create", "Update", "Delete"]
initProvider:
scalingConfig:
- desiredSize: 1
desiredSize: 1
forProvider:
region: us-west-1
clusterName: my-cluster
scalingConfig:
- maxSize: 4
minSize: 1
maxSize: 4
minSize: 1
```
<!-- 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"}}
apiVersion: ec2.aws.m.upbound.io/v1beta1
kind: Instance
metadata:
namespace: default
name: my-instance
spec:
forProvider:
# Removed for brevity
providerConfigRef: user-keys
providerConfigRef:
name: user-keys
kind: ProviderConfig
```
```yaml {label="pc"}
apiVersion: aws.m.crossplane.io/v1beta1
apiVersion: aws.m.upbound.io/v1beta1
kind: ProviderConfig
metadata:
namespace: default
name: user-keys
# Removed for brevity
```
@ -405,6 +404,52 @@ different managed resources to authenticate with different credentials to the
same Provider.
{{< /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 -->
### writeConnectionSecretToRef
<!-- vale on -->
@ -416,7 +461,7 @@ Crossplane stores these details in a Kubernetes Secret object specified by the
`writeConnectionSecretToRef` values.
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
these variables in the Kubernetes secret
{{<hover label="secretname" line="10" >}}rds-secret{{</hover>}}, referenced by
@ -425,8 +470,8 @@ the
field.
```yaml {label="secretname",copy-lines="none"}
apiVersion: database.aws.m.crossplane.io/v1beta1
kind: RDSInstance
apiVersion: rds.aws.m.upbound.io/v1beta1
kind: Instance
metadata:
namespace: default
name: my-rds-instance
@ -483,15 +528,15 @@ the name `my-rds-instance` as an external resource inside the Provider's
environment.
```yaml {label="external-name",copy-lines="none"}
apiVersion: database.aws.m.crossplane.io/v1beta1
kind: RDSInstance
apiVersion: rds.aws.m.upbound.io/v1beta1
kind: Instance
metadata:
namespace: default
name: my-rds-instance
```
```shell
kubectl get rdsinstance
kubectl get instance
NAME READY SYNCED EXTERNAL-NAME AGE
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.
```yaml {label="custom-name",copy-lines="none"}
apiVersion: database.aws.m.crossplane.io/v1beta1
kind: RDSInstance
apiVersion: rds.aws.m.upbound.io/v1beta1
kind: Instance
metadata:
namespace: default
name: my-rds-instance
@ -516,7 +561,7 @@ metadata:
```
```shell {copy-lines="1"}
kubectl get rdsinstance
kubectl get instance
NAME READY SYNCED EXTERNAL-NAME AGE
my-rds-instance True True my-custom-name 11m
```

View File

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

View File

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

View File

@ -16,7 +16,7 @@ logic for any external resources.
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 GCP](https://github.com/upbound/provider-gcp)
* [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 >}}
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"}
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-aws
name: crossplane-contrib-provider-aws-s3-s3
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
@ -86,7 +86,7 @@ For information on the specification of Provider packages read the
apiVersion: meta.pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-aws
name: crossplane-contrib-provider-aws-s3
spec:
# Removed for brevity
```
@ -105,14 +105,14 @@ Use the
{{<hover label="helm" line="5" >}}--set provider.packages{{</hover >}}
argument with `helm install`.
For example, to install the AWS Community Provider,
For example, to install the AWS S3 Provider,
```shell {label="helm"}
helm install crossplane \
crossplane-stable/crossplane \
--namespace crossplane-system \
--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
@ -137,9 +137,9 @@ and repeatable installations.
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-aws
name: crossplane-contrib-provider-aws-s3
spec:
package: xpkg.crossplane.io/crossplane-contrib/provider-aws@sha256:ee6bece46dbb54cc3f0233961f5baac317fa4e4a81b41198bdc72fc472d113d0
package: xpkg.crossplane.io/crossplane-contrib/provider-aws-s3@sha256:ee6bece46dbb54cc3f0233961f5baac317fa4e4a81b41198bdc72fc472d113d0
```
{{< /hint >}}
@ -174,7 +174,7 @@ configuration.
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-aws
name: crossplane-contrib-provider-aws-s3
spec:
packagePullPolicy: Always
# Removed for brevity
@ -203,7 +203,7 @@ For example, to change the upgrade behavior to require manual upgrades, set
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-aws
name: crossplane-contrib-provider-aws-s3
spec:
revisionActivationPolicy: Manual
# Removed for brevity
@ -237,7 +237,7 @@ For example, to change the default setting and store 10 revisions use
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-aws
name: crossplane-contrib-provider-aws-s3
spec:
revisionHistoryLimit: 10
# Removed for brevity
@ -268,7 +268,7 @@ For example, to use the secret named
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-aws
name: crossplane-contrib-provider-aws-s3
spec:
packagePullSecrets:
- name: example-secret
@ -295,7 +295,7 @@ For example, to disable dependency resolution configure
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-aws
name: crossplane-contrib-provider-aws-s3
spec:
skipDependencyResolution: true
# Removed for brevity
@ -363,7 +363,7 @@ version, configure
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-aws
name: crossplane-contrib-provider-aws-s3
spec:
ignoreCrossplaneConstraints: true
# Removed for brevity
@ -382,8 +382,8 @@ For example, this installation of the Getting Started Configuration is
```shell {copy-lines="1"}
kubectl get providers
NAME INSTALLED HEALTHY PACKAGE AGE
provider-aws-s3 True False xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v1.21.1 12s
NAME INSTALLED HEALTHY PACKAGE AGE
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
@ -396,7 +396,7 @@ API Version: pkg.crossplane.io/v1
Kind: ProviderRevision
Spec:
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
Status:
Conditions:
@ -434,10 +434,10 @@ View the `ProviderRevisions` with
```shell {label="getPR",copy-lines="1"}
kubectl get providerrevisions
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-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
@ -480,7 +480,7 @@ During the install a Provider report `INSTALLED` as `True` and `HEALTHY` as
```shell {copy-lines="1"}
kubectl get providers
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
@ -489,7 +489,7 @@ reports `True`.
```shell {copy-lines="1"}
kubectl get providers
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" >}}
@ -657,7 +657,7 @@ kind: Provider
metadata:
name: provider-gcp-iam
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:
name: enable-ess
---
@ -819,9 +819,10 @@ the key named
{{<hover label="providerconfig" line="10" >}}aws-creds{{</hover >}}.
<!-- vale write-good.Weasel = YES -->
```yaml {label="providerconfig"}
apiVersion: aws.crossplane.io/v1beta1
apiVersion: aws.m.upbound.io/v1beta1
kind: ProviderConfig
metadata:
namespace: default
name: aws-provider
spec:
credentials:
@ -839,6 +840,52 @@ Read the documentation on a specific Provider for instructions on configuring
authentication for that Provider.
{{< /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 -->
<!-- allow multiple -->
ProviderConfig objects apply to individual Managed Resources. A single
@ -855,9 +902,10 @@ For example, two AWS ProviderConfigs, named
use different Kubernetes secrets.
```yaml {label="user"}
apiVersion: aws.crossplane.io/v1beta1
apiVersion: aws.m.upbound.io/v1beta1
kind: ProviderConfig
metadata:
namespace: default
name: user-keys
spec:
credentials:
@ -869,9 +917,10 @@ spec:
```
```yaml {label="admin"}
apiVersion: aws.crossplane.io/v1beta1
apiVersion: aws.m.upbound.io/v1beta1
kind: ProviderConfig
metadata:
namespace: default
name: admin-keys
spec:
credentials:
@ -889,15 +938,17 @@ resource using the
{{<hover label="user-bucket" line="9" >}}user-keys{{< /hover >}} ProviderConfig.
```yaml {label="user-bucket"}
apiVersion: s3.aws.upbound.io/v1beta1
apiVersion: s3.aws.m.upbound.io/v1beta1
kind: Bucket
metadata:
namespace: default
name: user-bucket
spec:
forProvider:
region: us-east-2
providerConfigRef:
name: user-keys
kind: ProviderConfig
```
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.
```yaml {label="admin-bucket"}
apiVersion: s3.aws.upbound.io/v1beta1
apiVersion: s3.aws.m.upbound.io/v1beta1
kind: Bucket
metadata:
name: user-bucket
namespace: default
name: admin-bucket
spec:
forProvider:
region: us-east-2
providerConfigRef:
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">}})
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