Crossplane Packages
Crossplane Packages are a portable and reusable method to distribute Crossplane settings. Packages are Open Container Initiative (OCI
) compatible containers. Packages support versioning and dependency mapping.
This section discusses installing Crossplane packages. For information about building and publishing packages read the Creating and Publishing Packages section.
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 andCRDs
.
Install packages using Kubernetes manifest files for the pkg.crossplane.io
API group.
Packages hosted in the Upbound Marketplace are available from thexpkg.upbound.io
domain.
Install a configuration package using a Configuration
Kubernetes manifest. For example, this manifest installs the Upbound “AWS reference platform.”
Verify the configuration installation with kubectl get pkgrev
|
|
Install a provider package using a Provider
Kubernetes manifest. For example, this manifest installs the open source Crossplane community provider for AWS.
Upbound Official Providers require aPackagePullSecret
to authenticate to the Upbound Marketplace.
The Authentication section contains more information about using and generating secrets for Official Providers.
Apply the manifest with kubectl apply -f
.
Use kubectl get providers
to view the installed provider.
Private Upbound Marketplace repositories and Official Providers require authentication to install.
You can install packages that require authentication in one of two methods:
Updating the
crossplane
service account to use an image pull secret. This method updates thecrossplane
service account to use an image pull secret across all Crossplane related authentication requests.Using a
packagePullSecret
in a Kubernetes manifest.
This method applies an image pull secret as part of a single Kubernetes manifest to the package.
The recommended authentication method depends on the specific package and its dependencies.
Use the following table to determine which authentication method to use.
Public Dependencies | Private Dependencies | |
---|---|---|
Public Package Repository | No authentication required. | Update the crossplane service account. |
Private Package Repository | Use a packagePullSecret . | Update the crossplane service account. |
Some packages include dependencies of other packages to install. For example, a configuration package may include a provider package as a dependency.
packagePullSecrets
applied to aConfiguration
don’t apply to the dependencies. If a package’s dependencies include Official Providers or resources from another private repository you must patch thecrossplane
service account.View dependencies on the package listing in the Marketplace.
Crossplane uses the crossplane
service account to download and install the dependent resources. Patching the crossplane
service account allows Crossplane to use the packagePullSecret
across all dependent resources.
To patch the service account use the following kubectl patch
command.
If you didn’t install Upbound Universal Crossplane in the defaultupbound-system
namespace, change the-n upbound-system
command to match the UXP namespace.
Use kubectl describe serviceaccount crossplane -n upbound-system
to verify the service account’s Image Pull secret
updated.
|
|
Read the Authentication section for more information on using secrets with the Marketplace.
To provide authentication information add a spec.packagePullSecret
to the package install manifest. For example, to add a packagePullSecret
to the AWS reference platform manifest:
If you manually created a Kubernetes secret the secret must be in theupbound-system
namespace.
Thespec.packagePullSecrets.name
must match the name of the Kubernetes secret.