Hoy vamos a ver varios trucos para mejorar nuestra eficiencia a la hora de usar Kubernetes. Algunos son propiamente de Linux y otros son herramientas externas para añadir funcionalidades extra a nuestro kubectl.
Resumen del artículo
Alias
Vamos a comenzar por algo básico de Linux. Los alias. Un alias simplemente va a acortar nuestro comando. Podemos hacer alias de comandos excesivamente largos o de aquellos que aunque no sean tan largos si los usamos todos los días. Y los alias no tienen por que ser solo de kubectl, podemos utilizarlos para acortar cualquier otro comando.
Por defecto, Kubernetes, ya tiene varias acortaciones:
Pod | po |
Deployment | deploy |
Service | svc |
Ingress | ing |
Configmap | cm |
Namespace | ns |
Node | no |
StatefulSet | sts |
Con el comando
ls -a
vamos a poder ver los archivos ocultos de nuestro directorio de usuario.
El que nos interesa editar es .bashrc, es donde esta la información del interprete bash y se ejecuta cada vez que abrimos una terminal. Vamos a buscar que tenga una función llamada .bash_aliases con el siguiente comando.
grep "bash_aliases" .bashrc
Si no aparece ese condicional lo podemos añadir. Solo si no aparece usamos el siguiente comando. Que simplemente va añadir ese condicional.
echo "if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi" >> .bashrc
Ahora que hemos comprobado que tenemos la función condicional dentro del archivo .bashrc vamos a escribir nuestros alias. Para ello tan solo tenemos que modificar el siguiente comando para poner el alias.
alias palabra_corta='comando o palabras a reemplazar' >> ~/.bash_aliases
Por ejemplo con kubectl para que solo tengamos que poner k.
echo "alias k='kubectl'" >> ~/.bash_aliases
Cerramos la terminal (podemos escribir exit
) y al abrir una nueva ya podremos ejecutar k y nos lo hará como kubectl. En este repositorio podemos ver más alias útiles.
Kubectx y kubens
Esta herramienta la podemos encontrar en su repositorio oficial de Github.
Podemos hacer la instalación clonando el repositorio, creando enlaces simbólicos y luego añadiéndolo a PATH. O de la forma más sencilla, utilizando apt. Actualizamos e instamos kubectx (dentro tiene también kubens).
sudo apt update && sudo apt install kubectx
Vamos a recordar un poco sobre arquitectura de Kuberntes. Los Clusters son las agrupaciones de varios nodos (normalmente son 3 pero pueden ser más o menos según las necesidades). Luego está la división de NameSpaces, los espacios de nombres nos permite hacer divisiones virtuales dentro del cluster. Y luego ya dentro de cada NameSpace están los objetos (Pods, Deployments, Services …).
Y a los Clusters se accede mediante un archivo de configuración llamado context.
El uso de esta herramienta es muy sencillo. Además tiene el autocompletar, que podemos escribir el inicio y luego pulsar la tecla TAB
. Podemos ver más comandos en su repositorio oficial pero principalmente:
kubectx | Este comando nos va a mostrar los clusters disponibles. |
kubectx NOMBRE | Nos va a cambiar al Cluster que pongamos. |
kubectx – | Nos va a cambiar al anterior Cluster que hayamos puesto. |
kubectx NOMBRE-NUEVO=NOMBRE | Nos va a cambiar el nombre de la entrada. |
kubens | Este comando nos va a mostrar los namespaces disponibles. |
kubens NOMBRE | Nos va a cambiar al NameSpace que pongamos. |
kubectx – | Nos va a cambiar al anterior NameSpace que hayamos puesto. |
Añadir el autocompletar de Bash en Kubectl
Ahora tenemos un alias para que bash interprete k como kubectl, pero podemos usar tambien kubectl. Así que vamos a añadir el autocompletar en ambos, tanto en el alias como en el comando propio.
Para el comando kubectl es fácil, solo tenemos que añadir
echo "source <(kubectl completion bash)" >> ~/.bashrc
Para el alias es un poco más complicado. Tenemos que usar funciones. Nada complicado, primero creamos una carpeta para estas y luego descargamos.
mkdir ~/.bash_completion.d
curl https://raw.githubusercontent.com/cykerway/complete-alias/master/bash_completion.sh > ~/.bash_completion.d/complete_alias
Ahora vamos a nuestro clásico archivo ~/.bash_aliases y lo único que tenemos que hacer es llamar a la función y ejecutarla. Este comando es para llamar a la función, se pone una sola vez en el .bash_aliases.
echo "source ~/.bash_completion.d/complete_alias" >> ~/.bash_aliases
Ahora añadimos los alias y ejecutamos la función para que se auto complete el alias. Recordamos que ya tenemos un alias llamado k que hace referencia a kubectl (echo "alias k='kubectl'" >> ~/.bash_aliases
) pero podemos crear otro. Y luego añadimos la función específicamente para cada alias, así que si tenemos más alias tenemos que añadirlos.
echo "alias kg='kubectl get'" >> ~/.bash_aliases
echo "complete -F _complete_alias kg" >> ~/.bash_aliases
Debería quedar algo así el archivo .bash_aliases. Con estos ejemplos.
Por último el clásico exit
para cerrar la terminal y la volvemos a abrir para probar el auto completar (TAB
).
Abrir puertos
Otra herramienta externa al igual que kubens y kubectx.
Se llama Kube Forwarder y sirve para, abrir los puertos (port forwarding). La podemos encontrar en su repositorio oficial de Github. Es una aplicación. No terminal (CLI). Si visual (GUI). Tiene compatibilidad para los principales sistemas operativos: Windows, MacOS, Linux.
Esta herramienta más que para el administrador es para el desarrollador que no tiene por que saber sobre Kubernetes. Tan solo necesita descargarsela y en el menú visual ya puede elegir los objetos a los que quiere acceder (abrir los puertos).
Pero si quieres abrir todos los puertos o aquellos que tengan cierta etiqueta puedes usar kubefwd.
[yasr_overall_rating]