From 8480bf42a7a2d534bccb993e4be710399a82f128 Mon Sep 17 00:00:00 2001 From: Andrea Frittoli Date: Wed, 11 Jan 2023 14:28:46 +0000 Subject: [PATCH] [TEP-0128] Multiple Tekton instances per Cluster TEP proposal about running multiple instances of Tekton Pipeline in a single Tekton cluster. Signed-off-by: Andrea Frittoli --- ...8-multiple-tekton-instances-per-cluster.md | 309 ++++++++++++++++++ teps/README.md | 1 + 2 files changed, 310 insertions(+) create mode 100644 teps/0128-multiple-tekton-instances-per-cluster.md diff --git a/teps/0128-multiple-tekton-instances-per-cluster.md b/teps/0128-multiple-tekton-instances-per-cluster.md new file mode 100644 index 000000000..3095f239b --- /dev/null +++ b/teps/0128-multiple-tekton-instances-per-cluster.md @@ -0,0 +1,309 @@ +--- +status: proposed +title: Multiple Tekton instances per cluster +creation-date: '2023-01-11' +last-updated: '2023-01-11' +authors: +- '@afrittoli' +collaborators: [] +--- + +# TEP-0128: Multiple Tekton instances per cluster + + +- [Summary](#summary) +- [Motivation](#motivation) + - [Goals](#goals) + - [Non-Goals](#non-goals) + - [Use Cases](#use-cases) + - [Requirements](#requirements) +- [Proposal](#proposal) + - [Notes and Caveats](#notes-and-caveats) +- [Design Details](#design-details) +- [Design Evaluation](#design-evaluation) + - [Reusability](#reusability) + - [Simplicity](#simplicity) + - [Flexibility](#flexibility) + - [User Experience](#user-experience) + - [Performance](#performance) + - [Risks and Mitigations](#risks-and-mitigations) + - [Drawbacks](#drawbacks) +- [Alternatives](#alternatives) +- [Implementation Plan](#implementation-plan) + - [Test Plan](#test-plan) + - [Infrastructure Needed](#infrastructure-needed) + - [Upgrade and Migration Strategy](#upgrade-and-migration-strategy) + - [Implementation Pull Requests](#implementation-pull-requests) +- [References](#references) + + +## Summary + +With the growth of [Tekton adoption][tekton-adoption], Tekton is now used as +a foundation technology for several open source tools as well as commercial +offerings. + +Users may want to adopt different tools that rely on Tekton and run them in +the same kubernetes clusters. Since tools may not be aligned in the version +and configuration of Tekton they depend on, the main roadblock today is the +ability to run multiple different instances of Tekton in a single kubernetes +cluster. + +## Motivation + +The Tekton controller provides some functionality towards the ability of +running multiple instances in a single cluster, namely the ability to +configure the Tekton controller to watch a single namespace for resources +to be reconciled. This functionality is not properly documented and it does +not include other Tekton controllers, such as the various controllers +bundled in the Tekton webhook as well the remote resolution controller. + +### Goals + +- Allow multiple instances of Tekton Pipeline to run in single kubernetes + cluster, each responsible for a Tekton resources in a dedicated namespaces. Each + instance performs validation, resolution and execution and is configured + independently from the others. +- Allow multiple version of Tekton Pipeline to run in a single kubernetes cluster, + as long as there are no backward incompatible changes between the older and newer + versions. +- Identify and configure cluster level resources in Tekton Pipelines, such as CRDs, + cluster roles and bindings and the conversion webhook, so that they can safely + shared across multiple Tekton instances. + +### Non-Goals + +- Support multiple instances of Tekton Triggers +- Changes to the Tekton cli, dashboard, operator, results, chains, triggers to + support multiple instances / versions of Tekton pipeline. While some of these + may be desirable, they are not in scope for this TEP. + +### Use Cases + +- Run multiple tools that depend on Tekton in the same clusters. Different + tools may require different configurations and versions of Tekton +- Run multiple instance of Tekton for development and testing purposes + +### Requirements + +- Each instance of Tekton is responsible (validation, resolution, execution) + for resources in a dedicated namespace +- Each instance of Tekton is configured independently, which includes observability + targets +- Each instance of Tekton does not have access to resources in namespaces it's + not responsible for + +## Proposal + + + +### Notes and Caveats + + + + +## Design Details + + + + +## Design Evaluation + + +### Reusability + + + +### Simplicity + + + +### Flexibility + + + +### Conformance + + + +### User Experience + + + +### Performance + + + +### Risks and Mitigations + + + +Custom Resource Definitions are cluster scoped resources, which means that +some parts of Tekton must be shared across multiple instances of Tekton. +Constraints on the version of Tekton can be used to reduce the risk introduced +by this. Adoption of "v1" will help here, since no backward compatible changes +are allowed in the CRD definitions at all. + +### Drawbacks + + + +## Alternatives + + + + +## Implementation Plan + + + + +### Test Plan + + + +### Infrastructure Needed + + + +### Upgrade and Migration Strategy + + + +### Implementation Pull Requests + + + +## References + + + +[tekton-adoption]: https://github.com/tektoncd/community/blob/main/adopters.md \ No newline at end of file diff --git a/teps/README.md b/teps/README.md index 0f3cb11d6..7712fe88e 100644 --- a/teps/README.md +++ b/teps/README.md @@ -294,3 +294,4 @@ This is the complete list of Tekton teps: |[TEP-0124](0124-distributed-tracing-for-tasks-and-pipelines.md) | Distributed tracing for Tasks and Pipelines | implementable | 2022-10-16 | |[TEP-0125](0125-add-credential-filter-to-entrypoint-logger.md) | Add credential filter to entrypoint logger | proposed | 2022-10-27 | |[TEP-0127](0127-larger-results-via-sidecar-logs.md) | Larger Results via Sidecar Logs | implemented | 2022-12-15 | +|[TEP-0128](0128-multiple-tekton-instances-per-cluster.md) | Multiple Tekton instances per cluster | proposed | 2023-01-11 |