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.