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 all 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
55 changes: 55 additions & 0 deletions adr/0006-uds-engine-installation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# 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

Option 1 (Install UDS Engine as a UDS Core Capability).

In adding UDS Engine as a UDS Core application, we will treat it like any other UDS Core application. This approach allows us to leverage the existing UDS Core architecture and workflows. We should be able to do any UDS Engine dev work locally without needing to add any additional `uds dev` commands for installation.

## Consequences

By going with option 1, UDS Engine will be installed as part of UDS Core. This decision will require additional work to ensure that UDS Engine is properly integrated with UDS Core. However, this approach will provide a seamless installation experience for users and maintain compatibility with the existing system architecture and workflows.

```
Loading