Files
italiadatacenter/add-on/AgentPlatform/platform-architect/idp-template-schema-example.yaml
T
2026-10-11 23:49:35 +02:00

87 lines
2.9 KiB
YAML

# idp-template.yaml — da posizionare nella root di ogni repo Gitea
# di tipo "template". Questo è l'esempio compilato per un template
# "REST API sincrona Java/Spring Boot".
id: tpl-java-springboot-rest-api
name: "Java Spring Boot — REST API sincrona"
version: "2.1.0"
status: active # active | beta | deprecated
last_updated: "2026-09-01"
maintainer: "platform-engineering@pigreco66.it"
repo_url: "https://gitea.pigreco66.it/idp-templates/java-springboot-rest-api"
# --- Classificazione, usata dall'agente per il primo filtro ---
category: api-service
workload_type:
- sync-api
- rest
tech_stack:
language: Java 21
framework: Spring Boot 3.3
build_tool: Maven
tags: ["java", "spring-boot", "rest", "sync", "stateless"]
description: >
Template per esporre una REST API sincrona stateless. Include
healthcheck, metrics endpoint Prometheus-ready, struttura a layer
controller/service/repository, logging strutturato JSON.
# --- Cosa contiene esattamente la struttura del repo ---
components_included:
kubernetes:
- Deployment (con probe readiness/liveness preconfigurate)
- Service (ClusterIP)
- HorizontalPodAutoscaler
- NetworkPolicy (default-deny + regole minime)
containers:
- Dockerfile multi-stage (build + runtime minimale distroless)
src:
- hello-world Spring Boot funzionante, con un endpoint /health e
un endpoint di esempio /api/v1/ping
env:
- application-dev.properties
- application-staging.properties
- application-prod.properties
# --- Integrazione con servizi cross della piattaforma ---
# Fondamentale: dice all'agente COSA NON riproporre perché già
# disponibile centralmente (evita duplicazione di servizi)
cross_platform_services:
- service: shared-postgres
how: "via env PLATFORM_DB_CONNECTION_STRING, iniettata dalla pipeline"
- service: shared-redis-cache
how: "opzionale, abilitabile via env ENABLE_CACHE=true"
- service: centralized-logging
how: "automatico, nessuna configurazione richiesta"
# --- Vincoli di compliance soddisfatti dal template ---
compliance:
data_classification_supported: ["public", "internal", "confidential"]
# NON supporta dati PII senza customizzazioni aggiuntive
pii_ready: false
network_policy_baseline: "default-deny"
security_scanning: "incluso in pipeline (SAST + container scan)"
scaling:
default_replicas: 2
autoscaling: hpa
min_replicas: 2
max_replicas: 10
# --- Parametri personalizzabili (quelli nei file in env/) ---
parameters:
- name: PLATFORM_DB_CONNECTION_STRING
required: false
description: "Richiesta solo se il servizio necessita persistenza"
- name: ENABLE_CACHE
required: false
default: "false"
# --- Quando NON usare questo template (altrettanto utile del 'quando sì') ---
not_suitable_for:
- "Workload asincroni basati su eventi (usa tpl-java-kafka-consumer)"
- "Batch job schedulati (usa tpl-batch-job)"
- "Dati classificati come PII senza data masking aggiuntivo"