Cilium BGP Lab, locally!

Maybe you already know about Cilium, You don’t?
Go read https://docs.cilium.io/en/stable/overview/intro/ and come back !!

Hello again!
So now you want to learn about Cilium BGP functionality, for me this is one of the most exciting features of Cilium, maybe the reason is the addiction that I already have for BGP, who knows (AS207036). Back to the point, with Cilium you can establish a BGP session with your routers (Tor, border, or core, you decide.) and announce PodCIDR or LoadBalance for services.

For this learning exercise, we will use Kind and other tools to run a K8s cluster locally on any Linux (Windows or MacOS) machine. There is a lot of info on the internet on how to get Kind up and running and even how to install Cilium, I decided to build a collection of Cilium Labs (ciliumlabs) to speed up the process of getting a Cilium testing environment up and running.

First, go and clone the repo, all the information is on the README of each lab type, in this case, bgp/README.md is the one with the steps to get this ready, but we first need to install the prereqs. The prerequisites are listed in the main README file. In my environment, all this is met so I can proceed with the lab creation.

Clone the repo to your local machine.

A computer screen with white text Description automatically generated

We are doing the BGP Lab, these are the files in that specific directory.

cilium-bgp-peering-policies.yaml – YAML file with the configuration needed to start the BGP session with Tor0 and Tor1 from the k8s workers.

cluster.yaml – configuration file for Kind cluster.

topo.yaml – configuration file for containerlab.

There is a Makefile, an easy way to run tasks, you can read this file to understand the workflow to start the Lab, the fastest way is just to run make.

Let’s see what we have here.

A computer screen with white text Description automatically generated

Looking at router0, we can see that both tor0 and tor1 established the BGP peering and router0 is receiving prefixes from those tor routers.

A screenshot of a computer Description automatically generated

In this Lab topology tor0 is part of the Rack0 segmentation, in this rack is the participation of the control-plane node and a worker (you can see this in the yaml files for kind and containerlab). They are establishing BGP peering and exporting routes!

A screen shot of a computer Description automatically generated

Same for tor1, here the segmentation is called Rack1, and worker2 and worker3 are establishing BGP session!!

Now what?
From here you can go to the official Cilium Labs and earn a badge for Cilium with BGP!

https://isovalent.com/labs/cilium-bgp/

 

Organiza tu .dotfiles con GNU Stow.

Organiza tu .dotfiles con GNU Stow.

Logo

Primero definamos la necesidad de GNU Stow (Stow en lo adelante), si tienes acceso a diferentes equipos, ya sea laptops (Linux o macOS), desktops (Linux o macOS) y servidores Linux (quien usa macOS en servidores?), talves has notado lo incomodo que es tener una configuracion de shell bien customizada pero cuando entras a otro equipo por ssh, hechas de menos todos esos alias y otras utilidades. Stow es la solucion para llevar estas customizaciones a otros entornos *nix.

En mi caso, tengo dos equipos de uso diario, Macbook Pro M1 y un Mac Mini M2. En ambos uso zsh como shell y tengo las mismas customizaciones ya que he instalado los mismos paquetes.

Oh My ZSH! (https://ohmyz.sh/)

Es un framework que maneja las configuraciones que se pueden aplicar a ZSH. Con esta herramienta podemos tener prompts, plugins y temas.

Continuar leyendo «Organiza tu .dotfiles con GNU Stow.»

Harvester HCI en el homeLAB?

Harvester HCI en el homeLAB?

Getting Hands on with Harvester HCI | SUSE Communities

Hace ya 3 años que se liberó al público el proyecto Harvester, inmediatamente vi el anuncio, fui a leer la documentación y estaba muy emocionado de usar la plataforma por el hecho de que está basado en Kubernetes y lo estaba desarrollando Rancher Labs.

Que quiere decir esto, Harvester usa todos los mecanismos disponibles para garantizar que una VM siempre esté disponible. Otros componentes como Longhorn y Kube-VIP hacen que este hypervisor pueda ofrecer almacenamiento y IP en Load Balance. El componente más importante es Kube-Virt.

Personalmente lo más interesante que veo en Harvester es la integración con Rancher. Desde el mánager de Rancher, podemos conectarnos directamente a Harvester. Tenemos un punto central de administración.

Continuar leyendo «Harvester HCI en el homeLAB?»

tkg-bootstrap – VM para iniciar un cluster de Tanzu.

tkg-bootstrap – VM para iniciar un cluster de Tanzu.

Despues de leer la documentacion de todo lo necesario para iniciar un TKG en vSphere, pense, porque no creo una VM empaquetada que cuente con todo lo necesario. Solo entrar a la VM y ejecutar el procedimiento para instalar Tanzu en vSphere.

Todo esta en un repo de Github, actualmente solo esta disponible el codigo para que usted mismo cree su VM (.OVA) y pueda importarla en un ambiente de vSphere (o en Workstation).

Desde dicha VM se puede ejecutar el procedimiento para inicializar la creacion de TKG, actualmente creo que la unica limitante es que tenemos que mantener dicha VM para futuros updates del ambiente desplegado.

https://github.com/aredan/tkg-bootstrap

toda la informacion necesario esta en el README.md del repo.

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?

Continuar leyendo «kubeconfig con direnv, múltiples clusters de Kubernetes.»