 Hey there everybody. Wow that's loud. Cool. My name is Bruce Matthews. I'm a member of the OpenStack community for the past eight years. Served with HP and now Morantis. That's the last time you'll hear me talk about them. Really quickly I'm going to go up and and try and go through this. How to bring together the butcher the baker the candlestick maker because we all need to come together. Let's all get together and have a good time. So a couple of things about this. What can you expect to learn if you sit here for ten minutes? Well the first thing you're going to figure out is what the independent tools are within the Spinnaker application environment and then you're going to find out about what triggers Spinnaker stages within an environment and then I can show you some examples of declarative logic within the Spinnaker world and finally can you demo it? Yes I can and I'm going to try really hard to do a live demonstration here before this is over. But in order to do that I'm going to show you this template of what the Spinnaker application environment looks like very quickly. Plugins for doing Docker and Jenkins for the CI part of life, doing verification of images that are being built and finally using deployment tools of your choice. So Terraform, Kubernetes, Google Cloud all those things are built in the cloud native drivers are built in to the Spinnaker environment. So instead of now walking through these additional sides because I really want to get to the demo part of it. I'm very excited about that. So what we're going to actually show you is an affectionate tool application called TweetViz and the TweetViz application helps you to do word cloud analysis. But we don't have it yet. It's not built. All that's built is the Python image that this is going to be founded on and I'm going to show you that in a minute. But literally it's going to run through this entire sequence of events using Spinnaker. But guess what? We're not going to start with Spinnaker. We're actually going to start with Garrett. Why? Because we need to authenticate what we're doing to make changes in our world. So we're going to start it there and everything else is going to happen automatically. And then so we're going to start with Garrett and it's going to automatically set off these pipelines. So that's where we're headed. And in order to do that, I've already predefined a cluster. This guy right here that's going to support everything that I'm going to do right now. And these are the particular workloads that are defined in the environment. And if you look through it, you'll notice there's no TweetViz environment. But there is a registry. Well, the registry itself is currently holding a Python image that I've already pre-baked. It's going to be used as the foundation for the application I am going to create. And once again, here are all the services. And right now, there's no TweetViz UI here. Well, that's going to happen as a result of the next thing I'm going to do. So the first thing that I'm going to do to accomplish that is I'm going to log in as an application developer person. This guy right here. And he's got a weird, weird... Don't look, everybody. I'm gathering my password. Okay. So the first thing that I've got to do to accomplish that is I'm going to look at the projects and the list of them that I have access to. And here I've got the TweetViz UI because I'm an application developer. Well, I'm going to actually create a change in that world on the master branch. And I'm going to say create TweetViz. And now I'm going to actually fill in this. Okay. So now we've created a change, but I actually want to add some file to tell you I'm actually doing this live and not... I didn't cheat. So I'm going to create a change in a file called index. And in this file, down here in the header. Okay. So this header change is going to say Bruce's demo, open-sex, you just saw me type it, right? So we're going to save that image. And then I'm going to close it. And now I'm going to publish that edit that I just made. And I'm going to start the review process on it. I can't review my own stuff because somebody else that's smarter than me needs to do it. So we're going to sign out here. And I'm going to sign in again as the admin user. And once again, please don't look. I mean, gosh, you know, you just took a snapshot of it. I'm in trouble. Okay. And you'll notice that it says you've got something in your queue to review. I'm going to review it. I would actually take a look at it now and take a look at the change that was associated to it. Oh, Bruce, you're just doing something silly. That's okay. I'll let you do it. And now I'm going to submit the change. Now, from just having gone that far, where I set up a change, I authorized the change through Garrett and the administrator. From just doing that, a whole new process is starting off in the delivery pipeline. It's going to happen here. And you'll notice here that these jobs have already started. So everything that I'm about to show you is literally being executed from one tool to the other back and forth and back and forth, executing via a Jenkins pipeline, for example, and running it back through into Spinnaker to pick up the next step in the process. And that's where all of these are, the build triggers. And if you take a look at some of the detail of that, it will tell you what it's doing. So, for example, it called the Jenkins job. And when it got through that, it literally built it here, and it's still running. Okay. So now we've got that all brewing and cooking and everything. But you'll notice there's a bunch of other pipelines here that say no execution. Well, guess what's going to happen? The pipeline review and the rollout is going to call the next phase and the next phase. And these are going to start having executions as a result of it. All right. So in this interim period, while I've still got you here, let me give you this. Spinnaker has a bunch of open source tools associated to it. These are all of the tools. Some of them are for interfacing like DEC. So that's DUI. Gateway has the API running in it. Orca. All of these are different containerized environments that you see here. All of these workloads are deployments that you see based on this set of environments. You can also... It's got within it a set of predefined Java classes. So what they did is they whitelisted a certain set of Java classes and left some of them out. Why would they have done that? Because some of the Java classes actually represent a security leak. So you don't want to have them in your environment. This was originally developed by Netflix. They said, no, we'll only take the ones that we'd like out of it. So that's the basis for almost everything in Spinnaker at this point is a set of Java classes. Here's a set of helper functions that are associated to it. Looking at strings as alphanumerics. Looking at JSON files and URI files. Changing an object from something else, a text file, into a JSON file. Check for floating and make it a floating point object, et cetera. Then you've got all of these predefined stages. And when I'm talking about stages once again, you notice I'm looking at this set of stages here. And in detail, this is kind of what it looks like. It's now deploying. It took the baked image that I had already pre-built. I pre-built that here, before we started, in pipelines. And if I look at the detail of that, you can see that it runs a very few things. But it also has things like security scans that you can build into it. And in this case, it used Claire. It didn't find anything. Sorry. So back here, now it's asking me if I want to continue in the process. So this is part of the declarative logic. It's got if then else built into it. It's got stopping point. Are you sure you really want to do this? In this case, it's asking me if I want to do the canary analysis that's going to come next. And you'll notice the canary analysis here went through and it's found a few problems. That's what these are referenced to. But I've got the threshold for errors set very high. And as a result, it's not considering a problem. Yeah. So this was the fetch. And it found a particular problem that it didn't find an artifact for it initially. And then it found it. So going back down here, it's now asking me to continue into production. And now we're going to let that last thing work. And while that's working, I'm going to come back to the stages. So in general, there's a small set of stages here that are available, pipelines, Jenkins to run a Jenkins job, manual judgment, which you saw. Yes, you can go or no, you can't check preconditions, if then else, all of that kind of stuff. Deploy, actually go deploy something into a registry, all of those kind of things. Then there are some that are for resizing the cluster environment you're working against, just in case you need to. There are some that are very Kubernetes specific, baking a manifest from a YAML file, those kinds of things deploying from a YAML file, all these things patching an existing environment, all these things you can do from within the Spinnaker pipelines that I was showing you. And if I come back here again, wow, it said rollout is complete now in production. And a few seconds ago, so I guess I talked this properly, it actually added it to a load balancer. And if I come back over to my Kubernetes world and I look at my services now, wow, it actually worked. There's the Tweet Viz UI. Wow, there's Bruce's demo for OpenStack. We're done. That's all you get. So the point of this really is that these pipelines can interact with each other and perform very complex functions. In this case, you had a set of five or five different pipelines that were used and interacted with each other. But I never needed to know how Spinnaker worked to accomplish that. So you got the smart guy in the background in the back end building these pipelines. You have other people, operations people who already know how Garrett works and Jenkins works and all of those kind of things. So they're interacting with tools they're comfortable with. But it does everything it's supposed to do in the back end. All right? So if you liked this and would want to know a deeper, take a deeper look into this, I'm currently have a blog out there on morantis.com. It's the morantis.com blog. And I'm actually walking through a set of chapters with this in mind so that you get a much deeper look at each one of these, including tools like Istio and some other things that I threw in that I thought were important. All right? Thank you all very much.