VariablesReferencias entre servicios

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 en lizard 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 api

Có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 worker

Haz 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 web

Haz 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

Actualizado