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

KEP 89: Lifecycle Toolkit - Context Information in Keptn Tasks #91

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
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
46 changes: 46 additions & 0 deletions text/0089-klt-context-information.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# KEP 89: Context Information in Keptn Tasks
**State: DRAFTING**

## Dependencies
* This KEP depends on KEP88 which introduces instances of Keptn Workloads and Apps

## Motivation
Currently, the lifecycle toolkit passes some context information (Workload, Application, Version) to the tasks. However, this information is not sufficient for promoting instances. As there should be a Keptn Task for promoting an instance, the context information should be extended to include the instance and a bit more information.

This KEP proposes the extension of passed context information.

## Current Design
At the moment, the context information is passed as a JSON string in the `KEPTN_CONTEXT` environment variable. The JSON string contains the following information:
```golang
type TaskContext struct {
WorkloadName string `json:"workloadName"`
AppName string `json:"appName"`
AppVersion string `json:"appVersion"`
WorkloadVersion string `json:"workloadVersion"`
TaskType string `json:"taskType"`
ObjectType string `json:"objectType"`
mowies marked this conversation as resolved.
Show resolved Hide resolved
}
```

This information is passed to the tasks as a JSON string in the `KEPTN_CONTEXT` environment variable which can be used in the corresponding tasks.

## Assumptions / Definitions
* It might be easier to pass over the whole KeptnAppVersion or KeptnWorkloadInstance as a JSON string instead of passing over the individual fields.
* There is no sensitive information in the context information
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would follow RFC2119 and have extra emphasis on this requirement

Suggested change
* There is no sensitive information in the context information
* There MUST NOT be sensitive information in the context information


## Proposed Design
The proposed design is to pass over the whole KeptnAppVersion or KeptnWorkloadInstance Object as a JSON string in the `KEPTN_APP_CONTEXT` and `KEPTN_WORKLOAD_CONTEXT` environment variable. This would allow the tasks to access all information about the instance. Furthermore, annotations of the workload could be passed also as a JSON string in the `KEPTN_WORKLOAD_ANNOTATIONS` environment variable.

## Benefits
* The tasks have access to all information about the application and workload
* The tasks can access the annotations of the workload
* Additional information would not have to be defined in the context information

## Drawbacks
* The context information might be too big for some tasks
* The context information might contain sensitive information in the future which has to be filtered out

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* Tasks need to be aware of the `KeptnAppVersion` and `KeptnWorkloadInstance` version