skip to content

Developer Self-Service

What developers actually touch when one platform team owns the cluster: templated golden paths instead of hand-written manifests, namespaces provisioned on request, and a line between platform and workload ownership. Interviewers probe where it leaks.

part ofKubernetesoverview, primer and where to startread it →
on this pageshow

questions

4

On a Kubernetes platform run by a platform team, what is a golden-path template, and why use it instead of hand-written manifests?

level: juniorimportance: must knowfreq 58%

answer

  1. paved road, not a cage
  2. few values in, full objects out
  3. defaults people forget to write
  4. same labels, shared dashboards
  5. defaults versus admission enforcement

basics

~20 s

A golden-path template is a platform-maintained, pre-approved way to deploy a service: developers fill in a few values and the template produces the Deployment, Service, probes and resources, so every team gets safe defaults without writing raw Kubernetes manifests.

solid answer

~40 s

A golden path is the supported, paved route to production. On Kubernetes it usually takes the form of a template (a Helm chart, a Kustomize base, or a custom resource the platform expands) that turns a short values file — image, port, replica count, CPU and memory — into a complete set of objects: a `Deployment`, a `Service`, probes, a `PodDisruptionBudget`, labels and security settings. Developers use it because hand-written manifests drift: every team re-invents probes, forgets `resources`, and copies stale YAML. The template encodes the platform team's defaults once, keeps services consistent so dashboards and alerts work the same everywhere, and lets a new service ship on day one. It is optional-but-easiest, not a cage: a developer should still be able to read what it renders.

code

yaml · 32 lines
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: fraud-rules-engine
  labels:
    app.kubernetes.io/name: fraud-rules-engine
    app.kubernetes.io/managed-by: platform-golden-path
spec:
  replicas: 7
  selector:
    matchLabels:
      app.kubernetes.io/name: fraud-rules-engine
  template:
    metadata:
      labels:
        app.kubernetes.io/name: fraud-rules-engine
    spec:
      containers:
        - name: engine
          image: registry.example.com/fraud-rules-engine:4.12.3
          ports:
            - containerPort: 9431
          readinessProbe:
            httpGet:
              path: /ready
              port: 9431
          resources:
            requests:
              cpu: 350m
              memory: 612Mi
            limits:
              memory: 612Mi

go deeper

for a junior

Recall the core idea: a platform-owned template turns a few values into a full, consistent set of objects with sane defaults for resources, probes and labels.

for a middle

Explain what the template renders and why consistent labels and probes matter to shared tooling, and show how to inspect the rendered output before it reaches the cluster.

for a senior

Show that you know where templates stop: defaults versus enforcement, how template upgrades roll out across teams, and what developers still need to debug on their own.

for a principal

Frame the golden path as a product: adoption earned by being the easiest route, a versioned contract, and escape hatches whose use you measure.

## What a golden path is A **golden path** (also called a *paved road*) is the route to production that a platform team designs, documents and supports. On a Kubernetes platform it is usually delivered as a **template**: something a developer fills in with a handful of values and that produces the full set of Kubernetes objects a service needs. The template can take several forms — a Helm chart, a Kustomize base, or a **custom resource** that a platform controller expands into ordinary objects. The mechanics of each belong to their own topics; what matters here is the *contract*: the developer describes the service, the platform decides how that description becomes YAML. ## What the developer writes versus what gets rendered For a service such as a **fraud-rules engine**, the developer's input might be only this: - the container image and tag - the port the process listens on - the replica count (say, 7) - CPU and memory sizing - a health-check path From that, the template renders objects the developer did not have to write by hand: 1. a `Deployment` with `resources.requests` and `resources.limits` filled in 2. `readinessProbe` and `livenessProbe` wired to the health path 3. a `Service` selecting the pods by consistent labels such as `app.kubernetes.io/name` 4. a `PodDisruptionBudget`, so node maintenance does not take all replicas at once 5. a hardened `securityContext` and scheduling rules that spread replicas across nodes ## Why platforms prefer templates over raw manifests | Hand-written manifests | Golden-path template | |---|---| | Each team invents its own probes, labels and sizing | One set of defaults, reviewed once by the platform team | | Missing `resources` or probes are discovered in production | Required fields are filled or rejected before deploy | | Copy-pasted YAML drifts from current practice | A template upgrade reaches every service that adopts it | | Dashboards and alerts need per-team tweaks | Consistent labels make shared observability work | | New developers must learn dozens of fields first | A new service can ship on its first day | The central benefit is **leverage**: a platform team of a few people can encode good defaults once, and hundreds of services inherit them. A second benefit is **consistency**: if every workload carries the same labels and probe conventions, the platform's shared tooling — log routing, dashboards, cost reports — works without per-team configuration. ## What a golden path is not - **It is not a replacement for understanding Kubernetes.** It lets a developer *start* without deep knowledge, but when something breaks — a pod stuck `Pending`, a container restarting — the developer is debugging the rendered objects, not the template. Good platforms make the rendered output easy to see. - **It is not the enforcement layer.** A template sets defaults; rules that must never be broken (no privileged containers, for example) are enforced by the cluster's admission policy, so they hold even for workloads that do not use the template. - **It is not mandatory by force.** The path is *golden* because it is the easiest one. Teams with genuinely unusual needs get an escape hatch — extra parameters, a patch mechanism, or their own manifests under the same admission rules. ## Where it fits in the ownership split On a shared cluster, the platform team owns the cluster itself and the templates; the application team owns the values it passes in and the behaviour of its own code. The template is the interface between them. When a developer asks why a field is set a certain way, the answer should be in the template's documentation — not in someone's memory. ## Interview framing A good junior answer names the three ideas: a **pre-approved template**, **sensible defaults** for the fields developers usually forget (resources, probes, labels), and **consistency** across teams. A stronger answer adds that the developer can still inspect the rendered YAML and that the template is a default, not a security boundary.

  • If the template already sets safe defaults, why does the cluster still need admission policy?
    A template only shapes the workloads that use it. Anyone with write access can apply their own manifest, override a value, or use an escape hatch, and the template never sees it. Rules that must always hold — no privileged containers, required labels — are enforced when the API server admits the object, so they apply to every workload regardless of how its YAML was produced.
  • How can a developer see what a golden-path template will actually create in the cluster?
    Render it locally with the template tool's own render command and read the output, or run `kubectl apply --dry-run=server -f` on the rendered file so the API server validates and admits it without saving anything. Many platforms also show the rendered objects in pull requests, so reviewers see the real `Deployment`, not just the values file.

A golden path is like a building's standard kitchen fit-out: most tenants move in and cook on day one, and the few who need a restaurant kitchen apply for a custom fit-out that still has to pass the fire code.

saying these in an interview costs you the question

  • A golden path means developers never need to understand Kubernetes objects.
  • The template is the security boundary, so admission policy is unnecessary.
  • Golden paths should be mandatory with no escape hatch for unusual services.
  • Templates are just copy-paste starter YAML that teams then edit freely.
  • Using a template means you cannot see the rendered manifests.
open as a page

A Kubernetes golden-path template deploys a fraud-rules engine as a 7-replica Deployment; on a developer's single-node laptop cluster six pods stay Pending. What leaked, and how should the platform respond?

level: seniorimportance: should knowfreq 40%

basics

~20 s

The template's production scheduling default leaked: required pod anti-affinity on kubernetes.io/hostname allows one replica per node, so one node runs one pod. The platform should make such defaults environment-aware, explain them, and keep failures debuggable.

open as a page

You run a Kubernetes developer platform: how do you draw the line between platform-owned and workload-owned configuration, and which escape hatches do you allow?

level: principalimportance: should knowfreq 35%

basics

~20 s

Draw the line at a versioned contract: the platform owns the cluster, shared services and non-negotiable guardrails; teams own their images, sizing, scaling and service behaviour. Escape hatches are graded, stay under admission policy, and every use is tracked.

open as a page

How does a platform controller provision Kubernetes namespaces on request, from a developer's custom resource to a ready namespace?

level: middleimportance: nice to knowfreq 30%

basics

~20 s

A developer creates a small request object; a platform controller watches it and repeatedly reconciles a Namespace plus its standard RoleBindings and guardrails, owned by the request and reported through status conditions, so no developer needs cluster-wide rights to create namespaces.

open as a page