Llegamos a ustedes gracias a:



Reportajes y análisis

23 herramientas que hacen que Kubernetes sea más fácil

[18/06/2020] Kubernetes se ha convertido en una forma estándar de desplegar aplicaciones en contenedores a escala. Pero si Kubernetes nos ayuda a dominar la expansión y las complejas implementaciones de contenedores, ¿qué puede ayudarnos a dominar a Kubernetes? También puede ser complejo, desordenado y difícil de gestionar.

A medida que Kubernetes crezca y evolucione, no hay duda de que muchos de sus excesos serán domados desde dentro del proyecto. Sin embargo, algunos usuarios no se han quedado sentados esperando a que Kubernetes sea más fácil de trabajar, sino que han introducido sus propias soluciones a muchos de los problemas más comunes.

Aquí se mencionan 23 de los principales compañeros de Kubernetes. Algunos complementarán a cualquier grupo de Kubernetes, mientras que otros abordarán necesidades específicas que el Kubernetes común y corriente no aborda.

Gatekeeper: Controles de la política de Kubernetes

El proyecto Open Policy Agent (OPA) ofrece una forma de crear políticas en las pilas de aplicaciones nativas de la nube, desde los componentes de ingress y de la malla de servicio hasta Kubernetes. Gatekeeper proporciona una forma nativa de Kubernetes de hacer cumplir las políticas de OPA automáticamente en un clúster, y de auditar cualquier evento o recurso que viole la política. Todo esto se maneja mediante un mecanismo relativamente nuevo en Kubernetes, el controlador de admisión Webhooks, que genera cambios en los recursos. Con el Gatekeeper, las políticas de OPA pueden mantenerse como una parte más del estado definido de su clúster de Kubernetes, sin necesidad de tener que estar constantemente a cargo.

Goldpinger: Visualizar los clusters de Kubernetes

Los humanos son criaturas visuales. Los gráficos y tablas nos facilitan la comprensión del panorama general, y dado el alcance y la complejidad de un clúster de Kubernetes, toda la ayuda visual es bienvenida.

Goldpinger es una herramienta de código abierto de la división de tecnología de Bloomberg, que corre dentro de un clúster de Kubernetes y muestra un mapa interactivo de las relaciones entre los nodos. Los saludables aparecen en verde y los no saludables, en rojo. Solo tiene que hacer clic en un nodo para obtener más detalles. Puede personalizar la API con Swagger para incluir reportes, métricas u otras integraciones adicionales.

Gravity: Clústeres de Kubernetes portátiles

Si desea desplegar una aplicación en Kubernetes, muchas tienen gráficos de Helm para guiar y automatizar el proceso. Pero ¿y si quiere tomar un clúster de Kubernetes como es y desplegarlo en otro lugar?

Gravity toma instantáneas de los clústeres de Kubernetes, sus registros de contenedores y sus aplicaciones en ejecución, llamadas "paquetes de aplicaciones". El paquete, que es solo un archivo .tar, puede replicar el clúster en cualquier lugar donde se ejecute Kubernetes.

Gravity también asegura que la infraestructura de destino pueda soportar los mismos requisitos de comportamiento que la fuente y que el tiempo de ejecución de Kubernetes en el destino esté a la altura. La versión empresarial de Gravity añade características de seguridad, incluyendo controles de acceso basados en roles y la capacidad de sincronizar las configuraciones de seguridad en múltiples despliegues de clúster.

La última versión principal, Gravity 7, puede desplegar una imagen de Gravity en un clúster de Kubernetes existente, en lugar de tener que crear uno totalmente nuevo utilizando la imagen. Además, también puede desplegarse en clústeres que no estén ejecutando una imagen definida por Gravity y, ahora es compatible con SELinux y se integra de forma nativa con la puerta de enlace Teleport SSH.

Ingress Controller de Kubernetes para AWS

Kubernetes proporciona balanceo de carga externa y servicios de red a un clúster a través de un servicio llamado Ingress. Amazon Web Services proporciona la funcionalidad de balanceo de carga, pero no acopla automáticamente estos servicios a las instalaciones de Kubernetes para ello. El Ingress Controller de Kubernetes para AWS reduce esa brecha.

El Ingress Controller de Kubernetes para AWS gestiona automáticamente los recursos de AWS para cada objeto de ingressen un clúster, creando balanceadores de carga para los nuevos recursos de ingress y borrando los balanceadores de carga de los que se han eliminado. Utiliza AWS CloudFormation para garantizar que el estado del clúster se mantenga constante. También soporta configuraciones de alarma de CloudWatch y auto-gestiona otros elementos utilizados en el clúster como los certificados SSL y EC2 Auto Scaling Groups.

K9s: CLI UI de pantalla completa

A los administradores les encanta la utilidad del "single pane of glass. K9s es un CLI UI de pantalla completa para los clústeres de Kubernetes. Le permite echarle un vistazo a los pods, los registros y las implementacionesen ejecución, además de proporcionarle un acceso rápido a un shell. Tenga en cuenta que tendrá que conceder a los usuarios de Kubernetes privilegios de lectura a nivel de usuario y de namespace para que K9s funcione correctamente.

Kaniko: Construir contenedores en un clúster de Kubernetes

La mayoría de las imágenes de contenedores están construidas en un sistema fuera de una pila de contenedores. Sin embargo, a veces, seguramente querrá realizar el proceso de construcción dentro de una pila de contenedores -por ejemplo, dentro de un contenedor en ejecución o en algún lugar de un clúster de Kubernetes.

Kaniko construye contenedores dentro de un entorno de contenedores, pero sin depender de un demonio como Docker para hacer el trabajo. En cambio, Kaniko extrae el sistema de archivos de la imagen base, y luego ejecuta todos los comandos de construcción en el espacio de usuario sobre el sistema de archivos extraído, tomándole una instantánea después de cada comando.

Tenga en cuenta que Kaniko actualmente no puede construir contenedores de Windows.

Kops: Operaciones de línea de comando para los clústeres de Kubernetes

Desarrollado por el equipo de Kubernetes, Kops le permite gestionar los clústeres de Kubernetes desde la línea de comandos. Este soporta clústeres que se ejecutan en AWS y GCE, con VMware vSphere y otras plataformas de virtualización. Además de automatizar el proceso de instalación y desmontaje, Kops ayuda con otros tipos de automatización. Por ejemplo, puede generar configuraciones de Terraform para permitir que un clúster sea reestructurado usando Terraform.

Kubebox: Emulador de consola para Kubernetes

Kubebox, un avanzado emulador de consola que proporciona mucho más que un glorificado shell a Kubernetes y a su API. Este ofrece visualizaciones interactivas del uso de la memoria y el CPU, listas de pods, registros de ejecución y editores de configuración. Lo mejor de todo es que está disponible como una aplicación independiente para Linux, Windows y MacOS.

Kubecost: Métricas de costo para ejecutar Kubernetes

La mayoría de las herramientas de administración de Kubernetes se centran en la facilidad de uso, el monitoreo, la comprensión de los comportamientos de los pods, y similares. ¿Pero qué hay de la supervisión de los costos asociados con la ejecución de Kubernetes?

Kubecost utiliza métricas de Kubernetes en tiempo real -e información real- de los costos obtenida de la ejecución de clústeres en los principales proveedores de nubes para proporcionar una vista de dashboard del costo mensual de cada despliegue de clúster. Los costos de memoria, CPU, GPU y almacenamiento son desglosados por componente de Kubernetes (contenedor, pod, servicio, despliegue, etc.).

Kubecost también puede rastrear los costos de los recursos "fuera del clúster", como los buckets de Amazon S3, aunque esto se limita actualmente a AWS. Los datos de costos pueden incluso ser compartidos con Prometheus, por lo que puede usar los datos para alterar programáticamente el comportamiento del clúster.

Kubecost es gratuito para llevar 15 días de registros. Si necesita características más avanzadas, el precio comienza en 199 dólares por mes para monitorear 50 nodos.

Kube-applier

Ejecutándose como un servicio de Kubernetes, Kube-applier obtiene archivos de configuración declarativos para un clúster de Kubernetes desde un repositorio Git, y los aplica a los pods del clúster. Siempre que se realizan cambios en los archivos de definición, son extraídos del repositorio y aplicados a los pods en cuestión. En esencia, Kube-applier es como el Skaffold de Google, solo que sirve para administrar todo un clúster de Kubernetes en lugar de una sola aplicación.

Kube-applier puede aplicar cambios de configuración en un horario o a petición. Este registra su comportamiento cada vez que se ejecuta, y proporciona métricas compatibles con Prometheus, para que esté informado sobre cómo podría afectar al comportamiento de los clústeres.

KubeDB: Ejecuta bases de datos de producción en Kubernetes

Las bases de datos siempre han sido difíciles de manejar con elegancia en Kubernetes. Encontrará operadores de Kubernetes para MySQL, PostgreSQL, MongoDB, y Redis, pero hay muchas brechas; y el conjunto de características nativas de Kubernetes no resuelve muchos de los problemas específicos de las bases de datos.

KubeDB le permite crear sus propios operadores de Kubernetes para gestionar las bases de datos. Hacer copias de seguridad, clonar, monitorear, hacer instantáneas y crear bases de datos de forma declarativa son parte de la combinación. Tenga en cuenta que las funciones admitidas varían según las bases de datos. Por ejemplo, el clustering está disponible para PostgreSQL, pero no para MySQL.

Kube-monkey: El chaos monkey para Kubernetes

Una forma segura de hacerle una prueba de estrés a un sistema es rompiendo cosas al azar. Esa es la teoría detrás de Chaos Monkey de Netflix, una herramienta de ingeniería del caos que finaliza aleatoriamente las máquinas virtuales y los contenedores que están en producción para "animar/incentivar" a los desarrolladores a que construyan sistemas más resistentes. En ese sentido, Kube-monkey es una implementación para hacerle pruebas de estrés a los clústeres de Kubernetes, que funciona matando pods al azar en el clúster que usted seleccione y puede ser ajustado para que opere dentro de ventanas de tiempo específicas.

Kube-ps1: El símbolo command prompt del Kubernetes inteligente

No, Kube-ps1 no es un emulador de Sony PlayStation de primera generación para Kubernetes (aunque eso sería genial). Es una simple adición a Bash que muestra el contexto actual de Kubernetes y el namspace en el prompt. Kube-shell incluye esto junto con muchas otras características, pero si todo lo que quiere es un prompt más inteligente, Kube-ps1 lo proporciona con pocos gastos.

Kube-prompt: Cliente interactivo de Kubernetes

Otra mínima, pero útil modificación a la CLI de Kubernetes, Kube-prompt le permite introducir lo que equivale a una sesión de comandos interactiva con el cliente de Kubernetes. Kube-prompt le evita tener que escribir kubectl para poner el prefijo a cada comando, y proporciona el autocompletado con información contextual para cada comando.

Kubespray: Despliegue automatizado para Kubernetes

Kubespray automatiza el despliegue de un clúster de Kubernetes listo para la producción en casi cualquier entorno, desde bare-metal hasta las principales nubes públicas. Este utiliza Ansible (opcionalmente Vagrant) para realizar el despliegue y crea un clúster de alta disponibilidad con su elección de plug-in de red (por ejemplo, Flannel, Calico, Weave, etc.) y su elección entre muchas distribuciones populares de Linux para instalaciones bare-metal.

Kubespy: Monitorización en tiempo real de los recursos de Kubernetes

Kubespy de Pulumi es una herramienta de diagnóstico que le permite rastrear los cambios en un recurso de Kubernetes en tiempo real, proporcionándole una especie de tablero de texto de lo que está sucediendo. Por ejemplo, usted podría ver los cambios en el estado de un pod a medida que se inicia: la definición de pod que se está escribiendo en Etcd, el pod que está siendo programado para ejecutarse en un nodo, el Kubelet en el nodo que se encuentra creando el pod, y el pod que finalmente es marcado como ejecutado. Kubespy puede funcionar como un binario independiente o como un plug-in para Kubectl.

Kubeval: Validar las configuraciones de Kubernetes

Los archivos de configuración YAML de Kubernetes están pensados para ser legibles por los humanos, pero eso no siempre significa que sean validables por los humanos. Es fácil pasar por alto una coma extra o un nombre mal escrito, y no enterarse hasta que ya es demasiado tarde. Mejor es utilizar Kubeval, que usado localmente o integrado en su pipeline CI/CD, toma una definición de la configuración YAML de Kubernetes e informa sobre su validez. Puede producir outputs en formato JSON o TAP, e incluso puede analizar las plantillas de origen referenciadas en una configuración Helm chart sin necesidad de un requerimiento adicional.

Kube-ops-view: Dashboard para múltiples clústeres de Kubernetes

Kubernetes tiene un dashboard útil para los monitoreos de carácter general, pero la comunidad de Kubernetes está experimentando con otras maneras de presentar los datos al administrador de los Kubernetes de forma útil. Kube-ops-view es uno de estos experimentos. Este proporciona un vistazo de varios clústeres de Kubernetes, renderizados gráficamente, para que a simple vista se pueda ver el uso del CPU y de la memoria, y el estado de los pods en todo un clúster. Tenga en cuenta que no le permitirá aplicar ningún comando, es exclusivamente para la visualización, pero las visualizaciones que proporciona son sorprendentes y eficientes, nacidas para ser puestas en el monitor de pared de su centro de operaciones.

Rio: El motor de despliegue de aplicaciones para Kubernetes

Rio, un proyecto de Rancher Labs, implementa patrones de despliegue de aplicaciones comunes en Kubernetes, tales como la entrega continua de los despliegues de Git y, A/B o azul/verde. Rio puede desplegar una nueva versión de su aplicación cada vez que usted se compromete, gestionando de forma útil complejidades como DNS, HTTPS y mallas de servicio.

Skaffold: Desarrollo iterativo para Kubernetes

Skaffold es una de las herramientas de Google para Kubernetes, una forma de realizar despliegues continuos para las aplicaciones de Kubernetes. Cuando realiza cambios en su código fuente, Skaffold los detecta automáticamente, desencadena el proceso de creación e implementación, y le avisa si aparece algún error. Skaffold se ejecuta completamente en el lado del cliente, razón por la cual hay poca carga de configuración o mantenimiento. Se puede utilizar en un pipeline CI/CD existente y se integra con unas pocas herramientas de construcción externas, sobre todo con Bazel de Google.

Stern y Kubetail: Seguimiento del registro de Kubernetes

Stern le permite producir outputs codificados por colores (según el comando Tail) desde los pods y contenedores en Kubernetes. Es una forma rápida de canalizar todos los outputs de múltiples recursos en un solo stream que puede ser leído de un solo vistazo y una manera rápida (codificación por color) de distinguir los streams.

Kubetail agrega de manera similar los registros de múltiples pods en un solo stream, codificando por color diferentes pods y contenedores. Sin embargo, Kubetail es un Bash script, razón por la cual no requiere nada más que un shell.

Teresa: Una simple PaaS en Kubernetes

Teresa es un sistema de despliegue de aplicaciones que funciona como un simple PaaS en Kubernetes. Los usuarios, organizados en equipos, pueden desplegar y gestionar las aplicaciones que les pertenecen. Esto hace que sea un poco más fácil para las personas a las que se les confía una aplicación determinada trabajar con ella, sin tener que lidiar con Kubernetes y todas sus complejidades.

Tilt: Actualizaciones de stream container a los clústers de Kubernetes

Desarrollado por Windmill Engineering, Tilt monitorea los cambios en los Dockerfiles y luego los despliega de forma incremental en los contenedores adecuados en un clúster de Kubernetes. En esencia, Tilt permite a los desarrolladores actualizar un clúster en vivo y en tiempo real simplemente actualizando un Dockerfile. Tilt construye dentro del clúster y los únicos cambios impulsados son los del código fuente. Incluso puede tomar instantáneas del estado del clúster y de las condiciones de error desde un estado de Tilt para compartirlas con los miembros del equipo y comenzar con la depuración.