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

TEP-0094: Specifying resource requirements at runtime [Problem Statement] #556

Merged
merged 1 commit into from
Nov 12, 2021
Merged
Show file tree
Hide file tree
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
63 changes: 63 additions & 0 deletions teps/0094-configuring-resources-at-runtime.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
---
status: proposed
title: Configuring Resources at Runtime
creation-date: '2021-11-08'
last-updated: '2021-11-08'
authors:
- '@lbernick'
---

# TEP-0094: Configuring Resources at Runtime

<!-- toc -->
- [Summary](#summary)
- [Motivation](#motivation)
- [Goals](#goals)
- [Non-Goals](#non-goals)
- [Use Cases](#use-cases)
- [Requirements](#requirements)
<!-- /toc -->

## Summary
Add runtime configuration options for setting resource requirements of `Step`s and `Sidecar`s.

Currently, users can specify resource requirements in a `Task` definition,
via the `Resources` field of each `Step`, `StepTemplate`, or `Sidecar`. However, there is currently no support
for modifying these requirements in a `TaskRun` or `PipelineTaskRun`.
Copy link
Member

Choose a reason for hiding this comment

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

What does PipelineTaskRun mean here? does it refer to PipelineTask? Does it essentially mean modifying requirements in a TaskRun and/or PipelineTask with having reference to a catalog?

Or is it referring to PipelineRun? 🤔

Copy link
Member Author

Choose a reason for hiding this comment

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

Just a run of a PipelineTask: https://github.com/tektoncd/pipeline/blob/main/pkg/apis/pipeline/v1beta1/pipelinerun_types.go#L468-L481
The idea is to be able to change resource requirements for a Pipeline within a PipelineRun.

Copy link
Member

Choose a reason for hiding this comment

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

For PipelineTaskRun - I'm guessing this will be the place in the API? https://tekton.dev/docs/pipelines/pipelineruns/#specifying-taskrunspecs

Copy link
Member Author

Choose a reason for hiding this comment

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

yup!

Copy link
Member

Choose a reason for hiding this comment

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

We could say in TaskRun (issued from PipelineRuns or one-shot) or something like this, but it's a nit.

Copy link
Contributor

Choose a reason for hiding this comment

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

👍 to the nit, maybe for a future update - i think it's important to be cautious about introducing new terminology. "pipeline task" is already a bit confusing since this isn't a Tekton type, PipelineTaskRun looks like something I'd expect to be a Tekton type (esp mentioned alongside TaskRun)

Copy link
Member Author

Choose a reason for hiding this comment

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

sounds good, I will change this in the subsequent pr.


This TEP proposes adding a configuration option to `TaskRun` and `PipelineTaskRun`
to override any `Step` or `Sidecar` resource requirements specified in a `Task` or `PipelineTask`.

## Motivation
Compute resource requirements typically depend on runtime constraints.
The following issues contain user requests for being able to modify resource requirements at runtime:

- [Allow usage of variable replacement when defining resource limits and requests](https://github.com/tektoncd/pipeline/issues/4080)
- [Support specifying resource requests at TaskRun level](https://github.com/tektoncd/pipeline/issues/4326)

### Goals

Add configuration to `TaskRun` and `PipelineTaskRun` allowing users to specify resource requirements
of `Step`s or `Sidecar`s defined in a `Task` or `PipelineTask`.

### Non-Goals

- Ability to override other `Step` or `Sidecar` fields in a `TaskRun` or `PipelineTaskRun`.
- Ability to specify combined resource requirements of all `Step`s or `Sidecar`s at `Task` or `Pipeline` level.
While this may be a valuable feature, it should be considered in a separate proposal.

### Use Cases

- Image or code building `Task`s can use different amounts of compute resources
depending on the image or source being built.
lbernick marked this conversation as resolved.
Show resolved Hide resolved
- Kubeflow pipelines and other data pipelines may have variable resource requirements
depending on the data being processed.
- Catalog Tasks should be generally reusable in different environments
that may have different resource constraints.

## Requirements

- Users can specify `Step` and `Sidecar` resource requirements at runtime.
- Users can specify `Step` and `Sidecar` resource requirements for `Task`s
or `Pipeline`s they don't own, especially those in the Catalog.
- Users can specify resource requirements for individual `Step`s and `Sidecar`s.
1 change: 1 addition & 0 deletions teps/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -227,3 +227,4 @@ This is the complete list of Tekton teps:
|[TEP-0082](0082-workspace-hinting.md) | Workspace Hinting | proposed | 2021-10-26 |
|[TEP-0084](0084-endtoend-provenance-collection.md) | end-to-end provenance collection | proposed | 2021-09-16 |
|[TEP-0085](0085-per-namespace-controller-configuration.md) | Per-Namespace Controller Configuration | proposed | 2021-10-14 |
|[TEP-0094](0094-configuring-resources-at-runtime.md) | Configuring Resources at Runtime | proposed | 2021-11-08 |