kubeconfig con direnv, múltiples clusters de Kubernetes.

kubeconfig con direnv, múltiples clusters de Kubernetes.

Desde la documentación de Kubernetes:

Utilice los archivos kubeconfig para organizar la información acerca de los clústeres, los usuarios, los Namespaces y los mecanismos de autenticación. La herramienta de línea de comandos kubectl utiliza los archivos kubeconfig para hallar la información que necesita para escoger un clúster y comunicarse con el servidor API de un clúster.

Nota: Un archivo utilizado para configurar el acceso a los clústeres se denomina archivo kubeconfig. Esta es una forma genérica de referirse a los archivos de configuración. Esto no significa que exista un archivo llamado kubeconfig.

Por defecto, kubectl busca un archivo llamado config en el directorio $HOME/.kube. Puedes especificar otros archivos kubeconfig mediante la configuración de la variable de entorno KUBECONFIG o mediante la configuración del flag –kubeconfig.

Cuando contamos con un solo cluster de k8s, es bastante fácil conectarse a el usando kubectl con solo colocar el archivo config en .kube (como dice el texto anterior). ¿Pero que pasa cuando tenemos varios servidores de k8s con los cuales queremos interactuar para realizar ciertas tareas?

Debemos hacer uso de los contextos (context) y movernos de un cluster a otro, esto implica que en archivo config antes mencionado, tenemos la información de mas de un cluster. Para facilitar esta operación tenemos disponibles varios plugins, uno de estos es ctx que se puede instalar con Krew. Yo personalmente me encuentro tedioso mantener el archivo config (se que también existen plugins para esto.) y muchas veces termino con configuración de acceso a cluster que ya no existen y que en su momento fueron usados para alguna prueba de configuración. ¿A donde quiero llegar con esto? Creo que hay una forma mas fácil, por lo menos para mi.

Tenemos disponible una herramienta llamada direnv, esta herramienta permite cargar variables de entorno al momento de entrar a un directorio, inmediatamente hacemos cd dentro de un directorio que cuente con un archivo de direnv (.envrc), tendremos disponibles variables de entorno para usar y una de esas variables que podemos configurar es kubeconfig.

Desde hace unos días estoy estructurando el acceso a varios clusters que tengo de la siguiente manera.

  1. Un directorio con todos los cluster que deseo acceder o tengo acceso a ellos.
  2. En este directorio cada cluster es otro directorio, por ejemplo “ansible” es un cluster de k8s que tiene AWX instalado.
  3. Dentro de “ansible” esta el archivo config, .envrc y archivos de deploymento ha sean Helm o Kustomize.

Dejo una captura de pantalla con la estructura del directorio.

En lo adelante cuando siga provisionando cluster, solo tengo que crear un nuevo directorio, colocar el archivo config y crear un nuevo .envrc con la información necesaria.

El contenido de .envrc es:

export KUBECONFIG=/home/ariel/Documents/kubeclusters/ansible/config

importante saber que aquí podemos colocar todo tipo de acciones iguales a las que normalmente usamos en nuestro profile, por ejemplo, aliases e incluso un prompt diferente.

Al ejecutar kubectl get nodes, podemos ver que no tenemos respuesta ya que en ese momento kubeconfig esta configurado con un config no funcional, cuando entramos al directorio ansible, se ve que direnv habilita un nuevo valor que sobre-escribe a kubeconfig con el nuevo config del cluster de AWX.

direnv tiene mucho potencial para aquellos usuarios que amamos la terminal!

NxCloud – Filtro de contenido a nivel DNS.

NxCloud – Filtro de contenido a nivel DNS.

Desde hace mucho tiempo he trabajado en áreas que tienen que ver con los controles, en este caso el control de la navegación web.

Existen muchas herramientas OpenSource que sirven para tener esta funcionalidad en una red del hogar. En mi caso la herramienta que uso desde hace varios años es una versión de NxFilter para la nube, que significa disponibilidad para varias redes/personas/identidades.

Inicialmente siempre realizaba la instalación en un servidor en Ubuntu, luego inicie con el tema de los contenedores y al final mi instalación está corriendo en Kubernetes.

Para la versión Cloud (NxCloud) he creado un contenedor que esta en DockerHub y es accesible para todos, esa es la idea de los contenedores en DockerHub. Doh!

Continuar leyendo «NxCloud – Filtro de contenido a nivel DNS.»

Kubernetes – Explorando un Cluster de Kubernetes con VMware Octant – Update.

Kubernetes – Explorando un Cluster de Kubernetes con VMware Octant – Update.

Ya hace un tiempo, tal vez demasiado, había hablado de este cliente desktop para conectarnos a un cluster de k8s. En ese momento lo miré y no me sentí muy convencido de cuáles eran las bondades de usar algo así, y la principal razón era que estaba muy emocionado con Rancher UI.

Continuar leyendo «Kubernetes – Explorando un Cluster de Kubernetes con VMware Octant – Update.»

RPKI con GoRTR de Cloudflare – en Kubernetes!

RPKI con GoRTR de Cloudflare – en Kubernetes !

Hace un tiempo probé con RPKI, en esos días estaba tomando unos entrenamientos de MANRS, con RPKI podemos asegurar que los prefijos que recibimos vía BGP con de quien realmente deberían ser, en otras palabras, si por alguna razón un tercero mal intencionado se hace con un bloque de direcciones IP que no le pertenece, pero esta tiene ROA habilitado, el trabajo de RPKI es no permitir que esos bloques de direcciones IP sean insertados en nuestra tabla de enrutamiento.

https://github.com/cloudflare/gortr

Continuar leyendo «RPKI con GoRTR de Cloudflare – en Kubernetes!»

VRF en Linux con BIRD para OSPF/BGP

VRF en Linux con BIRD para OSPF/BGP.

Desde hace mucho tiempo estoy jugando con BGP, inicialmente tenía BGP en pfSense, algo sencillo y con solo algunas rutas, eso fue en los tiempos de dn42.

En el 2016 encontré una comunidad de varios entusiastas de redes al nivel de Internet y pude conseguir un ASN registrado en RIPE.

Muchas cosas han cambiado desde esos días, he aprendido y experimentado, aprender es la razón de ser de aaNetworks. Lo complicado de mi red con direcciones IP Publicas y ASN es que localmente en mi casa no hay forma posible de tener una sesión BGP y publicar los prefijos desde ahí (imagínate que CLARO te permita hacer un túnel L2TP a un router con BGP!), dependo de VPS con Linux y BIRD.

Continuar leyendo «VRF en Linux con BIRD para OSPF/BGP»