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.

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

Esos ya vienen por defecto. En vez de escribir Service puedo escribir svc y en cualquier comando de kubectl lo va tomar. Pero podemos añadir los nuestros propios. Desde acortar kubectl a k o acortar kubectl get ingress a ing. El procedimiento es el mismo. Para crear un alias en Linux tan solo tenemos que abrir una terminal. En nuestra carpeta de usuario (~ o /home/nombre-de-nuestro-usuario) tenemos un archivo llamado .bashrc.

Con el comando ls -a vamos a poder ver los archivos ocultos de nuestro directorio de usuario.

Trucos Kubernetes – Más rápido y eficiente 0

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

Trucos Kubernetes – Más rápido y eficiente 2

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.

Trucos Kubernetes – Más rápido y eficiente 4

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).

Trucos Kubernetes – Más rápido y eficiente 6

Pero si quieres abrir todos los puertos o aquellos que tengan cierta etiqueta puedes usar kubefwd.

 

Puntuación