# K9s: Otro estilo de CLI para k8s
K9s es una interfaz de usuario basada en un terminal para interactuar con sus clústeres Kubernetes. El objetivo de este proyecto es facilitar la navegación, la observación y la gestión de sus aplicaciones desplegadas en la naturaleza. K9s observa continuamente a Kubernetes en busca de cambios y ofrece comandos posteriores para interactuar con sus recursos observados.


**Índice**
- [K9s: Otro estilo de CLI para k8s](#k9s-otro-estilo-de-cli-para-k8s)
  - [Instalar k9s con el código](#instalar-k9s-con-el-código)
  - [Argumentos CLI](#argumentos-cli)
  - [Key Bindings](#key-bindings)

## Instalar k9s con el código

Para estar seguro de como se instala lo mejor es mirar la [documentación oficial](https://k9scli.io/topics/install/) o el [repositorio git](https://github.com/derailed/k9s), teniendo en cuenta que actualizan más el repo. Yo lo he instalado así:

```shell
# Primero instalando go si no lo tienes
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.19.3.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
## Compruebas
go version

# 
git clone https://github.com/derailed/k9s.git && cd k9s
make build && ./execs/k9s
```

## Argumentos CLI

K9s CLI viene con una vista de argumentos que puede utilizar para lanzar la herramienta con diferente configuración.
```shell
# Lista de todas las opciones de la CLI disponibles
k9s help

# Obtener información sobre el tiempo de ejecución de K9s (registros, configuraciones, etc.)
k9s info

# Ejecutar K9s en un espacio de nombres determinado.
k9s -n mycoolns

# Ejecutar K9s y lanzarlo en la vista de pod a través del comando pod.
k9s -c pod

# Inicie K9s en un contexto KubeConfig no predeterminado
k9s --context coolCtx

# Inicie K9s en modo de sólo lectura - con todos los comandos de modificación deshabilitados
k9s --readonly
```

## Key Bindings

Acción | Comando | Comentario
---|---|---
Mostrar los mnemónicos de teclado activos y la ayuda | `?` 	 
Mostrar todos los alias y recursos disponibles en el clúster | `ctrl-a` o `:alias` 	 
Salir de K9s | `:q`, `ctrl-c` 	 
Ver un recurso de Kubernetes utilizando el singular/plural o el nombre corto | `:po`⏎ | acepta el singular, el plural, el nombre corto o el alias, es decir, pod o pods
Ver un recurso de Kubernetes en un espacio de nombres dado | `:alias namespace`⏎ 	 
Filtrar una vista de recursos dado un filtro | `/filter`⏎ | Regex2 soportado ie `fred\|blee` para filtrar recursos llamados fred o blee
Filtro regex inverso | `/ ! filter`⏎ | Guarda todo lo que no coincide. No se ha implementado para los registros.
Filtrar la vista de recursos por etiquetas | `/-l label-selector`⏎ 	 
Buscar difusamente un recurso dado un filtro | `/-f filter`⏎ 	 
Sale del modo de vista/comando/filtro | `<esc>` 	 
Mapeo de teclas para describir, ver, editar, ver registros,... | `d`,`v`, `e`, `l`,... 	 
Para ver y cambiar a otro contexto de Kubernetes | `:ctx`⏎ 	 
Para ver y cambiar a otro contexto de Kubernetes | `:ctx context-name`⏎ 	 
Para ver y cambiar a otro espacio de nombres de Kubernetes | `:ns`⏎ 	 
Para ver todos los recursos guardados | `:screendump o sd`⏎ 	 
Para eliminar un recurso (TAB y ENTER para confirmar) | `ctrl-d` 	 
Para eliminar un recurso (¡no hay diálogo de confirmación!) | `ctrl-k` 	 
Alternar columnas anchas | `ctrl-w` | Equivalente a kubectl ... -o wide
Alternar el estado de error | `ctrl-z` | Ver los recursos en estado de error
Lanzar la vista de pulsos | `:pulsos o pu`⏎ 	 
Lanzar vista XRay | `:xray RECURSO [NAMESPACE]`⏎ | RECURSO puede ser uno de po, svc, dp, rs, sts, ds, NAMESPACE es opcional
Lanzar la vista de Popeye | `:popeye o pop`⏎ | Ver https://popeyecli.io

---

[01 Instalación kubctl](guias/01-kubectl.md) --> [02 Clústers](guias/02-clusters.md) --> [03 manifiestos](guias/03-manifiestos.md) --> [04 Cheatsheet kubernetes](guias/04-cheatsheet.md) --> [05 Helm: Control de despliegues en Kubernetes](guias/05-helm.md)