C / Desarrollo · plano de control

API para apps externas

Las aplicaciones externas no hablan con kubectl ni con Incus. Consumen /api/v1 con una API key. La consola humana (/cluster/) sigue siendo de inspección.

Base: https://streamxe5.fitschile.cl/api/v1 (también /cluster/api/v1).
OpenAPI: /cluster/docs · descubrimiento: GET /api/v1 (sin key).

Auth

Header X-API-Key o Authorization: Bearer. Roles: viewer (lectura) y operator (deploy). Las keys viven en el Secret de k8s, no en este HTML. Pedilas a quien opera lek.

curl -sS -H "X-API-Key: $CONTROL_API_KEY" \
  https://streamxe5.fitschile.cl/api/v1/apps | python3 -m json.tool

Recursos

UsoMétodoPath
DescubrimientoGET/api/v1
CatálogoGET / PUT/api/v1/catalog
Apps + healthGET/api/v1/apps · /api/v1/apps/{id}
MonitoreoGET.../pods · .../events · .../logs · .../rollout
ClusterGET/api/v1/cluster · /api/v1/nodes · /api/v1/workloads
ReiniciarPOST/api/v1/apps/{id}/restart
EscalarPOST/api/v1/apps/{id}/scale
Desplegar imagenPOST/api/v1/apps/{id}/deploy
AuditoríaGET/api/v1/audit

Ejemplos (operator)

# dry-run de restart (no borra pods)
curl -sS -H "X-API-Key: $CONTROL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"dry_run":true,"reason":"qa"}' \
  https://streamxe5.fitschile.cl/api/v1/apps/etl-manager-pilot/restart

# scale
curl -sS -H "X-API-Key: $CONTROL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"replicas":1,"reason":"keep-one"}' \
  https://streamxe5.fitschile.cl/api/v1/apps/inbox-viewer-pilot/scale

# logs
curl -sS -H "X-API-Key: $CONTROL_API_KEY" \
  "https://streamxe5.fitschile.cl/api/v1/apps/etl-manager-pilot/logs?tail=80"

Límites (a propósito)

Namespace fijo cost-pilot. No se acepta YAML arbitrario. La imagen de un deploy tiene que existir ya en los nodos (imagePullPolicy: Never). No se puede dejar la consola en 0 réplicas. I9 / producción no se tocan por esta API.

Volver al portal