Despliegue de Rebase en Microsoft Azure
Microsoft Azure ofrece integraciones estrechas y cumplimiento normativo empresarial. La arquitectura óptima para ejecutar Rebase en Azure utiliza Azure Database for PostgreSQL – Flexible Server para la capa de datos y Azure Container Apps para el runtime.
Para cumplir con las normativas europeas de datos y obtener tiempos de respuesta locales rápidos, aprovisiona tus recursos en regiones como West Europe (Ámsterdam), North Europe (Irlanda) o France Central (París).
Nada en esta página es específico de Azure respecto a tu proyecto. Un despliegue de Rebase consta de dos partes separables: la imagen de runtime publicada y el bundle que genera rebase build, y el mismo bundle se ejecuta bajo Docker Compose en una portátil, en Rebase Cloud, bajo el Helm chart y aquí.
1. Aprovisionar PostgreSQL Flexible Server
Sección titulada «1. Aprovisionar PostgreSQL Flexible Server»- Desde Azure Portal, busca y selecciona Azure Database for PostgreSQL servers.
- Haz clic en Create y selecciona Flexible Server.
- Elige tu Resource Group y establece tu región de la UE preferida.
- Selecciona el tamaño de Compute (por ejemplo, General Purpose, o Burstable
B2spara despliegues más pequeños). - Configura la pestaña Authentication con un nombre de usuario administrador y una contraseña segura.
- En Networking, asegúrate de que la opción “Allow public access from any Azure service within Azure to this server” esté marcada para que tu Container App pueda conectarse, o bien configura una VNet segura.
- Toma nota del nombre de tu servidor y construye la URI de conexión:
postgresql://your_admin:YOUR_PASSWORD@your-server-name.postgres.database.azure.com:5432/postgres
Si tus colecciones declaran una propiedad vector, habilita la extensión una vez: Azure la restringe tras el parámetro de servidor azure.extensions, y luego ejecuta CREATE EXTENSION vector;.
2. Compilar el bundle e integrarlo en una imagen
Sección titulada «2. Compilar el bundle e integrarlo en una imagen»No hay ninguna imagen de aplicación que compilar a partir de tu código fuente. rebase build genera un directorio dist-bundle con tus colecciones compiladas, funciones, crons y, si tu proyecto declara una app estática, tu frontend compilado. La imagen de runtime publicada lo ejecuta:
rebase buildContainer Apps descarga desde un registro, así que integra el bundle en una imagen derivada. Tres líneas, y fija exactamente lo que se ejecuta:
FROM rebasepro/server:0.24.0COPY dist-bundle /bundle- Crea un Container Registry en la región de la UE que hayas elegido.
- Inicia sesión desde tu CLI:
az acr login --name YourRegistryName
- Compila y haz push, desde la raíz del proyecto:
docker build -t yourregistryname.azurecr.io/rebase-backend:latest .docker push yourregistryname.azurecr.io/rebase-backend:latest
Actualizar Rebase más adelante consiste solo en cambiar esa línea FROM. Tu bundle no se modifica.
3. Desplegar la Container App
Sección titulada «3. Desplegar la Container App»Azure Container Apps proporciona un entorno de contenedores serverless con ingress HTTPS integrado.
- Busca Container Apps en el portal y haz clic en Create.
- Crea un nuevo Container Apps Environment en tu región de la UE.
- En la pestaña Container, apunta a tu registro ACR y selecciona la imagen
rebase-backend:latest. - Configura las Variables de entorno:
| Nombre | Valor |
|---|---|
DATABASE_URL |
Tu cadena de conexión de Azure Postgres |
JWT_SECRET |
Una cadena aleatoria segura de más de 32 caracteres |
REBASE_SERVICE_KEY |
Una cadena aleatoria segura de más de 32 caracteres |
NODE_ENV |
production |
CORS_ORIGINS |
Tu dominio de frontend (p. ej., https://yourdomain.com) |
FRONTEND_URL |
La URL de tu frontend (utilizada para enlaces de correo y fallback de CORS) |
DISABLE_SELF_REGISTRATION |
true |
REBASE_ADMIN_EMAIL |
La dirección del primer administrador, configurada antes del primer inicio |
REBASE_ADMIN_PASSWORD |
Al menos 12 caracteres |
Las últimas tres son la forma en que este despliegue obtiene un administrador: en producción, la primera cuenta que se registra no es promovida, por lo que nada más genera el primer usuario autenticado. Consulta Tu primer admin. Almacena los secretos como secretos de Container Apps y haz referencia a ellos, en lugar de dejarlos como valores de entorno en texto plano.
- En la pestaña Ingress, habilita ingress.
- Establece el Target Port en 8080 — el puerto en el que escucha la imagen de runtime a menos que
PORTindique lo contrario. - Dirige el health probe a
/livez. No a/health: ese realiza un viaje de ida y vuelta a la base de datos (round-trip), por lo que un liveness probe sobre él reiniciará un contenedor en buen estado ante una pequeña interrupción momentánea de la base de datos. - Completa la creación. Azure aprovisionará el contenedor y te proporcionará una URL de aplicación protegida con TLS.
4. El esquema
Sección titulada «4. El esquema»El runtime crea las tablas faltantes al iniciar, incluidas las de tus colecciones. REBASE_MIGRATE_ON_BOOT tiene como valor predeterminado ensure, que es aditivo en todo el esquema: crea las tablas, columnas y tipos enum faltantes y aplica su seguridad a nivel de fila (RLS), por lo que el primer inicio frente a un servidor vacío arranca sirviendo tus colecciones.
Lo que ensure nunca hace es cambiar algo que ya existe: no altera el tipo de una columna, no elimina nada ni edita las etiquetas de un enum existente, ya que el reinicio de un contenedor no debe remodelar un esquema como efecto secundario de un despliegue.
Por lo tanto, todavía queda una cosa que requiere la CLI, ejecutada desde una copia del repositorio o un trabajo de CI con DATABASE_URL apuntando a tu Flexible Server (añade una regla de firewall que permita tu IP de cliente si es necesario):
rebase db pushCualquier cambio que no sea puramente aditivo: una columna renombrada, un tipo más restringido o un campo eliminado.
La imagen de runtime se distribuye sin la CLI, por lo que esto nunca se ejecuta dentro del contenedor. Para migraciones versionadas, haz commit de los archivos de migración con rebase db generate y ejecuta rebase db migrate como un paso de release en su lugar.
Almacenamiento de archivos
Sección titulada «Almacenamiento de archivos»Las réplicas de Container Apps no tienen disco duradero, por lo que el almacenamiento local de archivos implica una pérdida silenciosa de datos y el runtime lo rechaza en producción. Crea una cuenta de Azure Storage y utiliza su interfaz compatible con S3, o un bucket compatible con S3 en la misma región, con STORAGE_TYPE=s3 — consulta Storage.
Próximos pasos
Sección titulada «Próximos pasos»- Deployment — la lista de verificación de producción y las reglas del primer admin comunes a todas las plataformas.
- Configuration — todas las variables de entorno que lee el runtime.