Urgent.News

What's breaking now, across thousands of outlets.

Tech

Crossplane vs Terraform: Provisioning S3 Buckets from Kubernetes Without Losing Control

Every platform team eventually hits the same wall: application teams need an S3 bucket and a Postgres instance, and they need them today. The options are usually "open a ticket" (slow), "give them Terraform access" (scary), or "build a self-service API" (expensive). Crossplane positions itself as the third option, implemented with CRDs you already know how to operate. This article walks through a…

Every platform team eventually faces the same challenge: their application teams require an S3 bucket and a Postgres instance, and they need these resources promptly. Traditionally, teams often resorted to opening a ticket (a slow process), granting them Terraform access (potentially risky), or building a self-service API (a costly endeavor). Crossplane offers a third option, leveraging Custom Resource Definitions (CRDs) that teams are already familiar with.

This article presents a practical example: an S3 bucket and an RDS instance, presented to developers as a single namespaced Claim. It objectively compares this approach with the traditional Terraform plan/apply workflow. By the conclusion of the article, readers should be able to create an XRD, a Composition, and hand a Claim to their teams, while also understanding when Crossplane might not be the optimal solution.

The article delves into the core problem of lifecycle ownership. Terraform's model revolves around a transaction: it computes a difference against the current state, a human reviews the changes, and then the apply command executes. This model works exceptionally well for building a VPC once and reviewing every modification thoroughly. However, it becomes less effective when fifty teams create and destroy buckets on a weekly basis, as each operation necessitates a pipeline run, state lock, reviewer, and merge.

Crossplane, on the other hand, adopts an inverted model. It installs controllers within the cluster that manage AWS resources as Kubernetes objects. There is no plan phase or state file; instead, the desired state is represented by the Kubernetes object, while the actual state resides in the AWS API. A reconciliation loop continuously closes the gap between these two states, consistently and indefinitely. This fundamental difference permeates all other aspects of Crossplane.

When compared to Terraform, Crossplane offers a distinct approach to managing desired state. In Crossplane, the desired state is defined using Kubernetes objects, whereas Terraform relies on an HCL configuration file stored in S3 or Terraform Cloud. Execution differs as well: in Crossplane, the desired state is applied on demand, typically within a continuous integration (CI) pipeline, while Terraform executes on demand or upon schedule.

Terraform provides a native preview through the `terraform plan` command, whereas Crossplane offers a dry-run function or the `crossplane render` command. In terms of drift detection, Terraform only identifies discrepancies when a `plan` is executed, while Crossplane automatically corrects any drift it detects. Lastly, Crossplane's blast radius is limited to one managed resource at a time, whereas Terraform can affect an entire state file.

Installing Crossplane and the AWS provider involves several steps. Crossplane can run on OpenShift, and the Upbound provider images are compatible with the restricted-v2 SCC, eliminating the need for additional SCC exceptions. The installation process involves adding the Crossplane stable Helm repository, updating the repository, and then installing Crossplane using Helm.

The AWS provider is no longer a monolithic entity; Upbound releases separate providers for each service family, which helps manage the number of CRDs and maintains small API server performance.

To use Crossplane, you first install the provider-aws-s3 and provider-aws-rds providers, specifying the runtime configuration to reference the installed IRSA (Identity-Based Service Account). The credentials are sourced from the pod identity, eliminating the need for static API keys. If you're not operating on EKS/ROSA with STS, you can use other credential sources like WebIdentity with an OIDC-federated role or a Secret, although the security implications should be carefully considered.

The article transitions to defining the API your teams will interact with: the XRD (CompositeResourceDefinition). The XRD serves as the contract between Crossplane and the team. It generates two CRDs: a cluster-scoped Composite Resource (XR) and a namespaced Claim. Developers only interact with the Claim. The design principle for the XRD schema is to expose product decisions, not AWS-specific fields.

If a developer can set `blockPublicAcls` to `false`, it indicates that the tool has merely wrapped the AWS API without adding value.

By the end of the article, the reader should have a clear understanding of how to create an XRD, a Composition, and hand a Claim to their teams, along with the knowledge of when Crossplane might not be the ideal solution.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Code Is Cheap Now. Judgment Isn't: The Review Bottleneck and the Vanishing Apprenticeship

Writing code has become the cheapest part of software development. Understanding it hasn't. Over the past year, AI assistants have changed the economics of producing code.

  • AI-generated code creation speed outpaces review processes.
  • Review bottleneck leads to delays, shallow reviews, and engineer burnout.
  • Teams should shift focus to evaluating outcomes, not just output.

Hybrid Interconnect: Linking a Datacenter to AWS with WireGuard When Direct Connect Is Out of Budget

Direct Connect is the right answer when you need deterministic latency, committed bandwidth and a contractual SLA. It is also a 3-month lead time, a cross-connect fee, a port charge starting around…

  • Hybrid interconnect using WireGuard tunnels between on-premise datacenter and AWS Transit Gateway
  • Two redundant WireGuard tunnels with BGP for dynamic routing and sub-second failover
  • AWS Site-to-Site VPN recommended if throughput per flow < 1.25 Gbps per tunnel

Sort Kling 5 Claims Into Live, Announced, or Rumor Before You Plan

You are putting together a production brief or credit estimate for a video pipeline, and a thread in your feed claims Kling 5 will support 4K output or longer single-pass clips.

  • Categorize claims into live, announced, or rumor to avoid budget overruns
  • Kling 4.0 launched Oct 15, 2026 with 30-second single-pass generation
  • Kling 5 support unverified as of Nov 15, 2026; no official announcement

More from Saturday 14 November →