Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: uds engine installation adr #682

Merged
merged 7 commits into from
Jun 12, 2024
Merged
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions adr/0006-uds-engine-installation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# 6. UDS Engine Installation

Date: 10 June 2024

## Status

UNDER REVIEW

## Context

The goal is to establish a method for installing the UDS Engine in a cluster. The chosen approach should be efficient, user-friendly, and compatible with the existing system architecture and workflows.

## Alternatives

### 1. Install UDS Engine as a UDS Core Capability
This approach involves packaging the UDS Engine in a Zarf package with a Helm chart and deploying it as part of UDS Core.

<b>Pros:</b>
- UDS Engine is installed as part of UDS Core, ensuring seamless integration.
- The initial Engine capability depends on Pepr, which is already installed as part of UDS Core.

<b>Cons:</b>
- UDS Core includes additional capabilities that may not be necessary or desired in all scenarios.

### 2. UDS command
This alternative proposes a UDS cli command that "bootstraps" a cluster with UDS Engine, similar to how Zarf initializes a cluster with the `zarf init` command.

<b>Pros:</b>
- This method is quick and lightweight, allowing users to install only UDS Engine in the cluster.
- It's convenient for rapid development work cycles.

<b>Cons:</b>
- Users would have to manually install/deploy any other dependencies.
- There's a potential for maintaining a `uds-cli` command that rarely gets used, once it's run and UDS Engine is installed.

### 3. UDS Core and UDS Dev command
This strategy proposes integrating UDS Engine as a feature within UDS Core. Additionally, we plan to develop a `uds dev` command to facilitate the Engine's installation. The `uds dev` command is primarily intended for platform engineers who are engaged in development and testing tasks. By designating the installation command as a subcommand of `uds dev`, we underscore that this command is not intended for production environments.

<b>Pros:</b>
- This method combines the advantages of alternatives 1 and 2 while potentially eliminating the disadvantages.

<b>Cons:</b>
- It would require more work to maintain two different ways of installing UDS Engine.

## Decision

The chosen option is 3. The plan is to add the UDS Engine as a capability to UDS Core and eventually create a `uds dev` command to install UDS Engine. The initial focus will be on adding UDS Engine as a capability to UDS Core, and the need and implementation for a `uds dev` command will be evaluated later.

## Consequences

Option 3 allows us to concentrate on implementing an initial method for installing the Engine into a cluster. The Zarf package developed for the Engine can be leveraged later for the `uds dev` command. This approach enables quick installation of the Engine into a cluster and allows for the evaluation of the need for a `uds dev` command at a later stage.
Loading