Creating and Pushing Packages

This section covers creating and pushing packages to the Upbound Marketplace. For information about installing packages read the Crossplane Packages section.

Package types

Crossplane supports two package types, Configurations and Providers.

  • Configuration packages combine Crossplane Composite Resource Definitions, Compositions and metadata.
  • Provider packages combine a Kubernetes controller container, associated Custom Resource Definitions (CRDs) and metadata. The Crossplane open source AWS provider package is an example a provider’s metadata and CRDs.


Build a package

Build a package using up xpkg build.

The up xpkg build command expects a crossplane.yaml file to provide the metadata for the package file.

The default name is the value in the crossplane.yaml file.

up xpkg build
xpkg saved to /home/vagrant/pkg/test-config-15ab02d92a30.xpkg

Provide a specific package name with up xpkg build --name <package name>.

By default up xpkg build saves the package to the current directory. Specify a specific location with up xpkg build -o <path>.

The up xpkg build command reference contains all available options.

Push a package

Before pushing a package you must login to the Upbound Marketplace using up login.

Create a repository

Upbound hosts packages in an Upbound repository. Create a repository with the up repository create command.

For example, to create a repository called my-repo

up repository create my-repo
upbound-docs/my-repo created
All repositories are private by default.

View any existing repositories with up repository list.

up repo list
NAME         TYPE            PUBLIC   UPDATED
my-repo      configuration   false    23h

Push a package to the repository

Push a package to the Upbound Marketplace using the up xpkg push command.

The up xpkg push command requires:

  • The repository to push a package to.
  • A package version tag. The package version tag is a semantic versioning number determining package upgrades and dependency requirements.

The push command syntax is
up xpkg push <repoository>:<version tag> -f <xpkg file>.

For example, to push a package with the following parameters:

  • Repository upbound-docs/my-repo
  • Version v0.2
  • Package file named my-package.xpkg

Use the following up xpkg push command:

up xpkg push upbound-docs/my-repo:v0.2 -f my-package.xpkg
xpkg pushed to upbound-docs/my-repo:v0.2
You need to login to the Marketplace to see packages in private repositories.

The package is now available from the Upbound Marketplace. View the Marketplace listing at:<package_type>/<organization or user>/<repository>/

For example, the Upbound AWS Official Provider is a provider package in the upbound organization’s provider-aws repository. The package address is

Making packages public

Upbound reviews all public packages. To request Upbound to make a package public email or message the #Upbound channel in the Crossplane Slack.

Upbound needs the following information before considering a package:

  • Public public Git repository of the package.
  • The Upbound account to list as an owner and point of contact.
  • The Upbound repository name.