Conexiones
Conectar un servicio (el consumidor) a otro (el proveedor) escribe en el consumidor las variables que necesita para alcanzarlo, como referencias y nunca como copias. En la web es clic derecho sobre el nodo, Conectar con…; en la terminal:
fundaia connectable tienda api # a qué podría conectarse
fundaia connect tienda api Postgres
✔ api → Postgres
DATABASE_URL apunta a Postgres
+ DATABASE_URL
+ PGHOST
El consumidor se vuelve a desplegar con sus variables nuevas si estaba en marcha.
Referencias, no copias
En api queda DATABASE_URL = ${{ Postgres.DATABASE_URL }}, no la cadena de conexión. Eso tiene dos consecuencias:
- Si se rota la contraseña del Postgres,
apila recibe en su siguiente despliegue sin tocar nada. - La flecha del lienzo sale de esas referencias. No hay una tabla aparte de «quién está conectado con quién», así que el dibujo no puede desmentir lo que recibe el contenedor.
Una cadena copiada a mano caduca en cuanto cambia la contraseña, y no dibuja ninguna flecha.
Qué recibe el consumidor
Lo decide el servidor según el tipo de proveedor; el CLI y la web solo piden la conexión.
| Proveedor | Lo que recibe el consumidor |
|---|---|
| Componente del catálogo | Exactamente las claves que exporta; ver la tabla de componentes |
| Otra aplicación | <NOMBRE>_URL y <NOMBRE>_HOST, con la dirección interna |
| Otra base de datos | Lo que exporte y parezca una conexión (*_URL, *_URI, *_DSN, *_HOST, *_PORT, *_ENDPOINT) |
Entre dos aplicaciones
Para una aplicación hay que componer la dirección, y para eso hace falta su puerto. La plataforma escribe un PORT en el proveedor (solo si no tiene ya uno) y lo referencia desde el consumidor:
API_URL = http://api:${{ Api.PORT }}
API_HOST = api
El host es el nombre del servicio en la red del proyecto. Si el proveedor cambia de puerto, cambias una variable y sus consumidores le siguen.
Al crear un servicio
Se puede cablear en el mismo gesto que lo crea, y así su primer despliegue ya tiene las variables:
fundaia new tienda api --repo tuusuario/mi-api --connect-to Postgres,Bucket
Si el cableado falla, el servicio queda creado y el error dice qué conexión no se pudo hacer.
Desconectar
fundaia disconnect tienda api Postgres
Quita del consumidor las referencias a ese proveedor y las direcciones que la conexión inventó para él (API_URL, API_HOST). Un valor que escribiste tú a mano se queda, aunque se llame igual.
Mientras un servicio tenga consumidores no se puede borrar; desconéctalos antes.