arc: reading key (standalone page), top-to-bottom legend lighting, end-to-end flow blueprint

This commit is contained in:
2026-08-17 15:01:19 +10:00
parent e69d0854b3
commit 5a7b45f1b9
6 changed files with 177 additions and 14 deletions
+113
View File
@@ -0,0 +1,113 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1180" height="660" viewBox="0 0 1180 660" role="img" aria-label="End-to-end delivery flow in four lanes converging on one running workload. Change lane: a commit lands in the GitHub repository, ArgoCD renders and diffs it against the live cluster and syncs the difference - the cluster pulls, nothing pushes. Shape lane: the Helm chart plus a per-cluster values context passes the schema gate, which refuses to render if a required value is missing, and produces the manifests ArgoCD applies. Artefact lane: CI builds once, pushes the image to Azure Container Registry, the zot pull-through mirror caches it, and the node pulls by digest so the mirror catches the traffic. Secret lane: Azure Key Vault holds the values, the External Secrets operator syncs them into the cluster, and git only ever holds the reference. The workload that runs is the sum of all four: synced state, rendered shape, digest-pinned image, injected secret.">
<defs>
<marker id="arr" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
<path d="M 0 0 L 10 5 L 0 10 z" fill="#64748b"></path>
</marker>
</defs>
<rect width="1180" height="660" fill="#ffffff"></rect>
<!-- title -->
<text x="60" y="46" font-family="ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif" font-size="23" font-weight="700" fill="#0e1726">The delivery flow, end to end</text>
<text x="61" y="70" font-family="ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif" font-size="13.5" fill="#64748b">four lanes, one workload - courses VI, VIII and VII, in the order the bytes travel</text>
<!-- convergence -->
<rect x="950" y="110" width="170" height="470" rx="14" fill="#0c8fce" fill-opacity="0.06" stroke="#0c8fce" stroke-width="3"></rect>
<text x="1035" y="146" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif" font-size="15" font-weight="700" fill="#0c8fce">THE WORKLOAD</text>
<g font-family="ui-monospace, 'SF Mono', Menlo, monospace" font-size="11" fill="#0e1726">
<text x="970" y="186">synced state</text>
<text x="970" y="208">(C-VI)</text>
<text x="970" y="286">rendered shape</text>
<text x="970" y="308">(C-VIII)</text>
<text x="970" y="416">digest-pinned</text>
<text x="970" y="438">image (C-VII)</text>
<text x="970" y="516">injected secret</text>
<text x="970" y="538">(C-VI)</text>
</g>
<!-- CHANGE lane -->
<text x="60" y="122" font-family="ui-monospace, 'SF Mono', Menlo, monospace" font-size="11" letter-spacing="2" fill="#0c8fce">CHANGE</text>
<g font-family="ui-monospace, 'SF Mono', Menlo, monospace" font-size="12" fill="#0e1726">
<rect x="60" y="136" width="150" height="48" rx="10" fill="none" stroke="#64748b" stroke-width="1.5"></rect>
<text x="135" y="165" text-anchor="middle">a commit</text>
<rect x="270" y="136" width="180" height="48" rx="10" fill="none" stroke="#64748b" stroke-width="1.5"></rect>
<text x="360" y="165" text-anchor="middle">GitHub repo</text>
<rect x="510" y="136" width="230" height="48" rx="10" fill="#0c8fce" fill-opacity="0.06" stroke="#0c8fce" stroke-width="2"></rect>
<text x="625" y="165" text-anchor="middle" fill="#0c8fce">ArgoCD: render + diff + sync</text>
</g>
<g stroke="#64748b" stroke-width="1.5" marker-end="url(#arr)">
<line x1="210" y1="160" x2="264" y2="160"></line>
<line x1="740" y1="160" x2="944" y2="160"></line>
</g>
<line x1="450" y1="160" x2="504" y2="160" stroke="#64748b" stroke-width="1.5" stroke-dasharray="6 5" marker-end="url(#arr)"></line>
<text x="477" y="150" text-anchor="middle" font-family="ui-monospace, 'SF Mono', Menlo, monospace" font-size="10" fill="#64748b">pull</text>
<text x="510" y="206" font-family="ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif" font-size="11" fill="#64748b">the cluster pulls - no CI credential can touch it; drift is put back, rollback is git revert</text>
<!-- SHAPE lane -->
<text x="60" y="252" font-family="ui-monospace, 'SF Mono', Menlo, monospace" font-size="11" letter-spacing="2" fill="#7c3aed">SHAPE</text>
<g font-family="ui-monospace, 'SF Mono', Menlo, monospace" font-size="12" fill="#0e1726">
<rect x="60" y="266" width="150" height="48" rx="10" fill="#7c3aed" fill-opacity="0.04" stroke="#7c3aed" stroke-width="1.5"></rect>
<text x="135" y="295" text-anchor="middle">the chart</text>
<rect x="230" y="266" width="170" height="48" rx="10" fill="#7c3aed" fill-opacity="0.04" stroke="#7c3aed" stroke-width="1.5"></rect>
<text x="315" y="288" text-anchor="middle">values context</text>
<text x="315" y="305" text-anchor="middle" font-size="10" fill="#64748b">one file per cluster</text>
<rect x="460" y="266" width="130" height="48" rx="10" fill="#e8b44a" fill-opacity="0.08" stroke="#e8b44a" stroke-width="2"></rect>
<text x="525" y="288" text-anchor="middle" fill="#8a6414">schema gate</text>
<text x="525" y="305" text-anchor="middle" font-size="10" fill="#8a6414">required, or refuse</text>
<rect x="650" y="266" width="180" height="48" rx="10" fill="none" stroke="#64748b" stroke-width="1.5"></rect>
<text x="740" y="295" text-anchor="middle">rendered manifests</text>
</g>
<g stroke="#64748b" stroke-width="1.5" marker-end="url(#arr)">
<line x1="210" y1="290" x2="224" y2="290"></line>
<line x1="400" y1="290" x2="454" y2="290"></line>
<line x1="590" y1="290" x2="644" y2="290"></line>
<path d="M 740 266 L 740 236 L 660 236 L 660 190" fill="none"></path>
</g>
<text x="756" y="242" font-family="ui-monospace, 'SF Mono', Menlo, monospace" font-size="10" fill="#64748b">into the sync</text>
<!-- ARTEFACT lane -->
<text x="60" y="392" font-family="ui-monospace, 'SF Mono', Menlo, monospace" font-size="11" letter-spacing="2" fill="#c026d3">ARTEFACT</text>
<g font-family="ui-monospace, 'SF Mono', Menlo, monospace" font-size="12" fill="#0e1726">
<rect x="60" y="406" width="150" height="48" rx="10" fill="none" stroke="#64748b" stroke-width="1.5"></rect>
<text x="135" y="428" text-anchor="middle">CI builds</text>
<text x="135" y="445" text-anchor="middle" font-size="10" fill="#64748b">once, only once</text>
<rect x="270" y="406" width="180" height="48" rx="10" fill="#c026d3" fill-opacity="0.04" stroke="#c026d3" stroke-width="1.5"></rect>
<text x="360" y="428" text-anchor="middle">ACR upstream</text>
<text x="360" y="445" text-anchor="middle" font-size="10" fill="#64748b">tag@sha256 minted</text>
<rect x="510" y="406" width="180" height="48" rx="10" fill="#c026d3" fill-opacity="0.04" stroke="#c026d3" stroke-width="1.5"></rect>
<text x="600" y="428" text-anchor="middle">zot mirror</text>
<text x="600" y="445" text-anchor="middle" font-size="10" fill="#64748b">the fleet pulls once</text>
<rect x="750" y="406" width="150" height="48" rx="10" fill="none" stroke="#64748b" stroke-width="1.5"></rect>
<text x="825" y="428" text-anchor="middle">node pulls</text>
<text x="825" y="445" text-anchor="middle" font-size="10" fill="#64748b">by digest</text>
</g>
<g stroke="#64748b" stroke-width="1.5" marker-end="url(#arr)">
<line x1="210" y1="430" x2="264" y2="430"></line>
<line x1="450" y1="430" x2="504" y2="430"></line>
<line x1="690" y1="430" x2="744" y2="430"></line>
<line x1="900" y1="430" x2="944" y2="430"></line>
</g>
<text x="60" y="480" font-family="ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif" font-size="11" fill="#64748b">promotion is a copy of the same digest - if the digest changed, it is a new candidate, not a promotion</text>
<!-- SECRET lane -->
<text x="60" y="522" font-family="ui-monospace, 'SF Mono', Menlo, monospace" font-size="11" letter-spacing="2" fill="#8a6414">SECRET</text>
<g font-family="ui-monospace, 'SF Mono', Menlo, monospace" font-size="12" fill="#0e1726">
<rect x="60" y="536" width="180" height="48" rx="10" fill="#e8b44a" fill-opacity="0.08" stroke="#e8b44a" stroke-width="1.5"></rect>
<text x="150" y="558" text-anchor="middle" fill="#8a6414">Azure Key Vault</text>
<text x="150" y="575" text-anchor="middle" font-size="10" fill="#8a6414">holds the values</text>
<rect x="300" y="536" width="180" height="48" rx="10" fill="none" stroke="#64748b" stroke-width="1.5"></rect>
<text x="390" y="558" text-anchor="middle">ESO operator</text>
<text x="390" y="575" text-anchor="middle" font-size="10" fill="#64748b">exchanges + keeps synced</text>
<rect x="540" y="536" width="180" height="48" rx="10" fill="none" stroke="#64748b" stroke-width="1.5"></rect>
<text x="630" y="558" text-anchor="middle">Secret, in-cluster</text>
<text x="630" y="575" text-anchor="middle" font-size="10" fill="#64748b">never in git</text>
</g>
<g stroke="#64748b" stroke-width="1.5" marker-end="url(#arr)">
<line x1="240" y1="560" x2="294" y2="560"></line>
<line x1="480" y1="560" x2="534" y2="560"></line>
<line x1="720" y1="560" x2="944" y2="560"></line>
</g>
<text x="760" y="550" font-family="ui-monospace, 'SF Mono', Menlo, monospace" font-size="10" fill="#64748b">git holds only the reference</text>
<!-- footer -->
<text x="590" y="636" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif" font-size="12.5" font-weight="700" fill="#0e1726">this page shipped through this exact flow - the delivery arc is deployed by a delivery arc</text>
</svg>

After

Width:  |  Height:  |  Size: 9.4 KiB