468d4562c7
Toolkit per deployare/aggiornare un tenant LoginMaster su qualsiasi Kubernetes (EKS/AKS/DOKS/Scaleway/vSphere/...). Contiene: - deploy.sh: bootstrap di un nuovo tenant (idempotente, re-run protection, storage class auto-rilevata, prompt separati api/admin tag, generazione segreti crittografici via openssl rand). - update.sh: rolling update zero-downtime con tag api/admin separati, rollback hint via 'kubectl rollout undo', riapplicazione opzionale del ConfigMap. - templates/: 8 manifest parametrici (envsubst): namespace, cert-manager TLS Mongo, NetworkPolicy intra-namespace, ConfigMap, MongoDB StatefulSet 3 repliche con TLS interno + initContainer per keyfile/PEM, tenant-api Deployment 2 repliche con CA validation, tenant-admin, ingress nginx + Let's Encrypt. Sicurezza: TLS interno Mongo (cert-manager CA self-signed 10y), keyFile per auth replica set, password client mai in argv, NetworkPolicy che isola il tenant, pod Mongo non-root (uid 999) con initContainer come root per i file runtime in tmpfs.
26 lines
888 B
YAML
26 lines
888 B
YAML
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: tenant-api-config
|
|
namespace: ${NAMESPACE}
|
|
data:
|
|
NODE_ENV: "production"
|
|
PORT: "3000"
|
|
# MONGODB_URI è nel Secret mongodb-tenant-auth (contiene credenziali)
|
|
LOGINMASTER_API_URL: "${LOGINMASTER_API_URL}"
|
|
ADMIN_ALLOWED_ORIGIN: "${ADMIN_ALLOWED_ORIGIN}"
|
|
TENANT_ADMIN_URL: "${TENANT_ADMIN_URL}"
|
|
# CORS_ORIGIN e MANAGE_ALLOWED_ORIGIN sono alias di TENANT_ADMIN_URL: nomi
|
|
# storici letti dal codice API. Tenuti per compat — se l'API ne legge solo
|
|
# uno è innocuo, ma è preferibile che il codice legga TENANT_ADMIN_URL.
|
|
CORS_ORIGIN: "${TENANT_ADMIN_URL}"
|
|
MANAGE_ALLOWED_ORIGIN: "${TENANT_ADMIN_URL}"
|
|
JWT_ACCESS_EXPIRY: "15m"
|
|
JWT_REFRESH_EXPIRY: "7d"
|
|
LOG_LEVEL: "info"
|
|
SMTP_HOST: "${SMTP_HOST}"
|
|
SMTP_PORT: "${SMTP_PORT}"
|
|
SMTP_SECURE: "${SMTP_SECURE}"
|
|
SMTP_USER: "${SMTP_USER}"
|
|
EMAIL_FROM: "${EMAIL_FROM}"
|