Providers

Providers allow Upbound to provision infrastructure on an external service. Providers handle communication between your Upbound control plane and the external resource, like AWS, GCP or Azure. Providers capture the external resources they can create as an API endpoint and result in managed resources.

Upbound Marketplace

The Upbound Marketplace is the central repository for provider information. Review your provider reference documentation here to determine what specific resources you need to create or the provider family group to look for.

The Marketplace contains three provider tiers:

Provider LevelDescription
Upbound Official
Developed, maintained, and fully supported by Upbound. They undergo testing, security audits, and follow Upbound’s best practices to ensure high reliability and enterprise-grade support.
Partner
🏅
Developed and maintained by trusted partners in collaboration with Upbound. They follow best practices and have some level of verification, but the partner provides long-term maintenance and support.
Community
🌍
Developed and maintained by the open source community. They may not be officially verified by Upbound, and their maintenance and support depend on community contributors.

Provider families

The Marketplace segments the AWS, Azure, and GCP providers into distinct resource areas called provider families. For instance, the provider-family-aws handles the ProviderConfig for your deployments, but sub-providers like provider-aws-s3 manages individual S3 resources. When you install a sub-provider, the root family provider is also installed automatically.

Install a Provider

You can install providers into your control plane project as a dependency or you can use Helm to deploy directly to an Upbound control plane.

up CLI

In your control plane project file, you can add your providers with the up add dependency command.

up add dependency xpkg.upbound.io/upbound/provider-aws-s3:v1.16.0

In your upbound.yaml file, the provider information is in the spec.dependsOn value:

apiVersion: meta.dev.upbound.io/v1alpha1
kind: Project
metadata:
  name: <projectName>
spec:
  dependsOn:
  - provider: xpkg.upbound.io/upbound/provider-aws-s3
    version: v1.16.0
  description: This is where you can describe your project.
  license: Apache-2.0
  maintainer: Upbound User <user@example.com>
  readme: |
    This is where you can add a readme for your project.    
  repository: xpkg.upbound.io/<userOrg>/<userProject>

Control plane creation

You can manually install a provider in your control plane with a Provider manifest and kubectl apply.

cat <<EOF | kubectl apply -f -
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
  name: provider-aws-s3
spec:
  package: xpkg.upbound.io/upbound/provider-aws-s3:<version>
EOF