hypper

module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 18, 2021 License: Apache-2.0

README

hypper

CI

pronounced hip-er.

A Kubernetes package manager for cluster admins that's built on top of Helm and charts.

Get in touch

Want to contribute or talk with use about hypper? Leave us an issue on github or join us on the rancher-users slack.

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.

Annotations

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.

Roadmap

  • 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

License

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

http://www.apache.org/licenses/LICENSE-2.0

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.

Directories

Path Synopsis
cmd
internal
pkg
action
Package action contains the logic for each action that hypper can perform.
Package action contains the logic for each action that hypper can perform.
cli
Package cli describes the operating environment for the hypper CLI.
Package cli describes the operating environment for the hypper CLI.
eyecandy
Package eyecandy provides common methods to print messages with emojis
Package eyecandy provides common methods to print messages with emojis
hypperpath
Package hypperpath calculates filesystem paths to Hypper's configuration, cache and data.
Package hypperpath calculates filesystem paths to Hypper's configuration, cache and data.
hypperpath/xdg
Package xdg holds constants pertaining to XDG Base Directory Specification.
Package xdg holds constants pertaining to XDG Base Directory Specification.
lint/rules
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.
repo
Package repo implements the Hypper Chart Repository.
Package repo implements the Hypper Chart Repository.
search
Package search Provides client-side repository searching Currently the helm search is implemented under the cmd dir which means that most of its options cant be used in a composite struct to build on top of them Our implementation but extracts it into a package so it can be reused and composed over Search supports building an in-memory search index based on the contents of multiple repositories, and then using string matching or regular expressions to find matches based on the name, version or annotations.
Package search Provides client-side repository searching Currently the helm search is implemented under the cmd dir which means that most of its options cant be used in a composite struct to build on top of them Our implementation but extracts it into a package so it can be reused and composed over Search supports building an in-memory search index based on the contents of multiple repositories, and then using string matching or regular expressions to find matches based on the name, version or annotations.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL