Sobre el proyecto

Flannel es una solución de red sencilla y eficiente diseñada principalmente para entornos Kubernetes, aunque también admite despliegues con Docker. Su función principal es establecer una red IPv4 de capa 3 entre múltiples nodos dentro de un clúster, asegurando que cada contenedor (pod) tenga una dirección IP única y enrutable. Este modelo simplifica la red al eliminar las complejidades asociadas con compartir las IPs de los hosts. ### Arquitectura principal Flannel opera mediante un agente binario ligero llamado `flanneld`, que se ejecuta en cada host del clúster. El agente se encarga de asignar una concesión de subred específica a cada host desde un espacio de direcciones más amplio y preconfigurado. Para mantener el estado y la configuración, Flannel utiliza directamente la API de Kubernetes (conocida como el administrador de subred kube) o un clúster etcd externo. Esta flexibilidad permite almacenar configuraciones de red, subredes asignadas y datos auxiliares como las IPs públicas de los hosts. ### Mecanismos de backend El reenvío de paquetes entre hosts se gestiona mediante varios mecanismos de backend. Estos incluyen VXLAN para redes superpuestas e integraciones específicas adaptadas a diferentes proveedores de nube. Los usuarios pueden seleccionar el backend que mejor se ajuste a sus requisitos de infraestructura. ### Soporte de políticas de red Aunque Flannel se centra en la conectividad y no en la aplicación de políticas, ofrece opciones para integrar políticas de red: - **Controlador integrado:** El gráfico de Helm de Flannel incluye una opción para desplegar el controlador de políticas de red de los SIGs de Kubernetes junto con Flannel. - **Controladores de terceros:** Los usuarios pueden combinar Flannel con otros proyectos como Calico o Cilium para una aplicación avanzada de políticas, potencialmente mediante el encadenamiento de CNI. ### Opciones de despliegue Para clústeres de Kubernetes, Flannel se puede desplegar manualmente o mediante gestores de paquetes: - **kubectl:** Los usuarios pueden aplicar el manifiesto oficial directamente usando `kubectl apply`. - **Helm:** Un repositorio dedicado de Helm permite una instalación y gestión de configuración sencillas. Se recomienda usar los manifiestos adjuntos a versiones específicas para garantizar la compatibilidad. Además, desplegar Flannel requiere el módulo del kernel `br_netfilter` y la instalación de los plugins de red CNI en `/opt/cni/bin`. Para entornos que no son Kubernetes, como configuraciones independientes de Docker, Flannel siempre depende de etcd como su almacén de datos. La documentación proporciona una guía detallada para estos escenarios. ### Comunidad y licencia Flannel es un proyecto de código abierto con licencia Apache 2.0. Mantiene una comunidad activa con reuniones periódicas de mantenedores, canales de Slack para soporte (#k3s en Rancher Slack, #flannel-users en Calico Slack) y documentación completa que cubre construcción, configuración, resolución de problemas e integraciones.