Skip to main content

Package Operator

The package operator follows the Kubernetes Operator Pattern and has two controllers:

Package Controller​

The Package controller manages the Package resources of the cluster.

Whenever a Package has been created, changed or deleted these changes will be picked up and applied by the Package controller. The Package controller also makes sure that dependencies of a Package are met without conflicting installations, by applying the logic described here.

PackageInfo Controller​

The PackageInfo controller syncs the relevant PackageInfo resources with the manifests defined in the package repository.

Handling Package Updates​

A Package must have it's .spec.version set. This instructs the operator to install this exact version of the package. We also call this version pinning.

To update a package with a pinned version, run glasskube update <package>. This will upate the package to the latest version.

FAQ​

How is the latest version determined?

The package's versions.yaml is fetched from the repository. This file contains all available versions and a field latestVersion. Note that latestVersion might not be equal to the actual latest available version – think of a package where latestVersion = v1.1.7, while there might already be a prerelease of a new major version like v2.0.0-alpha.1.

How is a specific version of a package fetched?

Instead of fetching repository.xyz/package-name/package.yaml, the operator fetches repository.xyz/package-name/version/package.yaml

Check the package repository docs and dependency management docs for more information.