GitOps with Argo CD and an Argo Rollouts canary release

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hello everyone welcome to a new video on my channel this time about integrating our go rollouts with our go CD what you see in front of you right now is the Argos CD user interface and Argos CD is a tool for continuous deployment using a get ups approach much like for example tools like fluxed but also have that also have videos about and what we will do in this case is we will do a progressive delivery example a candidate deployment we will do that I discussed in earlier videos on my channel as well I will deploy this application using using this tool using Argo Argo CD if you have followed the previous videos you have seen that the cannery deployment at a certain point in time it pauses indefinitely and you could use the Argo rollouts go back to plug-in to promote the application and to actually make sure that your newly deployed image becomes a green version so to speak or the live version or the stable version as we call it yeah in those videos I deploy the application with a Quebec tool apply this time we will have to do this from from within the tooling let's do that it's relatively easy to do so in in this case you have the real-time application name the project we're gonna take default I'm gonna sync with the git repository manually the repository URL will be the following one the path will be rollouts slash and then it is real time can real-time can is that correct let's take a look yeah indeed demo clicks rollouts real time can and the jungle files all the files within that folder will be picked up so in this case we pick up we pick up all these files from this folder here the destination will be in cluster so roaster that Argo CD is running in the name space will be default we will not recurse the directories pizanno at least underneath and I don't need arguments in this case so I just do create which creates the application and of course you will say in this case while the application it's not it's not there it's missing you see this here and it's out of sync and you're not sinking you didn't sync with the git repository yet you just put the application within our go and that that's all there is I can click on the application yeah it gives me it gives me this here of you on on what is within that within that llamo file you can also see that indeed we are now at the following revision here version 1.02 - that was my latest my latest commit commit message but not much is is going on here if I'm going to my cluster and I'm doing a Quebec to get what's not props tobacco get I don't see the pots over there if I'm doing a Quebec toll Sokka Bechtel Argo rollouts get rollout real time you will say well actually did I do it correctly dear and now command let's go back to our Co rollouts wait did I not oh this is the wrong one should be in Ubuntu because it's a Linux only thing so go back to our go rollouts list rollouts there are no rollouts yet but we'll use Quebec to spoil you back to our grows no resources found so there is no there is no rollout happening here it's normal because I didn't they say automatic syncing I didn't sing this application so I'm gonna go back to my list applications I could do it from the other page as well I'm gonna ask for a sink here yeah asked me a question what do you want to do this kid I'm gonna say you know what just single eyes just do it so he's now singing so he's getting is he singing the content that he has in the gate repository with the cluster so in the default namespace the application should be deployed and as you can see here it says it's progressing so the application is here it gets a bit more complicated now and it says I am progressing what is progressing of course if we are going to actually get the role out here the roll out in I'm gonna do real-time app the rollout is indeed progressing why because in my first step I said you know you wait for 60 seconds or first you deploy everything then and then you wait for 60 seconds and then we'll see what happens so we'll do this but we'll use the watch option here and see what is what is actually going on so they actually another all running yeah now they're all running and now it is it is healthy so let's check back in our go CD clearly he says yes application is now healthy we we started up all the pots in the deployment we synched with our get repo where I have my commit tag here or my commit message which was Persian 100 or two and then that's of course nice you get this this nice view of all the resources within the application so I have my my my real-time application here the real-time application is using is of course using services and all kinds of things but also a roll out the roll out controls a replica set and you see that here there is a one replica set right now with five pots the replicas have indeed is pointing to these five pots which are called real time real time app we also have our ingress the ingress has certificate which is not there yet by the way so it's not it's not it's not given out yet I'm gonna check this because I might hit my my let's encrypt limits here so yes that's that's fine the application is deployed now what I want to do now is modify the application and actually make sure that in my ml file I'm going to go to version 1.0.0 oh yeah actually I'm going back that piston that doesn't matter let's save this let's yeah sing this all up it doesn't matter 1 0 0 I want to call it a little bit and clean what I'm doing now ok that's fine pushing it all to the to the repo there's no checks or whatever when I'm pushing it to the repo so that's that's all demo as well so let him just do that yes the push has now happened which means I can now sync and something should of course happen here yeah so I'm gonna sync from this page synchronize synching is starting um you should normally in a while detect that in deity we're now sinking with this version where I wish my last commit tag I said 1.0.0 is that suspended here okay what what what does that mean suspended well yeah let's take a look and see what he's doing here oh yeah he's indeed post why because I said in my first step in my first cannary step you're gonna do 20% of traffic to this but put your own boss or sixty Seconds I'm not doing anything special at just an example I'm just pausing and I progress to the next step where I expose 60% of the cannery release and then I will post indefinitely what waiting for an operator to do something as I told you also in the earlier videos that's a example only that's not something in production that you would probably want to do but it demonstrates how it works so yeah you see it here we're over the 60 seconds so now we're over 60 seconds he's going to do the 60% balancing and you might see that the pots are like 3 in in cannery and still 5 in stable but we chose to do the actual traffic balancing with nginx the nginx will make sure 60% goes to the to the cannery and 40% goes to the to the stable application but it also means now it's post and now it will be post indefinitely there's nothing automatic going on it's post indefinitely so somebody has to actually decide here let's switch to from stable to cannery where cannery is 1.0.0 okay we could do that with a command line in this in this tool but of course the Argos CD software recognizes a roll out it knows that this is an Argo roll out right which also means that if it's suspended we might want to now do the actual promotion so here you click on this menu here there's a resume to the post we can resume but resuming means we can pause it and that basically also means we do a promotion if I resume here I say yes things will change here and of course things will change here as well so he is progressing actually it went quite fast he says I'm healthy already we now go to five pots in the cannery at the nginx level we do on the present do this zero percent to let's say the old replication and the older one is actually scaled down to zero so that went quite quickly and you can see that also here now now we are healthy and it's correct we're healthy we have the roll out we have a roll out replica set here which is actually going which is going to the five pots but here when you look at the this replica set there's nothing there's no arrow leaving from there so it's four completely scaled down it doesn't it doesn't of course go to any any pot there our ingress keeps on working and normally this one is is the one that is now it's not healthy as well so I should have the certificate maybe and I can actually check that I can go to my application here actually I can click here I click there he goes to real-time baccarat info and this version indeed is version 1.0.0 because if you have seen the previous videos this has this soothing blue header background yeah right good so what have you've seen in this video you have seen in this video how to combine our go rollouts and the blue green deployments or the canary deployments in alcohol apps with our go CD which allows you to do these kinds of deployments using a a Kitab approach and because our go CD also has a nice interface for operators to look at and so on if an operator needs to decide or someone need to decide we need to progress to the correct version for example if you're doing it simple and you have Bluegreen deployments somebody has to decide let's switch over to green because have done our tests and so on maybe haven't automated everything fully yet you can very easily using the integration with rollouts resume from from here yeah that works for nicely actually that's it quicker video then then otherwise I hope you liked you like this one probably in one of the other videos coming and based on our go rollouts we look at how to do instrumentation and experiment a bit more complicated so we'll have that probably out in in one of these these days thanks for watching see you again next time
Info
Channel: Geert Baeke
Views: 3,272
Rating: 5 out of 5
Keywords:
Id: 35Qimb_AZ8U
Channel Id: undefined
Length: 12min 52sec (772 seconds)
Published: Wed Apr 22 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.