argoproj / applicationset

The ApplicationSet controller manages multiple Argo CD Applications as a single ApplicationSet unit, supporting deployments to large numbers of clusters, deployments of large monorepos, and enabling secure Application self-service.
https://argocd-applicationset.readthedocs.io/
Apache License 2.0
584 stars 279 forks source link

Graduating ApplicationSets, and shipping it with ArgoCD #86

Open sbose78 opened 3 years ago

sbose78 commented 3 years ago

Greetings @OmerKahani @dgoodwin, all contributors & users of argoproj-labs/applicationset .

Thank you for the amazing work on Application Sets. We love it! I'm Shoubhik, an ArgoCD ( and ApplicationSets) user and a member of the Argo steering committee. I, as a member of the ArgoCD community would like to propose graduating this to https://github.com/argoproj and eventually ship it with ArgoCD.

I wanted to provide you a heads-up of the conversations that are happening on this subject in the Argo Contributor Meetings :)

Would you be able to join the "Contributor office hours" (https://calendar.google.com/calendar/embed?src=argoproj@gmail.com) which happen at 1 PM US East Coast time every Thursday ? If not, no worries, I will ensure you have the meeting notes in this Github thread so that we can track the transition.

dgoodwin commented 3 years ago

I apologize I can't make it today, but I can start attending in the new year if that is helpful.

sbose78 commented 3 years ago

No worries, thank you for the note. See you soon!

jgwest commented 3 years ago

As discussed at today's meeting, Thursday December 17th:

ApplicationSet Integration

Project Logistics

Focus on repository QoL improvements, automated testing (unit/E2E), and documentation

Initial integration strategy

Post Release

Improving user self-service scenario with ApplicationSet controller

Also discussed at the meeting was @alexmt and @jessesuen's suggestions regarding an additional use case that it would be beneficial for ApplicationSet controller to handle.

There are a couple of user roles that are important here:

The 'self-service' use case seeks to allow developers (cluster end users) greater flexibility to:

Alex raised the question of whether end users should be able to create/update Argo CD Projects using application set controller (a 'project set'), especially in the case where projects didn't exist. For instance, in this case, would ApplicationSet throw an error if a targeted Argo CD Project didn't exist, or it would it create and manage it? Jesse noted that he didn't believe that application sets should span projects, as a general rule.

At present, the project field of an ApplicationSet can be parameterized with values from the generator, allowing one to target multiple projects from a single ApplicationSet.

@jopit noted allowing the cluster/list generator to target multiple applications would be beneficial, as presently these generators are more limited in their scope. Jesse noted that the ability to add labels to cluster secrets would be beneficial here (but that it is not currently supported in Argo CD).

Ultimately, the generators currently implemented should improve this use case to some degree, but the Git file generator (a WIP PR) should provide the greatest power/flexibility for end-users, with additional improvements described above to be considered further in the future.

rajivml commented 3 years ago

@sbose78 @jgwest since, app-of-apps will be eventually replaced with ApplicationSet, will ApplicationSet support application ordering as well i.e. the order in which the applications can be deployed, today the same can be achieved using app-of-apps sync-wave ordering but I didn't find anything about deployment ordering under the ApplicationSet design doc

jgwest commented 3 years ago

Hi @rajivml, the short answer is no, this is out of scope for AppliationSet functionality at this time, but another proposed solution is being tracked in this Argo CD issue.

For a longer answer, see the above link, plus this discussion of relationship between ApplicationSet and sync order in Argo community slack: https://argoproj.slack.com/archives/C014ZPM32LU/p1600274721058300

rajivml commented 3 years ago

thanks @jgwest as long as there is an alternative it's fine to move over to ApplicationSet because for us, Application deployment ordering is a P1 requirement and that's we have onboarded to ArgoCD

OmerKahani commented 3 years ago

Hi, can we have a project / milestone with all the issues from the doc? It will make it easier to follow the status

jgwest commented 3 years ago

I've created a new milestone to track our progress towards Argo CD integration. Within the milestone I've added all the items discussed on this tracking issue, the google doc, and related meetings, plus a few issues that have cropped up since then. If you had an open PR that is in review, I have added it to the milestone as well.

Note that this milestone is focused on tracking Argo CD integration, and should not be seen as gating the merge of items that are not on the list: PRs for other items continue to be welcome.

Finally, the list is fluid (more to be added as needed), so feel free to discuss on GitHub or in Argo community slack if there are additional items that you feel could/should be included.