218 lines
18 KiB
Plaintext
218 lines
18 KiB
Plaintext
<mxfile host="65bd71144e">
|
|
<diagram name="1. 문제" id="push-1">
|
|
<mxGraphModel dx="454" dy="915" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1280" pageHeight="720" math="0" shadow="0">
|
|
<root>
|
|
<mxCell id="0"/>
|
|
<mxCell id="1" parent="0"/>
|
|
<mxCell id="t" value="docker push 가 끝나지 않는다" style="text;align=center;fontSize=40;fontStyle=1;fontColor=#1f1f1f" parent="1" vertex="1">
|
|
<mxGeometry x="140" y="100" width="1000" height="60" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="dev" value="🖥
Developer PC" style="rounded=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=22;fontStyle=1;align=center;verticalAlign=middle;whiteSpace=wrap;html=1" parent="1" vertex="1">
|
|
<mxGeometry x="160" y="340" width="240" height="120" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="reg" value="📦
Registry" style="rounded=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=22;fontStyle=1;align=center;verticalAlign=middle;whiteSpace=wrap;html=1" parent="1" vertex="1">
|
|
<mxGeometry x="520" y="340" width="240" height="120" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="minio" value="🗄
MinIO" style="rounded=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=22;fontStyle=1;align=center;verticalAlign=middle;whiteSpace=wrap;html=1" parent="1" vertex="1">
|
|
<mxGeometry x="880" y="340" width="240" height="120" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="x1" value="✖" style="text;align=center;fontSize=64;fontColor=#cc0000;fontStyle=1" parent="1" vertex="1">
|
|
<mxGeometry x="420" y="360" width="80" height="80" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="x2" value="✖" style="text;align=center;fontSize=64;fontColor=#cc0000;fontStyle=1" parent="1" vertex="1">
|
|
<mxGeometry x="780" y="360" width="80" height="80" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="sub" value="원인 두 개가 겹쳤다 — 다음 슬라이드부터 하나씩" style="text;align=center;fontSize=22;fontColor=#666666" parent="1" vertex="1">
|
|
<mxGeometry x="140" y="560" width="1000" height="40" as="geometry"/>
|
|
</mxCell>
|
|
</root>
|
|
</mxGraphModel>
|
|
</diagram>
|
|
<diagram name="2. 원인1 — port-forward" id="push-2">
|
|
<mxGraphModel dx="666" dy="915" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1280" pageHeight="720" math="0" shadow="0">
|
|
<root>
|
|
<mxCell id="0"/>
|
|
<mxCell id="1" parent="0"/>
|
|
<mxCell id="t" value="원인 1 — port-forward 의 단일 SPDY 가 multi-stream 못 버틴다" style="text;align=center;fontSize=28;fontStyle=1;fontColor=#1f1f1f" parent="1" vertex="1">
|
|
<mxGeometry x="60" y="60" width="1160" height="50" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="dev" value="🖥 docker push" style="rounded=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=20;fontStyle=1;align=center;verticalAlign=middle" parent="1" vertex="1">
|
|
<mxGeometry x="120" y="200" width="240" height="320" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="lA" value="layer A" style="rounded=1;fillColor=#ffffff;strokeColor=#6c8ebf;fontSize=16;align=center;verticalAlign=middle" parent="1" vertex="1">
|
|
<mxGeometry x="140" y="280" width="200" height="40" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="lB" value="layer B" style="rounded=1;fillColor=#ffffff;strokeColor=#6c8ebf;fontSize=16;align=center;verticalAlign=middle" parent="1" vertex="1">
|
|
<mxGeometry x="140" y="350" width="200" height="40" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="lC" value="layer C" style="rounded=1;fillColor=#ffffff;strokeColor=#6c8ebf;fontSize=16;align=center;verticalAlign=middle" parent="1" vertex="1">
|
|
<mxGeometry x="140" y="420" width="200" height="40" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="pf" value="kubectl port-forward

단일 SPDY tunnel" style="rounded=1;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=18;fontStyle=1;align=center;verticalAlign=middle;whiteSpace=wrap;html=1" parent="1" vertex="1">
|
|
<mxGeometry x="540" y="290" width="280" height="140" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="reg" value="📦 Registry" style="rounded=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=20;fontStyle=1;align=center;verticalAlign=middle" parent="1" vertex="1">
|
|
<mxGeometry x="960" y="310" width="200" height="100" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="a1" style="endArrow=classic;strokeWidth=3;strokeColor=#cc0000" parent="1" source="lA" target="pf" edge="1">
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="a2" style="endArrow=classic;strokeWidth=3;strokeColor=#cc0000" parent="1" source="lB" target="pf" edge="1">
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="a3" style="endArrow=classic;strokeWidth=3;strokeColor=#cc0000" parent="1" source="lC" target="pf" edge="1">
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="a4" style="endArrow=classic;strokeWidth=2;strokeColor=#cc0000;dashed=1" parent="1" source="pf" target="reg" edge="1">
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="msg" value="병렬 3개 → 단일 tunnel → connection reset / timeout" style="text;align=center;fontSize=22;fontColor=#cc0000;fontStyle=1" parent="1" vertex="1">
|
|
<mxGeometry x="60" y="580" width="1160" height="40" as="geometry"/>
|
|
</mxCell>
|
|
</root>
|
|
</mxGraphModel>
|
|
</diagram>
|
|
<diagram name="3. 원인2 — S3 redirect" id="push-3">
|
|
<mxGraphModel dx="666" dy="915" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1280" pageHeight="720" math="0" shadow="0">
|
|
<root>
|
|
<mxCell id="0"/>
|
|
<mxCell id="1" parent="0"/>
|
|
<mxCell id="t" value="원인 2 — Registry 가 client 를 cluster 내부 URL 로 redirect 한다" style="text;align=center;fontSize=28;fontStyle=1;fontColor=#1f1f1f" parent="1" vertex="1">
|
|
<mxGeometry x="60" y="60" width="1160" height="50" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="dev" value="🖥 Developer PC" style="rounded=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=20;fontStyle=1;align=center;verticalAlign=middle" parent="1" vertex="1">
|
|
<mxGeometry x="140" y="260" width="240" height="100" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="reg" value="📦 Registry" style="rounded=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=20;fontStyle=1;align=center;verticalAlign=middle" parent="1" vertex="1">
|
|
<mxGeometry x="520" y="260" width="240" height="100" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="loc" value="302 Redirect
Location: https://minio.mnt.svc.cluster.local/...
?X-Amz-Signature=..." style="rounded=1;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=16;align=center;verticalAlign=middle;whiteSpace=wrap;html=1" parent="1" vertex="1">
|
|
<mxGeometry x="900" y="240" width="280" height="140" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="a1" style="endArrow=classic;strokeWidth=3;strokeColor=#666666" parent="1" source="dev" target="reg" edge="1">
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="a2" style="endArrow=classic;strokeWidth=3;strokeColor=#666666" parent="1" source="reg" target="loc" edge="1">
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="back" value="Dev PC 가 그 URL 받음" style="text;align=center;fontSize=18;fontStyle=1" parent="1" vertex="1">
|
|
<mxGeometry x="800" y="430" width="400" height="30" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="a3" style="endArrow=classic;strokeWidth=3;strokeColor=#cc0000;dashed=1" parent="1" edge="1">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<mxPoint x="1040" y="380" as="sourcePoint"/>
|
|
<mxPoint x="260" y="460" as="targetPoint"/>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="fail" value="❌ minio.mnt.svc.cluster.local
외부에서 해석 불가" style="rounded=1;fillColor=#f8cecc;strokeColor=#b85450;fontSize=18;fontStyle=1;align=center;verticalAlign=middle;whiteSpace=wrap;html=1" parent="1" vertex="1">
|
|
<mxGeometry x="140" y="480" width="320" height="80" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="msg" value="cluster 내부 DNS 라서 client 가 못 따라간다" style="text;align=center;fontSize=22;fontColor=#cc0000;fontStyle=1" parent="1" vertex="1">
|
|
<mxGeometry x="60" y="610" width="1160" height="40" as="geometry"/>
|
|
</mxCell>
|
|
</root>
|
|
</mxGraphModel>
|
|
</diagram>
|
|
<diagram name="4. 우회1 — OCI tar" id="push-4">
|
|
<mxGraphModel dx="965" dy="915" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1280" pageHeight="720" math="0" shadow="0">
|
|
<root>
|
|
<mxCell id="0"/>
|
|
<mxCell id="1" parent="0"/>
|
|
<mxCell id="t" value="우회 1 — docker daemon 안 거치고 OCI tar 로 빌드" style="text;align=center;fontSize=28;fontStyle=1;fontColor=#1f1f1f" parent="1" vertex="1">
|
|
<mxGeometry x="60" y="60" width="1160" height="50" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="bx" value="docker buildx --output type=oci" style="rounded=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=20;fontStyle=1;align=center;verticalAlign=middle;whiteSpace=wrap;html=1" parent="1" vertex="1">
|
|
<mxGeometry x="120" y="240" width="320" height="100" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="tar" value="📄 /tmp/img.tar

manifest + blobs" style="rounded=1;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=20;fontStyle=1;align=center;verticalAlign=middle;whiteSpace=wrap;html=1" parent="1" vertex="1">
|
|
<mxGeometry x="520" y="240" width="240" height="100" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="curl" value="curl PUT

1 blob = 1 stream" style="rounded=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=20;fontStyle=1;align=center;verticalAlign=middle;whiteSpace=wrap;html=1" parent="1" vertex="1">
|
|
<mxGeometry x="840" y="240" width="320" height="100" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="a1" style="endArrow=classic;strokeWidth=3;strokeColor=#666666" parent="1" source="bx" target="tar" edge="1">
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="a2" style="endArrow=classic;strokeWidth=3;strokeColor=#666666" parent="1" source="tar" target="curl" edge="1">
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="seq" value="blob1 → blob2 → blob3 → manifest
(순차)" style="text;align=center;fontSize=22;fontColor=#006600;fontStyle=1;whiteSpace=wrap;html=1" parent="1" vertex="1">
|
|
<mxGeometry x="500" y="420" width="600" height="80" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="msg" value="multi-stream 자체를 안 쓴다 → port-forward 도 안정" style="text;align=center;fontSize=22;fontColor=#006600;fontStyle=1" parent="1" vertex="1">
|
|
<mxGeometry x="60" y="580" width="1160" height="40" as="geometry"/>
|
|
</mxCell>
|
|
</root>
|
|
</mxGraphModel>
|
|
</diagram>
|
|
<diagram name="5. 우회2 — redirect off" id="push-5">
|
|
<mxGraphModel dx="965" dy="915" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1280" pageHeight="720" math="0" shadow="0">
|
|
<root>
|
|
<mxCell id="0"/>
|
|
<mxCell id="1" parent="0"/>
|
|
<mxCell id="t" value="우회 2 — REGISTRY_STORAGE_REDIRECT_DISABLE = true" style="text;align=center;fontSize=28;fontStyle=1;fontColor=#1f1f1f" parent="1" vertex="1">
|
|
<mxGeometry x="60" y="60" width="1160" height="50" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="dev" value="🖥 Client" style="rounded=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=20;fontStyle=1;align=center;verticalAlign=middle" parent="1" vertex="1">
|
|
<mxGeometry x="140" y="300" width="200" height="100" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="reg" value="📦 Registry

redirect OFF" style="rounded=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=20;fontStyle=1;align=center;verticalAlign=middle;whiteSpace=wrap;html=1" parent="1" vertex="1">
|
|
<mxGeometry x="540" y="280" width="280" height="140" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="minio" value="🗄 MinIO" style="rounded=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=20;fontStyle=1;align=center;verticalAlign=middle" parent="1" vertex="1">
|
|
<mxGeometry x="1000" y="300" width="200" height="100" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="a1" style="endArrow=classic;startArrow=classic;strokeWidth=3;strokeColor=#82b366" parent="1" source="dev" target="reg" edge="1">
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="a2" style="endArrow=classic;startArrow=classic;strokeWidth=3;strokeColor=#82b366" parent="1" source="reg" target="minio" edge="1">
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="lbl1" value="blob 데이터 그대로" style="text;align=center;fontSize=16;fontColor=#006600" parent="1" vertex="1">
|
|
<mxGeometry x="340" y="240" width="200" height="30" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="lbl2" value="Registry 내부 통신" style="text;align=center;fontSize=16;fontColor=#006600" parent="1" vertex="1">
|
|
<mxGeometry x="820" y="240" width="180" height="30" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="msg" value="Client 는 Registry 한 곳만 보면 된다 — MinIO URL 모름" style="text;align=center;fontSize=22;fontColor=#006600;fontStyle=1" parent="1" vertex="1">
|
|
<mxGeometry x="60" y="540" width="1160" height="40" as="geometry"/>
|
|
</mxCell>
|
|
</root>
|
|
</mxGraphModel>
|
|
</diagram>
|
|
<diagram name="6. 최종 경로" id="push-6">
|
|
<mxGraphModel dx="965" dy="915" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1280" pageHeight="720" math="0" shadow="0">
|
|
<root>
|
|
<mxCell id="0"/>
|
|
<mxCell id="1" parent="0"/>
|
|
<mxCell id="t" value="최종 push 경로" style="text;align=center;fontSize=36;fontStyle=1;fontColor=#006600" parent="1" vertex="1">
|
|
<mxGeometry x="60" y="80" width="1160" height="50" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="dev" value="🖥 Dev PC
buildx + curl" style="rounded=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=18;fontStyle=1;align=center;verticalAlign=middle;whiteSpace=wrap;html=1" parent="1" vertex="1">
|
|
<mxGeometry x="80" y="320" width="200" height="100" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="tr" value="🌐 Traefik
Ingress" style="rounded=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=18;fontStyle=1;align=center;verticalAlign=middle;whiteSpace=wrap;html=1" parent="1" vertex="1">
|
|
<mxGeometry x="370" y="320" width="200" height="100" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="reg" value="📦 Registry
redirect OFF" style="rounded=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=18;fontStyle=1;align=center;verticalAlign=middle;whiteSpace=wrap;html=1" parent="1" vertex="1">
|
|
<mxGeometry x="660" y="320" width="200" height="100" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="minio" value="🗄 MinIO" style="rounded=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=18;fontStyle=1;align=center;verticalAlign=middle" parent="1" vertex="1">
|
|
<mxGeometry x="950" y="320" width="200" height="100" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="a1" style="endArrow=classic;strokeWidth=3;strokeColor=#82b366" parent="1" source="dev" target="tr" edge="1">
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="a2" style="endArrow=classic;strokeWidth=3;strokeColor=#82b366" parent="1" source="tr" target="reg" edge="1">
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="a3" style="endArrow=classic;startArrow=classic;strokeWidth=3;strokeColor=#82b366" parent="1" source="reg" target="minio" edge="1">
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="msg" value="✓ single-stream ✓ redirect off ✓ Ingress 경유" style="text;align=center;fontSize=22;fontColor=#006600;fontStyle=1" parent="1" vertex="1">
|
|
<mxGeometry x="60" y="540" width="1160" height="40" as="geometry"/>
|
|
</mxCell>
|
|
</root>
|
|
</mxGraphModel>
|
|
</diagram>
|
|
</mxfile> |