 Hello and welcome to Crossplane Community Day Europe. My name is Jason Bonafide. I'm a principal IoT software engineer at Dell Technologies and today I'll be demonstrating an extensible approach in distributing workloads using Crossplane. To give some background, we at Dell Technologies have conducted research using Crossplane to orchestrate Kubernetes clusters across the multiple cloud providers supported by Crossplane. So with the topic of extensible approach to workload distribution, we have talked about extensibility. Extensibility is the ability of a project to add new features to its code base without disrupting the core code base. This also goes for modifying existing code. You may have a performance SLA or some task that has showed up maybe in your backlog or in your scope that you need to add to your project. The idea is that we don't want to affect other modules and subsystems as part of our entire system as a whole. The importance of this is it comes in many different facets. The first bullet point that I have is costs of development. Studies show that as projects grow larger, they tend to cost more per line of code as they grow in size. So the extensibility that Crossplane buys us in our particular use case is which is to distribute workloads is that it really helps us stand up resources on the different clouds. Now you might ask why would somebody really need to work with multiple clouds and don't you need one? This is true. You can absolutely get by with one. There's nothing that says that you need multiple. But we do see a growing trend in the industry where companies are deploying apps or leveraging different services from the different cloud providers. You may have a case where a company likes a particular service from AWS while they also like something from GCP. With that, you're now talking about maintaining two clouds. So if we do have the case where we want to leverage services from different clouds, from an app development standpoint and we want to deploy an application onto these clouds, well, it begs the question, supporting one cloud can be difficult enough. What happens when you need to support any number of clouds? In our particular case, we were interested in deploying our containerized applications using Kubernetes. Well, out of the box, Crossplane has what is called the provider. For each of the clouds they support, which is all of the major cloud providers, as well as even some automation tools that are not specific to a particular cloud, but can definitely be leveraged within those clouds, Crossplane offers these different providers, which allow you to run on a Kubernetes cluster, such that we can leverage Kubernetes to monitor these particular, not only providers, but the resources you're creating on these particular clouds. So for example, let's say that we've configured our Kubernetes cluster to support Alibaba cloud. We can create resources on this cloud in our Kubernetes cluster, which is leveraging our Crossplane provider for that cloud will allow us to watch these resources and ensure that these things are created and may exist and are configured in such a way that we need them to be. So with that, let's take a look at a scenario in which we can kind of describe these providers a little bit more. In this example, we have a fake company called DevShop XYZ. DevShop XYZ is leveraging the multi-cloud strategy. Now, for this example reason, they like messaging that's provided by GCP. They like the identity management that's provided by Azure, and they like the storage feature set that's provided by AWS. Now here we have multiple clouds. We're talking about supporting three different clouds, so we're talking about a lot of different work. But in this case, let's just say we have six applications. A and B pertain to messaging and to meet that requirement of GCP messaging. We're going to deploy those in the GCP cloud. C and D, they make use of identity management. So we're going to deploy them into Azure. And lastly, E and F, we will deploy them into AWS since they leverage storage. Now, diving into that scenario, let's assume that we're taking a programmatic perspective in creating these Kubernetes clusters such that A and B can run on GCP. C and D can run in Azure. E and F can run in AWS. And this is an approach that we conducted over with our research and examples. So DevShop XYZ app A. So in this case, we're looking to deploy to GCP. We can leverage the Kubernetes client. So if you're not familiar, Kubernetes supports custom resource definition. Custom resource definitions are an extensible way to add new resources. Resources are generic enough that they could be anything. These resources can be added to be recognized in all of the Kubernetes state operations can be performed on this custom resource definition. So when I talked about extensibility earlier, I was really highlighting and showcasing the wonderful job that crossplane does with respect to making the crossplane provider resources custom resource definition. Now, for the more common view, one where we're looking at this from a DevOps perspective, you know, what's funny is that this kind of looks similar to the last slide. Even if I toggle back and toggle forward, our DevShop app in this case is our continuous deployment. So say we use something like GitLab, GitLab, we leverage GitLab pipelines to instantiate our just say we use GitLab to instantiate our cluster or concourse CI. We want to create our GKE cluster, AKS cluster, and I think the other one is EKS cluster on AWS. We will look at the Kubernetes CLI again as our factory. We're interacting with crossplane, but through the custom resource definition. So again, we're interacting with Kubernetes the same way we normally would, except we're leveraging crossplane to do this part, to create our specific cluster or could be a resource. It could be any resource that the provider supports could be on Azure, AWS. So again, our separation of concerns is built into the crossplane logic. So again, they're built as a factory and we get to focus on our reasons to change. So when we were talking about extensibility earlier, well, you know, now in this case, we're supporting three clouds. Well, what if we want to support Alibaba cloud? We can now just add this new piece and the amount of effect that it will have on the existing code would be minimal. So with that, our quick lightning talk, some of the major takeaways that I kind of covered in this quick talk is basically crossplane was built with usability in mind. I can attest to this with experimenting with crossplane. I was to have been taken aback by how great of a product their tool this is. These providers are doing all of the work we want them to do. You know, like I'd say, when you're given the task to, hey, support this new cloud, nobody wants to do all the lifting and the boilerplate stuff that you need to get this running on a cloud. We know Kubernetes clusters are the same across the different clouds. So why not leverage crossplane to do the provider implementations in producing these resources on these, in generating these clusters on these different clouds? Number two is that it was very easy to get up and running. I mean, their installation docs, using Helm, if you're familiar with Helm, it's a matter of minutes before you can have this up and running. And it's starting to benefit you right off the bat. The abstract nature of crossplane, it limits the reasons to change increasing consumer flexibility and robustness. This is the, this was the main thing for me. I was blown away by how this was architected very well. It even, I was even able to feel it as a developer. So I got to interact with these APIs through a programmatic standpoint. And boy, crossplane, I was able to leverage it as if it was considered in my system as a architectural piece. So really with that, when it came to adding support for a new cloud, you know, it's going to be its own piece and its reasons to change are going to be isolated to that specific components. And that will conclude the lightning talk. I thank you for tuning in and hearing me go on about crossplane. And I highly recommend trying out crossplane and leveraging it for all of its features that it offers.