Enough theory. It’s time to look at the YAML. In this episode, we build the E-Commerce Redis Promise line-by-line. We will examine the API schema, the Pipeline configuration, and the Destination selectors that make multi-cluster deployment possible, ensuring you understand exactly how Kratix executes your logic.
In this episode, we deeply analyze the ‘Where’ of the 5W1H framework. We will map out the Hub and Spoke topology, learn why Kratix intentionally isolates the Platform Cluster from the Worker Clusters for security, and explore how traditional Infrastructure-as-Code (like Terraform) executes inside this GitOps-driven model.
We have built the APIs, the translation engine, the GitOps pipeline, and the security webhooks. But developers still have to write YAML to request a database. In this final episode, we integrate Crossplane with Backstage to create the ultimate Internal Developer Portal (IDP).
OpenAPI schema validation (like type: integer) is too basic for enterprise security. What if you need to enforce that a database’s storage size is an even number, or that the requested environment matches a specific regex? In this episode, we write a Kubernetes Validating Webhook in Go to intercept and inspect Crossplane Claims.
If you install the monolithic provider-aws package into a small EKS cluster, your Kubernetes API server might crash. AWS has over 1,000 resources, meaning Crossplane will inject 1,000 CRDs and run a massive Go controller in memory. In this episode, we learn how to architect high-performance Crossplane clusters using Provider Families.
If you are running kubectl apply -f my-database.yaml from your laptop, you are doing it wrong. In modern Platform Engineering, no human should ever talk directly to the Kubernetes API. In this episode, we configure ArgoCD to automatically deploy Crossplane XRs directly from a GitHub repository.
In Episode 10, we learned that Composition Functions allow us to escape the limitations of YAML. In this episode, we will write a custom Go program that dynamically generates an array of AWS Subnets based on a single integer provided by the Application Developer.
YAML is excellent for configuration, but terrible for programming. As your Platform scales, you will inevitably need for loops, complex if/else logic, and external API calls. In this final intermediate episode, we introduce Composition Functions—the architecture that allows you to write Crossplane logic in Turing-complete languages.
When you run terraform apply, you get immediate red text in your console if an AWS API call fails. Because Crossplane is an asynchronous control loop, kubectl apply always succeeds immediately. When a database fails to boot 10 minutes later, how do you find the error? In this episode, we learn the Crossplane troubleshooting cascade.
If a Composition provisions both an AWS VPC and a Subnet, the Subnet physically cannot be created until the VPC exists and returns an ID. In Terraform, you use implicit dependency mapping (e.g., vpc_id = aws_vpc.main.id). In Crossplane, we manage this using Cross-Resource References and Selector matching.