292 lines
27 KiB
Plaintext
292 lines
27 KiB
Plaintext
<mxfile host="app.diagrams.net" modified="2026-05-09T00:00:00.000Z" agent="Mozilla/5.0" version="24.0.0" type="device">
|
|
<diagram name="s17-cert-manager" id="cert-manager">
|
|
<mxGraphModel dx="1600" dy="900" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="900" math="0" shadow="0">
|
|
<root>
|
|
<mxCell id="0" />
|
|
<mxCell id="1" parent="0" />
|
|
|
|
<mxCell id="title" value="인증서 자동 발급/갱신 — cert-manager + ACME (Let's Encrypt)" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=26;fontStyle=1;fontFamily=Pretendard,Helvetica;" vertex="1" parent="1">
|
|
<mxGeometry x="60" y="36" width="1500" height="40" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="subtitle" value="Certificate CRD 선언 → cert-manager 가 ACME 챌린지 → K8s Secret → Cert Pool 자동 반영 + 만료 30일 전 자동 갱신" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=15;fontFamily=Pretendard,Helvetica;fontColor=#57606A;" vertex="1" parent="1">
|
|
<mxGeometry x="60" y="76" width="1500" height="22" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="grp-decl" value="① 선언 (Operator)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F3E8FF;strokeColor=#5B21B6;strokeWidth=1;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#5B21B6;align=left;verticalAlign=top;spacingLeft=10;spacingTop=6;" vertex="1" parent="1">
|
|
<mxGeometry x="40" y="120" width="1520" height="160" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="op" value="" style="sketch=0;outlineConnect=0;fillColor=#232F3E;strokeColor=#232F3E;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;aspect=fixed;shape=mxgraph.aws4.user;" vertex="1" parent="1">
|
|
<mxGeometry x="100" y="170" width="60" height="60" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="op-lbl" value="Operator" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=12;fontFamily=Pretendard,Helvetica;fontStyle=1;" vertex="1" parent="1">
|
|
<mxGeometry x="60" y="234" width="140" height="20" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="cert-crd-bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#5B21B6;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="290" y="160" width="380" height="100" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cert-crd-title" value="kind: Certificate" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#5B21B6;spacingLeft=14;spacingTop=8;" vertex="1" parent="1">
|
|
<mxGeometry x="290" y="160" width="380" height="22" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cert-crd-body" value="spec.secretName: tls-a-com
spec.dnsNames: [a.com]
spec.issuerRef.name: letsencrypt-prod" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontFamily=monospace;fontColor=#3B0764;spacingLeft=14;" vertex="1" parent="1">
|
|
<mxGeometry x="290" y="186" width="380" height="68" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="issuer-crd-bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#5B21B6;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="780" y="160" width="400" height="100" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="issuer-crd-title" value="kind: ClusterIssuer" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#5B21B6;spacingLeft=14;spacingTop=8;" vertex="1" parent="1">
|
|
<mxGeometry x="780" y="160" width="400" height="22" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="issuer-crd-body" value="metadata.name: letsencrypt-prod
spec.acme.server: https://acme-v02.api...
spec.acme.solvers: [http01]" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontFamily=monospace;fontColor=#3B0764;spacingLeft=14;" vertex="1" parent="1">
|
|
<mxGeometry x="780" y="186" width="400" height="68" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e-op-cert" style="endArrow=classic;html=1;strokeColor=#5B21B6;strokeWidth=3;fontFamily=Pretendard,Helvetica;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="op" target="cert-crd-bg">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="num1" value="①" style="ellipse;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#5B21B6;fontColor=#5B21B6;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="213" y="187" width="24" height="24" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="e-op-cert-lbl" value="kubectl apply" style="text;html=1;align=center;verticalAlign=middle;fontSize=11;fontFamily=monospace;fontColor=#5B21B6;fillColor=#FFFFFF;" vertex="1" parent="1">
|
|
<mxGeometry x="190" y="214" width="100" height="18" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e-cert-issuer" style="endArrow=classic;html=1;strokeColor=#5B21B6;strokeWidth=2;dashed=1;fontFamily=Pretendard,Helvetica;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="cert-crd-bg" target="issuer-crd-bg">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="e-cert-issuer-lbl" value="issuerRef" style="text;html=1;align=center;verticalAlign=middle;fontSize=11;fontFamily=monospace;fontColor=#5B21B6;fillColor=#FFFFFF;fontStyle=2;" vertex="1" parent="1">
|
|
<mxGeometry x="690" y="200" width="80" height="18" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="decl-note" value="✓ Operator 입력 = Certificate + Issuer 두 CRD
✓ Issuer 종류: ACME (Let's Encrypt · ZeroSSL) · CA · Vault · SelfSigned
✓ Scope: Issuer (namespace) vs ClusterIssuer (cluster, 본 그림)
✓ 자동 모드: Ingress annotation cert-manager.io/cluster-issuer
 → Certificate CRD 자동 생성 (가장 흔한 실전 패턴)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#EDE9FE;strokeColor=#5B21B6;strokeWidth=1;dashed=1;fontSize=11;fontStyle=2;fontFamily=Pretendard,Helvetica;fontColor=#5B21B6;align=left;verticalAlign=middle;spacingLeft=14;" vertex="1" parent="1">
|
|
<mxGeometry x="1230" y="148" width="320" height="125" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="grp-cm" value="cert-manager (in-cluster controller)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFF7ED;strokeColor=#FB923C;strokeWidth=1;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#C2410C;align=left;verticalAlign=top;spacingLeft=10;spacingTop=6;" vertex="1" parent="1">
|
|
<mxGeometry x="40" y="300" width="980" height="290" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="cm-icon" value="" style="shape=image;html=1;image=https://raw.githubusercontent.com/kubernetes/community/master/icons/svg/resources/unlabeled/pod.svg;imageAspect=1;" vertex="1" parent="1">
|
|
<mxGeometry x="80" y="370" width="70" height="70" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cm-lbl" value="cert-manager" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontFamily=Pretendard,Helvetica;fontStyle=1;fontColor=#C2410C;" vertex="1" parent="1">
|
|
<mxGeometry x="50" y="444" width="130" height="20" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="order-bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFEDD5;strokeColor=#C2410C;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="240" y="370" width="180" height="70" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="order-title" value="Order CRD" style="text;html=1;align=center;verticalAlign=top;whiteSpace=wrap;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#C2410C;spacingTop=10;" vertex="1" parent="1">
|
|
<mxGeometry x="240" y="370" width="180" height="22" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="order-sub" value="ACME Order 트래킹" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=2;fontFamily=Pretendard,Helvetica;fontColor=#7C2D12;" vertex="1" parent="1">
|
|
<mxGeometry x="240" y="400" width="180" height="32" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="challenge-bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFEDD5;strokeColor=#C2410C;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="480" y="370" width="180" height="70" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="challenge-title" value="Challenge CRD" style="text;html=1;align=center;verticalAlign=top;whiteSpace=wrap;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#C2410C;spacingTop=10;" vertex="1" parent="1">
|
|
<mxGeometry x="480" y="370" width="180" height="22" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="challenge-sub" value="HTTP-01 / DNS-01 처리" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=2;fontFamily=Pretendard,Helvetica;fontColor=#7C2D12;" vertex="1" parent="1">
|
|
<mxGeometry x="480" y="400" width="180" height="32" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="endpoint-bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FED7AA;strokeColor=#C2410C;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="720" y="370" width="260" height="70" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="endpoint-title" value="HTTP-01 Token Endpoint" style="text;html=1;align=center;verticalAlign=top;whiteSpace=wrap;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#C2410C;spacingTop=8;" vertex="1" parent="1">
|
|
<mxGeometry x="720" y="370" width="260" height="22" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="endpoint-sub" value="/.well-known/acme-challenge/<token>
Ingress 에 임시 노출 (외부 80/tcp)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontFamily=monospace;fontColor=#7C2D12;" vertex="1" parent="1">
|
|
<mxGeometry x="720" y="395" width="260" height="40" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e-cm-order" style="endArrow=classic;html=1;strokeColor=#C2410C;strokeWidth=3;fontFamily=Pretendard,Helvetica;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="cm-icon" target="order-bg">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="num3" value="③" style="ellipse;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#C2410C;fontColor=#C2410C;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="183" y="393" width="24" height="24" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="e-cm-order-lbl" value="create" style="text;html=1;align=center;verticalAlign=middle;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#C2410C;fillColor=#FFFFFF;" vertex="1" parent="1">
|
|
<mxGeometry x="183" y="420" width="60" height="18" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e-order-challenge" style="endArrow=classic;html=1;strokeColor=#C2410C;strokeWidth=3;fontFamily=Pretendard,Helvetica;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="order-bg" target="challenge-bg">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="num4" value="④" style="ellipse;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#C2410C;fontColor=#C2410C;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="436" y="393" width="24" height="24" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e-challenge-endpoint" style="endArrow=classic;html=1;strokeColor=#C2410C;strokeWidth=3;fontFamily=Pretendard,Helvetica;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="challenge-bg" target="endpoint-bg">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="num5" value="⑤" style="ellipse;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#C2410C;fontColor=#C2410C;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="676" y="393" width="24" height="24" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="e-challenge-endpoint-lbl" value="expose" style="text;html=1;align=center;verticalAlign=middle;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#C2410C;fillColor=#FFFFFF;" vertex="1" parent="1">
|
|
<mxGeometry x="666" y="420" width="60" height="18" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e-watch-cert" style="endArrow=classic;html=1;strokeColor=#FB923C;strokeWidth=2;dashed=1;fontFamily=Pretendard,Helvetica;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.3;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="cm-icon" target="cert-crd-bg">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="num2" value="②" style="ellipse;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#FB923C;fontColor=#C2410C;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="170" y="320" width="24" height="24" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="e-watch-cert-lbl" value="watch (informer)" style="text;html=1;align=center;verticalAlign=middle;fontSize=10;fontFamily=monospace;fontColor=#C2410C;fillColor=#FFFFFF;" vertex="1" parent="1">
|
|
<mxGeometry x="120" y="345" width="120" height="18" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="cm-bottom-note-bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFEDD5;strokeColor=#C2410C;strokeWidth=1;dashed=1;" vertex="1" parent="1">
|
|
<mxGeometry x="260" y="460" width="740" height="120" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cm-bottom-note-title" value="더 알아둘 것 (그림에 생략된 변형)" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#C2410C;spacingLeft=14;spacingTop=8;" vertex="1" parent="1">
|
|
<mxGeometry x="260" y="460" width="740" height="22" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cm-note-1" value="• Challenge: HTTP-01 (80/tcp · wildcard 불가) vs DNS-01 (DNS API · *.example.com wildcard 가능)" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontFamily=Pretendard,Helvetica;fontColor=#7C2D12;spacingLeft=20;" vertex="1" parent="1">
|
|
<mxGeometry x="260" y="488" width="740" height="20" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cm-note-2" value="• 실제 흐름: Certificate → CertificateRequest → Order → Challenge → cert (CR 이 발급 단위 추상화)" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontFamily=Pretendard,Helvetica;fontColor=#7C2D12;spacingLeft=20;" vertex="1" parent="1">
|
|
<mxGeometry x="260" y="510" width="740" height="20" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cm-note-3" value="• Token endpoint: 검증 동안만 외부 80/tcp 노출 → 검증 후 자동 삭제 (영구 노출 X)" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontFamily=Pretendard,Helvetica;fontColor=#7C2D12;spacingLeft=20;" vertex="1" parent="1">
|
|
<mxGeometry x="260" y="532" width="740" height="20" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cm-note-4" value="• 운영: staging server (acme-staging-v02) 로 테스트 후 prod · rate limit 50 cert / 도메인 / 주" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontFamily=Pretendard,Helvetica;fontColor=#7C2D12;spacingLeft=20;" vertex="1" parent="1">
|
|
<mxGeometry x="260" y="554" width="740" height="20" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="grp-acme" value="외부 — ACME 서버 (Let's Encrypt)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FEF3C7;strokeColor=#B45309;strokeWidth=1;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#B45309;align=left;verticalAlign=top;spacingLeft=10;spacingTop=6;" vertex="1" parent="1">
|
|
<mxGeometry x="1040" y="300" width="520" height="290" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="acme-bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#B45309;strokeWidth=3;" vertex="1" parent="1">
|
|
<mxGeometry x="1080" y="370" width="200" height="170" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="acme-title" value="Let's Encrypt" style="text;html=1;align=center;verticalAlign=top;whiteSpace=wrap;fontSize=15;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#B45309;spacingTop=14;" vertex="1" parent="1">
|
|
<mxGeometry x="1080" y="370" width="200" height="26" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="acme-sub-1" value="ACME 프로토콜 서버" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontFamily=Pretendard,Helvetica;fontStyle=2;fontColor=#7C2D12;" vertex="1" parent="1">
|
|
<mxGeometry x="1080" y="408" width="200" height="22" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="acme-sub-2" value="공개 CA · 무료 발급" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontFamily=Pretendard,Helvetica;fontStyle=2;fontColor=#7C2D12;" vertex="1" parent="1">
|
|
<mxGeometry x="1080" y="430" width="200" height="22" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="acme-sub-3" value="acme-v02.api.letsencrypt.org" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontFamily=monospace;fontColor=#7C2D12;" vertex="1" parent="1">
|
|
<mxGeometry x="1080" y="490" width="200" height="22" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e-cm-acme-order" style="endArrow=classic;html=1;strokeColor=#B45309;strokeWidth=3;fontFamily=Pretendard,Helvetica;" edge="1" parent="1">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<mxPoint x="1020" y="395" as="sourcePoint" />
|
|
<mxPoint x="1080" y="395" as="targetPoint" />
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="num6" value="⑥" style="ellipse;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#B45309;fontColor=#B45309;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="1031" y="383" width="24" height="24" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="e-cm-acme-order-lbl" value="Order 요청" style="text;html=1;align=center;verticalAlign=middle;fontSize=10;fontFamily=monospace;fontColor=#B45309;fillColor=#FFFFFF;" vertex="1" parent="1">
|
|
<mxGeometry x="985" y="365" width="100" height="18" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e-acme-validate" style="endArrow=classic;html=1;strokeColor=#B45309;strokeWidth=3;dashed=1;fontFamily=Pretendard,Helvetica;" edge="1" parent="1">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<Array as="points">
|
|
<mxPoint x="1180" y="600" />
|
|
<mxPoint x="850" y="600" />
|
|
</Array>
|
|
<mxPoint x="1180" y="540" as="sourcePoint" />
|
|
<mxPoint x="850" y="440" as="targetPoint" />
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="num7" value="⑦" style="ellipse;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#B45309;fontColor=#B45309;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="1010" y="588" width="24" height="24" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="e-acme-validate-lbl" value="HTTP GET token URL (외부에서 검증)" style="text;html=1;align=center;verticalAlign=middle;fontSize=10;fontFamily=monospace;fontColor=#B45309;fillColor=#FFFFFF;" vertex="1" parent="1">
|
|
<mxGeometry x="850" y="608" width="280" height="18" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e-acme-cm-cert" style="endArrow=classic;html=1;strokeColor=#15803D;strokeWidth=3;fontFamily=Pretendard,Helvetica;" edge="1" parent="1">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<mxPoint x="1080" y="460" as="sourcePoint" />
|
|
<mxPoint x="1020" y="460" as="targetPoint" />
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="num8" value="⑧" style="ellipse;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#15803D;fontColor=#15803D;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="1031" y="448" width="24" height="24" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="e-acme-cm-cert-lbl" value="X.509 cert 발급" style="text;html=1;align=center;verticalAlign=middle;fontSize=10;fontFamily=monospace;fontColor=#15803D;fillColor=#FFFFFF;fontStyle=1;" vertex="1" parent="1">
|
|
<mxGeometry x="970" y="475" width="120" height="18" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="grp-result" value="결과 — K8s Secret + Cert Pool" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ECFDF5;strokeColor=#10B981;strokeWidth=1;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#047857;align=left;verticalAlign=top;spacingLeft=10;spacingTop=6;" vertex="1" parent="1">
|
|
<mxGeometry x="40" y="610" width="1520" height="160" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="secret-bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#15803D;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="120" y="650" width="440" height="100" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="secret-title" value="kind: Secret · type: kubernetes.io/tls" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#15803D;spacingLeft=14;spacingTop=8;" vertex="1" parent="1">
|
|
<mxGeometry x="120" y="650" width="440" height="22" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="secret-body" value="metadata.name: tls-a-com
data.tls.crt: <PEM 인증서>
data.tls.key: <PEM 개인키>" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontFamily=monospace;fontColor=#14532D;spacingLeft=14;" vertex="1" parent="1">
|
|
<mxGeometry x="120" y="676" width="440" height="68" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="pool-bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#15803D;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="700" y="650" width="460" height="100" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="pool-title" value="Traefik Cert Pool (s14 와 동일)" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#15803D;spacingLeft=14;spacingTop=8;" vertex="1" parent="1">
|
|
<mxGeometry x="700" y="650" width="460" height="22" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="pool-body" value="• tls-a-com → CN=a.com
• Traefik k8s provider 가 Secret 변경 자동 감지
• 다음 SNI 매칭 시 새 cert 사용 (Pod 재시작 불필요)" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#14532D;spacingLeft=14;" vertex="1" parent="1">
|
|
<mxGeometry x="700" y="676" width="460" height="68" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="renewal-bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#BBF7D0;strokeColor=#15803D;strokeWidth=2;dashed=1;" vertex="1" parent="1">
|
|
<mxGeometry x="1240" y="650" width="300" height="100" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="renewal-title" value="⓿ 자동 갱신" style="text;html=1;align=center;verticalAlign=top;whiteSpace=wrap;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#14532D;spacingTop=10;" vertex="1" parent="1">
|
|
<mxGeometry x="1240" y="650" width="300" height="24" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="renewal-body" value="cert-manager 가 notAfter 주기 확인
만료 30 일 전 → ②~⑨ 자동 재실행
운영자 개입 / Pod 재시작 불필요" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#14532D;" vertex="1" parent="1">
|
|
<mxGeometry x="1240" y="678" width="300" height="65" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e-cm-secret" style="endArrow=classic;html=1;strokeColor=#15803D;strokeWidth=3;fontFamily=Pretendard,Helvetica;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.3;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="cm-icon" target="secret-bg">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="num9" value="⑨" style="ellipse;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#15803D;fontColor=#15803D;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="103" y="608" width="24" height="24" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="e-cm-secret-lbl" value="Secret 저장" style="text;html=1;align=center;verticalAlign=middle;fontSize=11;fontFamily=monospace;fontColor=#15803D;fillColor=#FFFFFF;" vertex="1" parent="1">
|
|
<mxGeometry x="135" y="600" width="120" height="18" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="e-secret-pool" style="endArrow=classic;html=1;strokeColor=#15803D;strokeWidth=3;fontFamily=Pretendard,Helvetica;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="secret-bg" target="pool-bg">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="num10" value="⑩" style="ellipse;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#15803D;fontColor=#15803D;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;strokeWidth=2;" vertex="1" parent="1">
|
|
<mxGeometry x="618" y="688" width="24" height="24" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="e-secret-pool-lbl" value="자동 reload" style="text;html=1;align=center;verticalAlign=middle;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#15803D;fillColor=#FFFFFF;" vertex="1" parent="1">
|
|
<mxGeometry x="600" y="668" width="80" height="18" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="caption-bg" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F6F8FA;strokeColor=#D0D7DE;" vertex="1" parent="1">
|
|
<mxGeometry x="40" y="800" width="1520" height="44" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="caption" value="운영자는 Certificate CRD 만 선언 → cert-manager 가 Order/Challenge/Endpoint 자동 처리 + ACME 와 통신 → K8s Secret 으로 저장 + Cert Pool 자동 반영 + 만료 전 자동 갱신" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=14;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#24292F;" vertex="1" parent="1">
|
|
<mxGeometry x="40" y="800" width="1520" height="44" as="geometry" />
|
|
</mxCell>
|
|
|
|
</root>
|
|
</mxGraphModel>
|
|
</diagram>
|
|
</mxfile>
|