Ir al contenido

Load Balancer

POST /v1/load-balancers/{id}/backends · scope lb:write · reversible · idempotente

Atajo sobre PUT /listeners para el caso frecuente de sumar una máquina. Revalida y aplica la configuración completa, así que hereda la misma garantía: o el destino queda recibiendo tráfico, o no cambió nada.

Ventana de terminal
curl https://api.truo.cloud/v1/load-balancers/svc_10432/backends \
-X POST \
-H "Authorization: Bearer $TRUO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"listener":"<listener>","ip":"<ip>","port":1}'

operationId: lb.backends.create

DELETE /v1/load-balancers/{id}/backends/{listener}/{ip}/{port} · scope lb:write · destructiva — no tiene vuelta atras · idempotente

Los tres valores que identifican al destino van en la ruta. El backend los espera en el cuerpo de un DELETE, cosa que proxies y CDNs descartan y que varios clientes HTTP no mandan; el cuerpo se arma de este lado.

Un listener no puede quedarse sin destinos. Quitar el último devuelve 400 validation_failed: para eliminar el listener entero usá PUT /listeners sin él.

Ventana de terminal
curl https://api.truo.cloud/v1/load-balancers/svc_10432/backends/web/10.0.0.5/8080 \
-X DELETE \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: lb.backends.delete

GET /v1/load-balancers/{id}/backends · scope lb:read

Los destinos de todos los listeners, aplanados, cada uno con el listener al que pertenece. Es una vista sobre la misma configuración que devuelve GET /listeners.

Ventana de terminal
curl https://api.truo.cloud/v1/load-balancers/svc_10432/backends \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: lb.backends.list

GET /v1/load-balancers/{id} · scope lb:read

Consulta el control plane, que a su vez sondea el balanceador. Si no responde, los campos de estado vuelven en null en vez de fallar.

Ventana de terminal
curl https://api.truo.cloud/v1/load-balancers/svc_10432 \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: lb.instances.get

GET /v1/load-balancers · scope lb:read

Sale de la base, sin consultar el control plane: provisioning_state, healthy y listener_count vienen en null. Traerlos costaría una llamada por elemento de la página.

Una página puede venir con menos elementos que el limit aunque haya más: todos los productos del control plane comparten un mismo módulo de aprovisionamiento, así que el filtro por familia solo puede aplicarse después de leer la página. has_more sigue siendo la señal correcta de si queda algo por traer.

Ventana de terminal
curl https://api.truo.cloud/v1/load-balancers \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: lb.instances.list

GET /v1/load-balancers/{id}/listeners · scope lb:read

La configuración completa del balanceador, incluidos los destinos de cada listener. Es lo que hay que leer, modificar y volver a mandar en PUT.

Ventana de terminal
curl https://api.truo.cloud/v1/load-balancers/svc_10432/listeners \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: lb.listeners.list

PUT /v1/load-balancers/{id}/listeners · scope lb:write · destructiva — no tiene vuelta atras · idempotente

Reemplaza el conjunto entero: los listeners que no vengan en listeners se borran, con sus destinos. Mandar [] deja el balanceador sin nada escuchando y corta el tráfico. Leé GET /listeners, modificá y mandá todo de vuelta.

El cambio se aplica dentro de la llamada: cuando esto devuelve, la configuración nueva ya está sirviendo tráfico. Si la configuración resultante es inválida no se aplica nada y la respuesta es 400 validation_failed — el servicio nunca queda a medias.

Ventana de terminal
curl https://api.truo.cloud/v1/load-balancers/svc_10432/listeners \
-X PUT \
-H "Authorization: Bearer $TRUO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"listeners":[]}'

operationId: lb.listeners.replace

GET /v1/load-balancers/{id}/stats · scope lb:read

Una foto del momento: conexiones en curso y bytes acumulados desde el último arranque del balanceador, más la salud de cada destino según el último sondeo. No hay serie histórica.

Si el balanceador no contesta el sondeo, los listeners igual aparecen —salen de la configuración guardada— con state: unknown y los contadores en cero. Un listener que existe y no responde y uno que existe sin tráfico no se distinguen por los contadores: miralos por state.

Ventana de terminal
curl https://api.truo.cloud/v1/load-balancers/svc_10432/stats \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: lb.stats.get