CLI¶
Todos los subcomandos y flags del binario kubelatch. El mismo binario es el servidor y la herramienta de rescate de cuentas.
kubelatch [serve]
kubelatch user create <login> [--admin] [--break-glass] [--display-name <nombre>] [--password-stdin]
kubelatch user set-password <login> [--password-stdin]
kubelatch user set-break-glass <login> [--off]
kubelatch version
kubelatch help
Cómo se ejecuta¶
Los subcomandos user leen las mismas variables de entorno que el servidor, con las mismas reglas: necesitan al menos DATABASE_URL, KUBELATCH_BASE_URL y KUBELATCH_ENCRYPTION_KEY. Aplican las migraciones pendientes, van directamente a Postgres y registran la acción en control_events sin actor. No hace falta parar el servidor, y da igual en qué réplica se ejecuten.
Nunca hablan con GitHub. Validan las variables GITHUB_* como el servidor (un bloque incompleto también las hace fallar), pero solo usan su presencia, para saber si el login con GitHub está activo.
En Kubernetes, ejecútalos dentro del pod, siempre con el kubeconfig explícito del cluster de gestión. La imagen no tiene shell: el binario está en /kubelatch.
kubectl --kubeconfig "$MGMT_KUBECONFIG" -n kubelatch exec -it deploy/kubelatch -- /kubelatch user create admin --admin
Los flags van después del login.
kubelatch y kubelatch serve¶
Arranca el servidor: plano de control, proxy, reconciliador y tareas de fondo. Sin argumentos hace lo mismo. No admite flags: todo se configura con variables de entorno.
kubelatch serve
Escribe logs en JSON por la salida estándar. Termina con código 1 si la configuración no es válida o si falla al arrancar. Ante SIGTERM o Ctrl-C deja de aceptar conexiones, da 3 s a las peticiones en curso, corta los streams abiertos y sale en 30 s como máximo.
kubelatch user create¶
Crea una persona con contraseña. Es la forma de crear el primer administrador.
| Flag | Qué hace |
|---|---|
--admin |
Le da el rol de administrador. |
--break-glass |
La marca como cuenta de emergencia: podrá entrar con contraseña aunque el login con GitHub esté activo. |
--display-name <nombre> |
Nombre que muestra la interfaz (hasta 200 caracteres). |
--password-stdin |
Lee la contraseña de la entrada estándar en vez de pedirla. |
El login solo admite minúsculas, dígitos, ., _ y -, de 1 a 63 caracteres. Un login no se reutiliza nunca, aunque la cuenta anterior esté deshabilitada. La contraseña debe tener de 12 a 128 caracteres y ser distinta del login.
kubelatch user create admin --admin
kubelatch user create rescate --admin --break-glass --display-name "Cuenta de rescate"
Salida:
user admin created (id 0192…, admin=true, break_glass=false)
Con GitHub activo y una cuenta que no es de emergencia, añade un aviso: esa contraseña no servirá para entrar.
kubelatch user set-password¶
Fija una contraseña nueva a una persona existente. Además desbloquea la cuenta, revoca sus enlaces pendientes y cierra todas sus sesiones. Es la vía de rescate cuando nadie puede entrar.
| Flag | Qué hace |
|---|---|
--password-stdin |
Lee la contraseña de la entrada estándar. |
kubelatch user set-password admin
Salida:
password set for admin; account unlocked and sessions closed
Con GitHub activo, la contraseña solo sirve si la cuenta es de emergencia. Si no lo es, el comando lo avisa y sugiere kubelatch user set-break-glass.
kubelatch user set-break-glass¶
Marca una persona existente como cuenta de emergencia, o la desmarca. Es la única forma de hacerlo: ni la interfaz ni la API pueden.
| Flag | Qué hace |
|---|---|
--off |
Quita la marca en vez de ponerla. |
kubelatch user set-break-glass admin
kubelatch user set-break-glass admin --off
Salida:
break_glass=true for admin
kubelatch rechaza desmarcar al último administrador que puede entrar.
kubelatch version¶
Imprime la versión con la que se construyó la imagen (dev en un binario local).
kubelatch version
kubelatch help¶
Imprime el resumen de uso. También responde a -h y --help.
Contraseñas por la entrada estándar¶
Sin --password-stdin, el comando pide la contraseña dos veces por la terminal, sin eco. Si la entrada estándar no es una terminal, falla y pide usar --password-stdin.
Con --password-stdin, todo lo que llega por la entrada estándar es la contraseña, menos un salto de línea final (\n o \r\n). Así echo y printf '%s\n' funcionan tal cual. Una contraseña que termine en salto de línea se pasa con dos.
printf '%s\n' "$PASSWORD" | kubectl --kubeconfig "$MGMT_KUBECONFIG" -n kubelatch exec -i deploy/kubelatch -- /kubelatch user set-password admin --password-stdin
Códigos de salida y errores¶
| Código | Cuándo |
|---|---|
0 |
El comando terminó bien. |
1 |
Error de configuración, de base de datos o de la operación. |
2 |
Argumentos no válidos o subcomando desconocido. |
Mensajes de error habituales:
| Mensaje | Qué significa |
|---|---|
that login already exists (logins are never reused) |
El login ya existe o existió. Elige otro. |
invalid login: … |
El login no cumple el formato. |
no user with that login |
No hay ninguna persona con ese login. |
refused: that is the last admin who can log in |
La operación dejaría a kubelatch sin ningún admin que pueda entrar. |
password rejected: … |
La contraseña no cumple la política; el motivo va detrás, en español. |
stdin is not a terminal: pass the password with --password-stdin |
No hay terminal para pedir la contraseña. |
passwords do not match |
Las dos contraseñas tecleadas no coinciden. |