 Hello everyone, thanks for having me. I'm excited to talk about infra-like apps get opsifying cloud natively managed infrastructure with cross-plane and Argo CD. This is Alucine, a DevOps engineer working for Tetra Pak. Prior to joining Tetra Pak, I completed three master's degrees all at once in per phase of computing and communications for sustainable development. Lately there have been lots of talk about deploying applications following the GitOps operating model. However, there are often gaps in doing so when it comes to infrastructure, where those applications run on top of. And to recently, infrastructure provisioning and its lifecycle management were handled in a different way than application deployment. Unlikely, not following all four principles of GitOps. But first, what is GitOps? Well, it's a set of principles, practices, and tools to manage infrastructure and application deployment using a developer friendly tool, Git. Basically, GitOps, in the context of Kubernetes, aims to address the challenge of how do we ensure that our Kubernetes cluster reflects the declarative configuration we have in Git, also known as the desired state. This can be achieved with the help of GitOps controllers, such as Argo CD, Flux, and Rancher fleet. The notion of GitOps controller is to have a continuously running loop that performs the following. Git clone repo discover manifest in the clone repo and run keep control diff and keep control apply against those manifest to handle config drifts. There is more that GitOps can offer beyond application deployments. A GitOps approach can provide a better experience for creating consistent and repeatable environments for replication teams. It's also about having a uniform way for managing both apps and infrastructure alike. As organizations are becoming more cloud native, a new paradigm is being assured into place. Antineu technologies are needed. The existing infrastructure as code tools, like the continuous reconciliation, the automatic drift detection that ensures the system's actual state matches the declarative desired state defining Git. Let's go to the chase and talk about Crossplane. Crossplane, a cloud native infrastructure as code tool, is a CNCF incubating project that is redefining how to manage infrastructure using the Kubernetes API via the custom resource definitions abbreviated as CRDs and controllers. With Crossplane, if at any point, the actual state diverges from the desired state, it gets corrected based on a control plane reconciliation. The reasons why Crossplane fits in the GitOps realm boiled down to the philosophy of Crossplane, that is to manage infrastructure the same way we manage our Kubernetes workloads. By leveraging a ubiquitous language, Kubernetes objects manifest, that is becoming lingua franca for DevOps, together with the ability to use the same API, the Kubernetes API, for everything. Besides the fact that infrastructure state is the same as Git's, where the Kubernetes objects manifest are stored and not to mention the automatic drift, detection and sync. Crossplane introduces a few core CRDs into our management cluster, which corresponds to the following, a provider that is in charge of interacting with cloud services, and to do so a provider config is required via an account such as service principle in Azure. Also a managed resource, that is Crossplane's representation of a resource that stands in a provider. With these three components, together with the core controller, we can create resources. However, that's not all what Crossplane can do. As stated in the Cloud Native Infrastructure book by Justin Garison and Chris Nova, Cloud Native Infrastructure is infrastructure that is hidden behind useful abstractions controlled by APIs managed by software. Crossplane enables sampling infrastructure from multiple vendors and exposes it as a higher level abstraction using composites. A composite resource is a custom resource that is composed of managed resources allowing us to abstract away low level infrastructure details. They are defined by composite resource definitions and compositions. A claim is an instance of a composite resource. Crossplane also has the concept of packages like the previously mentioned providers packages and also configuration packages. Packages themselves can also be packaged. Now let's talk a bit about Argo CD, which is one of the fastest growing open source GitHub tools out there. The project is part of the Argo family, a set of cloud native tools for running and managing jobs and applications on Kubernetes. To start working with Argo CD, we need to install Argo CD in a Kubernetes cluster. Store Kubernetes manifest in a Git repository and create an Argo CD application by defining which repository to monitor and to which cluster this application should be deployed. The Argo CD application can be for an application, infrastructure resources, or even other Argo CD applications, which is what's known as the app of apps pattern. This is how both crossplane and Argo CD come together. From the left hand side, we have Helm repositories for Argo CD controller so that it manages itself and also Bitnami sealed secrets to encrypts and decrypts the secrets mainly for crossplane provider's config. Regarding the Git repository, we have Argo CD applications and crossplane related manifests. In the middle, there is the management cluster where Argo CD and crossplane are installed. And on the right, we have the different providers where the resources are to be created. These different sources are composed of services provided by four cloud providers, namely AWS, Azure, GCP, and Digital Ocean, all in one view. Organizations are evolving from centralized management of infrastructure to a self-service model in which platform team defines opinionated infrastructure abstractions that application teams can consume on demand without compromising security with just simple Kubernetes manifests for provisioning cloud resources that require few parameters and their name spaces go. Need a new test or sandbox environment? Developers can spin that quickly for themselves with no lead time which increases their productivity and autonomy. It's a wrap. Applying GitOps principles to infrastructure lifecycle management makes it feasible to know exactly what is the infrastructure state is. Along with the other advantages it provides such as reviewing the changes and detecting configuration drifts. A drift detection and automatic reconciliation are key to reliably manage multiple resources across cloud providers. With crossplane coupled with Argo CD becomes possible to manage infrastructure the same way cloud native applications are managed. Simply put, treating infrastructure like apps means managing its lifecycle following the same GitOps principles to prevent manual fiddling that does not confirm to Git work flows. And that's about it folks. Thank you.