operator-framework / deppy

Deppy: The dependency resolver for Kubernetes
Apache License 2.0
14 stars 21 forks source link

deppy

License Go Report Card Slack Channel

Deppy: The dependency resolver for Kubernetes

Introduction

Deppy is a Kubernetes API that runs on- or off-cluster for resolving constraints over catalogs of RukPak bundles. Deppy is part of the next iteration of OLM and was first introduced here. The initial goal of the project is to remove the dependency manager from the Operator Lifecycle Manager (OLM) and make it its own generic component.

Concepts

Within the context of a package manager, there are a set of expectations from the user that the package manager should never:

The job of a resolver, given a set of entities to install and the constraints for each those entities, is to identify whether or not those entities are compatible. In the case of Deppy, those entities can be things that are intended to be installed (e.g. bundles) or default global constraints. The constraints for an entity define any dependencies the entity has or any other requirement for the entity, for example a version to pin the entity to.

Examples

Successful Resolution

The user would like to install packages A and B that have the following dependencies:

graph TD
 A[A v0.1.0] --> C[C v0.1.0]
 B[B latest] --> D[D latest]

Additionally, the user would like to pin the version of A to v0.1.0.

Entities and Constraints passed to Deppy

Entities:

Constraints:

Deppy Output

Resolution Set:

Unsuccessful Resolution

The user would like to install packages A and B that have the following dependencies:

graph TD
 A[A v0.1.0] --> C[C v0.1.0]
 B[B latest] --> D[C v0.2.0]

Additionally, the user would like to pin the version of A to v0.1.0.

Entities and Constraints passed to Deppy

Entities:

Constraints:

Deppy Output

Resolution Set:

Contributing

The Deppy project is community driven and is part of the broader Kubernetes ecosystem. New contributors are welcome and highly encouraged. See the contributing guidelines to get started.

This project uses GitHub issues and milestones to prioritize and keep track of ongoing work. To see the current state of the project, checkout the open issues and recent milestones.

Getting Started

Installation

How to install this project

Quickstart

How to quickly get started with this project