Passa al contenuto principale

Modifica la tua Application ⏱️ 20m

Your pair:
Stai lavorando in solo, in locale?

Stessi comandi. La tua tile è su /team/local/. Vedi Setup locale solo (k3d).

6.1 Prima di iniziare ⏱️ 3m

Finora la tua Composition è statica: ogni XApplication produce lo stesso layout HTML, gli stessi font, la stessa struttura di pagina. In questo modulo modificherai la Composition e guarderai la tua tile aggiornarsi senza ri-applicare l'XR.

Questo è il punto della composition: l'astrazione (XApplication) sopravvive, l'implementazione (le risorse dietro di essa) cambia. I team di piattaforma lo fanno di continuo — aggiungendo container sidecar, scambiando immagini base, stringendo i default di sicurezza — e i consumatori non se ne accorgono mai.

Stai per: editare la Composition in-place, vedere la ConfigMap a valle aggiornarsi, ricaricare la tile.

6.2 Rimodella il frontend ⏱️ 15m

1. Apri la Composition per l'editing

kubectl edit composition xapplications.workshop.example.io

Trova la risorsa frontend-configmap (la prima sotto spec.pipeline[0].input.resources) e modifica l'HTML dentro base.data.index.html.

2. Scegli almeno una modifica

Vanno bene tutte queste, prendi quella che ti piace:

  • Aggiungi un sottotitolo sotto il <div id="tile">:
    <div id="subtitle" style="font-size: 1rem; color: #6b7280;">hello from my XRD</div>
  • Cambia il colore di sfondo:
    body { background: #fef3c7; font-family: sans-serif; margin: 0; padding: 20px; text-align: center; }
  • Aggiungi emoji, un bordo, un gradient — qualunque cosa il CSS inline possa fare dentro una sola ConfigMap.

Salva ed esci dall'editor.

3. Guarda Crossplane riconciliare

Crossplane riconcilia immediatamente: la ConfigMap desiderata dall'output della function viene aggiornata, e Crossplane core applica la patch in-place. Conferma:

kubectl get configmap frontend -n default -o jsonpath='{.data.index\.html}' | head -20

Dovresti vedere la tua modifica nell'output.

4. Fai sì che nginx prenda il cambiamento

nginx legge /usr/share/nginx/html/index.html ad ogni richiesta, ma la proiezione della ConfigMap dentro il Pod si rinfresca solo ogni ~30 secondi (sync periodico del kubelet). Riavvia il Pod frontend per vedere il cambiamento subito:

kubectl rollout restart deployment frontend

5. Ricarica la tile

Apri il muro del workshop in una nuova scheda e clicca Refresh. La tua tile dovrebbe mostrare il nuovo HTML / CSS che hai editato. Il tuo XR XApplication è ancora wall-tile, intatto — il cambiamento è venuto dal rimodellare la Composition.

Il check è ancora verde perché nessuna delle condizioni che osserva è cambiata — l'XApplication è ancora Ready. Questo è il punto.

6.3 Cosa è appena successo

Hai cambiato la piattaforma senza cambiare il consumatore. Lo YAML dell'XApplication che l'utente ha applicato è identico; le cinque risorse che produce sono diverse. In una piattaforma reale è così che si rilasciano security patch, nuovi default, sidecar di osservabilità o cambiamenti di cost-saving — tutto invisibile ai team che usano l'API.

Per approfondire

  • Stretch: aggiungi un campo. Aggiungi subtitle all'XRD (con un default), passalo via patch attraverso la Composition in una nuova chiave ConfigMap o in una env var del backend, e applica un XR fresco che lo imposti. Buona sandbox per gli ultimi dieci minuti.
  • Composition revisions — come Crossplane tiene in giro le vecchie Composition così gli XR esistenti restano stabili mentre quelli nuovi prendono la nuova ricetta.
  • Catalogo delle composition functionfunction-kcl, function-go-templating, function-auto-ready — pattern per andare oltre patch-and-transform quando hai bisogno di più logica.