119 lines
10 KiB
XML
119 lines
10 KiB
XML
<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, Argo CD 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 Argo CD applies. Artefact lane: CI builds once and pushes to Azure Container Registry; a central pull-through mirror in the cloud fronts upstream, per-site mirrors pull from the centre, and each node pulls by digest - the load fans out in tiers so no thundering herd ever reaches upstream. 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">Argo CD: 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="130" height="48" rx="10" fill="none" stroke="#64748b" stroke-width="1.5"></rect>
|
|
<text x="125" y="428" text-anchor="middle">CI builds</text>
|
|
<text x="125" y="445" text-anchor="middle" font-size="10" fill="#64748b">once, only once</text>
|
|
<rect x="228" y="406" width="150" height="48" rx="10" fill="#c026d3" fill-opacity="0.04" stroke="#c026d3" stroke-width="1.5"></rect>
|
|
<text x="303" y="428" text-anchor="middle">ACR upstream</text>
|
|
<text x="303" y="445" text-anchor="middle" font-size="10" fill="#64748b">tag@sha256 minted</text>
|
|
<rect x="416" y="406" width="160" height="48" rx="10" fill="#c026d3" fill-opacity="0.06" stroke="#c026d3" stroke-width="2"></rect>
|
|
<text x="496" y="428" text-anchor="middle">central mirror</text>
|
|
<text x="496" y="445" text-anchor="middle" font-size="10" fill="#64748b">one cloud cache, fronts upstream</text>
|
|
<rect x="614" y="406" width="150" height="48" rx="10" fill="#c026d3" fill-opacity="0.04" stroke="#c026d3" stroke-width="1.5"></rect>
|
|
<text x="689" y="428" text-anchor="middle">site mirror</text>
|
|
<text x="689" y="445" text-anchor="middle" font-size="10" fill="#64748b">zot at the edge</text>
|
|
<rect x="802" y="406" width="118" height="48" rx="10" fill="none" stroke="#64748b" stroke-width="1.5"></rect>
|
|
<text x="861" y="428" text-anchor="middle">node pulls</text>
|
|
<text x="861" 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="190" y1="430" x2="222" y2="430"></line>
|
|
<line x1="378" y1="430" x2="410" y2="430"></line>
|
|
<line x1="576" y1="430" x2="608" y2="430"></line>
|
|
<line x1="764" y1="430" x2="796" y2="430"></line>
|
|
<line x1="920" 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>
|
|
<text x="60" y="498" font-family="ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif" font-size="11" fill="#64748b">the tiers layer the load: upstream sees one consumer, each site sees one hop, nodes never leave the LAN</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>
|