Fundaia

Entrar Empezar

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, api la 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.

ProveedorLo que recibe el consumidor
Componente del catálogoExactamente 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 datosLo 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.