|
| 1 | +# Argo Workflows |
| 2 | + |
| 3 | +The UnderStack project utilizes [Argo Workflows][argo-wf] as its |
| 4 | +workflow orchestration engine for managing complex, multi-step |
| 5 | +operations across the infrastructure stack. [Argo Workflows][argo-wf] |
| 6 | +provides a Kubernetes-native approach to defining and executing |
| 7 | +workflows, enabling reliable automation of provisioning, deployment, |
| 8 | +and maintenance tasks. |
| 9 | + |
| 10 | +## Architecture & Security Model |
| 11 | + |
| 12 | +[Argo Workflows][argo-wf] operates within a dedicated namespace (argo), |
| 13 | +while the actual workflows run in another dedicated namespace (argo-events), |
| 14 | +to ensure proper security isolation and resource control. This separation |
| 15 | +is provided by [Argo Workflows][argo-wf] but poorly documented upstream which |
| 16 | +they call [Managed Namespace][argo-wf-managed-ns]. |
| 17 | + |
| 18 | +### Argo Workflows Configuration |
| 19 | + |
| 20 | +We do not use the `namespace-install.yaml` provided by the project as it |
| 21 | +combines everything into one YAML and we need to split it out. It combines: |
| 22 | + |
| 23 | +* CRDs |
| 24 | +* Argo Server, which is the UI and the API for Argo Workflows and Argo Events |
| 25 | +* Argo Workflows Controller, which is the executor for the workflow and creates |
| 26 | +the pods |
| 27 | +* Server Role, which is the Role and RoleBinding for the Argo Server to access |
| 28 | +the workflow, the pods, the logs, and inputs for user visibility |
| 29 | +* Workflow Controller Role, which is the Role and RoleBinding to give the controller |
| 30 | +access to run and manage the workflows. |
| 31 | + |
| 32 | +The CRDs, the Argo Server, and the Argo Workflow Controller will all be installed |
| 33 | +into the (argo) namespace while the 2 Roles and RoleBindings need to be installed |
| 34 | +into the namespace where the workflow execute, which is (argo-events). |
| 35 | + |
| 36 | +The Argo Server and the Workflow Controller additionally need access to additional |
| 37 | +resources. The Argo Server needs access to the configmap, the SSO secret |
| 38 | + |
| 39 | +## Template-Only Execution Model |
| 40 | + |
| 41 | +Understack enforces a strict template-only execution model where all workflows |
| 42 | +must be pre-defined as [WorkflowTemplate][argo-wf-tmpl]s. This approach ensures: |
| 43 | + |
| 44 | +* Consistency: All workflows follow approved patterns and standards |
| 45 | +* Security: No arbitrary workflow submission; all templates are reviewed and versioned |
| 46 | +* Reusability: Common operations are defined once and parameterized for different |
| 47 | +use cases |
| 48 | +* Governance: Changes to workflows go through code review and CI/CD processes |
| 49 | + |
| 50 | +[argo-wf]: <https://argo-workflows.readthedocs.io/en/latest/> |
| 51 | +[argo-wf-managed-ns]: <https://argo-workflows.readthedocs.io/en/stable/managed-namespace/> |
| 52 | +[argo-wf-tmpl]: <https://argo-workflows.readthedocs.io/en/stable/workflow-templates/> |
0 commit comments