A Kubernetes package manager for cluster admins that's built on top of Helm and charts.
Get in touch
Hypper vs Helm
Helm is a package manager that targets application operation. It is designed with application operators in mind rather than cluster operators. Applications operators may have restrictions on the namespaces they can install workloads into and see. The clusters used by application operators may be multi-tenant and some application operators may install the same application multiple times into a namespace. Helm handles these forms of cases well and makes assumptions that these happen. Cluster operator use cases are generally out of scope for Helm.
Hypper builds upon Helm and charts to handle package management with cluster operators in mind. Think of it like installing packages onto a single Linux server where different packages can typically know where each other are. Hypper is designed to work with shared dependencies. That is, dependencies installed once on a cluster that more than one different chart can depend on. This is in addition to the dependencies specified the Helm way that are tied to an individual chart. Hypper works best with repositories of charts designed to work together.
The additional information Hypper needs is specified via annotations in the
Chart.yaml file. For example, a chart can specify a namespace and release name so that it can be installed into a well known location. This enables releases of other charts to know where to find it. Those annotations are:
annotations: hypper.cattle.io/release-name: example-name hypper.cattle.io/namespace: example-namespace
Shared dependencies also happen via annotation.
annotations: hypper.cattle.io/shared-dependencies: | - name: fleet version: "^0.3.500" repository: "https://rancher-sandbox.github.io/hypper-charts/repo" - name: rancher-tracing version: "^1.20.002" repository: "https://rancher-sandbox.github.io/hypper-charts/repo"
Notice that the value is a multi-line string (noted by the
| after the
:). Hypper parses the value as YAML. The other information looks similar to Helms existing dependencies, which Hypper supports. Shared dependencies are handled differently. Instead of being installed along with the charts resources they are installed as separate charts before this chart is installed. These charts are installed as their own releases with their own lifecycles.
- Install charts to a chart specified release name and namespace (via chart annotations)
- Install share dependencies (those that more than one application may rely on)
- Install optional/suggests dependencies
- List outdated dependencies
- Ensure all versions resolve correctly across dependencies
Copyright (c) 2020-2021 SUSE, LLC
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Package action contains the logic for each action that hypper can perform.
|Package action contains the logic for each action that hypper can perform.|
Package cli describes the operating environment for the hypper CLI.
|Package cli describes the operating environment for the hypper CLI.|
Package eyecandy provides common methods to print messages with emojis
|Package eyecandy provides common methods to print messages with emojis|
Package hypperpath calculates filesystem paths to Hypper's configuration, cache and data.
|Package hypperpath calculates filesystem paths to Hypper's configuration, cache and data.|
Package xdg holds constants pertaining to XDG Base Directory Specification.
|Package xdg holds constants pertaining to XDG Base Directory Specification.|
Package rules contains all the rules that hypper will run against a chart when hypper lint is run.
|Package rules contains all the rules that hypper will run against a chart when hypper lint is run.|
Package repo implements the Hypper Chart Repository.
|Package repo implements the Hypper Chart Repository.|
Package search provides client-side repository searching.
|Package search provides client-side repository searching.|