In this tech talk, you'll follow along as one of our lab developers, Andy Burchill, walks you through the ArgoCD service, a GitOps continuous delivery tool for Kubernetes. We'll start off by discussing what ArgoCD is and how it works, before showing you a demo of the tool in action. We'll round off by looking at the pros and cons of ArgoCD and things that you should take into consideration before using it.
If you have any feedback relating to this course, please contact us at email@example.com.
- Understand the fundamentals of ArgoCD
- Learn what it is and when to use it
- Get a practical understanding of the service
- Understand its pros and cons
This course is intended for IT professionals who are interested in using ArgoCD for their deployments.
To get the most out of this course, you should already have a good understanding of GitOps and Kubernetes.
Oh, so, what I'm thinking about doing for the demo, I'd like to go through the demo quite quickly. I'm sort of mindful of time. but also it's kind of a little bit fiddly, so I'd like to go through it quite quickly and I will commentate as I go. So, what I've done I've installed ArgoCD, running in a Cluster on my laptop. I'm using K3D for the... See there's lots of ways to run lightweight Kubernetes just locally. This is the one I'm using for this demo. I've put a link to this in the slide so you can take a look there later as well. And all I've done is I've installed obviously the, using the instructions.
So I'm using these instructions here. I'm not going to do it now because it did take about five minutes to actually start everything. So that's why I did that beforehand. But what that means is that you've got say, five Pods running in the ArgoCD run space. Yeah. Right there. Something I forgot to mention earlier I talked a lot about how, that ArgoCD can, basically supports anything that Config. So customized case on it, case on it and also just plain Kubernetes Config. So you don't have to use Hub.
So yeah, what I was going to show next. So what I've done is I've bought the example apps. So this is the example apps that ArgoCD provide and we're going to deploy the guest book. So this is essentially a GitHub repo. Let's just Config it very quickly. So this is.. This is just plain Kubernetes Config. So it's a deployment and service. I'm actually going to do something before we deploy. I'm going to change this, change the doc tag. So, now what I'm gonna do is log in to the ArgoCD user interface running on my laptop. And I'm just using CTL Port Forward to access it. That's definitely. Okay. That's better. Okay.
So, this is the ArgoCD's interface ArgoCD also has an API and it also has a CLI application. And the CLI application is probably what you'd use if you were automating. So this is the ArgoCD user interface. There's also a, a CLI, and the CLI is what you'd use, if you were interacting with ArgoCD, in a pipeline, say like a CLI pipeline or to kick off a deployment, make changes to ArgoCD.
For this demo we're just gonna use the user interface. So what we're gonna do first... I wonder if I can... So we're gonna create a new application. I'm actually not gonna use the form. I'll just go through it quickly so you can see your name, your application, associate with the projects. Projects associated with a Cluster, sync policy. There's lots of options, basically. Change the destination here. is an important one because if you have, what I was talking about earlier where you have a repo that contains say, many applications to be deployed, you really want it to be, too. You want it to go through each one and, and deploy each one and then go through any, you know, multiple levels. So that's quite important to configure.
What I'm actually gonna do... I'm just gonna point this out because... Revision is quite important, you can specify a branch or What's often quite common in GitHub systems is just to have a branch per environment. So, and then you'd and credit pool request and some test and that sort of how things progress through, through different environments. I'm gonna choose the guest book. It's interesting that it doesn't... shred it here, okay, Default Cluster. I mean to set it up, but I don't think we need to.
Let's just have a look at the. So this is the application custom resource I was talking about earlier and yeah, so that all looks fairly standard. So I'm gonna click Create. And it's created guest book application. If you click on that it will show you the service and deployment. It's currently out of sync. So it's trying to sync in a moment. If we look here, we go to events, shows you what's going on. Shows you diff at the Let's just Manifest. Sorry. I'm just gonna click sync. I expected it to synchronize straight away so I'm worried that something's going wrong now, gone wrong now. But, okay, so now it's syncing. Okay. That's better.
I'm pretty sure we did that straight away, it, it's quite cool, it shows you the, the actual resources inside Kubernetes, so it, it's crazy. So it's creating an endpoint. I wrapped cassette on a Pod and if I go back to my terminal, and I'm just gonna close the Port Forward for a second. So, can you see my terminal at the moment?
- Yep, cool.
- Can you zoom in again?
- Zoom in, all right.
- Is that better?
- That's good, yeah.
- So that's the guestbook running. So, I guess we should check out the guestbook. So again, do that. Hmm. That's interesting. Oh it's 'cause of SSL. There we go. So this is just the demo, guests pick up the patient that you provide. So what I'll do next is I'll just go through changing the tag and updating the application. And then, actually, before we do that let's try and break it so that it's put in a tag that doesn't exist.
So I'm gonna go back to the ArgoCD application. Now I want you to use your imagination at this point because what I haven't done is I haven't opened up a port on my router, so that the, and configured a web hook so it can get to my laptop. Cause it doesn't really seem worth it. So when I click this sync button, I want you all to imagine a web hook from GitHub to the ArgoCD server on my laptop.
Okay. And you could see error image pull if you have the events. So it doesn't work here because it can't access the tag, which is, obviously that's expected. So if we go back and change that to 0.2. Okay, so that's been updated. We're gonna fake the web hook again. And obviously that looks a lot better. Yep. Replica sets, its old ones are hanging around, I believe this is configure controlled by the provision history limit in the deployment resource. So, if we change that to, change that to 1 in the deployment and synchronize. Yeah, it should... Okay, I was expected to give one of them. All right so I guess it's like one extra So it's the current one, plus one extra.
- One history one.
- One history one. Yeah. So the other thing we should check is it's already updated application? So yeah, here. There we go. It's fancy, yes but no. Yeah, okay. So that's pretty much it for the demo.
Andrew is a Labs Developer with previous experience in the Internet Service Provider, Audio Streaming, and CryptoCurrency industries. He has also been a DevOps Engineer and enjoys working with CI/CD and Kubernetes.
He holds the Developer - Associate, Sysops Administrator - Associate, and Solutions Architect – Associate AWS certifications.