Upbound packages each of the official providers for Amazon AWS, Google GCP and Microsoft Azure as a “family.”
A provider family organizes the provider’s resources into unique packages, organized by a common set of services.
Provider families reduce the resources required to install and run providers and improve performance over a single monolithic provider.
Provider family requirements
Provider families have the following requirements and restrictions:
- Crossplane version 1.12.1 or UXP version 1.12.1-up.1 or later
- Remove existing monolithic providers matching the new provider family.
If a provider family installs into a cluster with an existing monolithic provider, the family provider doesn’t take effect.
The monolithic provider continues to own all provider resource endpoints until it’s removed.
For information on migrating from monolithic providers to provider families read the family providers migration guide
Installing a provider family
Team
subscription to Upbound and a package pull secret to be placed on your control plane. Learn more in the section below.Installing a provider family is identical to installing other Crossplane providers. Create a Provider object with the provider package to install.
For example, to install the provider family AWS S3 provider:
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: upbound-provider-aws
spec:
package: xpkg.upbound.io/upbound/provider-aws-s3:v1.16.0
Install multiple services with multiple Provider objects. For example to install both AWS S3 and EC2 providers:
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: upbound-provider-aws-s3
spec:
package: xpkg.upbound.io/upbound/provider-aws-s3:v1.16.0
---
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: upbound-provider-aws-ec2
spec:
package: xpkg.upbound.io/upbound/provider-aws-ec2:v1.16.0
To install Providers in an offline environment set
in
the Provider.
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: upbound-provider-aws-s3
spec:
package: xpkg.upbound.io/upbound/provider-aws-s3:v1.16.0
skipDependencyResolution: true
When installing multiple providers, apply skipDependencyResolution
to every
Provider.
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: upbound-provider-aws-s3
spec:
package: xpkg.upbound.io/upbound/provider-aws-s3:v1.16.0
skipDependencyResolution: true
---
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: upbound-provider-aws-ec2
spec:
package: xpkg.upbound.io/upbound/provider-aws-ec2:v1.16.0
skipDependencyResolution: true
View the installed providers with kubectl get providers
kubectl get providers
NAME INSTALLED HEALTHY PACKAGE AGE
upbound-provider-aws-ec2 True True xpkg.upbound.io/upbound/provider-aws-ec2:v1.16.0 25m
upbound-provider-aws-s3 True True xpkg.upbound.io/upbound/provider-aws-s3:v1.16.0 25m
upbound-provider-family-aws True True xpkg.upbound.io/upbound/provider-family-aws:v1.16.0 24m
The first provider installed of a family also installs an extra
Provider.
The provider-family
provider manages the ProviderConfig
for all other providers in the same family.
Each family provider defines a dependency on the latest available version of the corresponding provider-family
,
which is automatically resolved and installed by the Crossplane package manager.
Hence, when you install an older version of a family provider, you can expect to receive newer versions of the
provider-family
provider, and it is safe to ignore this version mismatch.
If you still want to control the version of the provider-family
, consider using the
option as described in the
Install Providers in an offline environment section above.
Using ControllerConfigs
The ControllerConfig applies settings to a Provider Pod. With family providers each provider is a unique Pod running in the cluster.
When using ControllerConfigs with family providers, each provider needs a ControllerConfig applied.
For example, both providers reference the same
.
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: upbound-provider-aws-s3
spec:
package: xpkg.upbound.io/upbound/provider-aws-s3:v1.16.0
controllerConfigRef:
name: my-controllerconfig
---
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: upbound-provider-aws-ec2
spec:
package: xpkg.upbound.io/upbound/provider-aws-ec2:v1.16.0
controllerConfigRef:
name: my-controllerconfig
---
apiVersion: pkg.crossplane.io/v1alpha1
kind: ControllerConfig
metadata:
name: my-controllerconfig