Variablen und Secrets

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_URL und DATABASE_HOST/PORT/USER/PASSWORD/NAME, REDIS_URL, CLICKHOUSE_DATABASE_URL, Storage-Keys sowie RAILYARD_HOSTNAME, RAILYARD_URL, RAILYARD_PRIVATE_URL.
  • Auf einen anderen Dienst verweisen mit ${{api.RAILYARD_PRIVATE_URL}} — pro Umgebung aufgelöst. RAILYARD_PRIVATE_URL ist http://<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.