 In this video, I will demonstrate how we use a GitOps tool known as ARGO CD to automate management of our instance of the Open Data Hub, thus improving our team's development velocity. Just a level set, the Open Data Hub is an open source community project that integrates multiple open source technologies such as Kubeflow and Jupyter Hub into a single end-to-end AIML platform running on OpenShift. ARGO CD, on the other hand, is a commonly used tool in the GitOps world. The idea behind GitOps is that the desired state of your applications and your infrastructure must reside in Git before some automated process deploys them. Data science projects are often very complex with tons of dependencies and a lot of tribal knowledge. This results in the onboarding process for new data scientists being very long and drawn out. Jupyter Hub allows us to somewhat alleviate this by using custom images for our notebook servers. Data scientists or anyone really can create custom images ahead of time that all users of the environment can utilize. What this means is that you can spend less time figuring out what packages to download or what repos to clone and really focus on the interesting stuff. Before we really started using GitOps, the general workflow for custom images involved some data scientists reaching out to the ops team with a request for a new image that had XYZ packages installed in it. Unfortunately, this usually meant that the custom image creation process was very slow. The ops team had to balance this new request with existing work and there was always a lot of back and forth before the image was actually usable. Things like, oh, this repository is wrong or I need that version of the library, all these small things that actually add up in the end. As more and more people started using the open data hub, we quickly realized that we needed a better way to do this. This is where Argo CD proved to be the proverbial magic bullet. By defining an exact process for data scientists to follow, to create custom images and make them available on Jupyter Hub, we were able to make both sides a lot happier. All data scientists had to do was submit a poor request to one of our repositories and once it was approved by an admin, the image was available on Jupyter Hub. So with that introduction out of the way, let's dive into the demo. What you can see on the screen right now is the ODH dashboard. This has links to all of the applications that are currently deployed in our ODH instance. In our case, we only care about the Jupyter Hub. So let's click on launch. Here, we're just going to use LDAP to authenticate to OpenShift. So I'm going to enter my corpus credentials and hope for the best. Once I've entered my credentials, we land at the Jupyter Hub spawner page. On this page, we can pick an image to spawn on Jupyter Hub. What when? Let's go with the minimal. As well as any number of configurations such as size of container, whether or not we want the GPU to be available or any environment variables that we may want to find in our notebook environment. And Jupyter Hub begins to spin up a pod for us in OpenShift. The choice of image determines what packages, libraries, and other dependencies are already installed in our environment once it is available. Since we've picked the minimal image, I'm not expecting to see a lot of dependencies or packages installed. I'd created a sample notebook ahead of time, which was saved in my environment. So let's go check it out. As you can see, I was performing some very advanced data science, you know, some multiplication, five times three is 15. It's correct. And let's divide six and two gives us three, which also makes sense. Once I'm happy with the results, I can just save the notebook, go to the control panel, and stop my server. What this does is it frees up the resources that our notebook was using so that other data scientists and my team can reuse the same material. Now see, I've spent a lot of time on the project, and I want to share my materials, my notebooks, my resources with my team members. All I have to do now is follow a simple process to create a custom image and push it up onto some image registry. In our case, let's go with Quay. Once it's there, I'll submit a put request to the backing git repository for this deployment of Jupyter Hub. This is where we'll start to shift over from data scientist persona to the ops persona. What you're looking at right now is the Argo CD interface. This allows us to get a quick overview of deployed applications, the statuses, right? So if they're in sync, out of sync, unhealthy, whatever, and you know, basic actions that you can perform with them, syncing, deleting, generally perform not to delete them, but you know, you can do that if you need to. So let's head over to GitHub. Here we can see that a put request has come in to add a new image to Jupyter Hub. Going over the changes in GitHub, I can see that we're just telling it to reference another image stream file. Looks pretty straightforward. It's just referencing some image that is deployed on Quay or available on Quay. Now that I'm confident that the changes look like they're not going to break anything, I'm just going to merge the put request and delete the branch. Keep your git history clean. Heading back over to Argo CD and hitting refresh, we can see that the app is showing us out of sync now. This is due to that new put request coming in and indeed, if you click on the diff, we can see that it's just complaining about a specific image stream being missing. Let's rectify this, shall we? Click on sync and synchronize. The sync ran pretty quickly. It's a very basic diff and it's green now. Now we'll go over to Jupyter Hub and click on sign up with OpenShift. Go through. Now, if you look at the available images, we can see that there's a new image we can select called OCPCI analysis. Let's click, select it and click on start. Okay, interesting. So there's a new folder in my notebook environment. Let's check it out. Wow, we can see that this notebook pod came with a ton of different notebooks and introductions. This would be perfect for onboarding new team members quickly to our project. We've shown you how using GitOps tools such as Argo CD in tandem with operators like the Open Data Hub can improve productivity for both your off-streams and your data science streams. This way, you can really focus on the things that actually matter.