Sandcastle → Kubernetes hand-off

Take the branch a Sandcastle produced and hand its greeting off as a Crossplane XR for the Hello Pico on Kubernetes composition.

See the Open Engineering Language Server (OELS) onboarding guide for the local install and editor setup.

TipOELS in your editor

While you work through this content, keep the Open Engineering Language Server (OELS) active in VS Code (or any LSP-capable editor). See the OELS onboarding guide linked at the top of this page (also linked from the academy Resources page) for the one-time install and configuration steps.

What OELS validates. OELS only recognizes OE-shaped YAML/JSON: files with a mapping root that declare an apiVersion beginning with open-engineering.io/, a non-empty kind, and a DNS-1123 metadata.name. Ordinary academy metadata.yaml, Quarto/QMD pages and front matter, Kubernetes/Crossplane/runtime manifests, JSON payload samples, and shell scripts are intentionally non-OE — OELS ignores them silently and you should not add synthetic apiVersion/kind headers to force recognition.

Where you see diagnostics. OELS surfaces UnknownProperty, MissingRequiredProperty, IncorrectType, InvalidEnumValue, MalformedIdentifier, UnknownDefinition, and reference-shape hints in the editor Problems panel as you type. These are independent of quarto render: OELS diagnostics do not block rendering, and Quarto errors do not appear in the Problems panel.

The executable check still comes from this exercise. OELS speeds up editing, but the exercise’s own parser, verifier, or verify.sh (for example the pico parse … command shown below) remains the authoritative success check. Run it as usual.

Overview

Sandcastle → Kubernetes hand-off is the first runnable lab that spans the boundary between the construction layer and the composition layer of the academy story:

Crossplane composes, Sandcastle constructs, Picos behave.

You will take the durable Git branch produced by the Hello World Pico Sandcastle lab — sandcastle/hello-world-pico, containing rules/hello.yaml — and promote its greeting value into a Crossplane Composite Resource that the Hello Pico on Kubernetes lab already knows how to compose onto a real cluster.

This lab is deliberately narrow: it covers only the hand-off itself. The Sandcastle side is verified by the Sandcastle lab; the cluster side is verified by the Kubernetes lab. This lab proves the boundary between them is coherent and automatable.

Structure

What you will produce

A single generated file, work/handoff-sandcastle-to-kubernetes/build/xr.yaml, whose shape is byte-equivalent to the reference 05-xr.yaml shipped with the Kubernetes lab. This is the produces entry hello-world-pico-on-kubernetes-xr in metadata.yaml.

The generated XR can be applied unchanged after completing steps 1–4 of the Hello Pico on Kubernetes walkthrough (Crossplane, provider, XRD, Composition), which is where cluster-side verification lives.

Downloads and screenshots

Runnable files live under downloads/:

  • handoff.sh — reads the greeting value from the Sandcastle-produced branch and writes the Crossplane XR.
  • expected-xr.yaml — reference XR shape the generated file must match.
  • verify.sh — automatable check that runs the Sandcastle lab (if needed), runs the hand-off, and asserts the generated XR matches the Kubernetes lab’s 05-xr.yaml shape.

Screenshots referenced from the walkthrough live under screenshots/.

Metadata

Machine-readable descriptor: metadata.yaml. Fields follow the same schema as labs/hello-pico/metadata.yaml.

Referenced from