Kubernetes self-managed
Despliega Lamassu en tu propio clúster Kubernetes con Helm o Fastlane.
Despliegue self-managed con Kubernetes
Lamassu IoT puede desplegarse en infraestructura propia mediante Kubernetes, tanto en clústeres gestionados internamente como en entornos self-managed.
La referencia principal para este despliegue es el repositorio lamassu-helm, que incluye:
- el chart principal de Lamassu
- un chart auxiliar de SoftHSM
- el script de despliegue automatizado
scripts/lamassu-fast-lane.sh
Quickstart
Si lo que necesitas es levantar un entorno funcional lo antes posible, la vía más rápida es usar Fastlane desde el repositorio lamassu-helm:
git clone https://github.com/lamassuiot/lamassu-helm.git
cd lamassu-helm
./scripts/lamassu-fast-lane.sh -n -ns lamassu-dev -d dev.lamassu.io -l ./charts/lamassuEse flujo:
- crea o reutiliza el namespace indicado
- instala PostgreSQL, Keycloak y RabbitMQ
- despliega el chart de Lamassu
- deja la UI expuesta en
https://<dominio>
Si buscas un despliegue productivo o más controlado, sigue con la instalación manual mediante Helm que se describe más abajo.
Qué se despliega
El chart principal charts/lamassu, actualmente en la serie 3.7.x, despliega estos componentes:
uicavakmsdevice-managerdms-manageralerts- recursos de Gateway API y políticas de Envoy Gateway
- job de migraciones de base de datos
Requisitos previos
- Clúster Kubernetes
1.19+ kubectlconfigurado con acceso al clúster- Helm
3.2.0+ cert-manager 1.14+para la gestión de certificados cuando se usatls.type=certManagerEnvoy Gateway 1.3.0+, ya que el chart publica servicios mediante Gateway API y no mediante Ingress- Acceso a un registro de contenedores o imágenes previamente importadas si se trabaja en modo offline
- Almacenamiento persistente disponible para PostgreSQL, RabbitMQ, VA y KMS
Opciones de despliegue
Hay dos formas de desplegar Lamassu on-prem:
1. Despliegue manual con Helm
Es la opción recomendada para entornos productivos o controlados, donde PostgreSQL, RabbitMQ, Keycloak, certificados y direccionamiento del Gateway ya están definidos por el equipo de plataforma.
2. Despliegue automatizado con Fastlane
Es la opción más útil para pruebas, demos, CI o bootstrap rápido de un entorno. Fastlane levanta PostgreSQL, Keycloak, RabbitMQ y Lamassu en un único flujo. Su comportamiento está documentado en la página siguiente.
Arquitectura
Lamassu IoT se despliega como un conjunto de microservicios Kubernetes independientes. El chart principal crea Deployment, StatefulSet, Service, ConfigMap, HTTPRoute, Gateway, certificados y recursos auxiliares según los valores definidos.
Dependencias externas requeridas por el chart principal:
- PostgreSQL
- RabbitMQ
- proveedor OIDC, típicamente Keycloak
El chart no instala estas dependencias por sí solo. Para un despliegue manual hay que provisionarlas antes. Si se busca un entorno funcional rápido para laboratorio o validación, el script Fastlane sí instala PostgreSQL, RabbitMQ y Keycloak además del chart de Lamassu.
Instalación manual con Helm
Agregar el repositorio Helm:
helm repo add lamassu https://lamassuiot.github.io/lamassu-helm
helm repo updateO instalar desde una copia local del repositorio:
helm install lamassu ./charts/lamassu -n lamassu --create-namespace -f values.yamlValores mínimos que deben definirse
Los valores por defecto del chart son deliberadamente incompletos para dependencias externas. Como mínimo, un despliegue manual debe definir:
postgres.hostname,postgres.username,postgres.passwordamqp.hostname,amqp.username,amqp.passwordauth.oidc.frontend.authorityauth.oidc.apiGateway.jwksservices.authz.jwkUrly un principal de bootstrap que coincida con un administrador realservices.ca.domainsgateway.addresseso una estrategia equivalente de publicación según el clústertls.*según se usecertManagero certificado externo
Ejemplo base:
postgres:
hostname: postgresql
port: 5432
username: lamassu
password: change-me
amqp:
hostname: rabbitmq
port: 5672
username: lamassu
password: change-me
tls: false
tls:
type: certManager
certManagerOptions:
issuer: downstream-ca-selfsigned-issuer
certSpec:
commonName: pki.example.internal
hostnames:
- pki.example.internal
addresses:
- 10.0.0.20
gateway:
addresses:
- 10.0.0.20
ports:
http: 80
https: 443
extraRouting:
- path: /auth
name: auth
target:
host: auth-keycloak
port: 8080
auth:
oidc:
frontend:
clientId: frontend
authority: https://pki.example.internal/auth/realms/lamassu
apiGateway:
jwks:
- name: oidc-authn
uri: http://auth-keycloak.lamassu/auth/realms/lamassu/protocol/openid-connect/certs
authorization:
rolesClaim: realm_access.roles
roles:
admin: pki-admin
services:
ca:
domains:
- pki.example.internal
authz:
jwkUrl: http://auth-keycloak.lamassu/auth/realms/lamassu/protocol/openid-connect/certs
bootstrap:
- principal_id: "oidc:pki-admin"
principal_name: "PKI Admin"
principal_type: "oidc"
policy_ids:
- "lamassu.a6811b60-5f89-4ce7-badb-78ea234794d3"
auth_config:
claims:
- claim: realm_access.roles
operator: contains
value: pki-adminProvisiona el primer administrador
No hay un superusuario implícito. Antes de instalar, crea el rol pki-admin en el proveedor OIDC y asígnalo al grupo que administrará Lamassu. El principal del ejemplo concede la política SUPER ADMIN a cualquier token que contenga ese rol.
El Job pre-install y pre-upgrade prepara las bases de datos, ejecuta las migraciones de authz, precarga las políticas y aplica services.authz.bootstrap antes de que arranquen los Deployments. El bootstrap es idempotente: conserva los principales existentes y añade únicamente los grants que falten.
Valida el acceso antes de exponer la plataforma
Si ningún token coincide con un principal activo, nadie podrá administrar la PKI. Prueba una identidad autorizada y otra denegada, y conserva un procedimiento de recuperación.
Consulta Control de acceso para diseñar principales y políticas.
Áreas de configuración más relevantes
- TLS:
tls.type,tls.certManagerOptions.*ytls.externalOptions.secretNamecontrolan el certificado downstream del Gateway. - Gateway:
gateway.addresses,gateway.ports.*ygateway.extraRoutingpublican la UI y las APIs mediante Envoy Gateway. - Persistencia:
postgres.*define la conexión a PostgreSQL. - Mensajería:
amqp.*configura la conexión a RabbitMQ. - Identidad y autorización:
auth.oidc.*,services.authz.jwkUrlyservices.authz.bootstrapconfiguran login, validación JWT y permisos iniciales. - Autoridades:
services.ca.domainsestablece los dominios autorizados para CA y certificados. - Claves:
services.kms.cryptoEngines.*configura los motores criptográficos y su almacenamiento. - Alertas:
services.alerts.smtp_server.*prepara el envío de correo.
Verificación del despliegue
El chart incluye una prueba Helm en charts/lamassu/templates/tests/test-connections.yml. Tras instalarlo, puede validarse con:
helm test lamassu -n lamassuLa prueba comprueba al menos:
- salud de
ca - salud de
dms-manager - salud de
device-manager - salud de
va - respuesta HTML esperada del servicio
ui
Repositorio Helm
El repositorio lamassu-helm está organizado en tres bloques principales:
charts/lamassu: chart principal de Lamassucharts/softhsm: chart opcional para laboratorios o escenarios de integración con PKCS#11 emuladoscripts/lamassu-fast-lane.sh: automatización para levantar dependencias y desplegar Lamassu con intervención mínima
SoftHSM como complemento opcional
El chart charts/softhsm no forma parte del despliegue estándar, pero resulta útil en entornos de laboratorio cuando se necesita simular un HSM compatible con PKCS#11. No sustituye al backend KMS principal; sirve como soporte para pruebas o integraciones concretas.
Versionado y migraciones
La versión actual del chart en el repositorio es 3.8.0. Para upgrades entre versiones, consulta las guías de charts/lamassu/CHANGELOG/ y revisa especialmente las migraciones de base de datos y el bootstrap de authz.