Saltar a contenido

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.