RFC: Add 'org' to Flyte identifiers #4588
Replies: 5 comments 3 replies
-
IIUC this will need datacatalog caching considerations right? Executions from two separate |
Beta Was this translation helpful? Give feedback.
-
Love the idea and big +1. Some naming ideas here:
|
Beta Was this translation helpful? Give feedback.
-
Thanks @squiishyy! Throwing out some additional options for consideration since this feature can be used in support of multi-tenancy:
|
Beta Was this translation helpful? Give feedback.
-
Updated the RFC based on feedback that 'org' is more desirable here |
Beta Was this translation helpful? Give feedback.
-
Implemented in #4663 |
Beta Was this translation helpful? Give feedback.
-
RFC: Add 'org' to Flyte identifiers
Abstract
Identifiers, and therefore workflows, tasks and executions within Flyte are always scoped by project and domain. This logical hierarchy is used for handling multitenancy within a single Flyte deployment. Resource quotas based on project and/or domain are used to ensure fairness and per-project specific overrides allow for setting more granular registration and execution time defaults.
Projects and domains are currently the only boundary for defining rules for setting such execution time parameters1 This RFC proposes adding a top-level
org
key to all identifiers (workflows, tasks, launch plans and workflow executions, node executions, and task executions) that in isolation or in combination with project and/or domain can be used to selectively apply execution-time isolation and customization.Motivation
In a single flyte deployment, the recommendation is to use projects to map workflow definitions to specific teams. In some scenarios it might make sense to group project configuration in aggregate, to support templatizing the underlying kubernetes namespaces or labels and annotations at execution time for multiple projects owned by the same team or for generally re-using configuration.
For example, this grouping could be useful in a multicluster deployment or in scenarios where it's desirable to run several projects in a shared namespace for billing, resource or other isolation concerns.
This proposal suggests adding an optional
org
to all identifiers. When empty or omitted, the system will behave currently as is. When the org is set, execution templatization can be further extended based on the value of theorg
field.Proposal
Flyte IDL
An example update to the core identifier adds the following org field:
Flytekit
Trigger executions with an optional org value
pyflyte run example.py training_workflow --project flytesnacks --domain development --org <my_org>
Flytectl
Create a project under an org:
flytectl create project --name flytesnacks --id flytesnacks --description "flytesnacks description" --org <my_org>
Add a matchable attribute override based on partition for all projects and domains belonging to an org.
flytectl update task-resource-attribute --org <my_org> --attrFile tra.yaml
Implications
Open Questions
Should call this new field by another name.
Footnotes
Technically workflows too, see workflow matchable attributes but these are further nested within the top-level project and domain hierarchy. ↩
Beta Was this translation helpful? Give feedback.
All reactions