-
Notifications
You must be signed in to change notification settings - Fork 3.2k
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
Multi-cluster, multi-namespace workflows #3523
Comments
Not only multi-cluster, shall I create another issue for multi-namespace support? This is a related issue: #2063 (comment) to install Argo Workflow in one namespace, but support creating pods in multiple namespaces (not Cluster installation, as the permission would be too broad) |
More details:
|
PoC findings: What went well:
Questions raised:
|
…rgoproj#3523 Signed-off-by: Alex Collins <[email protected]>
I've created a dev build for people to test out multi-cluster workflows (and therefore prove demand for it)
Instruction for use: Please let me know how you get on with this. |
Please answer this poll: https://argoproj.slack.com/archives/C8J6SGN12/p1607041333397500 |
@alexec what do you think of this? https://admiralty.io/blog/2019/01/17/running-argo-workflows-across-multiple-kubernetes-clusters (the link was once listed on the Argo Workflows website) The blog post is slightly outdated, as Admiralty uses Virtual-Kubelet and the Scheduler Framework now, but the use case still works. Admiralty creates a node that represents a remote cluster, makes multi-cluster workflows possible without any code change in the Argo project. IMHO, multi-cluster is a common concern best treated separately. BTW, Admiralty also works with Argo CD. |
Hi @adrienjt thank you - I just tweeted the post's author before realizing it was you. I'm aware that any first-class solution in Argo would be in competition with a multi-cluster scheduler as it would make the need moot. I'm also aware from working on Argo CD, that security with multi-cluster is difficult, because you end up with a single main cluster that has a lot of permissions.. |
I've updated the dev images during my white-space time today. You can test with these images:
We really need to hear more concrete use case to progress this. |
Isn't multi namespace already supported? |
@alexec For background on our use case: We have 4 environments - each are separate clusters. One is an 'operations' cluster that has argo-workflows installed. The rest are dev, staging, and production. We have a workflow that updates multiple data stores with a lot of data. Instead of 3 argo installations / UIs or instead of exposing endpoints to the data stores so they can be accessed by the operations argo workflow- I'd rather be able to run a workflow pod in a different cluster than argo is installed in so I can have one UI/Login with all my workflows that run in multiple clusters. Right now we have to expose all these data stores and copy over a lot of the k8s secrets from the dev/staging/production clusters to the operations cluster in order for everything to work. I'd rather be able to just run a container in any connected cluster I specify. |
@alexec our usecase follows as below We have a central master cluster which needs to connect to multiple different regional and edge K8 clusters to run different workflows depending on what workflows provisioned in our central master Argo server. Right now we worked around by using git runners on each regional cluster to run some of our tasks. It is a cumbersome solution difficult to maintain and organize the sequence of tasks. |
There are two main interpretations of "multi-cluster":
As this is ambiguous, we don't actually know which of these you want (or both). Can I ask you to vote by adding the appropriate reaction (🚀 / 👀 ) to this comment. Go further to demonstrate your interest by adding a comment with the use case you're trying to solve. |
Our use case for option 2: Our workflow involves different steps involving different clusters. First few steps are for extracting and preprocessing the data in the first cluster, then the next step is to train the data in a separate cluster (with GPU) for machine learning purposes. |
@alexec point 2 might be more extensible in terms of scaling i.e. deploy workflow controllers in different namespaces and/or clusters and they communicate with a single argo server. Might also open the possibility of having workflow controllers outside kubernetes (VM deployments) since we might not want specialized hardware such as GPU machines to be part of a cluster. |
Where option 2 might be nice is where there is a secondary cluster for windows nodes. Our primary cluster (linux) uses a CNI not compatible with windows so we had to set up a separate cluster. It would be nice if our argo workflows that is on our primary server had the capability to schedule workloads on the secondary cluster for windows specific tasks. Imagine in the case someone was using argo workflows for CI and was working in a monorepo for Linux and Windows docker images. Instead of having separate workflows, a single one with tasks that could be scheduled on the correct cluster, could open up a lot of interesting possibilities. |
Point 1 is the straightforward use case where you have several clients and cloud accounts with distinct clusters. Managing workflows (UI+single client) specially Cron ones from one of the Argo installed on a "central" one would simplify a lot the work. It might be several Argos (one on each cluster) but to have an existing main one with an abstraction with credentials over the rest, maybe an easier option than trying to avoid existing Argos in the subrogated clusters |
From the machine learning perspective, this use case is increasingly popular. At AWS, I meet with many customers who are hybrid or multi cloud. The ability to run steps that transfer data, run a container in different clusters, merge final results, and manage all steps in a single interface is highly valuable. |
profile goes in the argo system namespace |
Updated version for testing: https://github.com/argoproj/argo-workflows/releases/tag/v0.0.0-dev-mc-8 |
any update? |
from our stand point this is definitely a must !! we are waiting for the official implementation. |
we are very interested in this feature as well. |
@alexec hello, do you know if any progress was made for this topic ? I see https://github.com/argoproj/argo-workflows/blob/dev-mc/docs/multi-cluster.md quite empty :/ |
@alexec Is this feature also allowing to watch argoworkflows deployed in a single cluster but view them in UI deployed in another one? |
Based on the design provided in this doc: https://github.com/argoproj/argo-workflows/blob/dev-mc/docs/multi-cluster.md I think integration with https://open-cluster-management.io/ could be a candidate to help Argo workflow with the multi-cluster capabilities by providing:
With no code changes or importing the Open Cluster Management (OCM) API, the following scenario is already possible:
Remote clusters:
With code changes and adopting the OCM APIs as first class citizen, Argo Workflow can delegate the cluster registration and inventory security concerns to OCM and focus on reconciling Workflow on the primary cluster and instead of creating workload pods on the primary cluster delegate the workload to the remote clusters. PoC integration: https://github.com/mikeshng/argo-workflow-multicluster |
@mikeshng Thanks Mike for putting together the information, Yes, I am also thinking the same line. Multi-Cluster and Multi-namespace workflow support should be at the kubernetes level. |
Because @sarabala1979 asked for it in the ArgoCon talk here is a MultiCluster use-case from us. We need to sync databases across environments (and - in our case - therefore Kubernetes clusters). So the workflow is like
Between 2 and 3 there could be some scripts that alter the data like anonymizing. Right now how we implemented is like
With multi cluster support that whole process could be made much easier. Really looking forward to it. |
I could also provide an example what would be the benefit from our side: We currently have a centralized cluster running Argo Workflows, which handles diverse data pipelines of multiple teams. It can scale pretty flexible thanks to autoscaling, but everything has it's limits. Multi-cluster support would be helpful, because:
|
We are evaluating Argo Workflows and Keptn (A CD orchestration tool, no CI) from a deployment pipeline use case (CD pipeline). Found out Keptn has a multi cluster support which will orchestrate multi cluster deployment of an application in a single dev to prod deployment workflow. We would like to see the same feature in Argo Workflow, since we don't want to add yet another tool (keptn) solely for deployment orchestration. We can use Argo Workflows for CI and CD in an end to end workflow. |
Argo workflow Team and OCM(https://open-cluster-management.io/) are working POC for Multiple cluster Argo workflow with the below use cases. We will demo to the community soon.
|
@sarabala1979 does works around POC, also would allow to see/manage Argo Workflows deployed on remote clusters, on the central cluster? |
Use case of cross cluster workflow failover: E.g. A user can specify a list of clusters a CronWorkflow can run in and if the workflow fails in one cluster or if the remote cluster is down, it will get re-schedule in another cluster (a.k.a. failover). It would be really nice to see this feaute with the new multi-cluster workflow architecture. Thank you! |
Just curious, is the solution to both the problems, i.e., multi-cluster and multi-workspace the same? I see a lot of comments on multi-cluster use-cases, but I am not getting a clear picture of running and managing workloads in multiple namespaces in the same cluster. We would like to have one cluster for CI purposes, but would still like to separate out workloads into multiple namespaces depending on team. |
Hi All, we are trying to solve multi cluster setup using Liqo(using virtual node) which doesn’t need any changes to Argo Workflow. |
FWIW, I am interested in using one instance of Argo Worlflows to run worklfows in multiple vclusters. |
Any news on this? I really wanted to use this for something but realized it's not ready yet and isn't on master. |
I recommend giving https://github.com/sarabala1979/argo-wf-ocm-multicluster a try. |
how is everything going |
I really want to try the solutionargo-wf-ocm-multicluster to schedule my workflow to multi-cloud, but I have a question: the question also meationed in argo-workflow-multicluster |
This was really more of a POC than an end-to-end solution. Somebody should probably fork it and take it from where we left off, if interested. Basically, in my recollection, the HUB cluster Controller is able to resolve Workflows with the "ocm-managed-cluster" annotation or the "ocm-placement" annotation (which resolves to a particular cluster). As long as you are submitting a Workflow with the right annotations, it should theoretically work. Even if that works, there probably will be many things that don't work, however. |
The challenge with this issue, is that it a BIG change. Someone (or some company) needs to be willing to invest the effort. |
If the community has plans to implement it, I am very willing to invest in developing some related works. I have some experience developing workflows and multi-clusters. I would be very grateful if there is some guidance. |
This comment was marked as duplicate.
This comment was marked as duplicate.
I don't know too much about Argo Workflows so forgive my naivety, but is this something that perhaps could be solved by creating an integration with Armada? |
Summary
Run workflows across multiple clusters.
Motivation
So you only need to run one Argo Workflows installation.
So you can run a workflow that has nodes in different clusters.
Proposal
Like Argo CD.
#3516
Message from the maintainers:
If you wish to see this enhancement implemented please add a 👍 reaction to this issue! We often sort issues this way to know what to prioritize.
The text was updated successfully, but these errors were encountered: