 All right, welcome everybody. Thank you so much for coming to our session. We're gonna be talking about Argo and This incredible community that has sprung up over the last few years My name is Dan Garfield. I'm a co-founder chief open source officer of Codefresh. We're an enterprise Argo company and this is Alexander Thanks everyone. So my name is Alex and I'm a co-founder and chief architect at the company called acuity We also do Argo and I also have been a long-time maintainer of pretty much all Argo projects my most recent focuses or Argo CD Alex ah good Morning. Good afternoon. I'm Alex. I work as a principal engineer at into it, which is the Would you say the the original company? I don't know if people will say that I mostly focus on I'll go what frozen I'll go events Yeah, I'm I'm absolutely feel privileged to share the stage with these two who are lead maintainers and absolute legends and Contributed more code. I think between them than anybody else. So we're gonna be running through this ecosystem, which is incredible Again, if you can invite neighbors raise your hand if there's a seat open next to you because there are a whole host of people Who are looking for seats so those in the back if you see someone with a hand raised go sit next to them They're asking you to be their buddy. So buddy up So like I said, we're gonna be talking about this amazing vibrant ecosystem that has been growing dramatically and there are a lot of opportunities for You as community members to join in and take advantage of these things We already introduced ourselves for those of you that are familiar with maybe just part of the project There are there are four main tools. There's Argo workflows, which is this incredibly powerful general purpose workflow engine for Kubernetes Argo events, which is typically used for triggering workflows and things like that Argo CD is The world's most popular and fastest-growing GitOps engine today and it's far and away It's a really amazing how that community is grown and Argo rollouts is one of the easiest quickest ways to get started with Doing progressive delivery canary releases blue green deployments. How many Argo workflows users first? Like a really good quarter of the audience Argo CD users Okay. All right. That's awesome So like we said, it is one of the fastest growing most popular CNCF projects today We recently ran a survey of users and asked them how likely they were to recommend Argo to a friend and Argo CD scored an incredible 72 this is a this is a scale that goes from negative 100 to positive 100 and 72 is like Some of the most beloved, you know companies in the world can reach that level and 48 is very very strong like Starbucks is like a 48 You know people love their Starbucks. That's in America It's a big deal there It's maintained in a in a partnership between acuity Blackrock code fresh into it red hat and of course an amazing Community of individual contributors that that help out with that. It's used by Google Adobe, NVIDIA Tesla PayPal EA The list goes on and if you're using Argo, please go add yourself to the user's list We'd love to see how that grows and it's in a very long list already and everyone counts If you're not familiar with that NPS score Like I said anything above 70 is considered excellent and anything above 30 is considered great So already a lot of love being shown to from from the community So another part of the Argo project that you may not be aware of is Argo Argo project labs And Argo project labs is really this growing ecosystem of tools that are designed to work with Argo And there's already a lot of ecosystem projects and some of those ecosystem projects end up getting merged Into these main Argo tools that you're already familiar with so for example Argo CD notifications and application set Started off as Argo labs projects that people contributed. They had this idea. They said hey when I'm adding applications Wouldn't it be amazing if I could templatize that and just add them at scale application set When we surveyed users who are using Argo CD We found that everybody that had over a thousand applications So the people that were really scaling every single one of them used application set So the fact that that's merged into the main project started in the community I mean, it's all community, but it started is it's kind of an individual contribution and idea That was then merged into the project and now everybody benefits from it and there are so many more Amazing projects in there So if you have an idea if you have something you've been working on a lot of companies They build little tools, you know around Argo to help them do this project to that project We'd love for you to bring those and so contact us reach out hit us up on slack Maybe we'll get you into Argo project labs and we can get more contributions. Maybe it gets merged into the main project One project that I want to highlight that was added in the last six months seven months was Argo CD autopilot and Argo CD autopilot is a GitOps compliant interface that allows you to bootstrap Argo CD and have it create your directory structures and all these things for you and I have a very quick demo for you So here you can see basically first I need to sit set a git token because This is a GitOps operated interface and so it's going to write all the changes to git We set the git repo where we want to store our files So this is where all the configuration for Argo CD as well of all the applications that are installed and managed and all The projects that are managed there are going to be set And then we run Argo CD autopilot repo bootstrap This is going to install Argo CD and Then once it's installed it's going to set up our directory structure and add all of the Components of Argo CD and make sure that Argo CD is self-managed. How many people are using Argo CD self-managed today? Okay, so this is a pattern that's getting more and more popular in One that I personally love to see that's the way I do it We're gonna add a project here for the local cluster and you could add, you know Many clusters you could be managing a thousand clusters with a single, you know Argo CD instance and then we're gonna do an app create demo app and we're gonna specify where the manifests for those come from And it's going to create a customized overlay in our Repo that we're working on that references the base as that application. So now that's been pushed We'll pull this from git. You can see it's created apps bootstrap and projects and We'll run a tree on this really quick So we can see how it is designed this structure So you can see Argo CD is managing itself if you want to update Argo CD You just change the the version reference that it's referencing and it'll pull in an update update itself And then if you want to add applications You just add a file under application and there's an application set that's set up that automatically will take all of the Files under those folders and then automatically create applications from them and deploy them to your cluster. So this is a Very opinionated way to use Argo CD. Argo CD is generally very very flexible And so this that's why this is a labs project. So if you want to try out Argo CD auto pilot We'll have a link for you at the end But let's talk about extensibility because there's been a lot of work done over the last few months to add Extensibility points into Argo CD and Argo workflows especially. So why don't we start with Argo CD and rollouts? Yeah All right, so let's talk a little bit about Argo CD And also as you all know Argo CD is a Github separator that helps developers to manage Applications in Kubernetes, but it's a little bit even it's time to be be more than that So it's also a very powerful powerful Kubernetes dashboard that helps developers to manage application after Deployment is complete and my point is that scope is right is pretty wide and In order to be very helpful to engineers We kind of have to integrate and have to work well with a lot of other ecosystem projects in the ecosystem So for example, Argo CD don't force engineers to write YAML instead You can use your favorite config management tool such as customize or helm In order to be truly useful dashboard Argo CD has to have a deep understanding of various Kubernetes resources such as deployment ports and even Popular custom resources of projects like a search manager or Istio and so you I have to understand how those You know the structure of those resources and provide useful Visualizations and we have plans to even integrate with some fit body Metrics providers meaning fit body to Argo CD and we want to pull data from systems like data dog Prematures and and so on so that engineers can see Useful information in the Argo CD UI itself And so in order to do so we have to build all those integrations and we quickly realized that It's not really scalable long-term Because it takes a lot of time for the core team to introduce all of those integrations and then maintain them And so we kind of realized that it's the time to try to make Argo CD Extensible and so we've got to we try to group the ways of how we want to extend Argo CD And we come up with those three major extension points one of them is manifest generation as I said second is near-source customization and Fit body IPI integrations and first I want to talk about Manifest generation and how we want to approach it. So basically we come up with a Feature that we call config management plugin and we decided to split Implementation into several steps. And so we basically plan to deliver it in three steps and step one is complete Which is a basic functionality So as of version 2.3, you can take any Selae and as long as it produces Yama, you can use it as a config management plugin for Argo CD So and the snippet on the right side kind of is it left side for you. So it demonstrates That the configuration that Argo CD administrator have to provide so in this case In any case you need to provide a CLI Shell command that invoke your binary as long as it produce Yamal Argo CD will be happy to accept it and convert it into Kubernetes resource and deploy it later on and the second kind of portion of configuration is a globe expression that Becant uses to kind of automatically detect which plugin is responsible for a particular folder in your git repository And so as I said, this is available today, and I know that people already use it but it's definitely it's just not enough because you still cannot call it a first-class support and The remaining bits are following. So we we basically we still need parameterization UI and CLI support and so what is parameterization? Basically every pretty much every config management tool has a way to apply some last mile changes and Kind of influence how your final Yama looks like for example is in customize you might say Oh, if you see this particular image, then I want to use latest tech for example for dev environment Or you can choose to apply name prefix Let's say if you install the same application into the same name space. And so a lot of Argos users wants to leverage those CLI flex and we want to expose these flex via config management plug-in parameters And so to do so we plan to allow admins who configure the plugins to provide the mapping between the CLI and basically and and provide declarative definitions of the supported parameters and That's parameterization support is supposed to be delivered. Hopefully in upcoming 2.5 release as soon as it's there You will be able to leverage that feature by making changes in Argos CD application CRD spec and That's a big step forward. It will cover most of them pretty much it will enable all the use cases that we want to Enable but the last kind of beat which is pretty much is like a cherry on top of the cake ability to Configure parameter values in application CID using the user interface and so once that feature is implemented We can claim that Config management plugins kind of provide really first-class user experience and that will open the door to Support all type of config management tools currently we have I would say maybe a dozen requests to support Different config management tools and hopefully we can execute those requests very quickly because we can start building those plugins in Parallel and it doesn't have to be in the core team of Argos CD Right, we have not so much time. So I want to keep moving So the next area of customization that I want to cover is resource customizations so as you probably know Argos CD understands the health of a resource and it it provides a way to Execute some actions on the resource and currently all those integrations for custom resources kind of built-in into Argos CD All of them contributed by the community, but we realized that it really takes Kind of every every little bug contributed in such integration Affect a lot of users and users have to wait like three months before the next Argos CD release Which is not great and we wanted to kind of make it Move those integrations outside of a project and then in other requirements that we that we had we wanted to let End users kind of configure custom visualizations for all custom resources in in Kubernetes and To achieve that we've created a labs project called Argos CD extensions and we built one extension which is available already for Argo all outs and The screenshots on the slide demonstrates you are go CD user interface that renders the rollout object and rollout as you might know it provides various Deployment strategies and on this particular screen We have a canary deployment strategy with a multiple steps and this visualization makes it much easier for end users to understand What rollout is doing and so please feel free to open the URL and learn how to build an extension and There is a little bit of help for you. So There is a library called that's available under Argo approach in the Argo UI repository and that's just the It's a library of react components. That's already used by Argos CD UI by workflows UI and rollouts UI So if you want to build an extensions, you're welcome to use that library because this way you will get the same look and feel Basically your extensions will look naturally in in Argos CD UI And finally, there is yeah API extension. So this is on Argo rollouts Okay. Oh, yeah, no, no, go ahead. Go ahead. Sorry that jump in the gun. Sorry. Yes. So this is Really passionate about that feature it's still in the plans and it's it I expect that it won't be delivered in another two three reasons but we Thinking about making Argos CD even more extensible and so we want to be able to visualize data that's outside of Kubernetes and to do so we planning we hoping to introduce a way for administrators to register additional API endpoints that would proxy requests to System to the API is such as data dog officer data dog or primitives and Argos CD would apply the Role-based access checks and basically this gives you opportunity that will give you opportunity to reuse Argos CD SSO and you know access control model to provide access to Resources which are not part of Argos CD and now then So Argo rollouts as many of you know relies on gateways to manage traffic and Currently anytime we add support for an additional gateway We have to write a new controller specifically for that gateway and figure out that logic and it's fairly time-consuming But there's an amazing project called Gateway API coming from the Kubernetes Community and it provides a standardized interface for working with different gateway providers and Coming soon. This is currently in PR and we're just working through the changes We're going to be able to vastly extend how many gateways we can support with Argo rollouts through gateway API So currently today we natively support ambassador AWS alb's Istio IngenX and then SMI which provides the the interface for not Istio for For the other for the other service meshes Yep, you know what I'm talking about Think or D. Thank you so much And then and now of course we can add support for all of these other ones like Google Kubernetes engine HAProxy console Kong and so from now on Once this is merged if you want to add support for your gateway into Argo Argo rollouts, you only need to add support for gateway API So this is a really exciting development Most of those gateway APIs are currently in an alpha some of they're moving into a beta stage So this is something that's going to make it a lot easier for a lot more people to take advantage of rollouts Argo workflows call Thanks, Dan Do you fist bump or do you elbow? I can't really tell what people prefer cool So I'll go workflows is kind of the de facto workflow engine on Kubernetes So if you're running kind of batch processing machine learning Things like infrastructure automation and I've talked to a lot of people about doing CI Now one of the challenges we have with Argo workflows is it's orientated about Executing work and each work item of work gets turned into a pod but pods are really expensive to create So we have recently introduced a feature called plugins and a plugin allows you to create your own kind of template that runs instead of a pod The reason we've done this is it just takes a really long time to introduce new features into Argo workflows Our release cycles about every three or four months, but what with a plug-in what you can do is a user is you can install a plug-in Today you can write it today. You don't need to learn Golang you don't need to commit to the tree and you don't need to really wait for a release So a plug-in is really just if people have gone to any talks about how to extend controllers. It's a very standard Pattern basically when we want to invoke a plug-in we just make an API request And this is basically the API contract where we send you the details of the workflow and the template and you just tell us what the outcome of that is To implement it. It's what 30 lines of Python codes So no YAML and I know everybody in the machine learning community loves YAML But I'm gonna have to let you down. You'll have to write this in Python and in that you can just Write your plug-in Now we have a little video. Oh, it's playing brilliant Okay, so let me see if I can narrate the video as it comes up here so a plug-in is just installed as a To be as a config map that describes the plug-in and you can just install this at runtime You don't need to restart the controller and your plug-in will appear Now if you can install this as a user as or as an administrator, so it's self service And the plug-in is just as I said a Python script and this example is just going to run some Python code a Python expression and I can pass parameters to this script as well Just like I would do with a normal pod template in this example. I'm going to get it to print out a message Just to create this workflow Now I'll appear in the user interface I know most people are probably more familiar with the Argo CD interface, but there you go And now the message has appeared in the user interface for users to see so that's and How do I get out of this tan? Oh I wait for the end So we've got about eight people have already open-source plugins several these people open-source that before the plugins are even available and release So things like syncing Argo CD applications Sending Slack or other kind of notifications Running volcano jobs. I missed the volcano presentation today. I was looking forward to that I am actually I'm running WebAssembly so you can write your own plug-in and WebAssembly if that to cause your fancy The other thing that people use Argo workflows for is Building platforms on top of it. So at into it I'm machine learning platform is based on Argo workflows internally as is our batch processing platform And they basically typically the pattern is that you'll write your workflow in the language You're most comfortable with so if you're more from Python you write it in Python And you transpile it to YAML and then you execute it. So let's just look at a couple of platforms that do that. Oh, I was gonna Bring this up. Machine learning engineers don't don't really like YAML and they complain about it a lot on Twitter So there's a couple of tweets for you there So here's an example in Netflix Metaflow. So next Netflix Metaflow is a machine learning library Open source by Netflix about a year ago on the left hand side here You can see that this is this description of a flow there with two steps a start step and an end step And that basically gets compiled into YAML that gets run in the user interface Okay, I've got a little short video for you here. So this is great. I don't have to write any YAML. I Can write this in Python. I don't have to build an image. I can just write a Python script and it'll run that that gets turned into a Workflow template so I can run the workflow template multiple times within side Argo workflows And in this example, it's parametrized so I can run 10 instances of this particular pod and that'll spin up 10 pods Hopefully I'll spin up 10 pods brilliant The demo gods and by which I mean Cisco Smiling on us today. There you go. You can see that this model has been trained there as well. I Think that's done. I'm scared of pressing escape in case it restarts the computer or something. Okay Another platform that uses Argo workflows internally is Kubeflow Pipelines So Kubeflow Pipelines is one part of the Kubeflow suite, which is you know kind of a quite sprawling suite of Machine learning and AI processing and again, this is another example This is the Kubeflow DSL that you write your workflow in it now that gets transpiled to of course a Direct-a-day cyclic graph because we love those in the in the community And if you notice that this is the this is the graph shown in the Kubeflow Pipelines interface And this is actually the same graph that executes in Argo workflows just the layout of that graph is a little bit different One of the things I really like about Kubeflow Pipelines Is actually also what Metaflow is the way they make it really easy to surface Visual Information in their interface here and so some examples here of confusion matrix as well as graph that which I think is pretty cool Okay, next steps. I think Dennis is you next steps. Okay. So next steps First of all, there are some additional great talks coming up around Argo. So tomorrow Alexander your your partner Jesse is going to be speaking with TikTok about how they're using Argo CD successfully and there's going to be a great get ops get opsifying with crossplane talk From some folks at IBM on Friday. So don't don't miss those talks and there have already been actually quite a few great Argo talks at at KubeCon. I'm sure you've all been chasing them down some other community resources to mention there is a Get ops certification available Focused on Argo CD that somebody on my team coast is put together So you can get the bit.ly slash Argo dash training and then there is this awesome Argo list that the folks at acuity Sponsor and put together and has getting started guides best practices How should you you know make your directory structures? How should you handle permissions all these how should you know secrets and of course join us on slack? We're on the CNC f slack. There's tons of channels. There's Argo workflows channel or your CD channel more channels You can throw a stick out. I know that's a lot. It seems overwhelming But you know start with the area that you're interested in and then you can branch out and see these other ones So really amazing resources coming from the community And if you have a blog post if you have a great best practice guide a presentation Send it on to that awesome Argo list Which has been a huge resource for us and I know that everybody relies on it We also have a subreddit. We have an Argo project subreddit There's a get-off subreddit so join those for how to put that on the slide and even more exciting Coming up at the end of the year is going to be Argo con. This will be the second time We've done it. How many people attended Argo con virtually last year a Handful, okay, that's amazing because we had like over 6,000 people attend that conference So it's really this like tour de force that's arriving with Argo con And so go and register for that and you have until the 31st to submit a CFP So about a week and a half left go get those CFPs and we'd love to have them And of course get ops con just happened on Tuesday and there were a ton of talks There were probably nine ten talks that focused on Argo CD Argo rollouts Those recordings are all available now. So if you missed get ops con you can go and watch those And that's it. Thank you so much. I just want to say it's a huge honor for me To be invited to share the stage with these two lead project engineers I'm a fairly new maintainer these guys are the leads these are the legends These are the guys that built everything so give them a round of applause, please We technically have three minutes if we want to take questions So anybody have any questions? Yeah, and I'll repeat them for the camera Yes, a new feature Yeah There's a new feature where you have a helm Helm chart specified and you can specify values from a separate repo Alexander. I think that's 2.4 Can we turn up by Alexander's mic So some time ago we just made decision to release no matter what so we're kind of releasing every three months And there was you know the feature didn't make it now But it's actively being developed right now the proposal is finalized so it definitely makes it into the next release 2.5 Yeah, that's it Yeah, shoot Have the question about the Argo the CD image of data Isn't it that's on a little anti pattern for those who have Two week CICD pipelines and as it almost works in the latest tag For the images, what do you think I don't actually I don't think so There is a I feel like it's I would call it a pattern But not so many people uses it because it requires you to be like one hundred percent get ops if you like really able to disconnect Your CI completely from your deployment and you're confident that every time you push anything into git It's 100% tested so but I agree it's kind of it's opinionated feature not everyone uses it and Like before we joined acuity. I was working cut into it. We were not using that feature because we wanted to drive Deployment from the CI so it is opinionated, but That's what lapses or yeah, I agree. That's why it's in the labs That's right. I'm personally a big fan of that that pattern to be honest, but yeah, thanks Over here other questions Yeah, so linker D is already supported via SMI right? Yes. Yeah Any other questions, okay, thank you coup con