Variablen und Secrets
Variablen setzen, auf andere Dienste verweisen und Konfiguration über Apps hinweg teilen.
- Eine Variable setzen unter Variables bei der App oder auf dem Canvas. Werte werden verschlüsselt und beim nächsten Deploy angewendet.
- Provisionierte Dienste injizieren ihre eigenen:
DATABASE_URLundDATABASE_HOST/PORT/USER/PASSWORD/NAME,REDIS_URL,CLICKHOUSE_DATABASE_URL, Storage-Keys sowieRAILYARD_HOSTNAME,RAILYARD_URL,RAILYARD_PRIVATE_URL. - Auf einen anderen Dienst verweisen mit
${{api.RAILYARD_PRIVATE_URL}}— pro Umgebung aufgelöst.RAILYARD_PRIVATE_URListhttp://<name>.railyard.internal:<port>; es funktioniert zwischen Apps auf demselben Server immer, und zwischen Apps auf unterschiedlichen Servern des Teams, sobald das private Netzwerk aktiviert ist. - Geteilte Konfiguration (Team → Shared config) ist in jeder App als
${config.KEY}verfügbar. - Dokumentierte Variablen, die die App auflistet (z. B.
MAIN_DB_HOST,DB_USERNAME,PGHOST,BIND_ADDRESS,APP_URL), werden automatisch aus den obigen Diensten befüllt; Secrets, die der App gehören (SECRET_KEY_BASE,APP_KEY,JWT_SECRET…), werden einmalig generiert. Keys von Drittanbietern werden niemals erfunden.
Datei-Secrets
Manche Secrets müssen eine Datei sein, keine Variable: ein Service-Account-JSON, ein Client-Zertifikat. Füge sie unter Variables → File secrets mit einem Namen und dem Inhalt hinzu (bis zu 64 KB). Jedes wird verschlüsselt gespeichert und read-only im Container unter /etc/railyard/secrets/<name> eingebunden, mit dem Pfad zusätzlich als RAILYARD_SECRET_FILE_<NAME> verfügbar, sodass GOOGLE_APPLICATION_CREDENTIALS=${RAILYARD_SECRET_FILE_GCP_KEY_JSON} ohne weitere Schritte aufgelöst wird. Das Entfernen eines Secrets wirkt sich beim nächsten Deploy aus.