<mxfile host="app.diagrams.net" type="device">
  <diagram name="fluxo-gitops" id="fluxo-gitops">
    <mxGraphModel dx="1200" dy="800" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1200" math="0" shadow="0">
      <root>
        <mxCell id="0"/>
        <mxCell id="1" parent="0"/>
        <mxCell id="n2" value="Busca-Busca — Fluxo de Entrega (CI + GitOps + k3s)" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=18;fontColor=#222222;fontStyle=1;" vertex="1" parent="1"><mxGeometry x="40" y="20" width="1000" height="24" as="geometry"/></mxCell>
        <mxCell id="n3" value="Padrão de 2 repositórios (app + config) · deploy declarativo com Argo CD" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=12;fontColor=#888888;" vertex="1" parent="1"><mxGeometry x="40" y="46" width="1100" height="24" as="geometry"/></mxCell>
        <mxCell id="n4" value="&lt;b&gt;Dev&lt;/b&gt;&lt;br/&gt;commit / PR" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5f5f0;strokeColor=#3aa89a;fontSize=12;align=center;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="40" y="120" width="150" height="70" as="geometry"/></mxCell>
        <mxCell id="n5" value="&lt;b&gt;GitHub · busca-busca&lt;/b&gt;&lt;br/&gt;backend · collector · frontend&lt;br/&gt;deploy/k8s · .github/workflows" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#eeeeee;strokeColor=#666666;fontSize=12;align=center;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="240" y="110" width="240" height="90" as="geometry"/></mxCell>
        <mxCell id="n6" value="&lt;b&gt;GitHub Actions (CI)&lt;/b&gt;&lt;br/&gt;build · testes · SonarQube&lt;br/&gt;Trivy · build+push imagem" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;fontSize=12;align=center;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="540" y="110" width="250" height="90" as="geometry"/></mxCell>
        <mxCell id="n7" value="&lt;b&gt;Harbor&lt;/b&gt;&lt;br/&gt;registry + Trivy + Cosign" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5f5f0;strokeColor=#3aa89a;fontSize=12;align=center;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="850" y="120" width="200" height="70" as="geometry"/></mxCell>
        <mxCell id="n8" value="&lt;b&gt;GitHub · busca-busca-gitops&lt;/b&gt;&lt;br/&gt;apps/ (app-of-apps)&lt;br/&gt;environments/{dev,staging,prod}" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontSize=12;align=center;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="540" y="300" width="250" height="100" as="geometry"/></mxCell>
        <mxCell id="n9" value="&lt;b&gt;Argo CD&lt;/b&gt;&lt;br/&gt;watch · sync · rollback · self-heal" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fce4ec;strokeColor=#c2185b;fontSize=12;align=center;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="850" y="305" width="200" height="90" as="geometry"/></mxCell>
        <mxCell id="n10" value="&lt;b&gt;k3s (VPS Hostinger)&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=12;align=left;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="1120" y="110" width="300" height="470" as="geometry"/></mxCell>
        <mxCell id="n11" value="Traefik + cert-manager (Cloudflare DNS-01)" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=11;fontColor=#555555;" vertex="1" parent="1"><mxGeometry x="1140" y="150" width="260" height="24" as="geometry"/></mxCell>
        <mxCell id="n12" value="&lt;b&gt;namespace: dev&lt;/b&gt;&lt;br/&gt;backend · collector · frontend" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#82b366;fontSize=11;align=center;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="1140" y="190" width="260" height="80" as="geometry"/></mxCell>
        <mxCell id="n13" value="&lt;b&gt;namespace: staging&lt;/b&gt;&lt;br/&gt;backend · collector · frontend" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#82b366;fontSize=11;align=center;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="1140" y="290" width="260" height="80" as="geometry"/></mxCell>
        <mxCell id="n14" value="&lt;b&gt;namespace: prod&lt;/b&gt;&lt;br/&gt;backend · collector · frontend" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#82b366;fontSize=11;align=center;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="1140" y="390" width="260" height="80" as="geometry"/></mxCell>
        <mxCell id="n15" value="PostgreSQL (CloudNativePG)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#82b366;fontSize=11;align=center;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="1140" y="490" width="260" height="60" as="geometry"/></mxCell>
        <mxCell id="n16" value="&lt;b&gt;Observabilidade &amp; Agente IA (via MCP)&lt;/b&gt;&lt;br/&gt;Métricas·Logs·Traces · diagnostica incidente · Slack/Teams/E-mail" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;fontSize=12;align=center;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="240" y="470" width="550" height="90" as="geometry"/></mxCell>
        <mxCell id="n17" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;dashed=0;opacity=60;" vertex="1" parent="1"><mxGeometry x="1110" y="600" width="320" height="200" as="geometry"/></mxCell>
        <mxCell id="n18" value="Exposição &amp; acesso · technodevbr.com" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#d6b656;fontStyle=1;" vertex="1" parent="1"><mxGeometry x="1126" y="612" width="290" height="24" as="geometry"/></mxCell>
        <mxCell id="n19" value="Cloudflare&lt;br/&gt;DNS + TLS (proxy)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#d6b656;fontSize=11;align=center;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="1126" y="648" width="140" height="64" as="geometry"/></mxCell>
        <mxCell id="n20" value="VPN (Tailscale)&lt;br/&gt;acesso interno" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#d6b656;fontSize=11;align=center;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="1280" y="648" width="135" height="64" as="geometry"/></mxCell>
        <mxCell id="n21" value="Portainer&lt;br/&gt;painel (público)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#d6b656;fontSize=11;align=center;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="1126" y="726" width="140" height="60" as="geometry"/></mxCell>
        <mxCell id="n22" value="app · argo · grafana&lt;br/&gt;(interno)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#d6b656;fontSize=11;align=center;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="1280" y="726" width="135" height="60" as="geometry"/></mxCell>
        <mxCell id="n23" value="push" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#555555;startArrow=none;endArrow=block;" edge="1" parent="1" source="n4" target="n5"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="n24" value="trigger" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#555555;startArrow=none;endArrow=block;" edge="1" parent="1" source="n5" target="n6"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="n25" value="push imagem" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#555555;startArrow=none;endArrow=block;" edge="1" parent="1" source="n6" target="n7"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="n26" value="bump da tag" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#555555;startArrow=none;endArrow=block;" edge="1" parent="1" source="n6" target="n8"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="n27" value="watch" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#555555;startArrow=none;endArrow=block;" edge="1" parent="1" source="n8" target="n9"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="n28" value="pull imagem" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#555555;startArrow=none;endArrow=block;dashed=1;" edge="1" parent="1" source="n7" target="n9"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="n29" value="sync / apply" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#555555;startArrow=none;endArrow=block;" edge="1" parent="1" source="n9" target="n10"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="n30" value="telemetria" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#555555;startArrow=none;endArrow=block;dashed=1;" edge="1" parent="1" source="n10" target="n16"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="n31" value="issue / alerta diagnosticado" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#555555;startArrow=none;endArrow=block;dashed=1;" edge="1" parent="1" source="n16" target="n4"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="n32" value="→ Traefik" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#555555;startArrow=none;endArrow=block;dashed=1;" edge="1" parent="1" source="n19" target="n10"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="n33" value="→ Traefik" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#555555;startArrow=none;endArrow=block;dashed=1;" edge="1" parent="1" source="n20" target="n10"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="n34" value="público" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#555555;startArrow=none;endArrow=block;" edge="1" parent="1" source="n19" target="n21"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="n35" value="VPN" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#555555;startArrow=none;endArrow=block;" edge="1" parent="1" source="n20" target="n22"><mxGeometry relative="1" as="geometry"/></mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
