 All right, well good afternoon. Thank you for coming to the Rancher Labs session. I was a little worried because in the session guide, they just said Rancher Labs didn't say what we're gonna talk about. So I hope, I hope you know we're gonna talk about containers, were any of you at the keynote yesterday, the technical keynote? Yeah, it was fantastic, right? I really like it because it was about containers. So many container technologies got shown. And indeed, Docker containers adoption has really, really gone through the roof. And I believe that's gonna really present a lot of great opportunity for the cloud. And especially for folks who are out there building and using OpenStack Clouds. So we're gonna talk about that. We're gonna talk about how technologies like Rancher could help you run Docker better on OpenStack. Containers are loved by developers, but more importantly, they're actually changing how the notion of application management is. Now, speaking of application management, you might think about ideas like application blueprinting or a lot of pioneers in the space or established practices like OpenStack Heat or AWS CloudFormation or RightScale. But Docker at the container level really captured some of the essence of application management in a very clean and succinct way. So by the way, this is not the only way to manage applications in Docker, but this is one of the popular ways. You can use something called Docker Compose Template. And you can see here, it's so obvious what the application does, right? It describes four services. One is a load balancer service, then a web service, a zookeeper locking service, and a database service. And it also indicates how these services are linked together. And really with the type of a click of a button or a simple command, developer can instantiate this Docker Compose Template on their laptop or in a cloud instance. That's why it's so powerful. Rancher, which is the product or company ship, is a Docker management platform for operating containers at scale. I already showed you at the previous slide, you know, our individual machine developers can already create containers or create an app. But what happens when you have dozens of servers, hundreds of servers, you have servers that span across multiple clouds perhaps. So this is where Rancher comes in. Rancher has two parts of Rancher. One part is what we call infrastructure backplane. And that's very important because, as you know, Docker is a completely consistent and portable application packaging and distribution format and a runtime environment for your applications. But the problem is, as you run Docker on different types of back end, you would see many different kinds of infrastructure. I mean, for example, if you run it on Amazon, you see things like EBS, you see things like ELB, you see security groups, you see VPC, now you run it on OpenStack, you see something quite different. They're similar, but semantically, they're not exactly the same. I mean, you see the Neutron adapter, you see OpenStack's notion of what a virtual network is, you see OpenStack load balancer as a service and perhaps other OpenStack security concepts as well. Then imagine if you move the same workload now to say a VMware cluster, or more and more popular these days is people simply run some of these things on bare metal instances, probably provisioned through Ironic. Then what happens is they really don't see much infrastructure support from the platform at all. So what Rancher does is it creates a consistent set of infrastructure regardless where your Docker containers will run. So Docker containers will be truly portable. Then with a consistent infrastructure, we can run a set of application services and we can support different ways of managing applications on the Docker platform. And as I mentioned earlier, Docker Compose is quite a popular way today. It's really gaining popularity, but it's relatively new. Most Docker users still manage apps on Docker directly, meaning they just go run scripts or type commands like Docker run a container. And that's literally how majority of the apps on Docker are managed today. And coming down the line, even newer technology like Kubernetes champion by Google, those will be even more advanced ways of running applications. And Rancher then will be a platform that all of these different kinds of application management frameworks will just run seamlessly, regardless of what infrastructure you run on, what cloud you run on. So dive a little bit deeper into infrastructure backplane. What we do is we essentially take bare minimum resource from each cloud. I mean, remember earlier I said, different clouds provide resources in very different way. So one way to do that is you can try to abstract, you can try to do lowest common denominator, but that's not a very good experience. So what we do is we instead take some very basic computing elements from each cloud, meaning a Linux server running Docker with some CPU memory, some local disk SSD resource, and network connectivity. So every cloud can do that without any exception. And it doesn't really matter what technology you use to implement these clouds. Then Rancher would lay on our own implementation of SDN, load balancer, which is implemented using containers, our service discovery mechanism, service discovery for those of you who haven't heard, coming from a cloud background, it is basically the equivalent of really a load balancer. Load balancer is something you would use to make a service available on the internet. Service discovery usually through programming the DNS is what you would use to make a service available internally because you don't really need a load balancer. You don't need all the clients to actually go connect to a single IP address. So as long as you have a wrong Robin DNS, you can set up service discovery for all your internal microservices. We also do health checking, this integral part of the Rancher platform of all your containers and services. Finally, we do storage management. So today, Docker is primarily used for stateless apps that can be destroyed and recreated very quickly, but there's certainly been a lot of interest in doing stateful apps as well. And Rancher provides a simple abstraction and implementation of Docker volume snapshot and backup in very much the same way as actually as how OpenStack does it today. Now you have the infrastructure back plan set up. Then we can do some application services. We can start managing an app. And I'm just gonna use Docker compose an example. Actually, the Kubernetes experience will be very similar to this and the direct management through native Docker experience is actually similar to this as well. But I'm gonna use the earlier Docker compose example. And what Rancher does is we're gonna be able to deploy this app on any infrastructure regardless of what cloud they run on. So you may start with something small and through Rancher, we could then configure it. The very first thing, even before you deploy is you wanna make sure the actual template is configured specifically for your environment. And it's a big problem because traditionally that's the kind of stuff people will use Chef and Puppet for. And you could still use it to do that. But if you decided to adopt Docker compose, then we need a way to inject these configuration variables and secrets so that the same template could be deployed in many different environments many times. Then after you deploy, as the traffic comes that you might wanna scale them up, you wanna perform health checks or Rancher let you define health check rules. And if something breaks, Rancher would make sure that a new container started up and the overall status is still green. Then finally, it's upgrade. Upgrade is really microservice upgrade. If you actually do it with containers, you never really wanna go back again. It's so simple, so convenient. All really you have to do is create a new instance of the service and rewire some of the internal service discovery mechanisms. And when everything is unit tested up and running, then you redirect the front-end load balancer over, then you can delete the old service. Of course, you can keep the old service around in case you wanna roll back. So that is a very simple microservices-based full application lifecycle management. And that's what Rancher together with Docker Compose can deliver. Finally, the last piece of capability that Rancher has besides the infrastructure service and application services, we gotta integrate with a set of user databases as well as DevOps services and different kinds of Docker registry, different kinds of places you would put your Docker images that you're using the company. So a common use case for Rancher, for example, CICD, what people would do is they would, Jenkins up there would actually check out the code from GitHub and they would build the artifacts. Then Jenkins would actually invoke some of its scripts to get the CI scripts started and the CI scripts were run on a Rancher cluster. So that's a pretty typical use case. And then that's the CI part. Then when it comes to CD, usually the CD continuous delivery is not done automatically. Usually an admin will come in and through some commands or through some UI, then he will go through the upgrade process as I've shown you on the previous slide. So Rancher is an open-source project and I'm just gonna show you quickly in the remaining minutes what it actually looks like. This is actually a quick view, a host view of Rancher. I've got actually three hosts already added into my cluster. A lot of these small blocks that's running, they are actually Docker containers. So I've got a number of Docker containers already running and I'm gonna show you what these containers actually do in a minute. Adding hosts is actually very easy. When you click add hosts, Rancher gives you a set of options. So you can directly add hosts from a group of cloud providers. They could be any kind of cloud provider. Rackspace happens to be a provider that uses OpenStack, but you can add hosts for DigitalOcean or Amazon EC2 as well. A lot of times what people do is they don't even bother to go through this type of experience. It's actually for a lot of our users, it's a lot easier to use their existing scripts to get a cloud-hosted virtual machine or even their self-hosted physical machine started and then you get Docker and Linux installed on there and simply run this command to get the agent, to get this host registered into Rancher. So once you got it registered into Rancher, you can start doing things on these hosts. You can manually add a container. I'm not gonna go into that, you select name and you can configure advanced options or you can manage some of the containers we've already started. So obviously we let you do, if you guys have done, and this is kind of like Horizon except we're doing it to containers instead of virtual machines, but there's some unique capabilities of containers. Containers is more app-oriented, you can actually look at the logs that's spilled out from the app that's running inside a container. Very much like a virtual machine, containers, we can enable you to actually SSH in into a container and you see, containers are pretty clean, like it's unlike a virtual machine where you probably get three screen-folds of processes running. Containers you would see no more than a handful of processes running. Really a well-crafted container should probably only have one process running. The PID-1 should be just the application itself. So you've got, you can of course start to directly manage your application this way through the Rancher UI, but we also support managing apps through by specifying Docker-composed templates. Here I've got a WordPress application already deployed. These are the two services that I have and if you, again, I'm not gonna go into details of this. Here you see the actual load balancer for WordPress and WordPress, the actual Docker-composed files that we use to actually get this deployment going and on the right-hand side are some of the additional arguments that Rancher has to specify to make sure this application is production-ready. So with that, I'm gonna just put up the, like I said, this is the open-source project. All of our code is on GitHub and please check us out. We have two projects. One is Rancher, which I talked about. Another project is called the Rancher OS that don't really have time to get into it, but you're welcome to check that out as well. I think both are really exciting. If you're interested in running Docker on OpenStack, check these projects out. Thank you.