Since the beginning, with Crossplane v0.0.0-155, Crossplane has relied on Docker's Docker Hub to host the Crossplane packages, but as Bob Dylan said, "a change is gonna come."
Starting with Crossplane version 1.15.0 and going forward, Crossplane will install packages from the Upbound Marketplace at xpkg.upbound.io
instead of Docker Hub.
Why Now?
The growth of Crossplane has led to more downloads and users than ever before. This growth has been a major motivation for Crossplane to apply for graduation from the CNCF. We've seen a huge expansion in the Crossplane Provider ecosystem and growth of Composition Functions, allowing Crossplane users to apply any custom logic to their infrastructure provisioning process.
Both Providers and Composition Functions, along with Configuration Packages are containers that can be hosted on any container registry, but they are so much more than just a simple container.
Crossplane packages, or "xpkg" files, can contain a wealth of metadata, including dependencies on other packages, minimum Crossplane version requirements and the collection of custom APIs contained inside a configuration or provider package.
All of these things are critical pieces of information for Crossplane administrators but are ignored by standard container hosting platforms.
The growth of Crossplane's user base, features and the need to see this package related information has driven the Crossplane community to consider alternative options for hosting Crossplane packages.
What's Changing?
Starting with Crossplane version 1.15, by default, any packages installed by Crossplane, for example, a Provider or Configuration package dependency, will be pulled from the Upbound Marketplace at xpkg.upbound.io
. If you've already configured Crossplane to use a specific package registry, this change doesn't affect you.
Today, the Upbound Marketplace is the only container registry that can understand Crossplane package metadata and therefore provide a rich experience such as documentation for the resources and API endpoints inside a package.
By moving Crossplane to the Upbound Marketplace we gain the ability to have all this information presented front and center for any Crossplane package.
What Do I Need to Do?
For most users the change will be fully transparent. Unless you already configured Crossplane to use a specific registry, by default, Crossplane will start downloading packages from xpkg.upbound.io
instead of index.docker.io
.
For users currently hosting packages in private Docker repositories, you can still specify Docker as the location for a package in the `spec.package` field. For example, I can download my package called "myPlatform" from Docker Hub like this:
apiVersion: pkg.crossplane.io/v1
kind: Configuration
metadata:
name: myPlatform
spec:
package: index.docker.io/my-private-org/myPlatform
If your Crossplane clusters are behind a proxy or need explicit allow-list access to external resources you'll want to ensure xpkg.upbound.io
is added to your approved security policies.
You can also change the default Crossplane registry back to Docker Hub with the Crossplane pod flag --registry=index.docker.io
. You can do this when you first install Crossplane or add the configuration to a running Crossplane pod. Read the Crossplane documentation for more information on how to change configuration options on Crossplane.
For more information read Crossplane PR #5261 that changed the default behavior.
Connect with us in the community on GitHub or Slack if you have questions.