GitOps reconciliation

GitOps 조정

Detect and reconcile differences between a Git declaration and the running environment.

···
html
<div class="stage" data-phase="0"><div class="title">GIT ↔ CLUSTER</div><div class="row sides"><div class="panel">Git<br><b>replicas: 3</b></div><div class="diff">≠</div><div class="panel live">live<br><b>replicas: 2</b></div></div><div class="drift">drift detected</div></div>
css
.stage{width:min(94vw,760px);height:min(88vh,330px);padding:clamp(9px,2.6vmin,20px);border:1px solid var(--line);border-radius:14px;background:var(--surface);font:600 clamp(12px,2.5vmin,16px)/1.3 "Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo",sans-serif;display:flex;flex-direction:column;gap:clamp(6px,1.7vmin,12px);overflow:hidden;position:relative}.stage *{min-width:0}.stage .title{color:var(--accent);font-weight:800}.stage .sub{color:var(--muted)}.stage .row{display:flex;align-items:center;gap:clamp(5px,1.6vmin,12px)}.stage .panel{border:1px solid var(--line);border-radius:8px;background:var(--bg);padding:clamp(6px,1.6vmin,12px)}.stage .mono{font-family:ui-monospace,SFMono-Regular,monospace;font-size:clamp(12px,2.5vmin,15px)}.stage .grow{flex:1}.stage .on{color:var(--accent)}.sides{flex:1;justify-content:center}.sides .panel{width:39%;text-align:center}.sides b{color:var(--accent)}.diff{font-size:clamp(22px,5vmin,38px);color:var(--accent-3)}.drift{text-align:center;color:var(--accent-3)}.stage[data-phase="1"] .diff{animation:turn .6s ease}.stage[data-phase="2"] .diff{font-size:0}.stage[data-phase="2"] .diff:after{content:'=';font-size:clamp(22px,5vmin,38px);color:var(--accent)}.stage[data-phase="2"] .live b{font-size:0}.stage[data-phase="2"] .live b:after{content:'replicas: 3';font-size:clamp(12px,2.5vmin,16px)}.stage[data-phase="2"] .drift{font-size:0}.stage[data-phase="2"] .drift:after{content:'synced';font-size:clamp(12px,2.5vmin,16px);color:var(--accent)}@keyframes turn{to{transform:rotate(180deg)}}
js
const stage=document.querySelector('.stage');let phase=0;function advance(){phase=(phase+1)%3;stage.dataset.phase=String(phase)}const timer=setInterval(advance,1200);stage.addEventListener('pointerdown',()=>{clearInterval(timer);advance()})

GitOps keeps deployment declarations in Git while a controller compares them with the running environment. A manual change creates drift visible at the next reconciliation.

The demo compares three desired replicas with two live replicas and adds the missing one. Reconciliation policy and permissions matter because automatic correction may undo an emergency action.

When to use

Use it to keep deployment settings for multiple environments in reviewable history.

Open as page ↗