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.
If your company has three clusters (Development, Staging, and Production), you do not want to write three different Compositions for the same RDS database. In this episode, we learn how to use Crossplane EnvironmentConfigs to inject global context (like AWS Account IDs, VPC IDs, and Regions) dynamically into your Compositions.
In Episode 5, we hardcoded our RDS instance size to 20GB. If a developer asked for 50GB in their Claim, Crossplane ignored it. In this episode, we explore the Patcher, learning how to dynamically route data from the Composite Resource (XR) into the physical Managed Resources (MRs).
Running 10 docker run commands manually with complex flags is tedious and error-prone. Docker Compose allows you to define and run your entire multi-container infrastructure declaratively in a single YAML file.
By default, all files created inside a container are stored on a writable container layer. When that container is deleted, the data is destroyed. Docker Volumes solve this by storing data outside the container filesystem.
How do two containers on the same host talk to each other without exposing ports to the public internet? Docker uses Linux virtual network interfaces (veth pairs) connected to a software bridge.
Shipping a 1GB Docker image containing compilers, debuggers, and build tools to production is a security nightmare. Multi-Stage Builds allow you to separate the build environment from the tiny runtime container.
Containers do not exist as physical entities inside the Linux kernel. A “container” is simply a standard Linux process isolated via Namespaces, throttled by cgroups, and mounted on an Overlay2 union filesystem.
Did you know that the @pulumi/aws package you have been using is actually built on top of Terraform? In this final intermediate episode, we explore the difference between ‘Bridged’ providers and ‘Native’ providers, and learn how @pulumi/aws-native directly communicates with the AWS Cloud Control API.