workspace "Integración Samba + AD + 389-DS en Kubernetes" "Arquitectura unificada de identidad con soporte en Kubernetes" { model { ####################################################### ## PERSONAS ####################################################### user = person "Usuario / Aplicaciones" "Actores que necesitan autenticación" operator = person "Operador/Administrador" "Persona que gestiona la arquitectura de identidad" ####################################################### ## SISTEMAS PRINCIPALES (Core Identity Architecture) ####################################################### authSystem = softwareSystem "IdentityArchitecture" "Sistema principal de autenticación" { tags "Identity" } ad = softwareSystem "ActiveDirectory" "Controlador de dominio. LDAP + Kerberos" { tags "Identity", "AD" adContainer = container "ActiveDirectory Container" "Contenedor de Active Directory" "Docker/Windows Container" adPersistentStore = container "AD Persistent Store" "Persistencia de datos de AD" "RDBMS / Filesystem" } ds389 = softwareSystem "Directory389" "Directorio LDAP para aplicaciones" { tags "Identity", "LDAP" ds389Container = container "Directory389 Container" "Contenedor de Directory 389" "Docker/Linux Container" ds389PersistentStore = container "DS389 Persistent Store" "Persistencia de datos de 389 Directory" "RDBMS / Filesystem" } samba = softwareSystem "SambaServer" "Servidor Samba (miembro AD o LDAP backend)" { tags "Identity", "Samba" sambaContainer = container "Samba Container" "Contenedor de Samba Server" "Docker/Linux Container" sambaPersistentStore = container "Samba Persistent Store" "Persistencia de datos de Samba" "Filesystem" } apps = softwareSystem "AppsCorporativas" "Aplicaciones que consumen LDAP/Kerberos" { tags "Apps" appsContainer = container "Apps Container" "Contenedor de aplicaciones corporativas" "Docker/Linux Container" appsPersistentStore = container "Apps Persistent Store" "Persistencia de datos de aplicaciones" "Filesystem / DB" } ####################################################### ## CAPA KUBERNETES (TAG Infra) ####################################################### k8s_cluster = softwareSystem "Kubernetes Cluster" "Plataforma de orquestación de contenedores" { tags "Infra" k8sDashboard = container "Kubernetes Dashboard" "Interfaz web de administración del clúster" "Docker/Web UI" k8sApiServer = container "Kubernetes API Server" "Componente central del clúster para control de estado" "Docker/Go" k8sEtcd = container "etcd Store" "Almacén de datos de configuración del clúster" "Docker/Go/DB" } ####################################################### ## RELACIONES DE CONTEXTO ####################################################### user -> apps "Usa autenticación" apps -> ad "LDAP / Kerberos" apps -> ds389 "LDAP" ad -> ds389 "Sincronización (opcional)" samba -> ad "Miembro del dominio AD" samba -> ds389 "Consulta LDAP" authSystem -> ad authSystem -> ds389 authSystem -> samba authSystem -> apps ####################################################### ## RELACIONES EN KUBERNETES (Modelo lógico) ####################################################### k8sDashboard -> k8sApiServer "Administra clúster" k8sApiServer -> k8sEtcd "Almacena configuración" ####################################################### ## DEPLOYMENT ENVIRONMENT ####################################################### deploymentEnvironment "k8s" { deploymentNode "k8s_cluster" "Cluster Kubernetes" "Kubernetes" { containerInstance adContainer containerInstance ds389Container containerInstance sambaContainer containerInstance appsContainer containerInstance k8sDashboard containerInstance k8sApiServer containerInstance k8sEtcd } } } # model ################################################################# ## VISTAS ################################################################# views { ####################################################### ## SYSTEM CONTEXT VIEW ####################################################### systemContext authSystem "identity_context" { include * autolayout lr title "Contexto de la arquitectura de identidad" description "Visión general de los sistemas y actores que interactúan dentro del sistema de identidad." } ####################################################### ## CONTAINER VIEW - IdentityArchitecture ####################################################### container authSystem "containers_identity" { include * autolayout lr title "Contenedores - IdentityArchitecture" description "Muestra los contenedores principales dentro de la arquitectura de identidad." } ####################################################### ## CONTAINER VIEW - ActiveDirectory ####################################################### container ad "containers_ad" { include * autolayout lr title "Contenedores - ActiveDirectory" description "Muestra los contenedores del sistema ActiveDirectory incluyendo persistencia." } ####################################################### ## CONTAINER VIEW - Directory389 ####################################################### container ds389 "containers_ds389" { include * autolayout lr title "Contenedores - Directory389" description "Muestra los contenedores del sistema Directory389 incluyendo persistencia." } ####################################################### ## CONTAINER VIEW - SambaServer ####################################################### container samba "containers_samba" { include * autolayout lr title "Contenedores - SambaServer" description "Muestra los contenedores del servidor Samba incluyendo persistencia." } ####################################################### ## DEPLOYMENT VIEW - Kubernetes Infrastructure ####################################################### deployment authSystem "k8s" "k8s_deployment" { include * autolayout lr title "Despliegue en Kubernetes" description "Muestra cómo se despliegan los contenedores en el clúster de Kubernetes." } ####################################################### ## ESTILOS ####################################################### styles { element "Person" { shape person background #f9f5e7 color #222222 } element "Software System" { shape roundedBox background #ffffff color #000000 } element "Container" { shape component background #e8f4ff color #0b3c5d } element "Identity" { background #d1e7ff color #000000 border solid } element "AD" { background #0b3c5d color #ffffff border solid } element "LDAP" { background #38761d color #ffffff border solid } element "Samba" { background #bf9000 color #000000 border solid } element "Apps" { background #8e7cc3 color #ffffff border solid } element "Infra" { background #eef7f1 color #1b5e20 border dashed } relationship "*" { color #555555 } relationship "Despliega" { color #0066cc } relationship "Almacena datos" { color #009900 } relationship "Administra clúster" { color #cc6600 } relationship "Controla estado del clúster" { color #cc6600 } relationship "Almacena configuración" { color #cc6600 } } } } # workspace