 All right So My name is Eddie. I serve the developer community a company called digital ocean I have a pretty cool startup that I like to call screaming chicken club. You can find it at your nearest chicken restaurant, of course And so I'm actually like Priya said I'm here to talk about how most GitLab customers customers today actually fall into this workflow portability level of multi-cloud adoption and so Like she said, I'm just gonna jump in with a demo because that's the best way to show this kind of stuff and so I've got a GitLab project created for that website and It's got it's nothing configured right now. Has anyone used GitLab CI CD before yeah Oh, that's awesome. It is pretty great Anyone using auto DevOps? Not as many okay So we're actually going to take a look at auto DevOps and if you you know You may have thought that like it ties your hands a little bit or it's a little Constricted it's actually not true at all and that's one of the cool things that I'm going to show you today So we're just going to get started I have a cluster configured right now on a GKE which is Google's Kubernetes engine And so this is set up as a staging environment inside of my project here And so we can actually take a peek at this And so I've got a GKE cluster set up And I also have a digital ocean Kubernetes cluster set up And so what we could do is we could come over here and we could add a Cluster is anyone using like on-prem or some other solutions that aren't GKE for Kubernetes. Yeah handful of folks, right? And so what's really nice about this is you can import any cluster in here You just have to create like a service account cluster role binding all this kind of jazz if you've messed with Kubernetes before in GitLab you've had to do this. I actually wound up writing a Cube control plug-in to automate all of this for you So you can grab this at gitlab.com slash eddy zane Cube control GitLab bootstrap and the TLDR is all you have to do is come in here and grab the project ID from your GitLab project So that's just right under here, and then you can pop into your terminal and wherever you have that Cluster set up. So I've got a cluster configured locally here You can just grab cube control GitLab bootstrap, and then you paste in that Project ID and it's going to do all of the service account creation all the API requesting Generate us this URL that we can go to and then we can actually follow up by installing the last bits that we need So my cluster is already ingested I'm going to run through and install Helman tiller and the ingress controller insert manager anyone seen the screen before Have you messed around with it? Not if you haven't it's pretty cool stuff So this shouldn't take more than a minute, and then I just have to paste the URL in here that gitlab is going to use as my base domain So let's do that So I've got this set up for production and my GKE cluster set up for staging and We'll just install some ingress controllers and cert managers This is going to if you're not familiar Let me generate TLS certs automatically. It'll hand up all of my routing with an engine X ingress controller And it's pretty much just going to handle all of my CI CD deploys from start to end There's basically zero configuration And so while this is spinning up. We just got to wait till it gets an IP address So let's see if it spins one out real quick It's got to create a load balancer shouldn't take more than a minute And while that's going we can we can start writing our GitLab CI manifest file So if you've seen this before it's a GitLab CI.yaml And It's just like you know very straightforward this configuration language We always start with some sort of stages and so these are the stages that are required for auto devops to run The nice thing about auto devops and in GitLab in general is that all of GitLab is open source Including all the auto devops templates and so nothing at the end of the day is magic here And that's what I really appreciate And so this is actually the manifest for auto devops or if you just click that box that says enable auto devops on your project This is the manifest that it's going to use and it actually has all these separate jobs and templates broken out here And the nice part about that is you can actually go and inspect every step and they're all composable So you can pull in the different ones that you care about And so let's take a look on our load balancer Shouldn't take but a minute Something went wrong. Let's try again And while that's going I'll finish this out and so what we can actually do is we can add a variable here That says staging enabled So what this is going to let us do is do a multi environment deploy, right? And so this is where workflow portability really comes in and so GitLab has different concepts of staging different concepts of environment and We can actually target our cluster based on the environment So we can tag different build jobs with an environment and deploy to different clusters And it really gives you this whole multi-cloud approach to deploying to Kubernetes and so real quick We just have to include those templates that I mentioned before so we're just going to grab the build Dot git lab ci dot yaml and then we'll grab the deploy job And so that's it. This is actually all I need to get started with full auto DevOps pipeline We're skipping a couple of the steps here like cluster scanning and some security scanning great features They just take a little longer to run and so I'm going to start that off and let's just make sure there we go We got an IP this time Make sure this is configured One of the secret features of this website is if you click the chicken's head it makes a pretty great sound We just got to wait for this IP address We kick that off. There we go. So I'm going to set DNS up real quick The point at that Save that awesome. So I'm going to push this up. We'll make a commit Devops right and so just like that all I did was add that very simple manifest file You could skip all of that by just enabling full auto DevOps And so this is going to kick off a CI city build pipeline and we'll see here that the first step It's going to do is it's going to do that build. So it's going to pull down My docker file. I've got a doctor file on that good. It's basically just a very simple go fuck project with a static website in there So it's going to do a build on that website. It's going to pull down get labs going to inject all of the Environment variables needed to log into the registry So if you didn't know your GitLab projects actually have a built-in Registry for containers so you can store all of your containers right in your GitLab project works across all the clouds You can use a Kubernetes secret to easily generate it And so this shouldn't take more than a sec And while that's going I'll show you this awesome part where we have the environment section And so this is going to break down of those different environments that I mentioned And so the nifty thing is by enabling that staging environment the template gives us a manual deploy to the production All right So it'll generate us a URL that we can go check out on staging on that GKE cluster Make sure the website looks exactly like we want and then push it to production by approving it And it will ship off to the other cluster So the job succeeded here. We can look at the staging deploy So it's going to take that container it just built Plug it in It's using helm under the hoods right so helm is also very Native when it comes to different clusters And that's where it gets really tricky with Kubernetes is as you start using more advanced features You have to start adding more annotations, right? That's this thing that we've adopted with in terms of like really tweaking those generic Abstractions we've created if you're using like an AWS load balancer you have to throw a ton of annotations at it GKE has a couple digital oceans got a couple to like you can pick like an SSL cert to automatically apply So we're still a little ways off from having like really truly cloud native Like Kubernetes orchestration when it comes to load balancers. That's one of nice things that cross planes introducing And so boom we deployed to staging. I can grab this URL right here and we can see that our website It's automatically generated the the URL name. It's just my GitLab project with staging tacked on to it And so this is running on GKE this looks good to me I can pop back over to that environment section and I can actually go on and improve that to deploy to production manually And so hopefully the wheels are turning hopefully you're seeing how you can apply these different things, right? If you have your own on-prem cluster, all you have to do is plug in those different Credentials you could use that plug and I wrote to automatically add them in and It really alleviates the pain of having to start and do this all manually, right? Eventually you might need some more manual and like really fine retune things But to get started and to start deploying with CI city. This is super straightforward. And so let's peek on that job should be done in a second and So this is going to do the same thing. It's going to generate us a URL all that is customizable You can plug in variables and environment variables to tweak the ingress name that gets created And like I said, the nice thing is it's using helm under the hood So nothing is magic there, right? They're just manifest that you could take a look at check out and modify yourself And that's it. So our production deployments been done Generated at that production URL I added and we have a full deploy, right? So start to finish Probably around like five six minutes to get this running Anyone have any questions on that? Awesome. Well, hopefully you go give auto dev ops a shot if you haven't done it before You can find me on the internet's at Eddie's aim, which is one of these tabs here. There it is And I'll be here all cube cons. So thanks for having me. This was great You