Referencias entre servicios
Las referencias permiten que un servicio lea los valores de otro servicio o addon sin copiar y pegar credenciales. Mantienen cada valor en un solo lugar; los consumidores recogen los cambios en su siguiente despliegue.
Sintaxis
${{<name>.<KEY>}}<name>— el nombre del servicio o addon de destino (el que se muestra en el dashboard y se usa enlizard add -n).<KEY>— una clave en el entorno combinado del destino.
Úsalas en cualquier lugar donde se acepte un valor; lo más habitual es en un secreto:
lizard secrets set DATABASE_URL='${{postgres.DATABASE_URL}}' --service apiCómo se resuelven
- Las referencias se resuelven en el momento del despliegue usando el entorno combinado del destino.
- Coinciden con el nombre actual del destino. Cambiar el nombre del destino las rompe; actualiza cada
${{oldname.KEY}}después de un cambio de nombre. - Una referencia a un destino o clave inexistente se resuelve como una cadena vacía: no hace fallar el despliegue. El log de compilación muestra un aviso por cada referencia vacía, con el motivo.
- Solo las referencias circulares producen un error.
Después de conectar una referencia, busca referencias vacías en el log de compilación:
lizard logs --build --service api
Si una referencia no aparece como esperas, consulta Solución de problemas → no aparece un secreto o referencia.
Patrones habituales
Conecta un addon a varios servicios: vincúlalo en cada consumidor; usa la URL privada dentro del proyecto:
lizard secrets set REDIS_URL='${{redis.REDIS_PRIVATE_URL}}' --service api
lizard secrets set REDIS_URL='${{redis.REDIS_PRIVATE_URL}}' --service workerHaz referencia al valor de otro servicio: por ejemplo, comparte una URL calculada o un token. LIZARD_PUBLIC_DOMAIN es un hostname sin más y existe cuando el servicio tiene un dominio; LIZARD_PRIVATE_DOMAIN (<name>.lizard.internal) llega al servicio dentro del proyecto:
lizard secrets set UPSTREAM_URL='https://${{api.LIZARD_PUBLIC_DOMAIN}}' --service web
lizard secrets set INTERNAL_API='http://${{api.LIZARD_PRIVATE_DOMAIN}}:8080' --service webHaz referencia a un segundo addon del mismo tipo: usa su nombre generado:
lizard secrets set CACHE_URL='${{redis-winter-otter.REDIS_URL}}' --service api¿Por qué no usar simplemente --global?
Poner un valor compartido en el ámbito del proyecto (--global) lo expone a todos los servicios, incluidos los que no lo necesitan. Una referencia mantiene el valor en un solo lugar y lo vincula solo donde lo configuras. Ten en cuenta que los valores DATABASE_URL y REDIS_URL de cada addon de Postgres y Redis en marcha llegan a todos los servicios de todos modos, con la precedencia más baja; una referencia los sobrescribe. Consulta Alcance de secretos.
Ver también
- Variables y secretos — ámbitos y precedencia.
lizard secrets— la referencia completa de comandos.
Actualizado