87 lines
2.9 KiB
YAML
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"
|