Antes de empezar
Terminaste el tutorial del primera plantilla de código o conoces lo básico del manifiesto y de la CLI.
Un plan con margen para la aplicación y las bases de datos. Esta plantilla necesita al menos 512 MB para la aplicación, 1.024 MB para Postgres y 512 MB para Redis, es decir, 2.048 MB en el caso más grande. La memoria de cada servicio sale del total del plan, consulta Planes y límites.
Solo el propietario de un workspace puede desplegar una plantilla en él. Un miembro ve las plantillas y usa los stacks que ya existen.
Paso a paso
1
Decide qué cambia cada respuesta
Anota primero las preguntas y lo que activa cada respuesta. Esta tabla es el diseño del manifiesto:
No hay un lenguaje de expresiones en el manifiesto. Tienes dos herramientas:
sets en una opción, que cambia varias cosas a la vez, y when, que es una igualdad sobre una pregunta anterior. Usa sets cuando una elección cambia más de un servicio o variable, como hace storage, y when para un simple sí/no.2
Escribe el código que lee el entorno
La aplicación nunca construye una dirección: lee variables y los archivos de certificado a los que apunta el manifiesto. Crea Añade
src/storage.js (el resto de la aplicación es tuyo):src/storage.js
pg, ioredis y better-sqlite3 a src/package.json, y un pequeño src/server.js que escuche en PORT y responda a /healthz. Como una base de datos desactivada deja sus variables vacías (la plataforma no las escribe), el código puede saber qué servicios existen comprobando la variable.3
Escribe el manifiesto
vertracloud.template.yaml
setsen las opciones.services: { db: "off" }elimina la base de datos en la opción SQLite;env: { app: ... }añade variables al servicio cuyo id esapp. Gana la última opción elegida cuando varias definen lo mismo, ysetstambién puede añadir memoria conram_extra.whenen una pregunta.cache_ttlsolo se pregunta, y solo se valida, cuandocacheestrue. Unwhensolo puede apuntar a una pregunta que venga antes, yequalsdebe coincidir con el tipo de esa pregunta (truepara un booleano, uno de los valores de las opciones para una elección).whenen un servicio. El serviciocachesolo se crea cuandocacheestrue.dbno tienewhenporque elsetsdestorageya lo controla: un servicio acepta una sola condición, así que elige un mecanismo por servicio.- Placeholders.
{{services.db.host}}y los demás leen del servicio cuyo id esdb. Un placeholder que apunta a un servicio desactivado se resuelve como vacío y la variable no se escribe, de modo que la aplicación nunca ve una configuración a medias.
4
Conoce lo que rellena la plataforma
Para un servicio de base de datos, están disponibles estos placeholders:
Los archivos de certificado viven en
/app/.vertra/certs/<database_id>/, los escribe la plataforma antes del primer arranque de la aplicación y se mantienen sincronizados cuando restableces una contraseña o un certificado. Las bases de datos de la plataforma siempre exigen TLS y un certificado de cliente; una contraseña sola nunca conecta, por eso el manifiesto pasa las tres rutas. Los placeholders de un servicio de aplicación son {{services.<id>.url}} y .domain, y {{app.url}} y {{app.domain}} dan la dirección del servicio que los está leyendo. Consulta Conecta la aplicación a las bases de datos del stack para ver la misma información desde el lado del usuario, con código para otros lenguajes y drivers.Un output también puede usar placeholders, pero
{{secret:<n>}} no se permite ahí. Para mostrar una sola vez un secreto generado, decláralo en secrets e imprime {{secrets.<name>}} con secret: true y once: true.5
Valida
db en un solo sitio y obtendrás unknown_service; apunta cache_ttl a una pregunta declarada después de ella y obtendrás invalid_when; pon equals: "yes" en un booleano y obtendrás invalid_when (“must be true or false”). Déjalos como estaban y vuelve a ejecutarlo.6
Crea la plantilla y despliega las dos variantes
/healthz. Cada despliegue es un job con una clave de idempotencia, y un fallo deshace todo lo que creó.Abre la dirección de cada aplicación y recarga: el contador sube en ambas. Después ejecuta vertra stack list y vertra stack get <id> para ver los miembros, las conexiones entre ellos y la plantilla del que procede el stack.7
Convive con el stack
La página del stack lista cómo está conectada cada variable de la aplicación a cada base de datos, y el panel Cómo conectarte muestra código para el lenguaje del usuario. Cuando se restablece la contraseña o el certificado de una base de datos, se recalculan las variables y los archivos de certificado de la aplicación y esta necesita un reinicio, que el panel y la API anuncian. Cuando publicas una nueva versión de la plantilla,
vertra stack update <id> --check muestra qué cambiaría antes de que te comprometas. Consulta Stacks y Actualizaciones y rollback.Solución de problemas
Próximos pasos
- Stacks para autores de plantillas: servicios y conexiones.
- Placeholders y preguntas: todos los placeholders y todos los tipos de pregunta.
- Requisitos y plan: cómo la suma de los servicios determina el plan.
- Referencia del manifiesto:
sets,when,ram_extray los campos de base de datos. - Ajustes de despliegue: por qué el software que migra su base de datos necesita rollback con datos.
- Siguiente tutorial: una plantilla cerrada para un cliente.