Skip to content

Commit

Permalink
[KEP 0003] KEP CLI Proposal - Quick Fix (#132)
Browse files Browse the repository at this point in the history
* initial draft for 0003-kep-cli.md

* Added Kubebuilder as prerequisite. (#116)

* Simplified Docker build step in Makefile. (#117)

* Updated Mailing list link and OWNERS (#119)

* Updated Mailing list link and OWNERS

* Kudo Community.

* Update Release Process. (#120)

* Update Slack link to point to channel. (#123)

* Update Mailing List in CONTRIBUTING (#122)

* Update Mailing List in CONTRIBUTING

* Fix linebreak.

* Fix list formatting

* Add local build steps to CONTRIBUTING. (#124)

* Provide local build instructions in CONTRIBUTING>

* Remove kubebuilder dep.

* Add docker build steps.

* addressed review for 0003-kep-cli.md

* quick fixes for kep-3
  • Loading branch information
fabianbaier committed Feb 21, 2019
1 parent 8a2d040 commit 6ef05ee
Showing 1 changed file with 134 additions and 0 deletions.
134 changes: 134 additions & 0 deletions keps/0003-kep-cli.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
---
kep-number: 3
title: KEP CLI Proposal
authors:
- "@fabianbaier"
owners:
- TBD
- "@fabianbaier"
editor: TBD
creation-date: 2019-02-14
last-updated: 2019-02-20
status: implementable
---

# KEP CLI Proposal

## Table of Contents

* [KEP CLI Proposal](#kep-cli-proposal)
* [Table of Contents](#table-of-contents)
* [Summary](#summary)
* [Motivation](#motivation)
* [Goals](#goals)
* [Non-Goals](#non-goals)
* [Proposal](#proposal)
* [User Stories](#user-stories)
* [Installing a Framework](#installing-a-framework)
* [Uninstalling a Framework](#uninstalling-a-framework)
* [Listing running Instances](#listing-running-instances)
* [Getting the status of an Instance](#getting-the-status-of-an-instance)
* [Start specific plans](#start-specific-plans)
* [Get the history of Planexecutions](#get-the-history-of-planexecutions)
* [Executing into a particular Instance](#executing-into-a-particular-instance)
* [Run Framework specific commands](#run-framework-specific-commands)
* [Shell into containers of a Framework](#shell-into-containers-of-a-framework)
* [Read all combined logs of a Framework](#read-all-combined-logs-of-a-framework)
* [Implementation Details/Notes/Constraints](#implementation-detailsnotesconstraints)
* [Risks and Mitigations](#risks-and-mitigations)
* [Graduation Criteria](#graduation-criteria)
* [Implementation History](#implementation-history)

## Summary

This KEP aims to improve the end user experience via a CLI that makes the life of an operator easier. Right now,
interacting with KUDO consists of a chain of cumbersome steps that require specific business logic. By providing one
global entry point for the user (e.g. to install or interact with frameworks, get the status of current plans etc.) we
can abstract complexity from the user and drive adaptation.

## Motivation

Currently, installing your `Frameworks` requires not just the proper configuration of your YAML files but also multiple
interactions with `kubectl`. Having CLI tooling to simplify the path for cluster operators to deployment and maintenance
of installed `Frameworks` adds not just value across the community but also helps implementing best practices when using KUDO.

### Goals

The goal of this KEP is to have a CLI binary that can be used under the Kubectl Plugin System to work with KUDO.

- We should drive making the adaption to KUDO easier
- Not to confuse flags
- Providing metrics for usage and error reporting

### Non-Goals

Non-Goals are:

- Just building another wrapper around `kubectl`
- Adding complexity

## Proposal

This is where we get down to the nitty gritty of what the proposal actually is.

### User Stories

#### Installing a Framework

As a user I want to be able to install a framework to my cluster.

#### Uninstalling a Framework

As a user I want to be able to uninstall a framework from my cluster.

#### Listing running Instances

As a user I want to be able to list current installed frameworks in my namespace.

#### Getting the status of an Instance

As a user I want to be able to get the status of all plans of an Instance.

#### Start specific plans

As a user I want to be able to trigger specific plans of an Instance.

#### Get the history of Planexecutions

As a user I want to be able to audit the trail of executed plans.

#### Executing into a particular Instance

As a user I want to be able to execute into my Instance environment.

#### Run Framework specific commands

As an application operator, I want to be able to run CLI tooling, built for the Framework against an Instance.

#### Shell into containers of a Framework

As a user I want to be able to get a shell to a specific framework.

#### Read all combined logs of a Framework

As a user I want to be able to read logs to a specific framework and its components.

### Implementation Details/Notes/Constraints

Some caveats:

- Airgapped clusters
- Application logic with extra plugins for specific frameworks
- To be continued...

### Risks and Mitigations

TBD

## Graduation Criteria

If we see adoption in the community.

## Implementation History

TBD

0 comments on commit 6ef05ee

Please sign in to comment.