All posts

The simplest way to make Crossplane MinIO work like it should

You’ve already got a Kubernetes cluster humming and infrastructure you’d rather not babysit. Then someone says, “We need object storage.” That’s when Crossplane and MinIO step into the chat. The first gives you cloud resources through Kubernetes-style APIs. The second gives you S3-compatible storage that runs anywhere. Put them together and you get consistent, versionable buckets that behave like part of your infrastructure code. Crossplane turns provisioning into a pull request. You declare wh

Free White Paper

Crossplane Composition Security + End-to-End Encryption: The Complete Guide

Architecture patterns, implementation strategies, and security best practices. Delivered to your inbox.

Free. No spam. Unsubscribe anytime.

You’ve already got a Kubernetes cluster humming and infrastructure you’d rather not babysit. Then someone says, “We need object storage.” That’s when Crossplane and MinIO step into the chat. The first gives you cloud resources through Kubernetes-style APIs. The second gives you S3-compatible storage that runs anywhere. Put them together and you get consistent, versionable buckets that behave like part of your infrastructure code.

Crossplane turns provisioning into a pull request. You declare what you need, Git stores the config, and Crossplane reconciles it. MinIO, meanwhile, is your private S3—lightweight, self-hosted, and fast enough for production workloads. When combined, Crossplane MinIO means buckets and credentials live under the same automation umbrella as everything else: clusters, databases, service accounts, all git-tracked and auditable.

At a high level, the integration works like this: Crossplane defines a CompositeResourceDefinition for MinIO. That definition describes the desired bucket, secret, and user access policies. Crossplane’s provider communicates with the MinIO API, creates or updates the resource, then writes credentials into a Kubernetes Secret. Your workloads read those credentials automatically. No console clicking, no human error, no expired keys hiding in CI variables.

Permissions matter. Map your Crossplane-managed service accounts to MinIO’s policies directly. Keep read-only buckets for logs, write-only for deployment artifacts, and per-team access for dev data. Use Kubernetes RBAC to restrict who can define new Crossplane resources, and rotate access tokens through Short-Lived Credentials or OIDC when possible. The result is faster audits and fewer security headaches.

Benefits of integrating Crossplane MinIO:

Continue reading? Get the full guide.

Crossplane Composition Security + End-to-End Encryption: Architecture Patterns & Best Practices

Free. No spam. Unsubscribe anytime.
  • Every bucket and policy as code, version-controlled and reviewable
  • Automated provisioning through standard Kubernetes CRDs
  • Consistent IAM mapping across clusters, clouds, and teams
  • Easy cleanup, since deleting a manifest tears down the resource safely
  • Uniform observability with logs and metrics flowing into your favorite stack

For developers, this eliminates the old ticket dance. No waiting on ops to create a new S3 bucket or MinIO user. You apply a manifest, and Crossplane handles the rest. It boosts developer velocity through repeatability and trust. Same pattern, every time, no guessing which environment you’re pointing at.

Platforms like hoop.dev make this even cleaner. They connect your identity provider to infrastructure access, turning these Crossplane policies into enforced guardrails automatically. Instead of remembering tokens or endpoints, developers rely on environment-agnostic proxies that apply policy at runtime. It feels invisible yet instantly safer.

How do you connect Crossplane and MinIO? Register the MinIO provider in Crossplane, define your compositions for buckets and users, and point them to your MinIO endpoint. Crossplane’s reconciliation loop does the provisioning and outputs credentials as Kubernetes Secrets ready for consumption.

As infrastructure and AI workloads intertwine, object storage becomes the quiet backbone of every pipeline. Having it defined, secured, and self-regulating with Crossplane MinIO turns a fragile setup into a predictable system. That’s what good automation feels like—boring in the best possible way.

See an Environment Agnostic Identity-Aware Proxy in action with hoop.dev. Deploy it, connect your identity provider, and watch it protect your endpoints everywhere—live in minutes.

Get started

See hoop.dev in action

One gateway for every database, container, and AI agent. Deploy in minutes.

Get a demoMore posts