Acerca de Provisioning
Una plataforma de infraestructura como código que gestiona el ciclo de vida completo (proveedores en la nube, servicios de infraestructura, clústeres y workspaces aislados) a partir de declaraciones tipadas, en entornos en la nube y locales.
Qué es
Provisioning es una plataforma declarativa de orquestación de infraestructura. Describes los servidores, los servicios instalados en ellos y los clústeres que forman como esquemas Nickel; la plataforma valida esa descripción, resuelve sus dependencias y la lleva a cabo en el proveedor que elijas.
Combina tres capas: Nickel para la configuración tipada, Nushell para la orquestación como canalizaciones de datos estructurados y Rust para los servicios donde cuenta el rendimiento: el orquestador, el Control Center, el servicio de vault y los demonios de la plataforma.
Funciona de forma interactiva, como CLI sin interfaz para la automatización con scripts o de forma desatendida en canalizaciones de CI/CD; y en modo individual toda la arquitectura corre en la máquina de un solo operador.
Qué hace
- ▸ Aprovisiona servidores, redes y almacenamiento en proveedores en la nube e infraestructura local.
- ▸ Instala servicios de tarea: entornos de contenedores, Kubernetes, red, almacenamiento, bases de datos y observabilidad.
- ▸ Despliega clústeres completos con coordinación entre nodos y gestión de dependencias.
- ▸ Resuelve una configuración jerárquica: valores por defecto, de usuario, de workspace, de infraestructura y de ejecución.
- ▸ Ejecuta flujos por lotes con ejecución en paralelo, recuperación desde puntos de control y vuelta atrás.
- ▸ Mantiene los secretos cifrados con SOPS y Age, entregados a los servicios solo a través del vault.
Conceptos fundamentales
Seis piezas, cada una declarada en Nickel.
Proveedores
Los backends que crean y destruyen recursos: API en la nube, máquinas virtuales locales, Docker o servidores físicos. Implementan una interfaz común, de modo que el código de infraestructura sigue siendo portable.
Servicios de tarea
Componentes reutilizables que se instalan en los servidores (containerd, Kubernetes, Cilium, PostgreSQL, Prometheus y más), cada uno con versiones, dependencias declaradas, comprobaciones de salud y su propio esquema.
Clústeres
Despliegues completos que combinan servidores y servicios de tarea: un plano de control de Kubernetes de alta disponibilidad con nodos de trabajo, CNI y almacenamiento, o una base de datos replicada con copias de seguridad.
Catálogo
La biblioteca de proveedores, componentes y clústeres que la plataforma compone. Cada componente lleva un manifiesto validado contra un contrato común, distribuido como artefacto OCI direccionado por contenido.
Workspaces
Entornos aislados para proyectos o etapas, cada uno con sus definiciones de infraestructura, su configuración y su estado de ejecución, que se cambian con una sola orden.
Flujos
Operaciones coordinadas (de servidor, de servicio de tarea, de clúster y por lotes) ejecutadas como un grafo de dependencias tipado, en paralelo cuando es posible y con seguimiento del progreso.
Lo que nunca cambia
Cuatro invariantes se cumplen en toda la plataforma. No son recomendaciones: se aplican desde el esquema hasta la ejecución.
Siempre configuración
Nada se fija en el código. Los argumentos de ejecución prevalecen sobre el entorno, que prevalece sobre la configuración de usuario, de infraestructura y por defecto.
Tipos antes de ejecutar
Toda la configuración de infraestructura es un esquema Nickel. TOML y YAML son salida generada; cada cambio se valida en el esquema antes de llegar a un sistema en marcha.
Límites estrictos entre servicios
Seis límites con seis capas de aplicación: las API de proveedor solo en el orquestador, SSH solo en el orquestador y en el servicio de máquinas, la autorización solo en el Control Center y los secretos solo a través del vault.
Proveedores como interfaz
Un proveedor es una interfaz enchufable. Añadir uno consiste en implementarlo en el catálogo, nunca en cambiar la plataforma.
Ver la plataforma completa
Los servicios de la plataforma, el modelo de extensiones y la tecnología que hay debajo, en un solo lugar.