Demo Multicluster

This commit is contained in:
mr
2026-04-14 10:17:07 +02:00
parent 34f10565c7
commit 8cb3b50179
13 changed files with 186 additions and 64 deletions

View File

@@ -14,7 +14,7 @@
"updater_id": "c0cece97-7730-4c2a-8c20-a30944564106", "updater_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"access_mode": 1 "access_mode": 1
}, },
"logo": "https://localhost:8000/static/images/Mundi datacenter.png", "logo": "http://localhost:8000/static/images/Mundi datacenter.png",
"description": "Toulouse-based GPU cluster operated by IRT Saint-Exupéry under the Mundi Opencloud programme. Node spec: 1× Intel Core i7-14700KF (3.6 GHz base, 5.6 GHz boost, 20 cores / 28 threads, Intel 7 process), 16 GB DDR5-6000, 8× NVIDIA RTX 3090 FE (24 GB GDDR6X, 10 496 CUDA cores, 328 3rd-gen tensor cores each). Total GPU VRAM per node: 192 GB. Specialised for GPU-accelerated computer-vision workloads: image batch processing, ONNX/TensorRT neural-network inference, satellite raster analytics (GDAL 3.8 stack). Connected to IRT local storage (/mnt/vol) via 10 GbE with direct NFS mount. Power mix: ~60% solar / ~40% coal. Annual CO₂ footprint: ~1 000 kg eqCO₂.", "description": "Toulouse-based GPU cluster operated by IRT Saint-Exupéry under the Mundi Opencloud programme. Node spec: 1× Intel Core i7-14700KF (3.6 GHz base, 5.6 GHz boost, 20 cores / 28 threads, Intel 7 process), 16 GB DDR5-6000, 8× NVIDIA RTX 3090 FE (24 GB GDDR6X, 10 496 CUDA cores, 328 3rd-gen tensor cores each). Total GPU VRAM per node: 192 GB. Specialised for GPU-accelerated computer-vision workloads: image batch processing, ONNX/TensorRT neural-network inference, satellite raster analytics (GDAL 3.8 stack). Connected to IRT local storage (/mnt/vol) via 10 GbE with direct NFS mount. Power mix: ~60% solar / ~40% coal. Annual CO₂ footprint: ~1 000 kg eqCO₂.",
"short_description": "IRT Saint-Exupéry GPU cluster — i7-14700KF + 8× RTX 3090 FE per node (peer-1)", "short_description": "IRT Saint-Exupéry GPU cluster — i7-14700KF + 8× RTX 3090 FE per node (peer-1)",
"owners": [{"name": "IRT Saint Exupery"}], "owners": [{"name": "IRT Saint Exupery"}],
@@ -62,7 +62,7 @@
"updater_id": "c0cece97-7730-4c2a-8c20-a30944564106", "updater_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"access_mode": 1 "access_mode": 1
}, },
"logo": "https://localhost:8000/static/images/vm_logo.png", "logo": "http://localhost:8000/static/images/vm_logo.png",
"description": "x86_64 virtual machine (KVM) running on the opencloud-demo-2 (peer-2) Proxmox VE 8 hypervisor cluster at IP 172.16.0.181. Host hardware: Intel Core Ultra 9 285K (3.6 GHz, 32 cores Arrow Lake-S, Intel 3 process), 16 GB DDR5-6400 ECC. Exposed to peer-1 for cross-peer workflow scheduling via Admiralty multi-cluster federation; scheduling happens transparently through the OpenCloud workflow engine without explicit SSH or kubectl access from peer-1. Handles CPU-bound processing steps (Python analysis, ALPR recognition) that benefit from low-latency access to peer-2-hosted MinIO storage. Inter-peer data traffic encrypted in transit (mTLS). Power: 100% alternating-current reclaimed energy. Annual CO₂: ~1 000 kg eqCO₂.", "description": "x86_64 virtual machine (KVM) running on the opencloud-demo-2 (peer-2) Proxmox VE 8 hypervisor cluster at IP 172.16.0.181. Host hardware: Intel Core Ultra 9 285K (3.6 GHz, 32 cores Arrow Lake-S, Intel 3 process), 16 GB DDR5-6400 ECC. Exposed to peer-1 for cross-peer workflow scheduling via Admiralty multi-cluster federation; scheduling happens transparently through the OpenCloud workflow engine without explicit SSH or kubectl access from peer-1. Handles CPU-bound processing steps (Python analysis, ALPR recognition) that benefit from low-latency access to peer-2-hosted MinIO storage. Inter-peer data traffic encrypted in transit (mTLS). Power: 100% alternating-current reclaimed energy. Annual CO₂: ~1 000 kg eqCO₂.",
"short_description": "Peer-2 KVM VM — cross-peer execution target owned by opencloud-demo-2", "short_description": "Peer-2 KVM VM — cross-peer execution target owned by opencloud-demo-2",
"owners": [{"name": "IRT Saint Exupery"}] "owners": [{"name": "IRT Saint Exupery"}]
@@ -99,7 +99,7 @@
"updater_id": "c0cece97-7730-4c2a-8c20-a30944564106", "updater_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"access_mode": 1 "access_mode": 1
}, },
"logo": "https://localhost:8000/static/images/Meteo France datacenter.png", "logo": "http://localhost:8000/static/images/Meteo France datacenter.png",
"description": "HPC node operated by Météo-France at their Toulouse facility. Node spec: Intel Core i7-14700KF (3.6 GHz, 20 cores), 32 GB DDR5-6000, 8× NVIDIA RTX 3090 FE GPU. SecNumCloud-compliant (ANSSI qualification): data at rest AES-256, inter-node TLS 1.3, access governed by RBAC with attribute-based policy. Primarily reserved for numerical weather prediction (NWP) post-processing (AROME-France 1.3 km, ARPEGE global) and satellite raster ingestion (Sentinel-3 OLCI / SRAL, Copernicus Land Service). Available to OpenCloud federation workloads during off-peak hours (20:0006:00 UTC). Power mix: solar + coal. Annual CO₂: ~1 000 kg eqCO₂.", "description": "HPC node operated by Météo-France at their Toulouse facility. Node spec: Intel Core i7-14700KF (3.6 GHz, 20 cores), 32 GB DDR5-6000, 8× NVIDIA RTX 3090 FE GPU. SecNumCloud-compliant (ANSSI qualification): data at rest AES-256, inter-node TLS 1.3, access governed by RBAC with attribute-based policy. Primarily reserved for numerical weather prediction (NWP) post-processing (AROME-France 1.3 km, ARPEGE global) and satellite raster ingestion (Sentinel-3 OLCI / SRAL, Copernicus Land Service). Available to OpenCloud federation workloads during off-peak hours (20:0006:00 UTC). Power mix: solar + coal. Annual CO₂: ~1 000 kg eqCO₂.",
"short_description": "Météo-France SecNumCloud HPC node — i7-14700KF + 8× RTX 3090 FE (peer-1)", "short_description": "Météo-France SecNumCloud HPC node — i7-14700KF + 8× RTX 3090 FE (peer-1)",
"owners": [{"name": "Meteo France"}] "owners": [{"name": "Meteo France"}]
@@ -122,6 +122,47 @@
"architecture": "x86", "architecture": "x86",
"infrastructure": 0 "infrastructure": 0
}, },
{
"_id": "11110001-1111-4001-8001-111111111111",
"abstractinstanciatedresource": {
"abstractresource": {
"type": "compute",
"abstractobject": {
"id": "11110001-1111-4001-8001-111111111111",
"name": "Local K3s Peer-1",
"is_draft": false,
"creator_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"creation_date": "2021-09-30T14:00:00.000Z",
"update_date": "2026-04-13T00:00:00.000Z",
"updater_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"access_mode": 1
},
"logo": "http://localhost:8000/static/images/vm_logo.png",
"description": "K3s single-node Kubernetes cluster running directly on the opencloud-demo-1 (peer-1) bare-metal host at IP 172.16.0.180. Host hardware: Intel Core Ultra 9 285K (3.6 GHz base, 5.6 GHz boost, 32 cores Arrow Lake-S, Intel 3 process), 16 GB DDR5-6400 ECC. Provides the local Kubernetes scheduling plane for peer-1 workloads orchestrated by Admiralty federation. Workloads scheduled here run natively on the host kernel without a hypervisor layer, giving lower overhead than the KVM VM targets. Storage accessible via NFS mount to /mnt/vol. Power: 100% reclaimed alternating-current energy. Annual CO₂: ~1 000 kg eqCO₂.",
"short_description": "Peer-1 local K3s cluster — bare-metal Kubernetes on Intel Core Ultra 9 285K (opencloud-demo-1)",
"owners": [{"name": "IRT Saint Exupery"}],
"allowed_booking_modes": {
"0": {"inflate": false, "percent": 0, "priority": 0},
"1": {"inflate": false, "percent": 5, "priority": 1}
}
},
"instances": [{
"resourceinstance": {
"abstractobject": {"id": "11110001-1111-4001-8001-111111111111", "name": "Local K3s Peer-1 Toulouse", "is_draft": false, "access_mode": 0},
"location": {"latitude": 43.6047, "longitude": 1.4442},
"country": 250,
"partnerships": [{"namespace": "default", "peer_groups": {"*": ["*"]}}]
},
"security_level": "private",
"annual_co2_emissions": 1000,
"power_sources": ["Larmes d'alternant"],
"cpus": {"Intel Core Ultra 9 285K": {"model": "Intel Core Ultra 9 285K", "frequency": 3.6, "cores": 32, "architecture": "x86"}},
"nodes": [{"name": "default", "quantity": 1, "ram": {"size": 16384}, "cpus": {"Intel Core Ultra 9 285K": 1}}]
}]
},
"architecture": "x86",
"infrastructure": 1
},
{ {
"_id": "979776c3-9ae7-4e02-9138-7b30b25f22cc", "_id": "979776c3-9ae7-4e02-9138-7b30b25f22cc",
"abstractinstanciatedresource": { "abstractinstanciatedresource": {
@@ -137,7 +178,7 @@
"updater_id": "c0cece97-7730-4c2a-8c20-a30944564106", "updater_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"access_mode": 1 "access_mode": 1
}, },
"logo": "https://localhost:8000/static/images/vm_logo.png", "logo": "http://localhost:8000/static/images/vm_logo.png",
"description": "x86_64 virtual machine (KVM) on the opencloud-demo-1 (peer-1) Proxmox VE 8 cluster at IP 172.16.0.180. Host: Intel Core Ultra 9 285K (3.6 GHz, 32 cores Arrow Lake-S), 16 GB DDR5-6400. Peer-1-only scope: not exposed to external peers. Used as an isolated sandbox for running workflow steps that must not leave peer-1 infrastructure, and as a failover execution target when the Mundi datacenter GPU cluster is unavailable or saturated. VLAN-isolated from the federation DMZ; storage accessible via NFS mount to /mnt/vol. Power: 100% reclaimed alternating-current energy. Annual CO₂: ~1 000 kg eqCO₂.", "description": "x86_64 virtual machine (KVM) on the opencloud-demo-1 (peer-1) Proxmox VE 8 cluster at IP 172.16.0.180. Host: Intel Core Ultra 9 285K (3.6 GHz, 32 cores Arrow Lake-S), 16 GB DDR5-6400. Peer-1-only scope: not exposed to external peers. Used as an isolated sandbox for running workflow steps that must not leave peer-1 infrastructure, and as a failover execution target when the Mundi datacenter GPU cluster is unavailable or saturated. VLAN-isolated from the federation DMZ; storage accessible via NFS mount to /mnt/vol. Power: 100% reclaimed alternating-current energy. Annual CO₂: ~1 000 kg eqCO₂.",
"short_description": "Peer-1 KVM VM — isolated local execution target owned by opencloud-demo-1", "short_description": "Peer-1 KVM VM — isolated local execution target owned by opencloud-demo-1",
"owners": [{"name": "IRT Saint Exupery"}] "owners": [{"name": "IRT Saint Exupery"}]
@@ -174,7 +215,7 @@
"updater_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31", "updater_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31",
"access_mode": 1 "access_mode": 1
}, },
"logo": "https://localhost:8000/static/images/vm_logo.png", "logo": "http://localhost:8000/static/images/vm_logo.png",
"description": "High-density bare-metal server owned by opencloud-demo-2, hosted in a Tier-3 Paris data centre (PUE 1.3). 4 compute nodes, each: 2× AMD EPYC 9654 (2.4 GHz base, 3.7 GHz boost, 96 cores / 192 threads per socket, Zen 4, 5nm TSMC), 64 GB DDR5-4800 ECC registered, 2× NVIDIA RTX 4090 (24 GB GDDR6X, 16 384 CUDA cores, 512 4th-gen tensor cores). Total cluster: 768 CPU cores and 192 GB GPU VRAM across 4 nodes. Dedicated to containerised workloads requiring both high CPU parallelism (Redis, Nginx, Mosquitto pub/sub) and optional GPU acceleration (Stable Diffusion inference, large model fine-tuning). Exposed to partner peers via OpenCloud Federation manifest. Powered 100% by certified renewable (solar PPA). Annual CO₂: ~500 kg eqCO₂.", "description": "High-density bare-metal server owned by opencloud-demo-2, hosted in a Tier-3 Paris data centre (PUE 1.3). 4 compute nodes, each: 2× AMD EPYC 9654 (2.4 GHz base, 3.7 GHz boost, 96 cores / 192 threads per socket, Zen 4, 5nm TSMC), 64 GB DDR5-4800 ECC registered, 2× NVIDIA RTX 4090 (24 GB GDDR6X, 16 384 CUDA cores, 512 4th-gen tensor cores). Total cluster: 768 CPU cores and 192 GB GPU VRAM across 4 nodes. Dedicated to containerised workloads requiring both high CPU parallelism (Redis, Nginx, Mosquitto pub/sub) and optional GPU acceleration (Stable Diffusion inference, large model fine-tuning). Exposed to partner peers via OpenCloud Federation manifest. Powered 100% by certified renewable (solar PPA). Annual CO₂: ~500 kg eqCO₂.",
"short_description": "Peer-2 bare-metal cluster — 4 nodes × dual EPYC 9654 + 2× RTX 4090, solar-powered", "short_description": "Peer-2 bare-metal cluster — 4 nodes × dual EPYC 9654 + 2× RTX 4090, solar-powered",
"owners": [{"name": "opencloud-demo-2"}], "owners": [{"name": "opencloud-demo-2"}],

View File

@@ -14,7 +14,7 @@
"updater_id": "c0cece97-7730-4c2a-8c20-a30944564106", "updater_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"access_mode": 1 "access_mode": 1
}, },
"logo": "https://images.wondershare.com/repairit/article/guide-on-jpeg-repair-online-01.png", "logo": "http://images.wondershare.com/repairit/article/guide-on-jpeg-repair-online-01.png",
"description": "Single-frame JPEG (h786poj.jpg, 590 KB, 2592×1944 px, sRGB) extracted from a French motorway speed-camera sequence. Depicts a red Peugeot 308 SW at an oblique 40° rear angle; licence plate FR-AA-000 fully unoccluded and in focus. Reference artefact for ALPR regression tests: standard 23° skew, 98 lx simulated ambient light, 35 km/h forward motion (motion-blur coefficient 0.18). Used as the canonical static input in the alpr and image-meta-extractor workflows to ensure reproducible plate-extraction benchmarks across peers. Served statically from the openalpr.com CDN evaluation dataset; SHA-1 checksum stable across CDN edge pops. Licence: OpenALPR evaluation — non-commercial use only.", "description": "Single-frame JPEG (h786poj.jpg, 590 KB, 2592×1944 px, sRGB) extracted from a French motorway speed-camera sequence. Depicts a red Peugeot 308 SW at an oblique 40° rear angle; licence plate FR-AA-000 fully unoccluded and in focus. Reference artefact for ALPR regression tests: standard 23° skew, 98 lx simulated ambient light, 35 km/h forward motion (motion-blur coefficient 0.18). Used as the canonical static input in the alpr and image-meta-extractor workflows to ensure reproducible plate-extraction benchmarks across peers. Served statically from the openalpr.com CDN evaluation dataset; SHA-1 checksum stable across CDN edge pops. Licence: OpenALPR evaluation — non-commercial use only.",
"short_description": "OpenALPR benchmark JPEG — red Peugeot 308, unoccluded rear plate, 2592×1944 px", "short_description": "OpenALPR benchmark JPEG — red Peugeot 308, unoccluded rear plate, 2592×1944 px",
"owners": [{"name": "OpenALPR"}] "owners": [{"name": "OpenALPR"}]
@@ -52,8 +52,8 @@
"updater_id": "c0cece97-7730-4c2a-8c20-a30944564106", "updater_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"access_mode": 1 "access_mode": 1
}, },
"logo": "https://localhost:8000/static/images/alpine-logo.png", "logo": "http://localhost:8000/static/images/alpine-logo.png",
"description": "Rolling series of JPEG snapshots (eu-001.jpg, avg 250 KB per frame, 1920×1080 px) captured at 0.2 Hz (one frame per 5 s) by a Hikvision DS-2CD2T43G2-2I bullet camera mounted 6 m above a Toulouse ring-road on-ramp. H.264-encoded video stream demuxed by an onboard RTSP gateway; individual frames exposed as a static HTTPS endpoint refreshed server-side every 5 seconds. Resolution sufficient for single-plate detection at vehicle distance 412 m with a 50 mm equivalent focal length. Frames are baseline JPEG (quality factor 85, no progressive encoding) and carry EXIF GPS tag matching the camera pole coordinates (43.6047°N, 1.4442°E). Classified as non-public operational data; OpenCloud federation partnerships restricted to default namespace. Source endpoint served from the openalpr CDN staging mirror; not archived.", "description": "Rolling series of JPEG snapshots (eu-001.jpg, avg 250 KB per frame, 1920×1080 px) captured at 0.2 Hz (one frame per 5 s) by a Hikvision DS-2CD2T43G2-2I bullet camera mounted 6 m above a Toulouse ring-road on-ramp. H.264-encoded video stream demuxed by an onboard RTSP gateway; individual frames exposed as a static http endpoint refreshed server-side every 5 seconds. Resolution sufficient for single-plate detection at vehicle distance 412 m with a 50 mm equivalent focal length. Frames are baseline JPEG (quality factor 85, no progressive encoding) and carry EXIF GPS tag matching the camera pole coordinates (43.6047°N, 1.4442°E). Classified as non-public operational data; OpenCloud federation partnerships restricted to default namespace. Source endpoint served from the openalpr CDN staging mirror; not archived.",
"short_description": "Toulouse ring-road live JPEG feed — 1920×1080, 0.2 Hz, Hikvision DS-2CD2T43G2-2I (peer-1)", "short_description": "Toulouse ring-road live JPEG feed — 1920×1080, 0.2 Hz, Hikvision DS-2CD2T43G2-2I (peer-1)",
"owners": [{"name": "IRT"}] "owners": [{"name": "IRT"}]
}, },
@@ -90,8 +90,8 @@
"updater_id": "c0cece97-7730-4c2a-8c20-a30944564106", "updater_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"access_mode": 1 "access_mode": 1
}, },
"logo": "https://localhost:8000/static/images/Meteo France datacenter.png", "logo": "http://localhost:8000/static/images/Meteo France datacenter.png",
"description": "GRIB2-encoded short-range numerical weather prediction output from the Météo-France AROME-France 1.3 km model over metropolitan France (domain 37.5°N55°N, 12°W16°E). Issued 4× daily (00, 06, 12, 18 UTC runs); forecast horizon H+0 to H+48 at 1-hour steps. Fields per level: 2 m temperature (K), 10 m U/V wind components (m/s), total cloud cover fraction (01), convective available potential energy (J/kg), cumulative precipitation (kg/m²), surface pressure (Pa), relative humidity (%). Each full-run bundle: ~590 MB compressed (gzip level 6). Served from the Météo-France Données Publiques HTTPS API (token-free, rate-limit 500 req/day/IP). SHA-256 checksum file published alongside each bundle. Licence: Étalab Open Licence 2.0 — reuse and redistribution permitted with attribution.", "description": "GRIB2-encoded short-range numerical weather prediction output from the Météo-France AROME-France 1.3 km model over metropolitan France (domain 37.5°N55°N, 12°W16°E). Issued 4× daily (00, 06, 12, 18 UTC runs); forecast horizon H+0 to H+48 at 1-hour steps. Fields per level: 2 m temperature (K), 10 m U/V wind components (m/s), total cloud cover fraction (01), convective available potential energy (J/kg), cumulative precipitation (kg/m²), surface pressure (Pa), relative humidity (%). Each full-run bundle: ~590 MB compressed (gzip level 6). Served from the Météo-France Données Publiques http API (token-free, rate-limit 500 req/day/IP). SHA-256 checksum file published alongside each bundle. Licence: Étalab Open Licence 2.0 — reuse and redistribution permitted with attribution.",
"short_description": "Météo-France AROME 1.3 km GRIB2 — H+48 NWP, 4× daily, Étalab open data (peer-1)", "short_description": "Météo-France AROME 1.3 km GRIB2 — H+48 NWP, 4× daily, Étalab open data (peer-1)",
"owners": [{"name": "Meteo France"}] "owners": [{"name": "Meteo France"}]
}, },
@@ -109,7 +109,7 @@
"open_data": true, "open_data": true,
"static": false, "static": false,
"size": 590, "size": 590,
"example": "https://donneespubliques.meteofrance.fr/" "example": "http://donneespubliques.meteofrance.fr/"
}, },
{ {
"_id": "hh880008-hh88-4008-8008-hhhhhhhhhhhh", "_id": "hh880008-hh88-4008-8008-hhhhhhhhhhhh",
@@ -126,7 +126,7 @@
"updater_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31", "updater_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31",
"access_mode": 1 "access_mode": 1
}, },
"logo": "https://localhost:8000/static/images/alpine-logo.png", "logo": "http://localhost:8000/static/images/alpine-logo.png",
"description": "Structured NDJSON (newline-delimited JSON) HTTP access-log stream produced by the OpenCloud peer-2 API gateway (Nginx 1.25). Each record: {\"ts\":\"ISO-8601\",\"method\":\"HTTP verb\",\"path\":\"/endpoint\",\"status\":NNN,\"latency_ms\":N,\"peer\":\"opencloud-demo-2\",\"bytes_out\":N,\"upstream_ms\":N}. Rolling 24-h window; approximately 1.2 GB uncompressed per day at typical 300 req/min sustained load with bursts to 2 000 req/min. Flushed to the peer-2 MinIO bucket under /logs/api.log with a 1-minute write interval and gzip-compressed daily rotations retained for 30 days. Consumed by the api-monitoring-stack workflow: CURL fetches the current active chunk, Redis caches per-endpoint status-code distributions and p50/p95 latency percentiles under a 300-second TTL, Nginx serves the aggregated dashboard over HTTP/1.1. Data classification: internal peer-2 operational telemetry; partnerships restricted to default namespace.", "description": "Structured NDJSON (newline-delimited JSON) HTTP access-log stream produced by the OpenCloud peer-2 API gateway (Nginx 1.25). Each record: {\"ts\":\"ISO-8601\",\"method\":\"HTTP verb\",\"path\":\"/endpoint\",\"status\":NNN,\"latency_ms\":N,\"peer\":\"opencloud-demo-2\",\"bytes_out\":N,\"upstream_ms\":N}. Rolling 24-h window; approximately 1.2 GB uncompressed per day at typical 300 req/min sustained load with bursts to 2 000 req/min. Flushed to the peer-2 MinIO bucket under /logs/api.log with a 1-minute write interval and gzip-compressed daily rotations retained for 30 days. Consumed by the api-monitoring-stack workflow: CURL fetches the current active chunk, Redis caches per-endpoint status-code distributions and p50/p95 latency percentiles under a 300-second TTL, Nginx serves the aggregated dashboard over HTTP/1.1. Data classification: internal peer-2 operational telemetry; partnerships restricted to default namespace.",
"short_description": "Peer-2 API gateway NDJSON access logs — 1.2 GB/day, 300 req/min, 30-day MinIO retention", "short_description": "Peer-2 API gateway NDJSON access logs — 1.2 GB/day, 300 req/min, 30-day MinIO retention",
"owners": [{"name": "opencloud-demo-2"}] "owners": [{"name": "opencloud-demo-2"}]

View File

@@ -15,7 +15,7 @@
"access_mode": 1 "access_mode": 1
}, },
"logo": "http://localhost:8000/static/images/curl-logo.png", "logo": "http://localhost:8000/static/images/curl-logo.png",
"description": "Official curl Docker image (curlimages/curl:8.5.0) published by the curl project. Implements HTTP/1.1, HTTP/2, HTTPS (TLS 1.3), FTP, SFTP, SCP and 25+ other protocols. Supports cookies, redirect chains, proxy authentication, rate limiting, resumable transfers and parallel downloads (-Z flag). Typical workflow use: first-stage ingestion step that pulls remote datasets — camera snapshots, API log files, GeoTIFF archives, JSON feeds — into a shared storage volume before downstream processing nodes consume them. Single static binary; 12 MB compressed Alpine-based image; no shell dependency.", "description": "Official curl Docker image (curlimages/curl:8.5.0) published by the curl project. Implements HTTP/1.1, HTTP/2, http (TLS 1.3), FTP, SFTP, SCP and 25+ other protocols. Supports cookies, redirect chains, proxy authentication, rate limiting, resumable transfers and parallel downloads (-Z flag). Typical workflow use: first-stage ingestion step that pulls remote datasets — camera snapshots, API log files, GeoTIFF archives, JSON feeds — into a shared storage volume before downstream processing nodes consume them. Single static binary; 12 MB compressed Alpine-based image; no shell dependency.",
"short_description": "Official curl image — multi-protocol data fetcher for workflow ingestion stages", "short_description": "Official curl image — multi-protocol data fetcher for workflow ingestion stages",
"owners": [{"name": "IRT"}] "owners": [{"name": "IRT"}]
}, },

View File

@@ -102,7 +102,7 @@
"updater_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31", "updater_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31",
"access_mode": 1 "access_mode": 1
}, },
"logo": "https://min.io/resources/img/logo/ORIGINAL/vertical/dark/minioVerticalLogo-Dark.png", "logo": "http://min.io/resources/img/logo/ORIGINAL/vertical/dark/minioVerticalLogo-Dark.png",
"description": "MinIO Community Edition S3-compatible object store hosted on opencloud-demo-2 infrastructure, Paris Tier-3 data centre. Mount point: /mnt/minio. Capacity: 1 TB, NVMe RAID-6 array (6 drives, 2 parity), sustained throughput read 500 MB/s / write 400 MB/s, random IOPS 350 k. AES-256 encryption at rest; TLS 1.3 for all S3 API calls; server-side object integrity checksums (SHA-256). Bucket lifecycle policies: /logs prefix auto-archived to Glacier-class tier after 30 days; /tmp prefix purged after 24 h. Accessible to partner peers via S3 presigned URLs (1 h TTL) issued within the OpenCloud Federation default namespace. MinIO Console on :9001 restricted to peer-2 operators. Acts as the primary sink for peer-2 workflows: CURL log dumps, Redis snapshot exports and Mosquitto payload archives.", "description": "MinIO Community Edition S3-compatible object store hosted on opencloud-demo-2 infrastructure, Paris Tier-3 data centre. Mount point: /mnt/minio. Capacity: 1 TB, NVMe RAID-6 array (6 drives, 2 parity), sustained throughput read 500 MB/s / write 400 MB/s, random IOPS 350 k. AES-256 encryption at rest; TLS 1.3 for all S3 API calls; server-side object integrity checksums (SHA-256). Bucket lifecycle policies: /logs prefix auto-archived to Glacier-class tier after 30 days; /tmp prefix purged after 24 h. Accessible to partner peers via S3 presigned URLs (1 h TTL) issued within the OpenCloud Federation default namespace. MinIO Console on :9001 restricted to peer-2 operators. Acts as the primary sink for peer-2 workflows: CURL log dumps, Redis snapshot exports and Mosquitto payload archives.",
"short_description": "Peer-2 MinIO NVMe RAID-6 — 1 TB, 500/400 MB/s, AES-256, presigned S3 access", "short_description": "Peer-2 MinIO NVMe RAID-6 — 1 TB, 500/400 MB/s, AES-256, presigned S3 access",
"owners": [{"name": "opencloud-demo-2"}], "owners": [{"name": "opencloud-demo-2"}],

View File

@@ -92,7 +92,7 @@
"position": {"id": "", "x": 435.83, "y": 77.63}, "position": {"id": "", "x": 435.83, "y": 77.63},
"itemresource": {"data": {"type": "data", "quality": "low", "open_data": false, "static": true, "size": 0.59, "example": "tutut", "itemresource": {"data": {"type": "data", "quality": "low", "open_data": false, "static": true, "size": 0.59, "example": "tutut",
"abstractinstanciatedresource": {"abstractresource": {"allowed_booking_modes": null, "purchaseinfo": null, "abstractinstanciatedresource": {"abstractresource": {"allowed_booking_modes": null, "purchaseinfo": null,
"logo": "https://images.wondershare.com/repairit/article/guide-on-jpeg-repair-online-01.png", "logo": "http://images.wondershare.com/repairit/article/guide-on-jpeg-repair-online-01.png",
"description": "Sample JPEG image of a red car with a visible license plate.", "short_description": "A casual red car", "description": "Sample JPEG image of a red car with a visible license plate.", "short_description": "A casual red car",
"owners": [{"name": "Red Car"}], "owners": [{"name": "Red Car"}],
"abstractobject": {"name": "Red Car", "is_draft": false, "creator_id": "c0cece97-7730-4c2a-8c20-a30944564106", "abstractobject": {"name": "Red Car", "is_draft": false, "creator_id": "c0cece97-7730-4c2a-8c20-a30944564106",
@@ -109,7 +109,7 @@
"position": {"id": "", "x": 638.33, "y": 295.86}, "position": {"id": "", "x": 638.33, "y": 295.86},
"itemresource": {"compute": {"architecture": "x86", "infrastructure": 0, "itemresource": {"compute": {"architecture": "x86", "infrastructure": 0,
"abstractinstanciatedresource": {"abstractresource": {"type": "compute", "purchaseinfo": null, "abstractinstanciatedresource": {"abstractresource": {"type": "compute", "purchaseinfo": null,
"logo": "https://cloud.o-forge.io/core/deprecated-oc-catalog/raw/branch/main/scripts/local_imgs/vm_logo.png", "logo": "http://localhost:8000/static/images/vm_logo.png",
"description": "VM hosted on opencloud-demo-2, shared with peer-1.", "short_description": "VM hosted on opencloud-demo-2 — peer-2 owned", "description": "VM hosted on opencloud-demo-2, shared with peer-1.", "short_description": "VM hosted on opencloud-demo-2 — peer-2 owned",
"owners": [{"name": "IRT Saint Exupery"}], "allowed_booking_modes": null, "owners": [{"name": "IRT Saint Exupery"}], "allowed_booking_modes": null,
"abstractobject": {"id": "0bb77206-371a-428e-8ae3-ff11575071e2", "not_in_catalog": false, "name": "VM Target 2", "abstractobject": {"id": "0bb77206-371a-428e-8ae3-ff11575071e2", "not_in_catalog": false, "name": "VM Target 2",
@@ -118,7 +118,7 @@
"instances": [{"resourceinstance": {"origin": {"origin_type": 0, "origin_verified": false}, "instances": [{"resourceinstance": {"origin": {"origin_type": 0, "origin_verified": false},
"location": {"latitude": 48.8566, "longitude": 2.3522}, "location": {"latitude": 48.8566, "longitude": 2.3522},
"abstractobject": {"access_mode": 0, "id": "0bb77206-371a-428e-8ae3-ff11575071e2", "not_in_catalog": false, "name": "VM Proxmox Pierre 2", "is_draft": false}}, "abstractobject": {"access_mode": 0, "id": "0bb77206-371a-428e-8ae3-ff11575071e2", "not_in_catalog": false, "name": "VM Proxmox Pierre 2", "is_draft": false}},
"security_level": "private", "power_sources": ["Larmes d'alternant"]}]}}} "security_level": "private", "power_sources": ["solar"]}]}}}
}, },
"775c5cb3-5dc0-46ae-949c-1c5911b2ca4c": { "775c5cb3-5dc0-46ae-949c-1c5911b2ca4c": {
"id": "775c5cb3-5dc0-46ae-949c-1c5911b2ca4c", "width": 100, "height": 100, "id": "775c5cb3-5dc0-46ae-949c-1c5911b2ca4c", "width": 100, "height": 100,
@@ -242,7 +242,7 @@
"position": {"id": "", "x": 430, "y": 60}, "position": {"id": "", "x": 430, "y": 60},
"itemresource": {"data": {"type": "data", "quality": "low", "open_data": false, "static": true, "size": 0.59, "example": "http://plates.openalpr.com/h786poj.jpg", "itemresource": {"data": {"type": "data", "quality": "low", "open_data": false, "static": true, "size": 0.59, "example": "http://plates.openalpr.com/h786poj.jpg",
"abstractinstanciatedresource": {"abstractresource": {"allowed_booking_modes": null, "purchaseinfo": null, "abstractinstanciatedresource": {"abstractresource": {"allowed_booking_modes": null, "purchaseinfo": null,
"logo": "https://images.wondershare.com/repairit/article/guide-on-jpeg-repair-online-01.png", "logo": "http://images.wondershare.com/repairit/article/guide-on-jpeg-repair-online-01.png",
"description": "Sample JPEG image of a red car with a visible license plate.", "description": "Sample JPEG image of a red car with a visible license plate.",
"short_description": "Sample image of a red car with license plate", "short_description": "Sample image of a red car with license plate",
"owners": [{"name": "OpenALPR"}], "owners": [{"name": "OpenALPR"}],
@@ -331,7 +331,7 @@
"position": {"id": "", "x": 640, "y": 330}, "position": {"id": "", "x": 640, "y": 330},
"itemresource": {"compute": {"architecture": "x86", "infrastructure": 0, "itemresource": {"compute": {"architecture": "x86", "infrastructure": 0,
"abstractinstanciatedresource": {"abstractresource": {"type": "compute", "purchaseinfo": null, "abstractinstanciatedresource": {"abstractresource": {"type": "compute", "purchaseinfo": null,
"logo": "https://cloud.o-forge.io/core/deprecated-oc-catalog/raw/branch/main/scripts/local_imgs/vm_logo.png", "logo": "http://localhost:8000/static/images/vm_logo.png",
"description": "VM hosted on opencloud-demo-2, peer-2 owned. Executes the Python analysis step.", "description": "VM hosted on opencloud-demo-2, peer-2 owned. Executes the Python analysis step.",
"short_description": "VM hosted on opencloud-demo-2 — peer-2 owned", "short_description": "VM hosted on opencloud-demo-2 — peer-2 owned",
"owners": [{"name": "IRT Saint Exupery"}], "allowed_booking_modes": null, "owners": [{"name": "IRT Saint Exupery"}], "allowed_booking_modes": null,
@@ -340,7 +340,7 @@
"update_date": {"$date": "2021-09-30T14:00:00Z"}, "updater_id": "c0cece97-7730-4c2a-8c20-a30944564106", "access_mode": 0, "not_in_catalog": false}}, "update_date": {"$date": "2021-09-30T14:00:00Z"}, "updater_id": "c0cece97-7730-4c2a-8c20-a30944564106", "access_mode": 0, "not_in_catalog": false}},
"instances": [{"resourceinstance": {"abstractobject": {"id": "0bb77206-371a-428e-8ae3-ff11575071e2", "name": "VM Proxmox Pierre 2", "is_draft": false, "access_mode": 0}, "instances": [{"resourceinstance": {"abstractobject": {"id": "0bb77206-371a-428e-8ae3-ff11575071e2", "name": "VM Proxmox Pierre 2", "is_draft": false, "access_mode": 0},
"origin": {"origin_type": 0, "origin_verified": false}, "location": {"latitude": 48.8566, "longitude": 2.3522}}, "origin": {"origin_type": 0, "origin_verified": false}, "location": {"latitude": 48.8566, "longitude": 2.3522}},
"security_level": "private", "power_sources": ["Larmes d'alternant"]}]}}} "security_level": "private", "power_sources": ["solar"]}]}}}
} }
}, },
"links": [ "links": [
@@ -483,7 +483,7 @@
"position": {"id": "", "x": 210, "y": 340}, "position": {"id": "", "x": 210, "y": 340},
"itemresource": {"storage": {"storage_type": 5, "acronym": "DC_myDC", "itemresource": {"storage": {"storage_type": 5, "acronym": "DC_myDC",
"abstractinstanciatedresource": {"abstractresource": {"type": "storage", "purchaseinfo": null, "abstractinstanciatedresource": {"abstractresource": {"type": "storage", "purchaseinfo": null,
"logo": "https://min.io/resources/img/logo/ORIGINAL/vertical/dark/minioVerticalLogo-Dark.png", "logo": "http://min.io/resources/img/logo/ORIGINAL/vertical/dark/minioVerticalLogo-Dark.png",
"description": "MinIO NVMe RAID-6 1 TB object store, peer-2 owned. Primary sink for CURL log dumps and Redis snapshot exports.", "description": "MinIO NVMe RAID-6 1 TB object store, peer-2 owned. Primary sink for CURL log dumps and Redis snapshot exports.",
"short_description": "Peer-2 MinIO NVMe RAID-6 — 1 TB, AES-256, S3-compatible", "short_description": "Peer-2 MinIO NVMe RAID-6 — 1 TB, AES-256, S3-compatible",
"owners": [{"name": "opencloud-demo-2"}], "allowed_booking_modes": null, "owners": [{"name": "opencloud-demo-2"}], "allowed_booking_modes": null,
@@ -501,7 +501,7 @@
"position": {"id": "", "x": 640, "y": 380}, "position": {"id": "", "x": 640, "y": 380},
"itemresource": {"compute": {"architecture": "x86", "infrastructure": 0, "itemresource": {"compute": {"architecture": "x86", "infrastructure": 0,
"abstractinstanciatedresource": {"abstractresource": {"type": "compute", "purchaseinfo": null, "abstractinstanciatedresource": {"abstractresource": {"type": "compute", "purchaseinfo": null,
"logo": "https://cloud.o-forge.io/core/deprecated-oc-catalog/raw/branch/main/scripts/local_imgs/vm_logo.png", "logo": "http://localhost:8000/static/images/vm_logo.png",
"description": "Peer-2 bare-metal cluster, 4 nodes × dual EPYC 9654 + 2× RTX 4090. Executes Redis and Nginx steps.", "description": "Peer-2 bare-metal cluster, 4 nodes × dual EPYC 9654 + 2× RTX 4090. Executes Redis and Nginx steps.",
"short_description": "Peer-2 bare-metal cluster — dual EPYC 9654 + 2× RTX 4090, peer-2 owned", "short_description": "Peer-2 bare-metal cluster — dual EPYC 9654 + 2× RTX 4090, peer-2 owned",
"owners": [{"name": "opencloud-demo-2"}], "allowed_booking_modes": null, "owners": [{"name": "opencloud-demo-2"}], "allowed_booking_modes": null,
@@ -696,7 +696,7 @@
"position": {"id": "", "x": 640, "y": 330}, "position": {"id": "", "x": 640, "y": 330},
"itemresource": {"compute": {"architecture": "x86", "infrastructure": 0, "itemresource": {"compute": {"architecture": "x86", "infrastructure": 0,
"abstractinstanciatedresource": {"abstractresource": {"type": "compute", "purchaseinfo": null, "abstractinstanciatedresource": {"abstractresource": {"type": "compute", "purchaseinfo": null,
"logo": "https://cloud.o-forge.io/core/deprecated-oc-catalog/raw/branch/main/scripts/local_imgs/vm_logo.png", "logo": "http://localhost:8000/static/images/vm_logo.png",
"description": "Peer-2 bare-metal cluster, 4 nodes × dual EPYC 9654 + 2× RTX 4090, peer-2 owned. Executes Python vehicle-detection step cross-peer.", "description": "Peer-2 bare-metal cluster, 4 nodes × dual EPYC 9654 + 2× RTX 4090, peer-2 owned. Executes Python vehicle-detection step cross-peer.",
"short_description": "Peer-2 bare-metal cluster — dual EPYC 9654 + 2× RTX 4090, peer-2 owned", "short_description": "Peer-2 bare-metal cluster — dual EPYC 9654 + 2× RTX 4090, peer-2 owned",
"owners": [{"name": "opencloud-demo-2"}], "allowed_booking_modes": null, "owners": [{"name": "opencloud-demo-2"}], "allowed_booking_modes": null,

View File

@@ -39,6 +39,47 @@
"architecture": "x86", "architecture": "x86",
"infrastructure": 0 "infrastructure": 0
}, },
{
"_id": "22220002-2222-4002-8002-222222222222",
"abstractinstanciatedresource": {
"abstractresource": {
"type": "compute",
"abstractobject": {
"id": "22220002-2222-4002-8002-222222222222",
"name": "Local K3s Peer-2",
"is_draft": false,
"creator_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31",
"creation_date": "2021-09-30T14:00:00.000Z",
"update_date": "2026-04-13T00:00:00.000Z",
"updater_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31",
"access_mode": 1
},
"logo": "http://localhost:9000/static/images/vm_logo.png",
"description": "K3s single-node Kubernetes cluster running directly on the opencloud-demo-2 (peer-2) bare-metal host at IP 172.16.0.181. Host hardware: Intel Core Ultra 9 285K (3.6 GHz base, 5.6 GHz boost, 32 cores Arrow Lake-S, Intel 3 process), 16 GB DDR5-6400 ECC. Provides the local Kubernetes scheduling plane for peer-2 workloads orchestrated by Admiralty federation. Workloads scheduled here run natively on the host kernel without a hypervisor layer, giving lower overhead than the KVM VM targets. Connected to peer-2-hosted MinIO storage. Inter-peer data traffic encrypted in transit (mTLS). Power: 100% alternating-current reclaimed energy. Annual CO₂: ~1 000 kg eqCO₂.",
"short_description": "Peer-2 local K3s cluster — bare-metal Kubernetes on Intel Core Ultra 9 285K (opencloud-demo-2)",
"owners": [{"name": "opencloud-demo-2"}],
"allowed_booking_modes": {
"0": {"inflate": false, "percent": 0, "priority": 0},
"1": {"inflate": false, "percent": 5, "priority": 1}
}
},
"instances": [{
"resourceinstance": {
"abstractobject": {"id": "22220002-2222-4002-8002-222222222222", "name": "Local K3s Peer-2 Paris", "is_draft": false, "access_mode": 0},
"location": {"latitude": 48.8566, "longitude": 2.3522},
"country": 250,
"partnerships": [{"namespace": "default", "peer_groups": {"*": ["*"]}}]
},
"security_level": "private",
"annual_co2_emissions": 1000,
"power_sources": ["Larmes d'alternant"],
"cpus": {"Intel Core Ultra 9 285K": {"model": "Intel Core Ultra 9 285K", "frequency": 3.6, "cores": 32, "architecture": "x86"}},
"nodes": [{"name": "default", "quantity": 1, "ram": {"size": 16384}, "cpus": {"Intel Core Ultra 9 285K": 1}}]
}]
},
"architecture": "x86",
"infrastructure": 1
},
{ {
"_id": "0bb77206-371a-428e-8ae3-ff11575071e2", "_id": "0bb77206-371a-428e-8ae3-ff11575071e2",
"abstractinstanciatedresource": { "abstractinstanciatedresource": {

View File

@@ -92,7 +92,7 @@
"updater_id": "c0cece97-7730-4c2a-8c20-a30944564106", "updater_id": "c0cece97-7730-4c2a-8c20-a30944564106",
"access_mode": 1 "access_mode": 1
}, },
"logo": "https://images.wondershare.com/repairit/article/guide-on-jpeg-repair-online-01.png", "logo": "http://images.wondershare.com/repairit/article/guide-on-jpeg-repair-online-01.png",
"description": "Sample JPEG image of a red car with a visible license plate. Shared by peer-1.", "description": "Sample JPEG image of a red car with a visible license plate. Shared by peer-1.",
"short_description": "Sample image of a red car with license plate", "short_description": "Sample image of a red car with license plate",
"owners": [{"name": "OpenALPR"}] "owners": [{"name": "OpenALPR"}]

View File

@@ -52,7 +52,7 @@
"wallet_address": "my-wallet", "wallet_address": "my-wallet",
"public_key": "MCowBQYDK2VwAyEA/ymOIb0sJ0qCWrf3mKz7ACCvsMXLog/EK533JfNXZTM=", "public_key": "MCowBQYDK2VwAyEA/ymOIb0sJ0qCWrf3mKz7ACCvsMXLog/EK533JfNXZTM=",
"peer_id": "12D4KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN", "peer_id": "12D4KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN",
"relation": 1, "relation": 0,
"abstractobject": { "abstractobject": {
"id": "b97318c9-f5f8-44bb-8d48-913f4ddd6c31", "id": "b97318c9-f5f8-44bb-8d48-913f4ddd6c31",
"name": "opencloud-demo-3", "name": "opencloud-demo-3",

View File

@@ -15,7 +15,7 @@
"access_mode": 1 "access_mode": 1
}, },
"logo": "http://localhost:8000/static/images/curl-logo.png", "logo": "http://localhost:8000/static/images/curl-logo.png",
"description": "Official curl Docker image (curlimages/curl:8.5.0) published by the curl project. Implements HTTP/1.1, HTTP/2, HTTPS (TLS 1.3), FTP, SFTP, SCP and 25+ other protocols. Supports cookies, redirect chains, proxy authentication, rate limiting, resumable transfers and parallel downloads (-Z flag). Typical workflow use: first-stage ingestion step that pulls remote datasets — camera snapshots, API log files, GeoTIFF archives, JSON feeds — into a shared storage volume before downstream processing nodes consume them. Single static binary; 12 MB compressed Alpine-based image; no shell dependency.", "description": "Official curl Docker image (curlimages/curl:8.5.0) published by the curl project. Implements HTTP/1.1, HTTP/2, http (TLS 1.3), FTP, SFTP, SCP and 25+ other protocols. Supports cookies, redirect chains, proxy authentication, rate limiting, resumable transfers and parallel downloads (-Z flag). Typical workflow use: first-stage ingestion step that pulls remote datasets — camera snapshots, API log files, GeoTIFF archives, JSON feeds — into a shared storage volume before downstream processing nodes consume them. Single static binary; 12 MB compressed Alpine-based image; no shell dependency.",
"short_description": "Official curl image — multi-protocol data fetcher for workflow ingestion stages", "short_description": "Official curl image — multi-protocol data fetcher for workflow ingestion stages",
"owners": [{"name": "IRT"}] "owners": [{"name": "IRT"}]
}, },

View File

@@ -14,7 +14,7 @@
"updater_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31", "updater_id": "b87318c9-f5f8-44bb-8d48-913f4ddd6c31",
"access_mode": 1 "access_mode": 1
}, },
"logo": "https://min.io/resources/img/logo/ORIGINAL/vertical/dark/minioVerticalLogo-Dark.png", "logo": "http://min.io/resources/img/logo/ORIGINAL/vertical/dark/minioVerticalLogo-Dark.png",
"description": "MinIO Community Edition S3-compatible object store hosted on opencloud-demo-2 infrastructure, Paris Tier-3 data centre. Mount point: /mnt/minio. Capacity: 1 TB, NVMe RAID-6 array (6 drives, 2 parity), sustained throughput read 500 MB/s / write 400 MB/s, random IOPS 350 k. AES-256 encryption at rest; TLS 1.3 for all S3 API calls; server-side object integrity checksums (SHA-256). Bucket lifecycle policies: /logs prefix auto-archived to Glacier-class tier after 30 days; /tmp prefix purged after 24 h. Accessible to partner peers via S3 presigned URLs (1 h TTL) issued within the OpenCloud Federation default namespace. MinIO Console on :9001 restricted to peer-2 operators. Acts as the primary sink for peer-2 workflows: CURL log dumps, Redis snapshot exports and Mosquitto payload archives.", "description": "MinIO Community Edition S3-compatible object store hosted on opencloud-demo-2 infrastructure, Paris Tier-3 data centre. Mount point: /mnt/minio. Capacity: 1 TB, NVMe RAID-6 array (6 drives, 2 parity), sustained throughput read 500 MB/s / write 400 MB/s, random IOPS 350 k. AES-256 encryption at rest; TLS 1.3 for all S3 API calls; server-side object integrity checksums (SHA-256). Bucket lifecycle policies: /logs prefix auto-archived to Glacier-class tier after 30 days; /tmp prefix purged after 24 h. Accessible to partner peers via S3 presigned URLs (1 h TTL) issued within the OpenCloud Federation default namespace. MinIO Console on :9001 restricted to peer-2 operators. Acts as the primary sink for peer-2 workflows: CURL log dumps, Redis snapshot exports and Mosquitto payload archives.",
"short_description": "Peer-2 MinIO NVMe RAID-6 — 1 TB, 500/400 MB/s, AES-256, presigned S3 access", "short_description": "Peer-2 MinIO NVMe RAID-6 — 1 TB, 500/400 MB/s, AES-256, presigned S3 access",
"owners": [{"name": "opencloud-demo-2"}] "owners": [{"name": "opencloud-demo-2"}]

View File

@@ -73,7 +73,7 @@ helm install admiralty oci://public.ecr.aws/admiralty/admiralty \
--wait --wait
echo "🌐 Configuring /etc/hosts..." echo "🌐 Configuring /etc/hosts..."
CLUSTER_IP=$(kubectl get svc kubernetes -o jsonpath='{.spec.clusterIP}') CLUSTER_IP=$(ip -4 addr show $(ip route | awk '/default/ {print $5}') | awk '/inet / {print $2}' | cut -d/ -f1)
if grep -q "kubernetes.default.svc.cluster.local" /etc/hosts; then if grep -q "kubernetes.default.svc.cluster.local" /etc/hosts; then
sudo sed -i "s/^.*kubernetes.default.svc.cluster.local/$CLUSTER_IP kubernetes.default.svc.cluster.local/" /etc/hosts sudo sed -i "s/^.*kubernetes.default.svc.cluster.local/$CLUSTER_IP kubernetes.default.svc.cluster.local/" /etc/hosts
@@ -85,6 +85,9 @@ ca=$(kubectl config view --raw --minify -o jsonpath='{.clusters[0].cluster.certi
cert=$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-certificate-data}') cert=$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-certificate-data}')
key=$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-key-data}') key=$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-key-data}')
docker network create \
--subnet=172.40.0.0/24 \
discovery || true
REPOS=( REPOS=(
"mongo" "mongo"
@@ -120,7 +123,7 @@ do
docker rm $i || true docker rm $i || true
done done
REGISTRY= KUBE_CA=$ca KUBE_CERT=$cert KUBE_DATA=$key docker compose -f ./docker-compose.dev.yml up -d || true KUBE_CA=$ca KUBE_CERT=$cert KUBE_DATA=$key docker compose -f ./docker-compose.dev.yml up -d || true
cd ./db-1 && ./add.sh && cd .. cd ./db-1 && ./add.sh && cd ..
# MISSING ADD DATAS # MISSING ADD DATAS
@@ -156,7 +159,7 @@ do
docker rm "$i" || true docker rm "$i" || true
done done
REGISTRY= KUBE_CA=$ca KUBE_CERT=$cert KUBE_DATA=$key docker compose -f ./docker-compose.dev2.yml up -d || true KUBE_CA=$ca KUBE_CERT=$cert KUBE_DATA=$key docker compose -f ./docker-compose.dev2.yml up -d || true
# MISSING ADD DATAS # MISSING ADD DATAS
cd ./db-2 && ./add.sh && cd .. cd ./db-2 && ./add.sh && cd ..

View File

@@ -341,21 +341,27 @@ services:
- 4001:4001 - 4001:4001
container_name: oc-discovery_1 container_name: oc-discovery_1
networks: networks:
- oc discovery:
ipv4_address: 172.40.0.1
oc:
oc-discovery_2: oc-discovery_2:
image: '${REGISTRY:-opencloudregistry/}oc-discovery_2:latest' image: '${REGISTRY:-opencloudregistry/}oc-discovery_2:latest'
ports: ports:
- 4002:4002 - 4002:4002
container_name: oc-discovery_2 container_name: oc-discovery_2
networks: networks:
- oc discovery:
ipv4_address: 172.40.0.2
oc:
oc-discovery_3: oc-discovery_3:
image: '${REGISTRY:-opencloudregistry/}oc-discovery_3:latest' image: '${REGISTRY:-opencloudregistry/}oc-discovery_3:latest'
ports: ports:
- 4003:4003 - 4003:4003
container_name: oc-discovery_3 container_name: oc-discovery_3
networks: networks:
- oc discovery:
ipv4_address: 172.40.0.3
oc:
oc-schedulerd: oc-schedulerd:
image: '${REGISTRY:-opencloudregistry/}oc-schedulerd:latest' image: '${REGISTRY:-opencloudregistry/}oc-schedulerd:latest'
ports: ports:
@@ -392,6 +398,8 @@ services:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.static.entrypoints=web" - "traefik.http.routers.static.entrypoints=web"
- "traefik.http.routers.static.rule=PathPrefix(`/static`)" - "traefik.http.routers.static.rule=PathPrefix(`/static`)"
- "traefik.http.routers.static.middlewares=static-stripprefix"
- "traefik.http.middlewares.static-stripprefix.stripprefix.prefixes=/static"
- "traefik.http.services.static.loadbalancer.server.port=80" - "traefik.http.services.static.loadbalancer.server.port=80"
container_name: oc-static container_name: oc-static
networks: networks:
@@ -403,4 +411,6 @@ volumes:
networks: networks:
oc: oc:
external: true external: true
discovery:
external: true

View File

@@ -25,6 +25,7 @@ services:
environment: environment:
- ME_CONFIG_BASICAUTH_USERNAME=test - ME_CONFIG_BASICAUTH_USERNAME=test
- ME_CONFIG_BASICAUTH_PASSWORD=test - ME_CONFIG_BASICAUTH_PASSWORD=test
- ME_CONFIG_MONGODB_SERVER=mongo2
nats2: nats2:
image: 'nats:latest' image: 'nats:latest'
container_name: nats2 container_name: nats2
@@ -142,14 +143,14 @@ services:
volumes: volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro - /var/run/docker.sock:/var/run/docker.sock:ro
oc-datacenter2: oc-datacenter2:
env_file:
- path: ./env.env
required: false
environment: environment:
- MONGO_DATABASE=DC_myDC - OC_MONGO_DATABASE=DC_myDC
- KUBE_CA=${KUBE_CA:-} - OC_MONGO_URL=mongodb://mongo2:27017/
- KUBE_CERT=${KUBE_CERT:-} - OC_NATS_URL=nats://nats2:4222
- KUBE_DATA=${KUBE_DATA:-} - OC_LOKI_URL=http://loki2:3100
- OC_KUBE_CA=${KUBE_CA:-}
- OC_KUBE_CERT=${KUBE_CERT:-}
- OC_KUBE_DATA=${KUBE_DATA:-}
image: '${REGISTRY:-opencloudregistry/}oc-datacenter:latest' image: '${REGISTRY:-opencloudregistry/}oc-datacenter:latest'
ports: ports:
- 9092:8080 - 9092:8080
@@ -171,10 +172,13 @@ services:
- oc2 - oc2
oc-scheduler2: oc-scheduler2:
environment: environment:
- MONGO_DATABASE=DC_myDC - OC_MONGO_DATABASE=DC_myDC
- KUBE_CA=${KUBE_CA:-} - OC_MONGO_URL=mongodb://mongo2:27017/
- KUBE_CERT=${KUBE_CERT:-} - OC_LOKI_URL=http://loki2:3100
- KUBE_DATA=${KUBE_DATA:-} - OC_NATS_URL=nats://nats2:4222
- OC_KUBE_CA=${KUBE_CA:-}
- OC_KUBE_CERT=${KUBE_CERT:-}
- OC_KUBE_DATA=${KUBE_DATA:-}
image: '${REGISTRY:-opencloudregistry/}oc-scheduler:latest' image: '${REGISTRY:-opencloudregistry/}oc-scheduler:latest'
labels: labels:
- "traefik.stack=peer2" - "traefik.stack=peer2"
@@ -196,7 +200,10 @@ services:
- oc2 - oc2
oc-catalog2: oc-catalog2:
environment: environment:
- MONGO_DATABASE=DC_myDC - OC_MONGO_DATABASE=DC_myDC
- OC_LOKI_URL=http://loki2:3100
- OC_MONGO_URL=mongodb://mongo2:27017/
- OC_NATS_URL=nats://nats2:4222
image: '${REGISTRY:-opencloudregistry/}oc-catalog:latest' image: '${REGISTRY:-opencloudregistry/}oc-catalog:latest'
ports: ports:
- 9087:8080 - 9087:8080
@@ -218,7 +225,10 @@ services:
- "traefik.http.middlewares.auth-catalog2.forwardauth.authResponseHeaders=X-Auth-Request-User,X-Auth-Request-Email" - "traefik.http.middlewares.auth-catalog2.forwardauth.authResponseHeaders=X-Auth-Request-User,X-Auth-Request-Email"
oc-workspace2: oc-workspace2:
environment: environment:
- MONGO_DATABASE=DC_myDC - OC_MONGO_DATABASE=DC_myDC
- OC_LOKI_URL=http://loki2:3100
- OC_MONGO_URL=mongodb://mongo2:27017/
- OC_NATS_URL=nats://nats2:4222
image: '${REGISTRY:-opencloudregistry/}oc-workspace:latest' image: '${REGISTRY:-opencloudregistry/}oc-workspace:latest'
ports: ports:
- 9089:8080 - 9089:8080
@@ -240,7 +250,10 @@ services:
- oc2 - oc2
oc-peer2: oc-peer2:
environment: environment:
- MONGO_DATABASE=DC_myDC - OC_MONGO_DATABASE=DC_myDC
- OC_LOKI_URL=http://loki2:3100
- OC_MONGO_URL=mongodb://mongo2:27017/
- OC_NATS_URL=nats://nats2:4222
image: '${REGISTRY:-opencloudregistry/}oc-peer:latest' image: '${REGISTRY:-opencloudregistry/}oc-peer:latest'
labels: labels:
- "traefik.stack=peer2" - "traefik.stack=peer2"
@@ -278,14 +291,17 @@ services:
- "traefik.http.middlewares.auth-auth-sec2.forwardauth.trustForwardHeader=true" - "traefik.http.middlewares.auth-auth-sec2.forwardauth.trustForwardHeader=true"
- "traefik.http.middlewares.auth-auth-sec2.forwardauth.authResponseHeaders=X-Auth-Request-User,X-Auth-Request-Email" - "traefik.http.middlewares.auth-auth-sec2.forwardauth.authResponseHeaders=X-Auth-Request-User,X-Auth-Request-Email"
environment: environment:
LDAP_ENDPOINTS: ldap2:389 OC_MONGO_URL : mongodb://mongo2:27017/
LDAP_BINDDN: cn=admin,dc=example,dc=com OC_NATS_URL: nats://nats2:4222
LDAP_BINDPW: password OC_LDAP_ENDPOINTS: ldap2:389
LDAP_BASEDN: "dc=example,dc=com" OC_LOKI_UR : http://loki2:3100
LDAP_USER_BASEDN: "ou=users,dc=example,dc=com" OC_LDAP_BINDDN: cn=admin,dc=example,dc=com
LDAP_ROLE_BASEDN: "ou=AppRoles,dc=example,dc=com" OC_LDAP_BINDPW: password
ADMIN_ORIGIN: "http://localhost:9000" OC_LDAP_BASEDN: "dc=example,dc=com"
OAUTH_REDIRECT_URI: "http://localhost:9000" OC_LDAP_USER_BASEDN: "ou=users,dc=example,dc=com"
OC_LDAP_ROLE_BASEDN: "ou=AppRoles,dc=example,dc=com"
OC_ADMIN_ORIGIN: "http://localhost:9000"
OC_OAUTH_REDIRECT_URI: "http://localhost:9000"
networks: networks:
- oc2 - oc2
volumes: volumes:
@@ -293,7 +309,9 @@ services:
- ./pem/public4.pem:/keys/public/public.pem - ./pem/public4.pem:/keys/public/public.pem
oc-shared2: oc-shared2:
environment: environment:
- MONGO_DATABASE=DC_myDC - OC_MONGO_DATABASE=DC_myDC
- OC_MONGO_URL=mongodb://mongo2:27017/
- OC_NATS_URL=nats://nats2:4222
image: '${REGISTRY:-opencloudregistry/}oc-shared:latest' image: '${REGISTRY:-opencloudregistry/}oc-shared:latest'
ports: ports:
- 9091:8080 - 9091:8080
@@ -312,9 +330,9 @@ services:
- oc2 - oc2
oc-workflow2: oc-workflow2:
environment: environment:
- _OCWORKFLOW_MONGO_DATABASE=DC_myDC - OC_MONGO_URL=mongodb://mongo2:27017/
- _OCWORKFLOW_MONGO_URL=mongodb://mongo2:27017 - OC_NATS_URL=nats://nats2:4222
- _OCWORKFLOW_NATS_URL=nats://nats2:4222 - OC_LOKI_URL=http://loki2:3100
image: '${REGISTRY:-opencloudregistry/}oc-workflow:latest' image: '${REGISTRY:-opencloudregistry/}oc-workflow:latest'
ports: ports:
- 9088:8080 - 9088:8080
@@ -336,16 +354,21 @@ services:
- 4004:4004 - 4004:4004
container_name: oc-discovery_4 container_name: oc-discovery_4
networks: networks:
- oc2 discovery:
ipv4_address: 172.40.0.4
oc2:
oc:
oc-schedulerd2: oc-schedulerd2:
image: '${REGISTRY:-opencloudregistry/}oc-schedulerd:latest' image: '${REGISTRY:-opencloudregistry/}oc-schedulerd:latest'
ports: ports:
- 10006:8080 - 10006:8080
environment: environment:
- MONGO_DATABASE=DC_myDC - OC_LOKI_URL=http://loki2:3100
- KUBE_CA=${KUBE_CA:-} - OC_MONGO_DATABASE=DC_myDC
- KUBE_CERT=${KUBE_CERT:-} - OC_MONGO_URL=mongodb://mongo2:27017/
- KUBE_DATA=${KUBE_DATA:-} - OC_KUBE_CA=${KUBE_CA:-}
- OC_KUBE_CERT=${KUBE_CERT:-}
- OC_KUBE_DATA=${KUBE_DATA:-}
container_name: oc-schedulerd2 container_name: oc-schedulerd2
networks: networks:
- oc2 - oc2
@@ -367,5 +390,9 @@ volumes:
oc-data2: oc-data2:
networks: networks:
oc:
external: true
oc2: oc2:
external: true external: true
discovery:
external: true