Skip to content

SYSTEM Cited by 3 sources

Skipper (Zalando HTTP proxy)

Definition

Skipper (github.com/zalando/skipper) is an HTTP router and reverse-proxy written in Go by Zalando, designed to be composable out of small filters and predicates along a routing DSL. At Zalando it is deployed as the default Kubernetes Ingress proxy across 140+ clusters (Source: sources/2020-06-30-zalando-launching-the-engineering-blog), sitting behind AWS ALBs provisioned by the Kubernetes Ingress Controller for AWS and in front of application pods.

What makes it distinctive

  • Eskip routing DSL — routes are declarative, composed as predicate_chain -> filter_chain -> backend. Filters like compress(), setPath("/..."), inlineContent(...), setDynamicBackendUrl(...) chain with -> before the final backend token. Example from the Zalando blog-launch post: * -> compress() -> setDynamicBackendUrl("http://<BUCKET>.s3-website.<REGION>.amazonaws.com") -> <dynamic>; — this annotation (attached to an Ingress as zalando.org/skipper-routes) rewrites every request so the ingress proxies to an S3 static-website endpoint with edge gzip compression.

  • Dynamic backends via <dynamic> sentinel — backends can be resolved from request headers or from filters at request time (setDynamicBackendUrl), which is how Skipper can front a non-Kubernetes origin (S3 website, a legacy host, etc.) without needing a Service/Endpoints pair.

  • Rich filter library for L7 manipulationcompress() adds gzip encoding that upstreams don't provide; ratelimit(...), oauthTokeninfoAnyScope(...), stripQuery(), header add/remove/set filters, response-body rewriting. Used as the platform-wide policy enforcement point at Zalando.

  • Ingress annotation integration — rather than a custom CRD for routes, Skipper reads routes from Kubernetes Ingress objects with the zalando.org/skipper-routes annotation containing eskip DSL. This keeps the Kubernetes-native API surface intact while exposing Skipper's full filter capability.

Seen in

Comparable systems

  • nginx / Envoy / HAProxy — general-purpose L7 proxies. Envoy is the dominant K8s ingress in service-mesh contexts; Skipper's differentiator is the eskip DSL and the tight integration with Ingress annotations at Zalando scale.
  • Pingora (Cloudflare) — Rust, internal to CF.
  • Fly Proxy — Go, runs Fly.io's anycast edge.
Last updated · 476 distilled / 1,218 read