Files
Wiki/Mint Cloud Architecture.canvas

98 lines
11 KiB
Plaintext

{
"nodes":[
{"id":"16562f1c5a372a6f","type":"group","x":180,"y":-300,"width":640,"height":780,"color":"1","label":"Worker (Exoscale SKS)"},
{"id":"cee1e17c7623ca82","type":"group","x":200,"y":-140,"width":600,"height":600,"color":"3","label":"Namespace"},
{"id":"e21f6b63e7ff10ab","type":"group","x":-1100,"y":-265,"width":600,"height":425,"color":"1","label":"Odoo Webshop App (Kubernetes)"},
{"id":"f2dc34bdb1844dc7","type":"group","x":-1080,"y":-115,"width":560,"height":255,"label":"Odoo Models"},
{"id":"30d68aaa30e0f119","type":"group","x":-360,"y":-245,"width":380,"height":350,"color":"1","label":"Control Plane (Exoscale SKS)"},
{"id":"47aa4c908b290952","type":"group","x":220,"y":0,"width":540,"height":200,"label":"Replicasets"},
{"id":"f7a6230cc55ca3d0","type":"group","x":-938,"y":229,"width":455,"height":190,"color":"4","label":"Ansible"},
{"id":"5b538dafefb71e93","type":"group","x":-379,"y":180,"width":419,"height":199,"color":"1","label":"S3 (Exoscale)"},
{"id":"9858edd65c1d26da","type":"group","x":240,"y":-640,"width":430,"height":180,"label":"Legend:"},
{"id":"ec2dab0dd94f577f","type":"group","x":400,"y":259,"width":360,"height":181,"color":"1","label":"Persistent Volumes (Exoscale SBS)"},
{"id":"5231ddb071cfc8c9","type":"group","x":-340,"y":-105,"width":340,"height":190,"color":"3","label":"Services"},
{"id":"0307bbcf007555b8","type":"group","x":-340,"y":460,"width":340,"height":100,"color":"1","label":"GitHub"},
{"id":"85412b23bf05e0b8","type":"group","x":60,"y":580,"width":330,"height":100,"color":"1","label":"Backup (Hetzner)"},
{"id":"145210675bfdda7e","type":"group","x":-830,"y":-510,"width":330,"height":100,"color":"1","label":"SMTP-Relay (Mailgun)"},
{"id":"2bce1ebedaa1791e","type":"group","x":-405,"y":-510,"width":330,"height":100,"color":"1","label":"Payment Provider (Payrexx)"},
{"id":"b8f22db569cc69e9","type":"group","x":920,"y":-140,"width":330,"height":100,"color":"1","label":"ACME (Let's Encrypt)"},
{"id":"44c519bd19bcd65f","type":"group","x":920,"y":-350,"width":330,"height":100,"color":"1","label":"CrowdSec"},
{"id":"d060ee64dd15c9cf","type":"group","x":-1520,"y":-115,"width":330,"height":100,"color":"1","label":"Code Forge (Codey)"},
{"id":"8b120478236e21dc","type":"text","text":"Sender","x":-810,"y":-490,"width":130,"height":60,"color":"1"},
{"id":"92fb8d9fa302f6b1","type":"text","text":"Event","x":-655,"y":-490,"width":130,"height":60,"color":"1"},
{"id":"a66edac3ddd395e2","type":"text","text":"Service Account","x":-889,"y":-245,"width":179,"height":60,"color":"3"},
{"id":"18a3cf95414f5369","type":"text","text":"Manifest","x":-900,"y":60,"width":140,"height":60,"color":"4"},
{"id":"5a596f91e7103d0c","type":"text","text":"Environment","x":-700,"y":60,"width":160,"height":60,"color":"4"},
{"id":"c7c81edf0fc722ed","type":"text","text":"ConfigMap","x":-680,"y":-20,"width":140,"height":60,"color":"4"},
{"id":"f8ec3076b89362b3","type":"text","text":"App","x":-900,"y":-20,"width":100,"height":60,"color":"4"},
{"id":"cec3783e47d70aff","type":"text","text":"Cluster","x":-700,"y":-95,"width":160,"height":60,"color":"4"},
{"id":"ea848f1fde8fa4dd","type":"text","text":"Namespace","x":-900,"y":-95,"width":160,"height":60,"color":"4"},
{"id":"b7199a5adfeeaccb","type":"text","text":"odoo-deploy.yaml","x":-918,"y":249,"width":197,"height":60,"color":"4"},
{"id":"ce16b6db6e27aa72","type":"text","text":"odoo-srv.yaml","x":-700,"y":249,"width":197,"height":60,"color":"4"},
{"id":"0cee2df8faf4757e","type":"text","text":"postgres-deploy.yaml","x":-918,"y":339,"width":197,"height":60,"color":"4"},
{"id":"4bdfa083b05db009","type":"text","text":"postgres-srv.yaml","x":-700,"y":339,"width":197,"height":60,"color":"4"},
{"id":"51772f93b21a71b8","type":"text","text":"Odoo Instance","x":-1076,"y":-245,"width":158,"height":60,"color":"3"},
{"id":"8a60def955ac42fa","type":"text","text":"dump-17.0.sql","x":-162,"y":299,"width":182,"height":60,"color":"1"},
{"id":"61818d7dab75d4ed","type":"text","text":"Organisation","x":-1500,"y":-95,"width":130,"height":60,"color":"1"},
{"id":"77dffd664ffca082","type":"text","text":"Harbor","x":230,"y":279,"width":140,"height":60},
{"id":"a28a0de013a4b49b","type":"text","text":"Velero","x":230,"y":360,"width":140,"height":60},
{"id":"1c0e6a6d1c01f931","type":"text","text":"Storage","x":80,"y":600,"width":130,"height":60,"color":"1"},
{"id":"b8e5928d7d527c9f","type":"text","text":"Kopia Server","x":240,"y":600,"width":130,"height":60,"color":"6"},
{"id":"f01f305db5c5b9d2","type":"text","text":"Git Provider","x":-1060,"y":-95,"width":122,"height":60,"color":"4"},
{"id":"2d0b5156065769f7","type":"text","text":"Git Repos","x":-1345,"y":-95,"width":130,"height":60,"color":"1"},
{"id":"cd01d999db89ac6e","type":"text","text":"Branch","x":-1058,"y":60,"width":122,"height":60,"color":"4"},
{"id":"43268b11483c8d6e","type":"text","text":"Scheduler","x":-320,"y":5,"width":130,"height":60},
{"id":"c13b3a207917b83d","type":"text","text":"RBAC","x":-160,"y":5,"width":130,"height":60},
{"id":"6ce5cc096f165c2d","type":"text","text":"enterprise-18.0.tar.gz","x":-359,"y":200,"width":182,"height":69,"color":"1"},
{"id":"eb08434a02553ef4","type":"text","text":"enterprise-17.0.tar.gz","x":-355,"y":299,"width":178,"height":60,"color":"1"},
{"id":"89c42576995a9cc7","type":"text","text":"dump-18.0.sql","x":-162,"y":200,"width":182,"height":69,"color":"1"},
{"id":"95766495719a37b3","type":"text","text":"Odoo Build Workflow","x":-320,"y":480,"width":144,"height":60,"color":"4"},
{"id":"9aa0ee094633cdaa","type":"text","text":"Runner","x":-160,"y":480,"width":140,"height":60},
{"id":"dcf06ea30c6f733d","type":"text","text":"API","x":-320,"y":-85,"width":130,"height":60},
{"id":"f2a023a73e2bdcdd","type":"text","text":"etcd","x":-160,"y":-85,"width":130,"height":60},
{"id":"5205b20caa2b886b","type":"text","text":"Kubernetes Master","x":-320,"y":-225,"width":225,"height":60,"color":"3"},
{"id":"30c1a9a215168954","type":"text","text":"Payment Gateway","x":-385,"y":-490,"width":130,"height":60,"color":"1"},
{"id":"a0e6ead9d4c1cb26","type":"text","text":"Transaction","x":-225,"y":-490,"width":130,"height":60,"color":"1"},
{"id":"71a51c96b85fadfa","type":"text","text":"Ingress","x":520,"y":-120,"width":120,"height":60},
{"id":"723f02b644d72fba","type":"text","text":"Prometheus","x":530,"y":120,"width":140,"height":60},
{"id":"31790cf32eab090a","type":"text","text":"Grafana","x":530,"y":20,"width":140,"height":60},
{"id":"8919ecf5c7a821b2","type":"text","text":"Service","x":380,"y":-120,"width":120,"height":60},
{"id":"42291fbf852109c2","type":"text","text":"HTTP-API","x":940,"y":-120,"width":130,"height":60,"color":"1"},
{"id":"9352d048d65c30d7","type":"text","text":"Cert Manager","x":660,"y":-120,"width":120,"height":60},
{"id":"50af5bb0668723b6","type":"text","text":"Addons","x":420,"y":279,"width":140,"height":60},
{"id":"a3a7196d6996c05c","type":"text","text":"Database","x":420,"y":360,"width":140,"height":60},
{"id":"5fe01b8955580f38","type":"text","text":"Filestore","x":600,"y":279,"width":140,"height":60},
{"id":"89fd0cbaf4354781","type":"text","text":"Images","x":600,"y":360,"width":140,"height":60},
{"id":"d7d15ef18fc64683","type":"text","text":"Init","x":240,"y":120,"width":100,"height":60},
{"id":"101fa480091a2153","type":"text","text":"Postgres","x":370,"y":120,"width":120,"height":60},
{"id":"459f82249f7fcc00","type":"text","text":"DNS-API","x":1100,"y":-120,"width":130,"height":60,"color":"1"},
{"id":"9f8aa0ad1d48cec0","type":"text","text":"IP Blocklist","x":940,"y":-330,"width":130,"height":60,"color":"1"},
{"id":"c43958050f2525ff","type":"text","text":"Keycloak","x":370,"y":20,"width":120,"height":60},
{"id":"538706384c193d75","type":"text","text":"Traffic Logs","x":1100,"y":-330,"width":130,"height":60,"color":"1"},
{"id":"1182553e34d763af","type":"text","text":"Odoo","x":240,"y":20,"width":100,"height":60},
{"id":"476c8f5d275a6033","type":"text","text":"**K8s**","x":260,"y":-620,"width":115,"height":60,"color":"3"},
{"id":"d0270aff89d7d117","type":"text","text":"**Provider**","x":405,"y":-620,"width":115,"height":60,"color":"1"},
{"id":"3aeb969d047cb203","type":"text","text":"Service Account","x":442,"y":-260,"width":198,"height":60,"color":"3"},
{"id":"329ab2c59cf6f4e7","type":"text","text":"Deployment","x":220,"y":-120,"width":150,"height":60},
{"id":"d772e43944e83be1","type":"text","text":"Kubernetes Agent","x":213,"y":-260,"width":187,"height":60,"color":"3"},
{"id":"55a84d654d3f83c5","type":"text","text":"**Container**","x":546,"y":-620,"width":111,"height":60},
{"id":"5336ea7cfa02ef9e","type":"text","text":"**Data**","x":405,"y":-540,"width":115,"height":60,"color":"4"},
{"id":"4ce3abc2078a70ac","type":"text","text":"**Docker**","x":260,"y":-540,"width":115,"height":60,"color":"6"},
{"id":"cf45e1c4b0f1b7bf","type":"text","text":"Repo","x":-1060,"y":-20,"width":122,"height":60,"color":"4"}
],
"edges":[
{"id":"096d8510b30bed73","fromNode":"30d68aaa30e0f119","fromSide":"right","toNode":"16562f1c5a372a6f","toSide":"left","label":"manage"},
{"id":"e1579d96be2c6f02","fromNode":"f2dc34bdb1844dc7","fromSide":"right","toNode":"30d68aaa30e0f119","toSide":"left","label":"apply"},
{"id":"c0a9067e94a5139e","fromNode":"a28a0de013a4b49b","fromSide":"bottom","toNode":"b8e5928d7d527c9f","toSide":"top","label":"backup"},
{"id":"28c069683ee5616a","fromNode":"18a3cf95414f5369","fromSide":"bottom","toNode":"f7a6230cc55ca3d0","toSide":"top","label":"download"},
{"id":"fb87de77fe668c93","fromNode":"c7c81edf0fc722ed","fromSide":"left","toNode":"18a3cf95414f5369","toSide":"right","label":"template"},
{"id":"7a02ca2b1e81a0d9","fromNode":"d7d15ef18fc64683","fromSide":"left","toNode":"5b538dafefb71e93","toSide":"right","label":"copy"},
{"id":"a34aeaf81110185a","fromNode":"0307bbcf007555b8","fromSide":"top","toNode":"5b538dafefb71e93","toSide":"bottom","label":"upload"},
{"id":"14b18d136229c102","fromNode":"0307bbcf007555b8","fromSide":"right","toNode":"77dffd664ffca082","toSide":"left","label":"publish"},
{"id":"aa914d7c0fe4f36b","fromNode":"e21f6b63e7ff10ab","fromSide":"top","toNode":"145210675bfdda7e","toSide":"bottom","fromEnd":"arrow","label":"send/webhook"},
{"id":"d2aa7b9eb1d2091e","fromNode":"e21f6b63e7ff10ab","fromSide":"top","toNode":"2bce1ebedaa1791e","toSide":"bottom","fromEnd":"arrow","label":"redirect/webhok"},
{"id":"bd279c93068dc67c","fromNode":"9352d048d65c30d7","fromSide":"right","toNode":"b8f22db569cc69e9","toSide":"left","label":"issue"},
{"id":"68fba644d02dc6fe","fromNode":"71a51c96b85fadfa","fromSide":"top","toNode":"44c519bd19bcd65f","toSide":"left","label":"push/pull"},
{"id":"05a48b07b3ce6a4d","fromNode":"f01f305db5c5b9d2","fromSide":"left","toNode":"d060ee64dd15c9cf","toSide":"right","label":"update"}
]
}