Docker archivos » Aprende IT Todas las novedades sobre IT Tue, 18 Jun 2024 21:51:27 +0000 es hourly 1 https://aprendeit.com/wp-content/uploads/2020/02/LOGO-CORTO-100x100.png Docker archivos » Aprende IT 32 32 Instala tu propio servidor de Wazuh en Ubuntu https://aprendeit.com/instala-tu-propio-servidor-de-wazuh/ https://aprendeit.com/instala-tu-propio-servidor-de-wazuh/#respond Sat, 27 Apr 2024 14:16:16 +0000 https://aprendeit.com/?p=6188 Wazuh se ha convertido en una herramienta esencial para la gestión de la seguridad en sistemas de información. Gracias a su capacidad para detectar intrusiones, asegurar la integridad de los ...

La entrada Instala tu propio servidor de Wazuh en Ubuntu se publicó primero en Aprende IT.

]]>
Wazuh se ha convertido en una herramienta esencial para la gestión de la seguridad en sistemas de información. Gracias a su capacidad para detectar intrusiones, asegurar la integridad de los datos y monitorizar la seguridad, muchas empresas y particulares optan por configurar su propio servidor de Wazuh. Aquí te explicaré cómo puedes instalar y configurar tu servidor Wazuh, paso a paso, sin utilizar complicadas listas o enumeraciones.

¿Qué es Wazuh y por qué deberías usarlo?

Wazuh es una plataforma de seguridad de código abierto que proporciona detección de intrusiones, monitorización de integridad, respuesta a incidentes y auditoría de cumplimiento. Su versatilidad lo hace ideal tanto para pequeñas empresas como para grandes corporaciones. Además, al ser de código abierto, Wazuh es completamente gratuito y permite modificaciones para adaptarse a cualquier necesidad específica.

Preparativos iniciales antes de la instalación

Antes de lanzarte a la instalación de Wazuh, es crucial que prepares tu sistema. Esto implica asegurarse de que el sistema operativo esté actualizado y configurar el entorno para que soporte la instalación de Wazuh mediante Docker. Aquí te explicamos cómo:

Primero, es necesario desactivar el firewall para evitar que interfiera en el proceso de instalación. Para esto, simplemente ejecuta en la terminal:

ufw disable

Este comando desactivará el firewall, asegurando que no bloqueará ninguna de las conexiones necesarias durante la instalación.

Después, debes asegurarte de que todos los paquetes del sistema están actualizados y que git está instalado, ya que lo necesitarás para clonar el repositorio de Wazuh. Ejecuta:

apt update && apt install git

Con estos comandos, tu sistema estará actualizado y listo para la siguiente fase.

Instalación de Docker

Wazuh en Docker simplifica la gestión de dependencias y asegura que la plataforma pueda ejecutarse de manera aislada y segura. Para instalar Docker, puedes usar el script proporcionado por Docker, que configura todo automáticamente:

curl -sSL https://get.docker.com/ | sh

Una vez instalado Docker, es esencial que asegures su ejecución automática al iniciar el sistema:

systemctl start docker
systemctl enable docker

Estos comandos iniciarán el servicio de Docker y lo configurarán para que se inicie automáticamente en cada arranque del sistema.

Docker compose

Si instalas docker como hemos indicado anteriormente, no es necesario que instales esta herramienta, pero si ya tienes docker y no soporta «docker compose», puedes instalar docker-compose así:

curl -L "https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Los siguiente comandos que tengan «docker compose» deben ejecutarse como docker-compose.

 

Configuración del entorno de Wazuh

Con Docker ya configurado, el siguiente paso es preparar el entorno específico para Wazuh. Dirígete al directorio óptimo para mantener organizados los archivos relacionados con la seguridad:

cd /opt

Ahora, es el momento de clonar la versión más reciente del repositorio de Wazuh para Docker:

git clone https://github.com/wazuh/wazuh-docker.git -b v4.7.3

Este comando descarga todos los archivos necesarios para ejecutar Wazuh en un contenedor Docker.

Generación de certificados y puesta en marcha de Wazuh

Antes de iniciar Wazuh, debes generar los certificados necesarios para el correcto funcionamiento de los componentes de Wazuh. Navega al directorio correcto y ejecuta el generador de certificados:

cd wazuh-docker/single-node/
docker compose -f generate-indexer-certs.yml run --rm generator

Con los certificados generados, ya estás listo para iniciar todos los servicios de Wazuh:

docker compose up -d

Este último comando levanta todos los contenedores necesarios para que Wazuh funcione adecuadamente en un modo de nodo único, ideal para entornos de prueba o pequeñas implementaciones.

Verificación de la instalación

Una vez completados todos los pasos anteriores, es importante verificar que todo esté funcionando como se espera. Puedes comprobar el estado de los contenedores de Docker para asegurarte de que todos los servicios de Wazuh están activos y ejecutándose. Además, accede a la interfaz web de Wazuh para comenzar a explorar las funcionalidades y configuraciones disponibles.

Personalización y monitorización

Con tu servidor de Wazuh ahora en funcionamiento, el siguiente paso es personalizar la configuración para adaptarla a tus necesidades específicas. Wazuh ofrece una gran variedad de opciones para configurar reglas, alertas y respuestas automáticas ante incidentes. Aprovecha la documentación disponible para explorar todas las posibilidades que te ofrece Wazuh.

Instalar y configurar tu propio servidor de Wazuh puede parecer una tarea compleja, pero siguiendo estos pasos podrás tener un sistema robusto de seguridad informática sin necesidad de grandes inversiones. No solo mejorará la seguridad de tu información, sino que también te proporcionará una herramienta poderosa para monitorizar y responder proactivamente a cualquier incidente.

Cambio de password de Wazuh

Detener el servicio usando Docker Compose:

docker compose down

Generar el hash de la nueva contraseña utilizando el contenedor de Wazuh:

Ejecuta el siguiente comando para iniciar el script de hash:

docker run --rm -ti wazuh/wazuh-indexer:4.6.0 bash /usr/share/wazuh-indexer/plugins/opensearch-security/tools/hash.sh

Ingresa la nueva contraseña cuando se te solicite y copia el hash generado.

Actualizar el archivo de usuarios internos con el hash de la nueva contraseña:

Abre el archivo con un editor de texto como vim:

vim config/wazuh_indexer/internal_users.yml

Pega el hash generado para el usuario admin.

Actualizar el archivo docker-compose.yml con la nueva contraseña:

Abre el archivo docker-compose.yml:

vim docker-compose.yml

Ingresa la nueva contraseña en las líneas 24 y 81 donde dice INDEXER_PASSWORD.

Levantar los servicios nuevamente con Docker Compose:

docker compose up -d

Esto reinicia la pila de servicios.

Acceder al contenedor y ejecutar el script de seguridad:

Accede al contenedor:

docker exec -it single-node-wazuh.indexer-1 bash

Define las variables y ejecuta el script de seguridad:

export INSTALLATION_DIR=/usr/share/wazuh-indexer
CACERT=$INSTALLATION_DIR/certs/root-ca.pem
KEY=$INSTALLATION_DIR/certs/admin-key.pem
CERT=$INSTALLATION_DIR/certs/admin.pem
export JAVA_HOME=/usr/share/wazuh-indexer/jdk
bash /usr/share/wazuh-indexer/plugins/opensearch-security/tools/securityadmin.sh -cd /usr/share/wazuh-indexer/opensearch-security/ -nhnv -cacert $CACERT -cert $CERT -key $KEY -p 9200 -icl

Sal del contenedor:

exit

Este proceso te permite actualizar la contraseña de administrador para Wazuh utilizando Docker, asegurándote de seguir correctamente todos los pasos para garantizar que los cambios sean efectivos.

La entrada Instala tu propio servidor de Wazuh en Ubuntu se publicó primero en Aprende IT.

]]>
https://aprendeit.com/instala-tu-propio-servidor-de-wazuh/feed/ 0
Securización de contenedores Docker: mejores prácticas y recomendaciones https://aprendeit.com/securizacion-de-contenedores-docker-mejores-practicas-y-recomendaciones/ https://aprendeit.com/securizacion-de-contenedores-docker-mejores-practicas-y-recomendaciones/#respond Thu, 10 Aug 2023 05:33:42 +0000 https://aprendeit.com/?p=5395 ¡Hola, entusiasta de la tecnología! Si estás aquí, es porque probablemente has oído hablar mucho sobre Docker y lo importante que es mantener nuestros contenedores seguros. Pero, ¿sabes cómo hacerlo? ...

La entrada Securización de contenedores Docker: mejores prácticas y recomendaciones se publicó primero en Aprende IT.

]]>
¡Hola, entusiasta de la tecnología! Si estás aquí, es porque probablemente has oído hablar mucho sobre Docker y lo importante que es mantener nuestros contenedores seguros. Pero, ¿sabes cómo hacerlo? Si la respuesta es no, estás en el lugar indicado. Hoy te voy a llevar de la mano para que descubras las mejores prácticas y recomendaciones para la securización de contenedores Docker. ¡Vamos allá!

Entendiendo la importancia de la seguridad en Docker

Antes de zambullirnos en el mundo de Docker y su seguridad, es fundamental entender por qué es tan crítico. Docker ha revolucionado la forma en que desplegamos aplicaciones, facilitando el proceso y haciéndolo más eficiente. Sin embargo, como cualquier tecnología, no está exento de vulnerabilidades. Un contenedor Docker mal configurado puede ser la puerta de entrada para ciberdelincuentes. Y ya sabes, mejor prevenir que curar.

El principio de privilegio mínimo

Para empezar, hablemos del principio de privilegio mínimo. Es una regla de oro en seguridad informática. La idea es otorgar a los programas y procesos solo los privilegios que realmente necesitan para realizar su trabajo. Nada más.

En el contexto de Docker, esto significa que debes evitar correr contenedores con privilegios de root a menos que sea absolutamente necesario. Si un atacante logra acceder a un contenedor con privilegios de root, podría obtener control sobre todo el sistema anfitrión. Así que, siempre que puedas, reduce esos privilegios.

Imágenes de confianza

Ahora, centrémonos en las imágenes. Son la base de nuestros contenedores. Pero, ¿de dónde las sacas? No todas las imágenes disponibles en Docker Hub son seguras. Algunas podrían tener vulnerabilidades conocidas o incluso malware oculto.

Te recomiendo que solo utilices imágenes de fuentes confiables. Si es posible, opta por imágenes oficiales o de proveedores reconocidos. Y si decides construir tus propias imágenes, asegúrate de mantenerlas actualizadas y de seguir buenas prácticas de seguridad en su diseño.

Escaneo de vulnerabilidades

¡Hablemos de herramientas! Hoy en día, existen soluciones específicas para escanear contenedores Docker en busca de vulnerabilidades. Estas herramientas pueden identificar problemas en las imágenes antes de que se desplieguen. Es una forma proactiva de enfrentar los riesgos.

Te aconsejo que incorpores estos escaneos como parte de tu proceso de integración y entrega continua. Así, cada vez que se prepare una nueva versión de tu aplicación, tendrás la seguridad de que los contenedores están limpios y listos para la acción.

Redes y comunicaciones

Otro punto crucial es la red. Docker permite crear redes virtuales para que tus contenedores se comuniquen entre sí. Sin embargo, no todos los contenedores deben hablar entre sí. Es más, en muchos casos, es preferible que estén aislados.

Si te familiarizas con las redes de Docker, podrás configurarlas para que solo ciertos contenedores tengan acceso a otros. Esto reduce la superficie de ataque y limita el movimiento lateral de un posible intruso.

Actualizaciones regulares

Si hay algo que nunca debe faltar en tu rutina de seguridad, son las actualizaciones. Mantener Docker, tus contenedores y las aplicaciones que corren en ellos actualizados es esencial. Las actualizaciones no solo traen nuevas funciones, sino que también corrigen vulnerabilidades.

Por eso, es importante estar atento a las noticias y actualizaciones del mundo Docker. Si surge una vulnerabilidad crítica, querrás estar entre los primeros en solucionarla.

Limita el acceso

Por último, pero no menos importante, limita el acceso a tus contenedores. No todos en tu organización necesitan tener acceso a todas las funciones de Docker. Define roles y permisos, y otórgalos con sensatez. Y, por supuesto, asegúrate de que cualquier acceso esté protegido por autenticación fuerte y, si es posible, multifactor.


Y bien, ¿qué te ha parecido este recorrido por la seguridad en Docker? Espero que te haya servido y que pongas en práctica estas recomendaciones. La seguridad informática es una tarea constante y requiere de nuestra atención y cuidado. Pero con las herramientas y buenas prácticas adecuadas, puedes dormir tranquilo sabiendo que tus contenedores Docker están bien protegidos. ¡Hasta la próxima!

La entrada Securización de contenedores Docker: mejores prácticas y recomendaciones se publicó primero en Aprende IT.

]]>
https://aprendeit.com/securizacion-de-contenedores-docker-mejores-practicas-y-recomendaciones/feed/ 0
Optimización del rendimiento de contenedores Docker: Consejos prácticos para el mejor funcionamiento https://aprendeit.com/optimizacion-del-rendimiento-de-contenedores-docker-consejos-practicos-para-el-mejor-funcionamiento/ https://aprendeit.com/optimizacion-del-rendimiento-de-contenedores-docker-consejos-practicos-para-el-mejor-funcionamiento/#respond Mon, 24 Jul 2023 05:47:00 +0000 https://aprendeit.com/?p=5326 ¡Hola, te doy la bienvenida a un nuevo post! Hoy vamos a adentrarnos en un tema esencial para cualquier desarrollador que esté utilizando Docker: cómo optimizar el rendimiento de los ...

La entrada Optimización del rendimiento de contenedores Docker: Consejos prácticos para el mejor funcionamiento se publicó primero en Aprende IT.

]]>
¡Hola, te doy la bienvenida a un nuevo post! Hoy vamos a adentrarnos en un tema esencial para cualquier desarrollador que esté utilizando Docker: cómo optimizar el rendimiento de los contenedores Docker. Es posible que hayas llegado aquí preguntándote, ¿cómo puedo hacer que mis contenedores Docker funcionen de la manera más eficiente posible? Pues, ¡estás en el lugar correcto!

¿Por qué necesitas optimizar los contenedores Docker?

Primero, es importante entender por qué necesitas optimizar tus contenedores Docker. Docker es una herramienta fantástica que permite a los desarrolladores empaquetar y distribuir sus aplicaciones en contenedores de una forma realmente eficaz. Sin embargo, al igual que cualquier otra tecnología, no es perfecta y puede requerir cierta optimización para garantizar que tu aplicación se ejecute de la mejor manera posible.

Imagínate que estás conduciendo un coche. Si no cambias el aceite regularmente o no revisas los frenos, es probable que tu coche no funcione de la mejor manera posible. Lo mismo ocurre con Docker. Si no haces un esfuerzo por optimizar tus contenedores, puedes acabar con un rendimiento subóptimo.

¿Cómo saber si tus contenedores Docker necesitan optimización?

Bueno, la pregunta del millón, ¿cómo saber si tus contenedores Docker necesitan optimización? Existen varias señales que pueden indicarte que necesitas trabajar en la optimización de tus contenedores Docker.

Si observas que tus aplicaciones tardan demasiado tiempo en cargarse, o si tus contenedores utilizan una cantidad excesiva de CPU o memoria, es probable que necesites hacer algunos ajustes. Otro indicador puede ser si ves que tus contenedores se bloquean con frecuencia, o si notas que tus aplicaciones no son capaces de manejar la cantidad de tráfico que esperabas.

Entendiendo Docker y la Optimización de Recursos

Para poder optimizar el rendimiento de tus contenedores Docker, primero necesitas entender cómo Docker utiliza los recursos del sistema. Docker se ejecuta en una máquina host y utiliza los recursos de esa máquina para ejecutar contenedores. Sin embargo, Docker no utiliza todos los recursos de la máquina host de forma predeterminada. En su lugar, limita la cantidad de recursos que puede utilizar cada contenedor.

Ahora, con una mejor comprensión de cómo Docker utiliza los recursos del sistema, podemos explorar cómo optimizar el rendimiento de tus contenedores Docker.

Reducir la imagen de Docker

Una forma efectiva de mejorar el rendimiento de tus contenedores Docker es reduciendo el tamaño de tus imágenes de Docker. Las imágenes grandes pueden ralentizar el inicio de tus contenedores y aumentar el uso de la memoria. Por lo tanto, al reducir el tamaño de tus imágenes de Docker, puedes ayudar a mejorar la velocidad y eficiencia de tus contenedores.

Hay varias formas de hacerlo. Una de ellas es utilizando imágenes base más pequeñas. Por ejemplo, en lugar de usar una imagen base de Ubuntu, podrías usar una imagen base de Alpine, que es significativamente más pequeña. Otra estrategia es eliminar cualquier archivo innecesario de tus imágenes. Esto incluye los archivos temporales, los archivos de caché y los paquetes que no son necesarios para ejecutar tu aplicación.

Limitar el uso de recursos

Otra estrategia para optimizar tus contenedores Docker es limitar el uso de recursos. Como mencioné antes, Docker limita la cantidad de recursos que puede utilizar cada contenedor. Sin embargo, puedes ajustar estos límites para asegurarte de que tus contenedores no estén utilizando más recursos de los que necesitan.

Por ejemplo, puedes limitar la cantidad de CPU que puede utilizar un contenedor estableciendo un límite de CPU en tu archivo de configuración de Docker. Del mismo modo, puedes limitar la cantidad de memoria que puede utilizar un contenedor estableciendo un límite de memoria.

Utilizar el almacenamiento en Docker de forma eficiente

El almacenamiento es otro recurso importante que Docker utiliza y que puede afectar al rendimiento de tus contenedores. Por lo tanto, es crucial que utilices el almacenamiento en Docker de la forma más eficiente posible.

Un consejo para hacerlo es limitar la cantidad de datos que tus contenedores están escribiendo en el disco. Cuanto más datos escribe un contenedor en el disco, más lento será. Por lo tanto, si puedes reducir la cantidad de escrituras en disco, podrás mejorar el rendimiento de tus contenedores.

Además, es importante tener en cuenta que Docker utiliza una capa de almacenamiento para gestionar los datos de los contenedores. Cada vez que un contenedor escribe datos en el disco, Docker crea una nueva capa de almacenamiento. Esto puede ralentizar tus contenedores, especialmente si están escribiendo grandes cantidades de datos. Por lo tanto, es recomendable que optimices la utilización de la capa de almacenamiento en Docker.

Optimizar las redes en Docker

Por último, pero no menos importante, la red es un recurso crucial en Docker que también puede afectar al rendimiento de tus contenedores. La red en Docker puede ser compleja, ya que implica la comunicación entre contenedores, entre contenedores y la máquina host, y entre contenedores y el mundo exterior.

Una forma de optimizar la red en Docker es utilizando redes personalizadas. Docker te permite crear tus propias redes y asignar contenedores a esas redes. Esto puede ser útil para optimizar la comunicación entre contenedores, ya que puedes agrupar contenedores que necesitan comunicarse entre sí en la misma red.

Además, puedes optimizar la red en Docker ajustando los parámetros de red. Docker te permite ajustar varios parámetros de red, como el tamaño del búfer, la congestión de la red y el control de flujo. Al ajustar estos parámetros, puedes ayudar a mejorar la eficiencia de la red en Docker.

Y eso es todo…

Espero que estos consejos te hayan ayudado a entender cómo puedes optimizar el rendimiento de tus contenedores Docker. Recuerda que cada aplicación es única y lo que funciona para una puede no funcionar para otra. Por lo tanto, es importante experimentar y encontrar las estrategias de optimización que funcionen mejor para tus aplicaciones.

¡Hasta el próximo post!

La entrada Optimización del rendimiento de contenedores Docker: Consejos prácticos para el mejor funcionamiento se publicó primero en Aprende IT.

]]>
https://aprendeit.com/optimizacion-del-rendimiento-de-contenedores-docker-consejos-practicos-para-el-mejor-funcionamiento/feed/ 0
Cómo depurar aplicaciones en contenedores Docker: Tu guía definitiva https://aprendeit.com/como-depurar-aplicaciones-en-contenedores-docker-tu-guia-definitiva/ https://aprendeit.com/como-depurar-aplicaciones-en-contenedores-docker-tu-guia-definitiva/#respond Wed, 12 Jul 2023 04:39:19 +0000 https://aprendeit.com/?p=5291 ¡Hola, intrépido desarrollador! Si has llegado hasta aquí, es porque estás buscando cómo depurar tus aplicaciones en contenedores Docker. Entendemos que este proceso puede parecer complejo, pero ¡No te preocupes! ...

La entrada Cómo depurar aplicaciones en contenedores Docker: Tu guía definitiva se publicó primero en Aprende IT.

]]>
¡Hola, intrépido desarrollador! Si has llegado hasta aquí, es porque estás buscando cómo depurar tus aplicaciones en contenedores Docker. Entendemos que este proceso puede parecer complejo, pero ¡No te preocupes! Estás en el lugar adecuado. A lo largo de este post, aprenderás los trucos y técnicas para desplegar y depurar tus aplicaciones de forma eficiente.

Entendiendo Docker y los contenedores

Antes de adentrarnos en los meandros de la depuración, conviene aclarar brevemente qué es Docker y por qué los contenedores son tan relevantes en el desarrollo de aplicaciones modernas. Docker es una herramienta que permite a los desarrolladores como tú empaquetar aplicaciones y sus dependencias en contenedores. Estos contenedores son ligeros y portátiles, lo que te permite correr tus aplicaciones en cualquier sistema operativo que soporte Docker, sin preocuparte de las tediosas tareas de configuración.

Las herramientas para depurar en Docker

Depuración desde el host

Primero, vamos a hablar sobre cómo puedes depurar tus aplicaciones desde el mismo host donde se está ejecutando el contenedor Docker. Esto es útil en situaciones donde quieras realizar un seguimiento en tiempo real de lo que ocurre en tu aplicación sin necesidad de acceder al contenedor.

Puedes hacer uso de herramientas como docker logs, que te permite ver en tiempo real los logs de tus aplicaciones. Además, puedes usar docker top para ver los procesos que se están ejecutando dentro de tu contenedor. Esto te permite ver qué está consumiendo recursos y si hay algún proceso que no debería estar en marcha.

Acceder al contenedor

En ocasiones, necesitarás acceder directamente al contenedor para depurar tu aplicación. Docker te permite hacerlo mediante el comando docker exec, que te permite ejecutar comandos dentro de tu contenedor como si estuvieras en el sistema operativo anfitrión.

Una vez dentro del contenedor, podrás usar las herramientas de depuración que tengas instaladas en tu imagen. Por ejemplo, si estás trabajando con una aplicación en Python, podrías usar pdb para depurar tu código.

Depurando con Docker Compose

Docker Compose es otra herramienta que te resultará útil en la depuración de tus aplicaciones. Docker Compose te permite definir y correr aplicaciones multi-contenedor con una simple descripción en un archivo YAML.

Al igual que con Docker, puedes acceder a los logs de tus aplicaciones con docker-compose logs, y también puedes acceder al contenedor con docker-compose exec.

Técnicas para depurar aplicaciones en Docker

Depuración en tiempo de ejecución

La depuración en tiempo de ejecución te permite inspeccionar el estado de tu aplicación mientras se está ejecutando. Puedes hacerlo utilizando herramientas como pdb (para Python) o gdb (para C/C++) dentro de tu contenedor.

Estas herramientas te permiten poner puntos de parada en tu código, inspeccionar variables y avanzar paso a paso en la ejecución de tu aplicación, lo que te permite ver exactamente qué está ocurriendo en cada momento.

Depuración post-mortem

La depuración post-mortem se realiza después de que tu aplicación ha fallado. Esto te permite inspeccionar el estado de tu aplicación en el momento de la falla.

La depuración post-mortem es especialmente útil cuando te encuentras con errores intermitentes o difíciles de reproducir. En estos casos, puedes configurar tu aplicación para que genere un volcado de memoria en caso de falla, que luego podrás analizar para encontrar el problema.

Tracing y Profiling

Otra técnica útil en la depuración de aplicaciones en Docker es el tracing y profiling. Esto te permite obtener información detallada sobre la ejecución de tu aplicación, como el tiempo que se tarda en ejecutar cada función o el uso de memoria.

Existen diversas herramientas que te permiten hacer tracing y profiling de tus aplicaciones en Docker, como strace (para sistemas basados en Linux) o DTrace (para sistemas basados en Unix).

Consejos finales

Antes de finalizar, me gustaría darte algunos consejos para que tu experiencia depurando aplicaciones en Docker sea lo más llevadera posible:

  • Asegúrate de tener una buena comprensión de cómo funciona Docker. Cuanto mejor entiendas Docker, más fácil será depurar tus aplicaciones.
  • Familiarízate con las herramientas de depuración que están disponibles para tu lenguaje de programación.
  • No olvides la importancia de tener buenos logs. Un buen sistema de logs puede ser tu mejor aliado a la hora de depurar problemas en tus aplicaciones.
  • Utiliza Docker Compose para orquestar tus aplicaciones multi-contenedor. Esto te facilitará la tarea de depurar problemas que surjan de la interacción entre varios contenedores.

En resumen, depurar aplicaciones en contenedores Docker puede ser una tarea compleja, pero con las herramientas y técnicas adecuadas, podrás hacerlo de manera eficiente y efectiva. Recuerda, la práctica hace al maestro, así que no te desesperes si al principio parece complicado. ¡Ánimo y a depurar se ha dicho!

La entrada Cómo depurar aplicaciones en contenedores Docker: Tu guía definitiva se publicó primero en Aprende IT.

]]>
https://aprendeit.com/como-depurar-aplicaciones-en-contenedores-docker-tu-guia-definitiva/feed/ 0
Migrando de Docker Swarm a Kubernetes: Un Caso de Estudio https://aprendeit.com/migrando-de-docker-swarm-a-kubernetes-un-caso-de-estudio/ https://aprendeit.com/migrando-de-docker-swarm-a-kubernetes-un-caso-de-estudio/#respond Mon, 19 Jun 2023 08:02:40 +0000 https://aprendeit.com/?p=5188 ¡Hola a todos! Hoy os voy a contar una historia apasionante, la de cómo decidimos migrar de Docker Swarm a Kubernetes. Es posible que te estés preguntando: ¿por qué realizar ...

La entrada Migrando de Docker Swarm a Kubernetes: Un Caso de Estudio se publicó primero en Aprende IT.

]]>

¡Hola a todos! Hoy os voy a contar una historia apasionante, la de cómo decidimos migrar de Docker Swarm a Kubernetes. Es posible que te estés preguntando: ¿por qué realizar este cambio? Bueno, hay diversas razones y todas ellas suman para hacer de Kubernetes una opción muy atractiva. ¡Vamos a ello!

El porqué del Cambio: Ventajas de Kubernetes sobre Docker Swarm

Docker Swarm es estupendo, no me malinterpretes. Es sencillo de usar, la curva de aprendizaje es suave y el despliegue es rápido. Sin embargo, si buscas una herramienta con mayor escalabilidad, robustez y flexibilidad, Kubernetes es tu chico.

Por un lado, Kubernetes se lleva el trofeo en lo que a escalabilidad se refiere. La capacidad de manejar un gran número de contenedores en un clúster es algo en lo que Kubernetes destaca. Y si a esto le sumamos la posibilidad de administrar varios clústers a la vez, tenemos un ganador indiscutible.

Además, Kubernetes posee un ecosistema rico y diverso. Cuenta con una amplia gama de plugins y extensiones, lo que aumenta enormemente su flexibilidad. Por si fuera poco, la comunidad que lo respalda es muy activa, con constantes actualizaciones y mejoras. En cambio, la comunidad de Docker Swarm, aunque dedicada, no puede competir en términos de tamaño y actividad.

Nuestro Escenario: Dónde Partíamos

Nos encontrábamos en una situación en la que ya habíamos implementado Docker Swarm en nuestra infraestructura. Teníamos varios servicios corriendo en Swarm, que funcionaban bien y cumplían su propósito. Pero sabíamos que podíamos mejorar nuestra arquitectura.

El Camino Hacia Kubernetes: Primeros Pasos

El primer paso para migrar de Docker Swarm a Kubernetes es crear un clúster de Kubernetes. En nuestro caso, optamos por usar Google Kubernetes Engine (GKE) por su facilidad de uso y potentes funcionalidades. Sin embargo, existen otras opciones, como AWS EKS o Azure AKS, que también podrías considerar.

Una vez creado nuestro clúster, nos pusimos a trabajar en la conversión de nuestros Compose Files de Docker a Kubernetes. Aquí es donde Helm entra en escena. Helm es un gestor de paquetes para Kubernetes que nos permite definir, instalar y actualizar aplicaciones de forma sencilla.

Del Swarm al Clúster: Conversiones y Configuraciones

Convertir los archivos Docker Compose a archivos Helm no es complicado, pero requiere atención al detalle. Por suerte, existen herramientas como Kompose que nos facilitan la vida. Kompose convierte automáticamente los archivos Docker Compose en archivos Kubernetes.

Una vez convertidos nuestros archivos, fue hora de definir nuestras configuraciones. Los ConfigMaps y Secrets de Kubernetes son los equivalentes a las variables de entorno en Docker Swarm. Aquí fue necesario hacer algunas modificaciones, pero en general, el proceso fue bastante sencillo.

Desplegando en Kubernetes: Los Retos Enfrentados

Ahora, con nuestro clúster de Kubernetes listo y nuestros archivos de Helm preparados, llegó el momento de desplegar nuestros servicios. Aquí es donde nos encontramos con algunos desafíos.

El primer reto fue la gestión del tráfico de red. A diferencia de Docker Swarm, que utiliza una red overlay para conectar todos los nodos, Kubernetes utiliza un enfoque distinto llamado CNI (Container Network Interface). Esto implicó un cambio en nuestra configuración de red.

Además, tuvimos que ajustar nuestras reglas de firewall para permitir el tráfico entre los diferentes servicios de Kubernetes. Afortunadamente, las Network Policies de Kubernetes nos facilitaron esta tarea.

El siguiente desafío fue la gestión de los volúmenes. Mientras que Docker Swarm utiliza volúmenes para el almacenamiento persistente, Kubernetes utiliza Persistent Volumes y Persistent Volume Claims. Aunque el concepto es similar, la implementación difiere un poco.

En nuestro caso, utilizábamos volúmenes de Docker para almacenar datos de nuestras bases de datos. Al migrar a Kubernetes, tuvimos que convertir estos volúmenes en Persistent Volumes, lo que supuso un poco de trabajo extra.

Por último, nos encontramos con el desafío de monitorizar nuestro nuevo clúster de Kubernetes. Aunque existen muchas herramientas para monitorizar Kubernetes, elegir la correcta puede ser complicado.

En nuestro caso, optamos por Prometheus y Grafana. Prometheus nos proporciona una poderosa solución de monitorización y alertas, mientras que Grafana nos permite visualizar los datos de forma atractiva.

Sorpresas en el Camino: Lo que No Esperábamos

Como en cualquier proyecto, nos encontramos con algunas sorpresas en el camino. Algunas de ellas fueron agradables, otras no tanto.

Por un lado, nos sorprendió gratamente la facilidad con la que pudimos escalar nuestros servicios en Kubernetes. Gracias a la función de auto-escalado, pudimos ajustar automáticamente el número de pods en función de la carga de trabajo. Esto nos permitió mejorar el rendimiento de nuestros servicios y ahorrar recursos.

Por otro lado, nos encontramos con algunos problemas con las actualizaciones. A diferencia de Docker Swarm, donde las actualizaciones son bastante sencillas, en Kubernetes tuvimos que lidiar con los Rolling Updates. Aunque son una característica poderosa, requieren un poco de práctica para dominarlos.

¡Misión Cumplida!: Kubernetes en Marcha

Finalmente, tras superar los retos y aprender de las sorpresas, logramos migrar con éxito de Docker Swarm a Kubernetes. Ahora, nuestros servicios se ejecutan de manera más eficiente, y disponemos de una mayor flexibilidad y control sobre nuestra infraestructura.

Estoy seguro de que aún tenemos mucho que aprender sobre Kubernetes. Pero, sin duda, este primer paso ha valido la pena. La migración nos ha permitido mejorar nuestra arquitectura, optimizar nuestros servicios y prepararnos para futuros desafíos.

Y tú, ¿has pensado en migrar de Docker Swarm a Kubernetes? ¿Qué te pareció nuestra experiencia? ¡Estamos deseando conocer tus impresiones y aprender de tus experiencias!

La entrada Migrando de Docker Swarm a Kubernetes: Un Caso de Estudio se publicó primero en Aprende IT.

]]>
https://aprendeit.com/migrando-de-docker-swarm-a-kubernetes-un-caso-de-estudio/feed/ 0
10 Trucos Esenciales de Docker Que Deberías Conocer https://aprendeit.com/10-trucos-esenciales-de-docker-que-deberias-conocer/ https://aprendeit.com/10-trucos-esenciales-de-docker-que-deberias-conocer/#respond Tue, 13 Jun 2023 05:11:37 +0000 https://aprendeit.com/?p=5181 Antes de sumergirnos en los trucos de Docker, es esencial entender qué es Docker y por qué se ha convertido en una herramienta tan importante en el mundo del desarrollo ...

La entrada 10 Trucos Esenciales de Docker Que Deberías Conocer se publicó primero en Aprende IT.

]]>
Antes de sumergirnos en los trucos de Docker, es esencial entender qué es Docker y por qué se ha convertido en una herramienta tan importante en el mundo del desarrollo y la administración de sistemas. Docker es una plataforma de contenedores que permite a los desarrolladores y administradores de sistemas empaquetar, distribuir y gestionar aplicaciones de manera eficiente y segura. El corazón de Docker son los contenedores, que son entornos aislados donde se ejecutan las aplicaciones, evitando los problemas de «funciona en mi máquina».

Pero ahora vamos a lo que realmente importa, a esos trucos de Docker que harán tu vida mucho más fácil.

Aprovechando el Dockerfile

El Dockerfile es el documento que define cómo se construye la imagen de Docker que dará vida a tu contenedor. Puedes verlo como una receta, donde cada línea es una instrucción para agregar ingredientes (capas) a tu imagen.

No te olvides de .dockerignore: Al igual que con git, Docker tiene un sistema para ignorar archivos. Cualquier archivo o carpeta que se especifique en .dockerignore no se copiará en la imagen Docker. Esto es útil para ignorar archivos innecesarios, como logs, archivos de node_modules o cualquier otro que no sea necesario para la ejecución de tu aplicación.

Uso de las capas de caché: Docker guarda en caché las capas de la imagen cada vez que construyes una. Si no has hecho cambios en esa capa específica, Docker la reutilizará, acelerando el proceso de construcción. Si colocas las instrucciones que menos cambian al principio del Dockerfile, podrás aprovechar al máximo esta característica.

Jugando con los Contenedores

Los contenedores son la esencia de Docker, pero también pueden ser difíciles de manejar si no conoces algunos trucos.

Gestión eficiente de contenedores: Docker ofrece varios comandos para manejar contenedores. Por ejemplo, puedes usar docker ps -a para ver todos tus contenedores (incluso los detenidos), docker stop $(docker ps -aq) para detener todos los contenedores que estén corriendo, y docker rm $(docker ps -aq) para eliminar todos los contenedores.

Docker logs para depurar: Si algo va mal con tu aplicación, puedes ver los logs de tu contenedor con docker logs CONTAINER_ID. Incluso puedes seguir los logs en tiempo real con docker logs -f CONTAINER_ID.

Imágenes Docker: Menos es Más

Las imágenes Docker pueden ser enormes si no se manejan correctamente. Aquí te dejo unos cuantos trucos para mantenerlas lo más ligeras posible.

Usa imágenes base minimalistas: Hay muchas imágenes base de Docker disponibles, pero no todas son iguales. Algunas son muy pesadas y contienen un montón de cosas que probablemente no necesitas. Intenta usar imágenes base minimalistas como Alpine, que sólo tienen lo esencial.

Eliminar caché después de las instalaciones: Cuando instalas algo con apt, yum o cualquier otro gestor de paquetes, se genera una caché que no es necesaria para ejecutar tu aplicación. Puedes eliminarla en la misma línea en que instalas el paquete para no generar una nueva capa: Después de todo, cada instrucción en tu Dockerfile genera una nueva capa en la imagen, por lo que sería algo como RUN apt-get update && apt-get install -y my-package && rm -rf /var/lib/apt/lists/*.

Orquestando Contenedores con Docker Compose

Docker Compose es una herramienta increíble que te permite definir y gestionar múltiples contenedores a la vez. Y, por supuesto, también tiene sus propios trucos.

Usar variables de entorno: Docker Compose te permite definir variables de entorno en un archivo .env, que luego puedes usar en tu archivo docker-compose.yml. Esto es muy útil para no tener que escribir las mismas cosas una y otra vez.

Dependencias entre contenedores: Con Docker Compose puedes definir dependencias entre contenedores usando la opción depends_on. Esto te asegura de que Docker Compose arranque los contenedores en el orden correcto.

Creando Redes con Docker

Docker te permite crear redes para conectar tus contenedores de forma que puedan comunicarse entre ellos.

Creando y gestionando redes: Puedes crear una red con el comando docker network create. Una vez que la red está creada, puedes conectar un contenedor a ella con docker network connect.

Inspeccionando redes: Si quieres ver qué contenedores están conectados a una red, puedes usar docker network inspect.

Optimizando el Uso de Docker

Finalmente, hay algunos trucos generales que te ayudarán a aprovechar al máximo Docker.

Docker system prune: Con el tiempo, es probable que acumules un montón de imágenes, contenedores y redes que ya no usas. Puedes eliminarlos todos con docker system prune.

Usar Docker con CI/CD: Docker encaja perfectamente en cualquier proceso de integración continua y despliegue continuo. Puedes construir tu imagen Docker como parte de tu pipeline de CI/CD, probarla y luego desplegarla a producción.

Uso de Multi-stage Builds para Imágenes Eficientes

En Docker, puedes utilizar los multi-stage builds para optimizar tus imágenes. Esto implica dividir tu Dockerfile en varias etapas, donde cada una puede utilizar una imagen base diferente. Por ejemplo, puedes tener una etapa para compilar tu aplicación y otra para ejecutarla. Esto te permite incluir solo lo necesario en la imagen final, manteniéndola lo más ligera posible.

Configuración de Volúmenes para Persistencia de Datos

Los datos almacenados en los contenedores son efímeros y se pierden cuando el contenedor se elimina. Para mantener los datos persistentes, puedes configurar volúmenes en Docker. Esto te permite almacenar datos fuera del contenedor, asegurando que no se pierdan aunque el contenedor se elimine o actualice.

Uso de Docker Secrets para Gestionar Datos Sensibles

La gestión de datos sensibles como contraseñas y tokens de acceso es crucial. Docker Secrets proporciona una manera segura de almacenar y gestionar esta información. Los secrets están cifrados durante el tránsito y en reposo, proporcionando una capa adicional de seguridad para tus datos sensibles.

Optimización con Health Checks

Los health checks en Docker te permiten verificar automáticamente el estado de tus contenedores. Puedes definir comandos o instrucciones que Docker ejecutará periódicamente para asegurarse de que tu aplicación se está ejecutando correctamente. Esto es especialmente útil para detectar problemas rápidamente y mejorar la disponibilidad y fiabilidad de tus servicios.

Espero que estos trucos te sean de ayuda para dominar Docker y hacer tu vida un poco más fácil. Recuerda, Docker es una herramienta poderosa, pero también puede ser complicada. Con estos consejos y trucos, podrás aprovechar al máximo Docker y evitar algunos de los problemas más comunes.

La entrada 10 Trucos Esenciales de Docker Que Deberías Conocer se publicó primero en Aprende IT.

]]>
https://aprendeit.com/10-trucos-esenciales-de-docker-que-deberias-conocer/feed/ 0
Buenas prácticas construyendo imágenes con Dockerfiles https://aprendeit.com/buenas-practicas-construyendo-imagenes-con-dockerfiles/ https://aprendeit.com/buenas-practicas-construyendo-imagenes-con-dockerfiles/#respond Sun, 06 Mar 2022 19:01:52 +0000 https://aprendeit.com/?p=2734 El orden importa En los Dockerfiles el orden importa y mucho. Por ejemplo, no es lo mismo ejecutar una instrucción COPY o ADD para añadir un fichero ejecutable y luego ...

La entrada Buenas prácticas construyendo imágenes con Dockerfiles se publicó primero en Aprende IT.

]]>
El orden importa

En los Dockerfiles el orden importa y mucho. Por ejemplo, no es lo mismo ejecutar una instrucción COPY o ADD para añadir un fichero ejecutable y luego ejecutarlo que tratar de ejecutarlo antes de añadirlo. Esto parece de cajón pero es de los principales errores que hacen que no funcione correctamente un Dockerfile a la hora de tratar de crear una imagen a partir de él.

Aligera la imagen borrando ficheros

Siempre que crees una imagen ten en cuenta el borrado de ficheros temporales que no necesitaremos al correr la aplicación ya que así ahorraremos espacio en disco. Por ejemplo, si para hacer funcionar la aplicación descargamos un fichero comprimido, descomprimimos su contenido y este contenido es el que utilizaremos, deberíamos borrar el fichero comprimido para hacer que la imagen sea más ligera.

Reduce el número de ficheros

Evita instalar paquetes no necesarios. Si no haces esto puedes tener un mayor consumo de memoria y disco con la imagen que estás creando además puedes generar mayores problemas de seguridad ya que tendrás que mantener y actualizar estos ficheros en cada versión.

Evita incluir fichero que no debes usando «.dockerignore»

Evita incluir ficheros que no deben ser incluidos como por ejemplo ficheros que contengan datos personales haciendo uso de los ficheros «.dockerignore» estos ficheros son similares a los «.gitignore» y con pocas líneas podemos evitar filtrar información.

Especifica la versión de la imagen base y las dependencias

Es importante utilizar versiones concretas y no utilizar imágenes base y dependencias sin especificar versión. El no especificar versiones puede conducirnos a fallos no contemplados y difíciles de localizar.

Utiliza la imagen base correcta

Es importante utilizar imágenes base lo mas pequeñas posibles como Alpine o Busybox siempre que sea posible. Por otro lado es posible que con algunas aplicaciones necesitemos imágenes específicas para hacer funcionar la aplicación, en este caso no hay mucho mas que comentar, úsala.

Por último siempre que sea posible utiliza imágenes base oficiales, haciendo esto evitarás problemas como utilizar imágenes con malware integrado.

Reutiliza imágenes

Si todas las imágenes que corren sobre tus hosts están basadas en Ubuntu:20.04 por ejemplo, utilizar esta imagen base puede ahorrarnos más espacio en disco que utilizar una imagen pequeña como Alpine o Busybox ya que ya tenemos guardada en disco la otra imagen.

La entrada Buenas prácticas construyendo imágenes con Dockerfiles se publicó primero en Aprende IT.

]]>
https://aprendeit.com/buenas-practicas-construyendo-imagenes-con-dockerfiles/feed/ 0
Por qué deberíamos pasar a contenedores nuestras aplicaciones https://aprendeit.com/por-que-deberiamos-pasar-a-contenedores-nuestras-aplicaciones/ https://aprendeit.com/por-que-deberiamos-pasar-a-contenedores-nuestras-aplicaciones/#respond Mon, 07 Feb 2022 19:27:30 +0000 https://aprendeit.com/?p=2686 ¿Por qué deberíamos pasar a contenedores nuestras aplicaciones? En primer lugar hay que destacar que una aplicación puede correr correctamente en un sistema sin contenedores o dentro de un contenedor. ...

La entrada Por qué deberíamos pasar a contenedores nuestras aplicaciones se publicó primero en Aprende IT.

]]>
¿Por qué deberíamos pasar a contenedores nuestras aplicaciones? En primer lugar hay que destacar que una aplicación puede correr correctamente en un sistema sin contenedores o dentro de un contenedor. Puede funcionar correctamente en cualquiera de las dos modalidades. 

Entonces ¿Por qué “perder el tiempo” pasando la aplicación a contenedores? 

Cuando preparamos una aplicación para correr en contenedores no estamos perdiendo el tiempo. Al revés, estamos ganando tiempo a futuro. 

Me explico, cuando una aplicación se prepara para correr sobre contenedores, estamos haciendo qué la aplicación sea más independiente de un sistema ya que se puede actualizar el sistema donde corren los contenedores sin afectar a la aplicación y por el contrario, se puede actualizar la imagen de la aplicación sin afectar al sistema base. Por lo tanto le aportamos una capa de aislamiento a la aplicación.

Es importante destacar que la imagen que preparamos para la aplicación debería cumplir los estándares OCI o Open Container Initiative  (como se puede verificar en https://opencontainers.org/ ), es decir la imagen es OCI compliant podemos correr la imagen de nuestra aplicación tanto en todas las rutinas compatibles como pueden ser:

  • Docker
  • Containerd
  • Cri-o
  • Rkt
  • Runc

Bueno ¿Y qué más nos aporta tener la aplicación preparada para que corra en un contenedor?

Podemos aprovecharnos además de lo anteriormente comentado con las rutinas anteriores y gestores stand-alone como docker de orquestadores como:

  • Docker-swarm (no es el más utilizado) 
  • Kubernetes (el orquestador por excelencia)

Este tipo de orquestadores nos aportan grandes ventajas para nuestra aplicación, tales como alta disponibilidad, escalabilidad, monitorización, flexibilidad, etc. Aportan una capa de abstracción extra que permite manejar de forma más fácil, redes, volúmenes, gestión de instancias, y todo lo relacionado con la gestión de los contenedores.

Por ejemplo usando kubernetes puedes tener una aplicación en producción y que se escale en función del uso de CPU o de RAM. También puedes asegurarte de que exista un número determinado de instancias. Y lo más importante, puedes hacer despliegues sin causar un desastre gestionando de forma muy rápida un rollback en caso de ser necesario.

Conclusiones

Hace tan solo unos años la industria en general solo veía esto viable para entornos no productivos (excepto los más atrevidos) pero de poco tiempo para aca cada vez se está viendo más frecuentemente una adopción generalizada de este tipo de tecnología. De hecho la gran mayoría de los grandes jugadores de la tecnología cloud tienen implementados servicios relacionados con esta tecnología.

La entrada Por qué deberíamos pasar a contenedores nuestras aplicaciones se publicó primero en Aprende IT.

]]>
https://aprendeit.com/por-que-deberiamos-pasar-a-contenedores-nuestras-aplicaciones/feed/ 0
Crear fácilmente un WordPress con Docker Compose https://aprendeit.com/crear-facilmente-un-wordpress-con-docker-compose/ https://aprendeit.com/crear-facilmente-un-wordpress-con-docker-compose/#respond Fri, 29 Jan 2021 22:22:31 +0000 https://aprendeit.com/?p=2174 Hoy enseñamos como crear fácilmente un WordPress con Docker Compose. Realmente es algo sencillo y es muy útil ya sea para desarrollo. Por ejemplo, si desarrollas para WordPress y quieres ...

La entrada Crear fácilmente un WordPress con Docker Compose se publicó primero en Aprende IT.

]]>
Hoy enseñamos como crear fácilmente un WordPress con Docker Compose. Realmente es algo sencillo y es muy útil ya sea para desarrollo. Por ejemplo, si desarrollas para WordPress y quieres tener un entorno local en el que hacer pruebas pero no quieres instalar un web server esto es muy útil. También puede ser muy útil para probar un componente o tema en distintas versiones.

Instalar Docker Compose

Docker compose es una herramienta que permite gestionar múltiples contenedores de docker de forma simultanea. Es capaz de crear, arrancar, para, borrar múltiples con un solo comando y un fichero de configuración Yaml (docker-compose.yml).

Esta utilidad se puede instalar desde la utilidad de Python para realizar instalación de paquetes, pip, ejecutando:

pip install docker-compose

Si no tienes esta utilidad instalada, puedes consultar métodos alternativos de instalación en:

https://docs.docker.com/compose/gettingstarted/

Descargar el repositorio

Para descargar el repositorio tenemos que ejecutar el comando:

git clone https://github.com/AprendeIT/docker-compose-wp.git

Levantar los contenedores

Para levantar los contenedores debes situarte dentro del directorio donde has descargado el repositorio con cd docker-compose-wp y ejecutar docker-compose up -d:

[ger-pc docker-compose-wp]# docker-compose up -d
Building with native build. Learn about native build in Compose here: https://docs.docker.com/go/compose-native-build/
Creating network "docker-compose-wp_default" with the default driver
Creating db ... done
Creating wordpress ... done
[ger-pc docker-compose-wp]#

Ver estado de los contenedores

[ger-pc docker-compose-wp]# docker-compose ps
  Name                 Command               State          Ports       
------------------------------------------------------------------------
db          docker-entrypoint.sh mysqld      Up      3306/tcp, 33060/tcp
wordpress   docker-entrypoint.sh apach ...   Up      0.0.0.0:80->80/tcp 
[ger-pc docker-compose-wp]# 

Parar los contenedores

[ger-pc docker-compose-wp]# docker-compose stop
Stopping wordpress ... done
Stopping db        ... done
[ger-pc docker-compose-wp]# 

Eliminar los contenedores

Los datos generados en los puntos de montaje de los volúmenes seguirán extiendo.

[ger-pc docker-compose-wp]# docker-compose rm
Going to remove wordpress, db
Are you sure? [yN] y
Removing wordpress ... done
Removing db        ... done
[ger-pc docker-compose-wp]# 

La entrada Crear fácilmente un WordPress con Docker Compose se publicó primero en Aprende IT.

]]>
https://aprendeit.com/crear-facilmente-un-wordpress-con-docker-compose/feed/ 0
Instalar un cluster de Kubernetes con kubeadm https://aprendeit.com/instalar-un-cluster-de-kubernetes-con-kubeadm/ https://aprendeit.com/instalar-un-cluster-de-kubernetes-con-kubeadm/#respond Sat, 23 Jan 2021 17:50:11 +0000 https://aprendeit.com/?p=2103 Hoy os traemos una forma fácil de instalar un cluster de Kubernetes con kubeadm en Ubuntu con un pequeño script que se encuentra en  el repositorio de github. Instalar los ...

La entrada Instalar un cluster de Kubernetes con kubeadm se publicó primero en Aprende IT.

]]>
Hoy os traemos una forma fácil de instalar un cluster de Kubernetes con kubeadm en Ubuntu con un pequeño script que se encuentra en  el repositorio de github.

Instalar los componentes necesarios con un script

Descargar el script con git en cada uno de los nodos:

git clone https://github.com/AprendeIT/kubernetes_installer.git

Después tenemos dos formas de instalación. Recomendamos la instalación con containerd ya que se ha declarado obsoleta la instalación con docker.

Instalación con docker

Ejecutar en cada nodo (Ubuntu):

sh instala_docker_kube.sh

Instalación con containerd

Ejecutar en cada nodo (Ubuntu):

sh instala_containerd_kube.sh

Preparando el master

Levantando un cluster de K8s con Calico

Documentación official

Se puede seguir la guia oficial que se encuentra en: https://docs.projectcalico.org/getting-started/kubernetes/quickstart

Creando un cluster de Kubernetes

  1. Lo mejor es seguir la guía de instalación oficial que se encuentra en https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ o utilizar el script del repositorio

    Note: Después de instalar kubeadm no apagues o reinicies el host, continua directamente con el siguiente paso.

  2. Si estas como usuario normal are una terminal en el host donde has instalado kueadm con sudo.
  3. Inicializa el nodo master con el siguiente comando:
    sudo kubeadm init --pod-network-cidr=192.168.0.0/16
    

    Nota: Si ya está en uso la red 192.168.0.0/16 o quieres usar otra, debes selecionar otro direccionamiento para pods replazandolo en el comando anterior.

    Este comando devolverá un comando kubeadm que se tiene que ejecutar en los nodos minion del cluster:

    kubeadm join XXX.XXX.XXX.XXX:6443 --token 1zotmg.ua015ox6gpxe37je --discovery-token-ca-cert-hash sha256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    
  4. Ejecuta los siguientes comandos en el nodo master para configurar kubectl, son los mismos que devuelve kubeadm init.
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    export KUBECONFIG=/etc/kubernetes/admin.conf
    

Instalando Calico

  1. Instala el operado Tigera Calico y los recursos personalizados.
    kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml
    
  2. Instala Calico creando los recursos personalizados necesarios. Si quieres mas opciones del manifiesto visita https://docs.projectcalico.org/reference/installation/api.
    kubectl create -f https://docs.projectcalico.org/manifests/custom-resources.yaml
    

    Nota: Si se a modificado el direccionamiento y no es 192.168.0.0/24 lo mejor es descargar el fichero https://docs.projectcalico.org/manifests/custom-resources.yaml editarlo para que coincida con el direccionamiento y aplicar:

    kubectl -f custom-resources.yml
    
  3. Confirma que todos los pods están corriendo con el siguiente comando:
    watch kubectl get pods -n calico-system
    

    Nota: En algunas instalaciones ha de hacerse con:

    watch kubectl get pods -n kube-system
    
    Hay que esperar hasta que cada pod tenga `STATUS` of `Running`.
    
  4. Elimina los nodos contaminados:
   kubectl taint nodes --all node-role.kubernetes.io/master-

Esto debe retornar:

node/<your-hostname> untainted
  1. Puedes añadir nodos al cluster y luego revisar su estado con:
    kubectl get nodes -o wide
    

    Esto debe retornar algo así:

    NAME              STATUS   ROLES    AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION    CONTAINER-RUNTIME
    <your-hostname>   Ready    master   52m   v1.12.2   10.128.0.28   <none>        Ubuntu 18.04.1 LTS   4.15.0-1023-gcp   docker://18.6.1

Documentación oficial

La entrada Instalar un cluster de Kubernetes con kubeadm se publicó primero en Aprende IT.

]]>
https://aprendeit.com/instalar-un-cluster-de-kubernetes-con-kubeadm/feed/ 0