Перекрёстные ссылки
Ссылки позволяют сервису читать значения другого сервиса или аддона без копирования учётных данных. Они хранят каждое значение в одном месте; потребители подхватывают изменения при следующем деплое.
Синтаксис
${{<name>.<KEY>}}<name>— имя целевого сервиса или аддона (то, что показано в дашборде и используется вlizard add -n).<KEY>— ключ в объединённом окружении цели.
Используйте их везде, где принимается значение — чаще всего в секрете:
lizard secrets set DATABASE_URL='${{postgres.DATABASE_URL}}' --service apiКак они разрешаются
- Ссылки разрешаются во время деплоя против объединённого окружения цели.
- Они сопоставляются с текущим именем цели. Переименование цели ломает их; после переименования обновите каждую
${{oldname.KEY}}. - Ссылка на отсутствующую цель или ключ разрешается в пустую строку — она не проваливает деплой. В логе сборки для каждой пустой ссылки выводится предупреждение с указанием причины.
- Ошибку выдают только циклические ссылки.
После настройки ссылки проверьте в логе сборки, нет ли пустых:
lizard logs --build --service api
Если ссылка не отображается так, как ожидалось, см. Устранение неполадок → секрет или ссылка не отображается.
Типичные сценарии
Подключить аддон к нескольким сервисам — привяжите на каждом потребителе; внутри проекта используйте приватный URL:
lizard secrets set REDIS_URL='${{redis.REDIS_PRIVATE_URL}}' --service api
lizard secrets set REDIS_URL='${{redis.REDIS_PRIVATE_URL}}' --service workerСсылаться на значение другого сервиса — например, делиться вычисленным URL или токеном. LIZARD_PUBLIC_DOMAIN — это просто имя хоста, и он существует, когда у сервиса есть домен; LIZARD_PRIVATE_DOMAIN (<name>.lizard.internal) обеспечивает доступ к сервису внутри проекта:
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Ссылаться на второй аддон того же типа — используйте его сгенерированное имя:
lizard secrets set CACHE_URL='${{redis-winter-otter.REDIS_URL}}' --service apiПочему не просто --global?
Размещение общего значения в области проекта (--global) раскрывает его для каждого сервиса, включая те, которые ему не нужны. Ссылка хранит значение в одном месте и привязывает его только там, где вы её задали. Учтите, что DATABASE_URL и REDIS_URL каждого запущенного аддона Postgres и Redis в любом случае попадают в каждый сервис с самым низким приоритетом; ссылка их переопределяет. См. Область видимости секретов.
См. также
- Переменные и секреты — области и приоритеты.
lizard secrets— полный справочник команд.
Обновлено