El cilio es una solución de red, observabilidad y seguridad con un DataPlane basado en EBPF. Proporciona una red de capa 3 plana simple con la capacidad de abarcar múltiples grupos en modo de enrutamiento o superposición nativa. Es consciente de L7-Protocol y puede hacer cumplir las políticas de red en L3-L7 utilizando un modelo de seguridad basado en la identidad que se desacopla del direccionamiento de la red.
El cilio implementa el equilibrio de carga distribuida para el tráfico entre las cápsulas y los servicios externos, y puede reemplazar completamente a Kube-Proxy, utilizando tablas de hash eficientes en EBPF, lo que permite una escala casi ilimitada. También es compatible con la funcionalidad avanzada como la entrada integrada de entrada y salida de salida, gestión de ancho de banda y malla de servicio, y proporciona una profunda visibilidad y monitoreo de la red y la seguridad.
Una nueva tecnología de kernel de Linux llamada EBPF está en la base de cilio. Admite la inserción dinámica de EBPF Bytecode en el núcleo de Linux en varios puntos de integración, tales como: Network IO, Sockets de aplicaciones y puntos TracePoPoPoPoPoPoPoPoints para implementar la lógica de seguridad, redes y visibilidad. EBPF es altamente eficiente y flexible. Para obtener más información sobre EBPF, visite EBPF.io.
La comunidad de cilio mantiene lanzamientos estables menores para las últimas tres versiones menores de cilio. Las versiones estables de cilio más antiguas de liberaciones menores antes se consideran EOL.
Para obtener actualizaciones a nuevas versiones menores, consulte la Guía de actualización de cilio.
A continuación se enumeran las ramas de lanzamiento mantenidas activamente junto con su última versión de parche, las etiquetas de extracción de imágenes correspondientes y sus notas de lanzamiento:
V1.16 | 2024-11-14 | quay.io/cilium/cilium:v1.16.4 | Notas de lanzamiento |
V1.15 | 2024-11-14 | quay.io/cilium/cilium:v1.15.11 | Notas de lanzamiento |
V1.14 | 2024-11-14 | quay.io/cilium/cilium:v1.14.17 | Notas de lanzamiento |
Las imágenes de cilio se distribuyen para arquitecturas AMD64 y AARCH64.
Comenzando con Cilium versión 1.13.0, todas las imágenes incluyen una factura de software de materiales (SBOM). El SBOM se genera en formato SPDX. Más información sobre esto está disponible en Cilium SBOM.
Para fines de desarrollo y prueba, la comunidad de cilio publica instantáneas, candidatos de lanzamiento temprano (RC) y imágenes de contenedores CI construidos desde la rama principal. Estas imágenes no son para su uso en producción.
Para probar las actualizaciones de nuevos lanzamientos de desarrollo, consulte la última compilación de desarrollo de la Guía de actualización de cilio.
A continuación se enumeran las ramas para las pruebas junto con sus instantáneas o versiones de RC, las etiquetas de extracción de imágenes correspondientes y sus notas de lanzamiento cuando corresponda:
principal | a diario | quay.io/cilium/cilium-ci:latest | N / A |
V1.17.0-PRE.2 | 2024-11-01 | quay.io/cilium/cilium:v1.17.0-pre.2 | Notas candidatas previas a la liberación |
Capacidad para asegurar protocolos de aplicación modernos como REST/HTTP, GRPC y KAFKA. Los firewalls tradicionales funcionan en la capa 3 y 4. Un protocolo que se ejecuta en un puerto en particular está completamente confiable o bloqueado por completo. Cilium proporciona la capacidad de filtrar en solicitudes de protocolo de aplicación individual, tales como:
Permitir todas las solicitudes HTTP con el método GET
y ruta /public/.*
. Negar todas las demás solicitudes.
Permita que service1
produzca en Kafka Topic topic1
y service2
para consumir sobre topic1
. Rechazar todos los demás mensajes de Kafka.
Requiere que el encabezado HTTP X-Token: [0-9]+
esté presente en todas las llamadas de descanso.
Consulte la Política de la capa 7 de la Sección en nuestra documentación para obtener la última lista de protocolos y ejemplos compatibles sobre cómo usarla.
Las aplicaciones distribuidas modernas se basan en tecnologías como contenedores de aplicaciones para facilitar la agilidad en la implementación y escalar a pedido. Esto da como resultado una gran cantidad de contenedores de aplicaciones que se inician en un corto período de tiempo. Los firewalls de contenedores típicos aseguran las cargas de trabajo al filtrar en las direcciones IP de origen y los puertos de destino. Este concepto requiere que los firewalls en todos los servidores se manipulen cada vez que se inicia un contenedor en cualquier parte del clúster.
Para evitar esta situación que limita la escala, Cilium asigna una identidad de seguridad a grupos de contenedores de aplicaciones que comparten políticas de seguridad idénticas. La identidad se asocia con todos los paquetes de red emitidos por los contenedores de la aplicación, lo que permite validar la identidad en el nodo receptor. La gestión de identidad de seguridad se realiza utilizando una tienda clave de valor.
La seguridad basada en etiquetas es la herramienta de elección para el control de acceso interno de clúster. Para asegurar el acceso hacia y desde los servicios externos, son compatibles con las políticas de seguridad basadas en CIDR tradicionales tanto para ingreso como para salida. Esto permite limitar el acceso hacia y desde los contenedores de la aplicación a rangos IP particulares.
Una simple red de capa plana 3 con la capacidad de abarcar múltiples grupos conecta todos los contenedores de aplicaciones. La asignación de IP se mantiene simple utilizando asignadores de alcance del host. Esto significa que cada anfitrión puede asignar IP sin ninguna coordinación entre los hosts.
Se admiten los siguientes modelos de red de nodo múltiple:
Superposición: red virtual basada en encapsulación que abarca todos los hosts. Actualmente, VXLAN y Geneve se hornean, pero se pueden habilitar todos los formatos de encapsulación compatibles con Linux.
Cuándo usar este modo: este modo tiene requisitos mínimos de infraestructura e integración. Funciona en casi cualquier infraestructura de red, ya que el único requisito es la conectividad IP entre los hosts que generalmente ya se dan.
Enrutamiento nativo: uso de la tabla de enrutamiento regular del host Linux. Se requiere que la red sea capaz de enrutar las direcciones IP de los contenedores de la aplicación.
Cuándo usar este modo: este modo es para usuarios avanzados y requiere cierta conciencia de la infraestructura de red subyacente. Este modo funciona bien con:
Redes nativas de IPv6
Junto con los enrutadores de red en la nube
Si ya está ejecutando Daemons de enrutamiento
El cilio implementa el equilibrio de carga distribuida para el tráfico entre los contenedores de aplicaciones y los servicios externos y es capaz de reemplazar completamente los componentes como Kube-Proxy. El equilibrio de carga se implementa en EBPF utilizando hashtables eficientes que permiten una escala casi ilimitada.
Para el equilibrio de carga de tipo norte-sur, la implementación EBPF de Cilium está optimizada para el máximo rendimiento, se puede conectar a XDP (ruta de datos express) y admite retorno de servidor directo (DSR), así como un hashing consistente de Maglev si la operación de equilibrio de carga no se realiza en el host de origen.
Para el equilibrio de carga de tipo este-oeste, el cilio realiza la traducción eficiente del servicio a backend directamente en la capa de zócalo del núcleo de Linux (por ejemplo, en el tiempo de conexión TCP) de modo que las operaciones por paquete NAT se puedan evitar en las capas inferiores.
Cilium implementa la gestión del ancho de banda a través de la tarifa eficiente basada en EDT (tiempo de salida más temprano), limitando con EBPF para el tráfico de contenedores que está alquilando un nodo. Esto permite reducir significativamente las latencias de la cola de transmisión para aplicaciones y evitar el bloqueo bajo NIC múltiples en comparación con los enfoques tradicionales como HTB (cubo de token de jerarquía) o TBF (filtro de bucket token) como se usa en el complemento CNI de ancho de banda, por ejemplo.
La capacidad de ganar visibilidad y solucionar problemas es fundamental para la operación de cualquier sistema distribuido. Si bien aprendimos a amar las herramientas como tcpdump
y ping
y, aunque siempre encontrarán un lugar especial en nuestros corazones, nos esforzamos por proporcionar mejores herramientas para la resolución de problemas. Esto incluye herramientas para proporcionar:
Monitoreo de eventos con metadatos: cuando se deja caer un paquete, la herramienta no solo informa la IP de origen y destino del paquete, la herramienta proporciona la información de etiqueta completa tanto del remitente como del receptor entre mucha otra información.
Exportación de métricas a través de Prometheus: las métricas clave se exportan a través de Prometheus para la integración con sus paneles existentes.
Hubble: una plataforma de observabilidad específicamente escrita para cilio. Proporciona mapas de dependencia de servicios, monitoreo operativo y alertas, y visibilidad de aplicación y seguridad basada en registros de flujo.
¿Por qué cilio?
Empezando
Arquitectura y conceptos
Instalación del cilio
Preguntas frecuentes
Que contribuye
Berkeley Packet Filter (BPF) es un intérprete Bytecode de Kernel Linux originalmente introducido para filtrar paquetes de red, por ejemplo, para filtros TCPDump y socket. El conjunto de instrucciones de BPF y la arquitectura circundante se han reelaborado significativamente con estructuras de datos adicionales, como tablas hash y matrices para mantener el estado, así como acciones adicionales para admitir la desglose, el reenvío, la encapsulación, etc. para programas que se escriban en C y se compilan en instrucciones de BPF. Un verificador en el kernel asegura que los programas BPF sean seguros de ejecutar y un compilador JIT convierte el ByTecode BPF en instrucciones específicas de la arquitectura de CPU para la eficiencia de la ejecución nativa. Los programas BPF se pueden ejecutar en varios puntos de enganche en el núcleo, como para paquetes entrantes, paquetes salientes, llamadas al sistema, kprobes, uprobes, tracePoints, etc.
BPF continúa evolucionando y obteniendo capacidades adicionales con cada nueva versión de Linux. El cilio aprovecha el BPF para realizar el filtrado de ruta de datos del núcleo, la gestión, el monitoreo y la redirección, y requiere capacidades de BPF que se encuentran en cualquier versión de Linux Kernel 4.8.0 o más nueva (el último núcleo de Linux estable actual es 4.14.x).
Muchas distribuciones de Linux, incluidas CoreOS, Debian, Docker's Linuxkit, Fedora, OpenSuse y Ubuntu, ya envían versiones de kernel> = 4.8.x. Puede verificar su versión de Linux Kernel ejecutando uname -a
. Si aún no está ejecutando un kernel lo suficientemente reciente, verifique la documentación de su distribución de Linux sobre cómo ejecutar Linux Kernel 4.9.x o posterior.
Para leer las versiones necesarias del kernel para ejecutar el tiempo de ejecución de BPF, consulte los requisitos previos de la sección.
XDP es un paso más en la evolución y permite ejecutar un sabor específico de los programas BPF desde el controlador de red con acceso directo al búfer DMA del paquete. Este es, por definición, el punto más temprano posible en la pila de software, donde los programas se pueden adjuntar para permitir un procesador de paquetes de alto rendimiento programable en la ruta de datos de redes del núcleo de Linux.
Se puede encontrar más información sobre BPF y XDP dirigida a los desarrolladores en la Guía de referencia BPF y XDP.
Para saber más sobre el cilio, sus extensiones y casos de uso alrededor de Cilium y BPF analizan la sección de lecturas adicionales.
Únase al canal Cilium Slack para chatear con los desarrolladores de cilio y otros usuarios de cilio. Este es un buen lugar para aprender sobre cilio, hacer preguntas y compartir sus experiencias.
Vea grupos de interés especial para una lista de todos los SIG y sus tiempos de reunión.
La comunidad de desarrolladores de cilio pasa el rato en Zoom para chatear. Todo el mundo es bienvenido.
Semanalmente, miércoles, 5:00 pm Europa/Zurich Time (CET/CEST), generalmente equivalente a las 8:00 a.m. PT, o 11:00 a.m. ET. Notas de reunión e información de zoom
Tercer miércoles de cada mes, 9:00 AM, Tiempo de Japón (JST). Notas de reunión de APAC e información de zoom
Organizamos una transmisión en vivo de YouTube de YouTube semanal llamada Echo que (¡muy libremente!) Significa Horario de oficina de EBPF y Cilium. Únase a nosotros en vivo, póngase al día con episodios pasados o diríjase al repositorio de eco y háganos saber sus ideas para los temas que deberíamos cubrir.
El proyecto del cilio se rige por un grupo de mantenedores y comitadores. La forma en que se seleccionan y gobiernan se describe en nuestro documento de gobernanza.
Se puede encontrar una lista de adoptantes del proyecto Cilium que lo implementan en producción y de sus casos de uso en los usuarios de archivos.
Cilium mantiene una hoja de ruta pública. Ofrece una visión de alto nivel de las principales prioridades para el proyecto, la madurez de diferentes características y proyectos y cómo influir en la dirección del proyecto.
Los componentes del espacio de usuario del cilio tienen licencia bajo la licencia Apache, versión 2.0. Las plantillas de código BPF tienen doble licencia bajo la licencia pública general, la versión 2.0 (solo) y la licencia BSD de 2 cláusulas (puede usar los términos de cualquier licencia, a su opción).