The Rise of AI Coding Agents: Impact on Platform Engineering Teams
How AI coding agents like GitHub Copilot Workspace and Cursor are reshaping platform engineering. What teams need to prepare for and how to leverage these tools.
Look at what’s already written in Rust in the cloud-native ecosystem:
This isn’t coincidental. These are all performance-critical, security-sensitive components where memory safety and zero-cost abstractions matter most.
If you’re building an internal developer platform, you’re responsible for the foundational components that hundreds of developers depend on. Those components need to be:
Go covers most of this, which is why Kubernetes and most CNCF projects use it. But Rust covers all of it, which is why the most performance-critical components are migrating.
Here’s a simple admission webhook in Rust that enforces resource limits:
use actix_web::{web, App, HttpServer, HttpResponse};
use k8s_openapi::api::core::v1::Pod;
use kube::core::admission::{AdmissionRequest, AdmissionResponse, AdmissionReview};
use serde_json;
async fn validate(
body: web::Json<AdmissionReview<Pod>>,
) -> HttpResponse {
let req: AdmissionRequest<Pod> = body.into_inner().try_into().unwrap();
let pod = req.object.as_ref().unwrap();
// Check all containers have resource limits
let mut response = AdmissionResponse::from(&req);
if let Some(spec) = &pod.spec {
for container in &spec.containers {
if container.resources.is_none() ||
container.resources.as_ref().unwrap().limits.is_none() {
response = response.deny(format!(
"Container '{}' must specify resource limits",
container.name
));
break;
}
}
}
let review = response.into_review();
HttpResponse::Ok().json(review)
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| {
App::new().route("/validate", web::post().to(validate))
})
.bind_rustls("0.0.0.0:8443", tls_config())?
.run()
.await
}Compared to the Go equivalent, this webhook:
| Crate | Purpose |
|---|---|
kube | Kubernetes client and controller runtime |
actix-web | HTTP server for webhooks and APIs |
tokio | Async runtime |
tonic | gRPC framework |
opentelemetry | Observability instrumentation |
clap | CLI argument parsing |
# Cargo.toml for a Kubernetes controller
[dependencies]
kube = { version = "0.92", features = ["runtime", "derive"] }
k8s-openapi = { version = "0.22", features = ["latest"] }
tokio = { version = "1", features = ["full"] }
actix-web = "4"
serde = { version = "1", features = ["derive"] }
tracing = "0.1"
opentelemetry = "0.23"use kube::{Api, Client, runtime::controller::{Action, Controller}};
use kube::api::ListParams;
use std::sync::Arc;
use tokio::time::Duration;
// Custom Resource Definition
#[derive(CustomResource, Deserialize, Serialize, Clone, Debug, JsonSchema)]
#[kube(group = "platform.acme.com", version = "v1", kind = "DatabaseClaim")]
pub struct DatabaseClaimSpec {
pub engine: String, // postgres, mysql
pub size: String, // small, medium, large
pub team: String,
}
async fn reconcile(
claim: Arc<DatabaseClaim>,
ctx: Arc<Context>,
) -> Result<Action, Error> {
let name = claim.name_any();
let spec = &claim.spec;
// Provision database based on claim
match spec.engine.as_str() {
"postgres" => provision_postgres(&name, &spec.size).await?,
"mysql" => provision_mysql(&name, &spec.size).await?,
_ => return Err(Error::UnsupportedEngine(spec.engine.clone())),
}
// Requeue after 5 minutes for health check
Ok(Action::requeue(Duration::from_secs(300)))
}Use Rust for:
Use Go for:
Use Python/Ansible for:
# Multi-stage build for minimal image
FROM rust:1.78 AS builder
WORKDIR /app
COPY . .
RUN cargo build --release
FROM gcr.io/distroless/cc-debian12
COPY --from=builder /app/target/release/admission-webhook /
EXPOSE 8443
ENTRYPOINT ["/admission-webhook"]Final image size: ~15MB. Compare that to a typical Go service at 30-50MB or a Java service at 200MB+.
For deploying these minimal container images on Kubernetes, Kubernetes Recipes has detailed patterns for distroless containers and security scanning integration.
Rust’s learning curve is real. The borrow checker will fight you for weeks. But once it clicks:
For platform teams, my recommendation: start with a non-critical admission webhook, get comfortable, then tackle more complex components. Don’t rewrite your entire platform in Rust — that’s the kind of mistake I’ve seen at Open Empower consulting engagements. Rewrite the right things in Rust.
AI & Cloud Advisor with 18+ years experience. Author of 8 technical books, creator of Ansible Pilot, and instructor at CopyPasteLearn Academy. Speaker at KubeCon EU & Red Hat Summit 2026.
How AI coding agents like GitHub Copilot Workspace and Cursor are reshaping platform engineering. What teams need to prepare for and how to leverage these tools.
Backstage is the de facto IDP. Adding AI makes it transformative — auto-generated docs, intelligent search, and self-service infrastructure. Here's the architecture.
Schedule Kubernetes workloads when and where the grid is greenest. How carbon-aware scheduling works, the tools available, and the business case for sustainable compute.