Aprende a Escribir Manifiestos YAML de Kubernetes de Manera Más Eficiente

Aprende a Escribir Manifiestos YAML de Kubernetes de Manera Más Eficiente

Cuando todos estamos en este nuevo entorno nativo de la nube donde Kubernetes es el rey indiscutible, necesitas aprender a manejar los manifiestos YAML de Kubernetes todo el tiempo. Te convertirás en un experto en secciones de sangría para asegurarte de que esto pueda ser procesado, etc. Pero debemos admitir que es tedioso. Todos los beneficios del despliegue de Kubernetes hacen que el esfuerzo valga la pena, pero incluso con eso, es bastante complejo poder manejarlo.

Es cierto que, para simplificar esta situación, se han lanzado muchos proyectos, como Helm para gestionar plantillas de manifiestos YAML de Kubernetes relacionados o Kustomize diferentes enfoques para llegar al mismo lugar o incluso soluciones específicas para una distribución de Kubernetes como las Plantillas de Openshift. Pero al final, nada de esto puede resolver el problema a nivel primario. Así que necesitas escribir esos archivos manualmente tú mismo.

¿Y cuál es el proceso ahora? Probablemente estés siguiendo uno diferente, pero te contaré mi enfoque. Dependiendo de lo que estoy tratando de crear, trato de encontrar una plantilla disponible para el Manifiesto YAML de Kubernetes que quiero hacer. Esta plantilla puede ser algún recurso previo que ya he creado. Por lo tanto, uso eso como base, podría ser algo generado para alguna carga de trabajo que ya está desplegada (¡qué bueno que Lens ha existido para simplificar la gestión de cargas de trabajo de Kubernetes en ejecución! Si no conoces Lens, por favor echa un vistazo a este artículo) o si no tienes nada a mano, buscas en Google algo similar probablemente en la documentación de Kubernetes, stack overflow o el primer recurso razonable que Google te proporcione.

Y después de eso, el enfoque es el mismo. Vas a tu Editor de Texto, VS Code en mi caso. Tengo muchos plugins diferentes para hacer este proceso menos doloroso. Muchos linters diferentes validan la estructura del Manifiesto YAML de Kubernetes para asegurarse de que todo esté correctamente sangrado, que no haya etiquetas repetidas o que no falten etiquetas obligatorias en la última versión del recurso, etc.

Las cosas se complican un poco si estás creando un Helm Chart porque en ese caso los linters para YAML no funcionan tan bien y detectan algunos falsos positivos porque no entienden realmente la sintaxis de Helm. También completas tu configuración con algunos linters más para Helm, y eso es todo. Luchas error tras error y cambio tras cambio para tener tu deseado Manifiesto YAML de Kubernetes.

Pero, ¿debería haber una mejor manera de hacer eso? Sí, debería, y esto es lo que herramientas como Monokle intentan proporcionar una mejor experiencia de ese proceso. Veamos cómo funciona. Comenzando con las palabras de su contribuyente:

Monokle es tu amigable interfaz de usuario de escritorio para gestionar manifiestos de Kubernetes. Monokle te ayuda a obtener rápidamente una vista de alto nivel de tus manifiestos y sus recursos contenidos, editar recursos fácilmente sin tener que aprender la sintaxis yaml, comparar recursos con tu clúster, previsualizar y depurar recursos generados con kustomize o Helm, y más.

Monokle te ayuda de las siguientes maneras. En primer lugar, presenta al inicio de tu trabajo un conjunto de plantillas para crear tus Manifiestos YAML de Kubernetes, como puedes ver en la imagen a continuación:

Aprende a Escribir Manifiestos YAML de Kubernetes de Manera Más Eficiente
Diálogo de Selección de Plantillas de Monokle

Cuando seleccionas una plantilla, puedes completar los valores requeridos gráficamente sin necesidad de escribir código YAML tú mismo, como puedes ver en la imagen a continuación:

Aprende a Escribir Manifiestos YAML de Kubernetes de Manera Más Eficiente
Proceso de Población de Valores de Plantilla de Monokle

También admite el reconocimiento de recursos de Helm Chart y Kustomize, por lo que verás rápidamente tus gráficos, y puedes editarlos de una manera más moderna incluso gráficamente para algunos de los recursos también:

Aprende a Escribir Manifiestos YAML de Kubernetes de Manera Más Eficiente
Modificación de Helm Chart usando Monokle

Permite una buena integración de varias maneras, en primer lugar con OPA para que pueda validar todas las reglas y mejores prácticas que has definido y también puedes conectarte a un clúster en ejecución para ver los recursos desde allí y también ver la diferencia entre ellos si existe para simplificar el proceso y proporcionar más agilidad en el proceso de creación de Manifiestos YAML de Kubernetes

Además de todo eso, Monokle es un componente certificado por la fundación CNCF, por lo que estarás utilizando un proyecto respaldado por la misma fundación que se encarga de Kubernetes en sí, entre otras tareas:

Aprende a Escribir Manifiestos YAML de Kubernetes de Manera Más Eficiente
Monokle es parte del Paisaje de la Fundación CNCF

Si deseas descargar Monokle, pruébalo y puedes hacerlo desde su página web: https://monokle.kubeshop.io/ y estoy seguro de que tu rendimiento escribiendo Manifiestos YAML de Kubernetes te lo agradecerá pronto!

📚 Want to dive deeper into Kubernetes? This article is part of our comprehensive Kubernetes Architecture Patterns guide, where you’ll find all fundamental and advanced concepts explained step by step.

Cómo mejorar la productividad en el desarrollo de cargas de trabajo de Kubernetes

timelapse photo of highway during golden hour

La telepresencia es la forma de reducir el tiempo entre tus líneas de código y una carga de trabajo nativa de la nube en ejecución.

foto de lapso de tiempo de la autopista durante la hora dorada
Foto de Joey Kyber en Unsplash

Todos sabemos cómo las cargas de trabajo nativas de la nube y Kubernetes han cambiado la forma en que hacemos las cosas. Hay muchos beneficios que vienen con el efecto de la contenedorización y las plataformas de orquestación como Kubernetes, y hemos discutido mucho sobre ello: escalabilidad, autocuración, autodescubrimiento, resiliencia, y así sucesivamente.

Pero se han planteado algunos desafíos, la mayoría de ellos en el aspecto operativo en el que tenemos muchos proyectos enfocados en abordar, pero generalmente olvidamos lo que el embajador ha definido como el “ciclo de desarrollo interno”.

El “ciclo de desarrollo interno” es el flujo de trabajo productivo que cada desarrollador sigue al trabajar en una nueva aplicación, servicio o componente. Este flujo iterativo es donde codificamos, probamos lo que hemos codificado y arreglamos lo que no funciona o mejoramos lo que ya tenemos.

Este flujo ha existido desde el principio de los tiempos; no importa si estabas codificando en C usando la biblioteca STD o COBOL a principios de 1980 o haciendo nodejs con los últimos marcos y bibliotecas a tu disposición.

Hemos visto movimientos hacia hacer este ciclo interno más efectivo, especialmente en el desarrollo front-end. Tenemos muchas opciones para ver el último cambio que hemos hecho en el código, solo guardando el archivo. Pero por primera vez, cuando el movimiento hacia una plataforma basada en contenedores, este flujo hace que los desarrolladores sean menos productivos.

La razón principal es que el número de tareas que un desarrollador necesita hacer ha aumentado. Imagina este conjunto de pasos que necesitamos realizar:

  • Construir la aplicación
  • Construir la imagen del contenedor
  • Desplegar la imagen del contenedor en Kubernetes

Estas acciones no son tan rápidas como probar tus cambios localmente, haciendo que los desarrolladores sean menos productivos que antes, que es lo que el proyecto “telepresencia” está tratando de resolver.

La telepresencia es un proyecto incubador de la CNCF que ha centrado mucha atención recientemente porque se ha incluido OOTB en las últimas versiones del componente Docker Desktop. Basado en sus propias palabras, esta es la definición del proyecto de telepresencia:

La telepresencia es una herramienta de código abierto que permite a los desarrolladores codificar y probar microservicios localmente contra un clúster de Kubernetes remoto. La telepresencia facilita flujos de trabajo de desarrollo más eficientes aliviando la necesidad de preocuparse por otras dependencias de servicio.

Ok, entonces, ¿cómo podemos empezar? Vamos a sumergirnos juntos. Lo primero que necesitamos hacer es instalar la telepresencia en nuestro clúster de Kubernetes:

Nota: También hay una forma de instalar telepresencia usando Helm en tu clúster siguiendo estos pasos:

helm repo add datawire  https://app.getambassador.io
helm repo update
kubectl create namespace ambassador
helm install traffic-manager --namespace ambassador datawire/telepresence

Ahora crearé un contenedor simple que alojará una aplicación Golang que expone un servicio REST simple y lo haré más accesible; seguiré el tutorial que está disponible a continuación; tú también puedes hacerlo.

Una vez que tengamos nuestra aplicación golang lista, vamos a generar el contenedor a partir de ella, usando el siguiente Dockerfile:

FROM golang:latest

RUN apt-get update
RUN apt-get upgrade -y

ENV GOBIN /go/bin

WORKDIR /app

COPY *.go ./
RUN go env -w GO111MODULE=off
RUN go get .
RUN go build -o /go-rest
EXPOSE 8080
CMD [ "/go-rest" ]

Luego, una vez que tengamos la aplicación, la subiremos al servidor de Kubernetes y la ejecutaremos como un despliegue, como puedes ver en la imagen a continuación:

kubectl create deployment rest-service --image=quay.io/alexandrev/go-test  --port=8080
kubectl expose deploy/rest-service

Una vez que tengamos eso, es el momento de comenzar a ejecutar la telepresencia, y comenzaremos a conectarnos al clúster usando el siguiente comando telepresence connect, y mostrará una salida como esta:

Cómo mejorar la productividad en el desarrollo de cargas de trabajo de Kubernetes

Luego vamos a listar los puntos finales disponibles para interceptar con el comando telepresence list y veremos nuestro servicio-rest que hemos expuesto antes:

Cómo mejorar la productividad en el desarrollo de cargas de trabajo de Kubernetes

Ahora, ejecutaremos el interceptor específico, pero antes de eso, vamos a hacer el truco para que podamos conectarlo a nuestro Visual Studio Code. Generaremos un archivo launch.json en Visual Studio Code con el siguiente contenido:

{
    // Usa IntelliSense para aprender sobre posibles atributos.
    // Pasa el ratón para ver descripciones de atributos existentes.
    // Para más información, visita: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Lanzar con archivo env",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "program": "1",
            "envFile": "NULL/go-debug.env"
           }
    ]
}

La parte interesante aquí es el argumento envFile que apunta a un archivo inexistente go-debug.env en la misma carpeta, por lo que necesitamos asegurarnos de que generamos ese archivo cuando hacemos la intercepción. Así que usaremos el siguiente comando:

telepresence intercept rest-service --port 8080:8080 --env-file /Users/avazquez/Data/Projects/GitHub/rest-golang/go-debug.env

Y ahora, podemos comenzar nuestra sesión de depuración en Visual Studio Code y tal vez agregar un punto de interrupción y algunas líneas, como puedes ver en la imagen a continuación:

Cómo mejorar la productividad en el desarrollo de cargas de trabajo de Kubernetes

Entonces, ahora, si golpeamos el pod en Kubernetes, veremos cómo se alcanza el punto de interrupción como si estuviéramos en una sesión de depuración local.

Cómo mejorar la productividad en el desarrollo de cargas de trabajo de Kubernetes

Eso significa que podemos inspeccionar variables y todo, cambiar el código o hacer lo que necesitemos para acelerar nuestro desarrollo!

📚 Want to dive deeper into Kubernetes? This article is part of our comprehensive Kubernetes Architecture Patterns guide, where you’ll find all fundamental and advanced concepts explained step by step.

Cómo solucionar problemas de conexiones de red en tus cargas de trabajo de Kubernetes

blue UTP cord

Descubre Mizu: Visor de Tráfico para Kubernetes para facilitar este desafío y mejorar tu trabajo diario.

Cómo solucionar problemas de conexiones de red en tus cargas de trabajo de Kubernetes

Foto de Jordan Harrison en Unsplash

Una de las cosas más comunes que tenemos que hacer al probar y depurar nuestras cargas de trabajo nativas de la nube en Kubernetes es verificar la comunicación de red.

Podría ser para verificar el tráfico entrante que estás recibiendo para que podamos inspeccionar las solicitudes que estamos recibiendo y ver a qué estamos respondiendo y casos de uso similares. Estoy seguro de que esto suena familiar para la mayoría de ustedes.

Normalmente resuelvo eso usando tcpdump en el contenedor, similar a lo que haría en un entorno tradicional, pero esto no siempre es fácil. Dependiendo del entorno y la configuración, no puedes hacerlo porque necesitas incluir un nuevo paquete en la imagen de tu contenedor, hacer un nuevo despliegue para que esté disponible, etc.

Entonces, para resolver eso y otros problemas similares, descubrí una herramienta llamada Mizu, que me hubiera gustado encontrar hace unos meses porque me ayudaría mucho. Mizu es precisamente eso. En sus propias palabras:

Mizu es un visor de tráfico API simple pero poderoso para Kubernetes, que te permite ver toda la comunicación API entre microservicios a través de múltiples protocolos para ayudarte a depurar y solucionar regresiones.

Para instalar, es bastante sencillo. Necesitas obtener el binario y proporcionar el permiso correcto en tu computadora. Tienes un binario diferente para cada arquitectura, y en mi caso (Mac basado en Intel), estos son los comandos que ejecuté:

curl -Lo mizu github.com/up9inc/mizu/releases/latest/download/mizu_darwin_amd64 && chmod 755 mizu && mv mizu /usr/local/bin

Y eso es todo, luego tienes un binario en tu laptop que se conecta a tu clúster de Kubernetes usando la API de Kubernetes, por lo que necesitas tener configurado el contexto adecuado.

En mi caso, he desplegado un servidor nginx simple usando el comando:

 kubectl run simple-app --image=nginx --port 80

Y una vez que el componente ha sido desplegado, como se muestra en la captura de pantalla de Lens a continuación:

Ejecuté el comando para lanzar mizu desde mi laptop:

mizu tap

Y después de unos segundos, tengo frente a mí una página web abierta monitoreando todo el tráfico que ocurre en este pod:

Cómo solucionar problemas de conexiones de red en tus cargas de trabajo de Kubernetes

He expuesto el puerto de nginx usando el comando kubectl expose:

 kubectl expose pod/simple-app

Y después de eso, desplegué un pod temporal usando la imagen curl para comenzar a enviar algunas solicitudes con el comando que se muestra a continuación:

 kubectl run -it --rm --image=curlimages/curl curly -- sh

ahora he comenzado a enviar algunas solicitudes a mi pod nginx usando curl:

 curl -vvv http://simple-app:80 

Y después de algunas llamadas, pude ver mucha información frente a mí. En primer lugar, puedo ver las solicitudes que estaba enviando con todos los detalles de las mismas:

Cómo solucionar problemas de conexiones de red en tus cargas de trabajo de Kubernetes

Pero aún más importante, puedo ver un diagrama de mapa de servicios que muestra las dependencias y las llamadas gráficamente que ocurren en el pod con el tiempo de respuesta y también el uso del protocolo:

Cómo solucionar problemas de conexiones de red en tus cargas de trabajo de Kubernetes

Esto ciertamente no reemplazará una solución completa de observabilidad sobre una malla de servicios. Aún así, será una herramienta muy útil para agregar a tu cadena de herramientas cuando necesites depurar una comunicación específica entre componentes o escenarios similares. Como se comentó, es como un tcpdump de alto nivel para la comunicación de pods.

📚 Want to dive deeper into Kubernetes? This article is part of our comprehensive Kubernetes Architecture Patterns guide, where you’ll find all fundamental and advanced concepts explained step by step.

Los 3 mejores trucos para usar Medium y mantenerte al día en la industria tecnológica

Los 3 mejores trucos para usar Medium y mantenerte al día en la industria tecnológica

Medium puede ser uno de tus mejores aliados en esta tarea interminable de mantenerse al día con las actualizaciones en la industria tecnológica.

Todos los que estamos aquí usamos Medium. Estoy siendo un poco Capitán Obvio aquí porque si estás leyendo esto, estoy seguro de que ya estás usando Medium para el crecimiento profesional y para aprender cosas nuevas, pero me gustaría destacar cómo lo uso para mantenerme al día con la situación actual.

Sabes que las cosas cambian muy rápido. Por supuesto, esto está sucediendo en todas las industrias y negocios, pero es aún más urgente en la industria tecnológica.

Estamos viendo nuevas tecnologías cada semana o incluso cada día. Los frameworks cambian tan rápido como podemos imaginar, y tratar de mantener el ritmo de eso es bastante complejo para cualquiera de nosotros. Por lo tanto, debemos usar todas las herramientas a nuestra disposición para asegurarnos de hacer lo mejor en esta situación.

#1 Ajusta tus Recomendaciones Personalizadas

Una de las grandes cosas de Medium es que utiliza tus intereses y los artículos que has estado leyendo y cuánto tiempo pasaste leyéndolos para recomendarte nuevos artículos relevantes.

Así que, aquí las recomendaciones son claras: Usa Medium todo el tiempo. Intenta usar la capacidad de búsqueda para buscar en muchos artículos disponibles porque cuanto más lo uses, más precisas serán las recomendaciones para ti.

Tuve un tiempo, hace unas semanas, cuando estaba realmente interesado en Arquitecturas de Datos Modernas y Nativas de la Nube debido a algunas responsabilidades profesionales. Así que comencé a buscar esos artículos en Medium. Desde ese momento, las recomendaciones han sido bastante precisas sobre lo que estaba buscando y me ayudaron a mejorar mi conocimiento y encontrar artículos que no tenía idea de que estaban disponibles en Medium.

Además de eso, necesitas asegurarte de que tus intereses estén bien configurados. Por lo general, cuando configuramos una cuenta y nos preguntan sobre nuestros intereses, probablemente no lo pensamos mucho tiempo porque lo único que queremos es acceder al contenido de inmediato (¡culpable aquí!).

Por lo tanto, debes tomarte tu tiempo ahora para asegurarte de que los intereses que seleccionaste cuando te uniste sigan siendo los más relevantes para ti hoy. Si deseas verificar tus intereses actuales, necesitas ir a tu perfil y hacer clic en «Controla tus Recomendaciones», como puedes ver en la imagen a continuación:

Los 3 mejores trucos para usar Medium y mantenerte al día en la industria tecnológica
Página de Controla tus Recomendaciones de mi perfil de Medium 

Además, verás los temas que te interesan ahora y un montón de sugerencias de nuevos temas basados en tu historial de lectura que creen que podrían interesarte. Por lo tanto, es importante visitar la página de vez en cuando para asegurarte de que sean precisos y verificar las recomendaciones que te están proporcionando.

#2: Función Leer Más Tarde 

Otra característica clave es guardar todos los artículos interesantes para continuar leyéndolos más tarde o mantenerlos como tu propia biblioteca. Este es el uso principal que le doy a ese concepto. Intento usar la función Leer Más Tarde para crear y gestionar mi propia «biblioteca basada en Medium».

Y la razón principal detrás de este enfoque es porque todos hemos sufrido esta situación cuando encontramos un gran artículo sobre un tema. Sin embargo, cambiamos a otra tarea, y más tarde, cuando necesitamos encontrar ese artículo nuevamente, no recordamos el título o el autor, y pasamos mucho tiempo tratando de localizarlo nuevamente.

#3: Capacidad de Búsqueda

Incluso cuando estamos acostumbrados a usar Google como nuestra principal opción de búsqueda para buscar cualquier cosa, creo que es importante usar las capacidades de búsqueda en el sitio de Medium por varias razones:

  • El contenido que tenemos disponible en Medium es enorme, y la mayoría de ellos es de gran calidad debido al proceso de curación.
  • Es importante que Medium te conozca mejor, y eso afinará todas las recomendaciones que ya hemos comentado.

Y todo esto sin preocuparte de que encontrarás muchos anuncios basados en tu historial de búsqueda 🙂

#4: Miembro de Medium 

Y he dejado para el final lo que creo que es la parte más importante: Convertirse en Miembro de Medium.

Medium es genial, no importa si eres miembro o no. Aún así, cuando no era miembro de Medium, era simplemente molesto encontrar el artículo que necesitaba, pero no podía leerlo porque ya había gastado los artículos «destacados» del mes, y necesitaba esperar un mes adicional. Así que sabemos que esto no es válido si quieres mantenerte actualizado en la industria tecnológica, así que por favor, hazte un favor y conviértete en miembro de Medium. Te sentirás más cómodo en la plataforma y comenzarás a vivir dentro de ella.

Maid: El organizador de archivos automatizado de código abierto definitivo para hackers

Maid: El organizador de archivos automatizado de código abierto definitivo para hackers

Maid ofrece lo mejor de ambos mundos: facilidad de uso y flexibilidad que viene con una interfaz basada en código.

Uno de los principales problemas que tengo debido a mis prácticas rutinarias usando computadoras es la falta de disciplina organizativa. Para mí es bastante complejo tener todos los diferentes archivos organizados en el lugar correcto todo el tiempo, y finalmente decidí dejar de luchar contra eso.

Esto es algo que me ha pasado desde el comienzo de mi uso de computadoras, pero empeoró cuando comencé a trabajar en la industria hace más de diez años.

Tengo colegas con un proceso de organización sólido desde el correo recibido (usando las conocidas carpetas de Lotus o Outlook) hasta los documentos que reciben o producen para los diferentes temas y cuentas usando una organización de carpetas específica.

Para mí, todo se deja en alguna carpeta, como Descargas, Escritorio, o una carpeta similar, y espero encontrar todo por ahí. Para los correos electrónicos, he resuelto este problema porque las capacidades de búsqueda de Gmail son tan poderosas que pueden recuperar cualquier correo en segundos, pero encontrar y organizar mis archivos es mucho más complejo.

Debido a eso, he estado buscando una herramienta para hacer todo este trabajo por mí porque sé que no puedo hacerlo. Puedo intentarlo… puedo hacerlo un día o tal vez dos, pero este es un hábito que no puedo mantener por un largo período de tiempo.

Así que, en esta búsqueda de opciones, he probado muchas cosas porque, en este tiempo, también he cambiado mucho de sistemas operativos, así que logré probar Hazel, FileJuggle, Drop, y así sucesivamente. Pero ninguno de ellos proporcionó la flexibilidad y la simplicidad que necesitaba al mismo tiempo. Y una y otra vez vuelvo a mi viejo amigo maid.

Maid es un proyecto creado por Ben Oakes que él define en sus propias palabras como un Hazel para Hackers, y eso es cierto. Así que proporciona las mismas capacidades que Hazel pero de una manera que es mucho más flexible para personas que tienen un trasfondo en programación.

Maid: El organizador de archivos automatizado de código abierto definitivo para hackers
Regla de ejemplo de maid para mover archivos pdf de Descargas a la carpeta Libros

Basado en Ruby On Rails, al final, tu tarea es tan fácil como definir las reglas que deseas aplicar usando este lenguaje. Pero para hacerlo más fácil y porque no es necesario ser un experto en Ruby para poder usar las herramientas, Ben ya ha desarrollado muchas funciones de ayuda para simplificar la creación de estas reglas.

Funciones de ayuda como weeks.accessed, downloaded_from, image_px, y al mismo tiempo las acciones comunes como move, trash, o copy.

Así que, al final, es como si codificaras tus reglas usando un lenguaje de muy alto nivel, como cuando usas una GUI en otros programas como Hazel. Pero al mismo tiempo, como esto es código, también tienes toda la flexibilidad y poder a tu disposición para ser usado cuando lo necesites.

Instalar las herramientas es tan fácil como simplemente escribir los siguientes comandos:

gem install maid
maid sample 

Y después de eso, tendrás un archivo de reglas de ejemplo en tu carpeta .maid para ayudarte a crear el conjunto inicial de reglas. Y después de ese punto, solo estás limitado por tus necesidades y tu imaginación para finalmente manejar esta locura de archivos en la que, al menos yo, he estado durante mucho tiempo.

Descubre tu herramienta perfecta para gestionar Kubernetes

Descubre tu herramienta perfecta para gestionar Kubernetes

Maximizando la productividad al trabajar con el entorno de Kubernetes con una herramienta para cada persona

Todos sabemos que Kubernetes es el entorno predeterminado para todas nuestras nuevas aplicaciones que desarrollamos y construiremos. El sabor de esa plataforma de Kubernetes puede ser de diferentes maneras y formas, pero una cosa está clara, es complejo. Las razones detrás de esta complejidad son poder proporcionar toda la flexibilidad, pero también es cierto que el proyecto k8s nunca ha puesto mucho esfuerzo en proporcionar una forma sencilla de gestionar tus clústeres y kubectl es el punto de acceso para enviar comandos, dejando esta puerta abierta a la comunidad para proporcionar su propia solución y estas son las cosas que vamos a discutir hoy.

Tablero de Kubernetes: La Opción Predeterminada

El Tablero de Kubernetes es la opción predeterminada para la mayoría de las instalaciones. Es una interfaz basada en la web que es parte del proyecto K8s pero no se despliega por defecto cuando instalas el clúster.
Descubre tu herramienta perfecta para gestionar Kubernetes

K9S: La opción de CLI

K9S es una de las opciones más comunes para aquellos que aman una interfaz de línea de comandos muy poderosa con muchas opciones a su disposición.
Descubre tu herramienta perfecta para gestionar Kubernetes
Es una mezcla entre todo el poder de una interfaz de línea de comandos con todas las opciones de teclado a tu disposición con una vista gráfica muy elegante para tener una visión rápida del estado de tu clúster de un vistazo.

Lens — La Opción Gráfica

Lens es una opción de GUI muy vitaminada que va más allá de solo mostrar el estado del clúster de K8S o permitir modificaciones en los componentes. Con integración con otros proyectos como Helm o soporte para el CRD. Proporciona una experiencia muy agradable de gestión de clústeres con soporte para múltiples clústeres también. Para saber más sobre Lens puedes echar un vistazo a este artículo donde cubrimos sus principales características:

Octant — La Opción Web

Octant proporciona una experiencia mejorada en comparación con la opción web predeterminada discutida en este artículo usando el tablero de Kubernetes. Construido para la extensión con un sistema de complementos que te permite extender o personalizar el comportamiento de octant para maximizar tu productividad gestionando clústeres de K8S. Incluyendo soporte para CRD y visualización gráfica de dependencias, proporciona una experiencia increíble.
Descubre tu herramienta perfecta para gestionar Kubernetes

Resumen

Hemos proporcionado en este artículo diferentes herramientas que te ayudarán durante la importante tarea de gestionar o inspeccionar tu clúster de Kubernetes. Cada una de ellas con sus propias características y cada una de ellas se enfoca en diferentes formas de proporcionar la información (CLI, GUI y Web) para que siempre puedas encontrar una que funcione mejor para tu situación y preferencias.

📚 Want to dive deeper into Kubernetes? This article is part of our comprehensive Kubernetes Architecture Patterns guide, where you’ll find all fundamental and advanced concepts explained step by step.

3 herramientas inusuales para aumentar tu productividad como desarrollador

3 herramientas inusuales para aumentar tu productividad como desarrollador

Una lista no-VS Code para ingenieros de software

Este no va a ser uno de esos artículos sobre herramientas que pueden ayudarte a desarrollar código más rápido. Si estás interesado en eso, puedes revisar mis artículos anteriores sobre extensiones de VS Code, linters y otras herramientas que hacen tu vida como desarrollador más fácil.

Mi trabajo no solo trata sobre desarrollo de software, sino también sobre resolver problemas que tienen mis clientes. Aunque sus problemas pueden estar relacionados con el código, pueden ser un error de operación o incluso un problema de diseño.

Usualmente tiendo a definir mi rol como un llanero solitario. Salgo sin saber a qué me enfrentaré, y necesito estar listo para adaptarme, resolver el problema y hacer felices a los clientes. Esta experiencia me ha ayudado a desarrollar una cadena de herramientas que es importante para hacer ese trabajo.

¡Vamos a sumergirnos!


1. MobaXterm

Esta es la mejor herramienta para gestionar diferentes conexiones a diferentes servidores (acceso SSH para un servidor Linux, RDP para un servidor Windows, etc.). Aquí están algunas de sus características clave:

  • Reenvío de puertos SSH gráfico para esos casos en los que necesitas conectarte a un servidor al que no tienes acceso directo.
  • Gestión de identidades fácil para guardar las contraseñas de los diferentes servidores. Puedes organizarlas jerárquicamente para facilitar el acceso, especialmente cuando necesitas acceder a tantos servidores para diferentes entornos e incluso diferentes clientes.
  • Conexión automática SFTP cuando te conectas a un servidor SSH. Te permite descargar y subir archivos tan fácilmente como arrastrar archivos allí.
  • Reenvío X11 automático para que puedas lanzar aplicaciones gráficas desde tus servidores Linux sin necesidad de configurar nada o usar otros servidores X como XMing.
MobaXterm en acción
MobaXterm en acción

2. Beyond Compare

Hay tantas herramientas para comparar archivos, y creo que he usado todas ellas — desde aplicaciones independientes como WinMerge, Meld, Araxis, KDiff, y otras hasta extensiones para editores de texto como VS Code y Notepad++.

Sin embargo, ninguna de ellas puede compararse con la única e inigualable Beyond Compare.

Conocí Beyond Compare cuando comencé a trabajar en ingeniería de software en 2010, y es una herramienta que me acompaña en cada proyecto que tengo. La uso todos los días. Entonces, ¿qué hace que esta herramienta sea diferente del resto?

Es simplemente la mejor herramienta para hacer cualquier comparación porque no solo compara texto y carpetas. Lo hace perfectamente, pero al mismo tiempo, también compara archivos ZIP mientras navega por el contenido, archivos JAR, y así sucesivamente. Esto es muy importante cuando queremos verificar si dos archivos JAR que se suben en DEV y PROD son la misma versión de la herramienta o saber si un archivo ZIP tiene el contenido correcto cuando se sube.

Beyond Compare en acción
Beyond Compare 4

3. Editor Vi

Este es el más importante — el mejor editor de texto de todos los tiempos — y está disponible prácticamente en cada servidor.

Es un editor de texto de línea de comandos con una gran cantidad de atajos que te permiten ser muy productivo cuando estás dentro de un servidor revisando registros y archivos de configuración para ver dónde está el problema.

Durante mucho tiempo, he tenido una hoja de trucos de Vi impresa para asegurarme de poder dominar los atajos más importantes y así aumentar mi productividad mientras lucho dentro de las líneas enemigas (los servidores del cliente).

Editor de texto Vi
VIM — Vi mejorado, el editor de texto definitivo.

Cuatro razones por las que las aplicaciones de bajo código pueden ayudarte a aumentar tu productividad

Cuatro razones por las que las aplicaciones de bajo código pueden ayudarte a aumentar tu productividad

Cómo lograr verdaderamente la agilidad en su organización enfocándose en lo que importa para su negocio y multiplicar la productividad de su equipo de desarrollo

La moda es cíclica y lo mismo ocurre en la Ingeniería de Software. Vivimos en un mundo donde cada innovación parece similar a una del pasado; avanzamos hace algún tiempo. Eso se debe a que lo que estamos haciendo es simplemente refinar una y otra vez soluciones para los mismos problemas.

Hemos vivido en los últimos años un auge de «el desarrollador es el nuevo negro», donde cualquier cosa relacionada con escribir código es excelente. Incluso los desarrolladores ahora son vistos como un personaje genial como los de Silicon Valley (el programa de HBO) en lugar de ser objeto de burla como en The I.T Crowd.

Pero, ahora, parece que estamos volviendo a un nuevo auge de lo que se llama Aplicaciones de Bajo Código (o Sin Código).

Una Aplicación de Bajo Código es un software que te ayuda a generar tus aplicaciones o servicios sin necesidad de escribir código en ningún lenguaje de programación, en lugar de hacer eso, puedes arrastrar y soltar algunas cajas que representan lo que te gustaría hacer en lugar de escribirlo tú mismo.

Eso ha proporcionado ventajas que ahora están nuevamente sobre la mesa. Echemos un vistazo a esas ventajas con más detalle.

1.- Proporciona más agilidad

Eso está claro. No importa cuán alto sea el nivel de tu lenguaje de programación, no importa cuántos arquetipos tengas para generar el esqueleto de tu proyecto o el marco y las bibliotecas que uses. Escribir siempre es más lento que arrastrar algunas cajas sobre el lienzo blanco y conectarlas con algunos enlaces.

Y soy una persona que es un tipo de terminal y usuario avanzado de VI, y me doy cuenta del poder del teclado, pero seamos honestos y hagamos una pregunta:

¿Cuántas de las palabras clave que escribes en tu código están proporcionando valor al negocio y cuántas son necesarias solo por razones técnicas?

No solo cosas como el manejo de excepciones, auditoría, registro, descubrimiento de servicios, gestión de configuración, sino cosas como la estructura de bucles, definición de firmas de funciones, definición de variables, definición de clases, y así sucesivamente…

Puedes enfocarte verdaderamente en el valor comercial que estás tratando de proporcionar a tu negocio en lugar de pasar tiempo en cómo gestionar cualquier capacidad técnica.

2.- Más fácil de mantener

Un mes después de la producción solo el desarrollador y dios saben lo que hace el código. Después de un año, solo dios sabe…

Codificar es increíble, pero al mismo tiempo es complejo de mantener. Principalmente en las empresas cuando los desarrolladores están cambiando de un proyecto a otro, de algunos departamentos a otros, y nuevas personas se están incorporando todo el tiempo para mantener y evolucionar algunos códigos.

Y los que han estado en la industria por algún tiempo, conocen por ejemplo la situación cuando la gente dice: “Prefiero no tocar eso porque no sabemos qué está haciendo”, “No podemos migrar esta aplicación de Mainframe porque no sabemos si podrá capturar toda la funcionalidad que están proporcionando.

Y eso es malo por varias razones. En primer lugar, es costoso de mantener, más complejo de hacerlo, pero en segundo lugar también te impide evolucionar al ritmo que deseas hacerlo.

3.- Más seguro y rentable

No me malinterpretes sobre esto: Programar puede ser tan seguro como cualquier aplicación de bajo código. Eso está claro porque, al final, cualquier aplicación de bajo código termina generando el mismo binario o bytecode para ser ejecutado.

El problema es que esto va a depender de las habilidades del programador. Vivimos en una situación que, incluso programar y los desarrolladores son algo genial, ya que necesitas un gran número de desarrolladores en tu equipo, lo que implica que no todos ellos son tan experimentados y hábiles como quisieras que fueran.

La realidad es mucho más compleja y también necesitas lidiar con la realidad de tu presupuesto y encontrar la manera de obtener lo mejor de tu equipo.

Usando una aplicación de bajo código, tienes garantizada la calidad de los componentes base que son verificados por una empresa y que han mejorado con equipos dedicados incorporando comentarios de clientes de todo el mundo, lo que la hace más segura.

4.- Tan lista como una solución basada en código para necesidades específicas

Uno de los mitos que se dicen contra el Bajo Código es que es adecuado para cargas de trabajo y casos de uso genéricos, pero no es capaz de adaptarse y optimizarse para tus necesidades.

Con respecto a esta resistencia habitual, en primer lugar, necesitamos trabajar en la idea errónea del nivel de especificación que necesita nuestro software. Al final, las veces que necesitas hacer algo tan específico que no está cubierto por las opciones disponibles de inmediato son tan pocas que es complejo justificarlo. ¿Vas a hacer más lento el 99% de tu desarrollo solo para poder hacerlo más rápido en un 1%? ¿Cuánto de tus cargas de trabajo no son similares a lo que otras empresas están haciendo en la misma industria?

Pero incluso por el bien de la discusión, asumamos que eso es cierto, y necesitas una sola pieza de lógica que una aplicación de bajo código no proporciona de inmediato. Ok, Bajo Código significa que no necesitas escribir código, no que no puedas hacerlo.

La mayoría de las plataformas admiten la opción de agregar código si es necesario como una opción para cubrir estos casos. Entonces, incluso en esos casos, todavía tienes las mismas herramientas para hacerlo específico sin perder todas las ventajas de tus actividades diarias.

Resumen

Las aplicaciones de bajo código son una de las soluciones que tienes a tu disposición para mejorar tu agilidad y tu productividad en tus desarrollos para seguir el ritmo de los cambios en tu negocio.

Las soluciones que trabajan en ese espacio no son nuevas, pero han sido renovadas para adaptarse a los paradigmas modernos de los desarrolladores (microservicios, basados en contenedores, dirigidos por API, impulsados por eventos…) por lo que no vas a perder nada, sino a ganar más tiempo para proporcionar aún más valor a tu negocio.