Someone deploys a legacy XML-RPC service to Cloud Run, hits “invoke,” and waits. Then nothing. Logs show the request never even reached the app. Welcome to the quiet chaos of mixing old protocols with new platforms. The good news is that Cloud Run XML-RPC integrations can absolutely work, and elegantly so, if you know how to think about identity, transport, and trust.
Cloud Run provides a managed environment for stateless containers that scale automatically. XML-RPC, on the other hand, is a simple remote procedure call protocol that wraps function calls in XML and ships them over HTTP. It is ancient but still used in billing gateways, CMS plugins, and internal automation. The bridge between the two lies in making Cloud Run’s ephemeral nature play nicely with XML-RPC’s expectation of stable endpoints and predictable authentication.
Here’s the trick: treat the RPC interface like any other API gateway. Identity comes first. Use Cloud Run’s service identity or an external identity provider (OIDC from Okta, Google Workspace, or Azure AD) to issue tokens that wrap XML-RPC requests. Your XML-RPC server ignores embedded credentials and relies on verified headers added by Cloud Run’s identity-aware proxy. That way, what used to be a flat, unauthenticated POST becomes a strongly authenticated internal call.
Requests travel over HTTPS with service-to-service IAM granting precise invocation rights. No wide-open endpoint, no leaking XML payloads to random bots. Your XML-RPC methods register just as usual, but now Cloud Run handles concurrency limits and cold starts instead of an overworked VM. The app receives fewer noisy probes and more legitimate calls, and the Ops inbox stays mercifully quiet.
If errors appear, check two things first: the Content-Type header (XML-RPC expects text/xml) and the timeout settings. Cloud Run times out background calls after a set limit, while XML-RPC clients often assume persistent sessions. Keep them short, stateless, and idempotent. Token rotation can be handled by your IdP, and service accounts should map to least-privilege roles in IAM.