¿Trabajas en tecnología de forma remota? Necesitas estos artículos de AliExpress — Edición de octubre

Este mes iremos con una edición de “Trabajador remoto” para mejorar tus principales dispositivos cuando trabajas fuera de tu oficina (en casa) habitual.

Foto de Markus Winkler en Unsplash

El mes pasado ya cubrimos algunos de los artículos que compré recientemente que me están ayudando en mi labor como trabajador remoto en la industria tecnológica para poder desempeñar mi actividad al mejor nivel posible sin perder toda la flexibilidad y posibilidades que trabajar desde cualquier ubicación remota puede ofrecerte.

Si también estás buscando artículos que puedan ayudarte a mejorar tu kit de trabajador remoto, echa un vistazo a estos artículos que compré en AliExpress. ¡Acompáñame en este viaje!

Cargador USB-C 65W más pequeño

Usualmente, llevarás algún cargador de portátil y probablemente también tengas más cargadores para otros dispositivos, pero siempre trato de minimizar el espacio necesario para poder llevar las cosas mínimas necesarias pero todas aquellas que puedan proporcionarme algún valor, y es por eso que encontré y recomiendo totalmente este cargador USB-C más pequeño:

[visual-link-preview encoded=»eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9lcy5hbGlleHByZXNzLmNvbS9pdGVtLzEwMDUwMDE0NTc5NTAwNDMuaHRtbD9zcG09YTJnMHMuOTA0MjMxMS4wLjAuMjc0MjYzYzBRRlRPUG0iLCJpbWFnZV9pZCI6MCwiaW1hZ2VfdXJsIjoiIiwidGl0bGUiOiIiLCJzdW1tYXJ5IjoiIiwidGVtcGxhdGUiOiJ1c2VfZGVmYXVsdF9mcm9tX3NldHRpbmdzIn0=»]

Powerbank Externa Xiaomi 45W

Pero incluso con el cargador más pequeño, te encontrarás en lugares que no tienen un adaptador de corriente cerca de ti. Podría ser porque tu mesa favorita en el café está lejos del enchufe o simplemente porque no tiene ninguno. O porque estás trabajando desde la playa y no encuentras ninguna fuente de energía a muchos metros a tu alrededor. Aquí está la solución para esas situaciones, una batería que puede cargar tu portátil así como cualquier otro dispositivo que puedas llevar contigo. Es capaz de alimentar mi Macbook Pro de 13″ pero también todos los otros dispositivos que llevo con salida USB-C, así como 2 puertos USB 3.0 que puedes usar al mismo tiempo.

[visual-link-preview encoded=»eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9lcy5hbGlleHByZXNzLmNvbS9pdGVtLzQwMDEyOTY0MDU3MDMuaHRtbD9zcG09YTJnMG8ucHJvZHVjdGxpc3QuMC4wLjI0OWI3OWE2bmlidXJIJmFsZ29fcHZpZD0xMTM0NzM4My1hYTZlLTQ1MjQtODE4NS0zYTUyODYyYzQxMDImYWxnb19leHBfaWQ9MTEzNDczODMtYWE2ZS00NTI0LTgxODUtM2E1Mjg2MmM0MTAyLTYmcGRwX2V4dF9mPSU3QiUyMnNrdV9pZCUyMiUzQSUyMjEwMDAwMDE1NjU0OTcwNzMzJTIyJTdEIiwiaW1hZ2VfaWQiOi0xLCJpbWFnZV91cmwiOiJodHRwczovL2FlMDEuYWxpY2RuLmNvbS9rZi9IM2ViMWRlMTllZmE0NDIwOWIxNWQ4Y2YwMWQxNTVjZjNtL0NhcmdhZG9yLVVTQi10aXBvLUMtR0FOLWRlLWNhcmdhLXItcGlkYS02NVctNC0wLTMtMC1RQzQtMC5qcGciLCJ0aXRsZSI6IjI0Ljk4VVMgJCA0MCUgZGUgREVTQ1VFTlRPfENhcmdhZG9yIFVTQiB0aXBvIEMgR0FOIGRlIGNhcmdhIHLDoXBpZGEsIDY1VywgNCwwLCAzLDAsIFFDNC4wLCBRQywgUEQzLjAsIFVTQiBDLCBwYXJhIE1hY2Jvb2sgUHJvLCBpUGhvbmUgMTIsIFNhbXN1bmcgeSBwb3J0w6F0aWx8Q2FyZ2Fkb3JlcyBkZSB0ZWzDqWZvbm8gbcOzdmlsfCAtIEFsaUV4cHJlc3MiLCJzdW1tYXJ5IjoiwqFDb21wcmEgZsOhY2lsLCB2aXZlIG1lam9yISBBbGlleHByZXNzLmNvbSIsInRlbXBsYXRlIjoidXNlX2RlZmF1bHRfZnJvbV9zZXR0aW5ncyJ9″]

Pantalla Táctil Externa para los momentos en que necesitas una pantalla adicional

Hay personas que están tan acostumbradas a trabajar con dos pantallas que cuando intentan adoptar el modo de trabajador completamente remoto tienen dificultades por eso. Porque cuando trabajas al aire libre es complejo tener una segunda pantalla contigo… ¿o no lo es? Yo también uso esta segunda pantalla que también es táctil y que me ayuda en esa situación donde prefiero usar una segunda pantalla. Podría ser porque estoy en un taller y prefiero tener ambas pantallas separadas o simplemente porque la tarea que estoy realizando proporciona más valor tener una pantalla adicional. Además, tiene otros casos de uso como conectar tu consola de juegos a ella también 🙂

[visual-link-preview encoded=»eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9lcy5hbGlleHByZXNzLmNvbS9pdGVtLzQwMDA3NTYyMzU5MTkuaHRtbD9zcG09YTJnMHMuOTA0MjMxMS4wLjAuMjc0MjYzYzBqbVo5WmIiLCJpbWFnZV9pZCI6MCwiaW1hZ2VfdXJsIjoiIiwidGl0bGUiOiIiLCJzdW1tYXJ5IjoiIiwidGVtcGxhdGUiOiJ1c2VfZGVmYXVsdF9mcm9tX3NldHRpbmdzIn0=»]

Resumen

¡Espero que esos artículos te ayuden a completar tu kit de trabajador remoto para que puedas mejorar tu rendimiento! Además, si tienes más artículos que también formen parte de tu kit de trabajador remoto, ¡no dudes en hacérmelo saber usando los comentarios de este post!

Temas Avanzados de Kubernetes: Contenedores de Inicialización

Descubre cómo los Init Containers pueden proporcionar capacidades adicionales a tus cargas de trabajo en Kubernetes

Foto de Rinson Chory en Unsplash

Hay muchos nuevos desafíos que vienen con el nuevo patrón de desarrollo de una manera mucho más distribuida y colaborativa, y cómo gestionamos las dependencias es crucial para nuestro éxito.

Kubernetes y las distribuciones dedicadas se han convertido en el nuevo estándar de implementación para nuestra aplicación nativa de la nube y proporcionan muchas características para gestionar esas dependencias. Pero, por supuesto, el recurso más habitual que utilizarás para hacer eso son las sondas.

Kubernetes proporciona diferentes tipos de sondas que permitirán a la plataforma conocer el estado de tu aplicación. Nos ayudará a saber si nuestra aplicación está «viva» (sonda de vivacidad), ha sido iniciada (sonda de inicio) y si está lista para procesar solicitudes (sonda de preparación).

Ciclo de vida de las sondas de Kubernetes por Andrew Lock (https://andrewlock.net/deploying-asp-net-core-applications-to-kubernetes-part-6-adding-health-checks-with-liveness-readiness-and-startup-probes/)

Las sondas de Kubernetes son la forma estándar de hacerlo, y si has implementado alguna carga de trabajo en un clúster de Kubernetes, probablemente hayas usado una. Pero hay ocasiones en las que esto no es suficiente.

Eso puede ser porque la sonda que te gustaría hacer es demasiado compleja o porque te gustaría crear algún orden de inicio entre tus componentes. Y en esos casos, confías en otra herramienta: los Init Containers.

Los Init Containers son otro tipo de contenedor en el que tienen su propia imagen que puede tener cualquier herramienta que puedas necesitar para establecer los diferentes chequeos o sondas que te gustaría realizar.

Tienen las siguientes características únicas:

  • Los init containers siempre se ejecutan hasta completarse.
  • Cada init container debe completarse con éxito antes de que comience el siguiente.

¿Por qué usarías init containers?

#1 .- Gestionar Dependencias

El primer caso de uso para utilizar init containers es definir una relación de dependencias entre dos componentes como Deployments, y necesitas que uno comience antes que el otro. Imagina la siguiente situación:

Tenemos dos componentes: una aplicación web y una base de datos; ambos se gestionan como contenedores en la plataforma. Así que si los implementas de la manera habitual, ambos intentarán comenzar simultáneamente, o el programador de Kubernetes definirá el orden, por lo que podría ser posible que la aplicación web intente comenzar cuando la base de datos no esté disponible.

Podrías pensar que eso no es un problema porque para eso tienes una sonda de preparación o de vivacidad en tus contenedores, y tienes razón: el Pod no estará listo hasta que la base de datos esté lista, pero hay varias cosas a tener en cuenta aquí:

  • Ambas sondas tienen un límite de intentos; después de eso, entrarás en un escenario de CrashLoopBack, y el pod no intentará comenzar de nuevo hasta que lo reinicies manualmente.
  • El pod de la aplicación web consumirá más recursos de los necesarios cuando sabes que la aplicación no comenzará en absoluto. Así que, al final, estás desperdiciando recursos en el proceso.

Por lo tanto, definir un init container como parte de la implementación de la aplicación web que verifique si la base de datos está disponible, tal vez solo incluyendo un cliente de base de datos para ver rápidamente si la base de datos y todas las tablas están adecuadamente pobladas, será suficiente para resolver ambas situaciones.

#2 .- Optimización de recursos

Una cosa crítica cuando defines tus contenedores es asegurarte de que tienen todo lo que necesitan para realizar su tarea y que no tienen nada que no sea necesario para ese propósito.

Así que en lugar de agregar más herramientas para verificar el comportamiento del componente, especialmente si esto es algo para gestionar en momentos específicos, puedes descargar eso a un init container y mantener el contenedor principal más optimizado en términos de tamaño y recursos utilizados.

#3.- Precarga de datos

A veces necesitas realizar algunas actividades al inicio de tu aplicación, y puedes separar eso del trabajo habitual de tu aplicación, por lo que te gustaría evitar el tipo de lógica para verificar si el componente ha sido inicializado o no.

Usando este patrón, tendrás un init container gestionando todo el trabajo de inicialización y asegurando que todo el trabajo de inicialización se haya realizado cuando se ejecute el contenedor principal.

Ejemplo del proceso de inicialización (https://www.magalix.com/blog/kubernetes-patterns-the-init-container-pattern)

¿Cómo definir un Init Container?

Para poder definir un init container, necesitas usar una sección específica de la sección de especificaciones de tu archivo YAML, como se muestra en la imagen a continuación:

apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
  - name: myapp-container
image: busybox:1.28
command: ['sh', '-c', 'echo ¡La aplicación está en ejecución! && sleep 3600']
initContainers:
  - name: init-myservice
image: busybox:1.28
command: ['sh', '-c', "until nslookup myservice.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo esperando a myservice; sleep 2; done"]
  - name: init-mydb
image: busybox:1.28
command: ['sh', '-c', "until nslookup mydb.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo esperando a mydb; sleep 2; done"]

Puedes definir tantos Init Containers como necesites. Sin embargo, notarás que todos los init containers se ejecutarán en secuencia como se describe en el archivo YAML, y un init container solo puede ejecutarse si el anterior se ha completado con éxito.

Resumen

Espero que este artículo te haya proporcionado una nueva forma de definir la gestión de tus dependencias entre cargas de trabajo en Kubernetes y, al mismo tiempo, también otros grandes casos de uso donde la capacidad del init container puede aportar valor a tus cargas de trabajo.

¿Cómo configurar un clúster local de Openshift?

Aprende cómo puedes usar CodeReady Containers para configurar la última versión de Openshift Local solo en tu computadora.

Ejecutar Openshift Local
Foto de pawel szvmanski en Unsplash

En este momento, todos sabemos que el modo de implementación predeterminado para cualquier aplicación que queramos lanzar será una plataforma basada en contenedores y, especialmente, será una plataforma basada en Kubernetes.

Pero ya sabemos que hay muchas variantes diferentes de distribuciones de Kubernetes, incluso escribí un artículo sobre eso que puedes encontrar aquí:

Algunas de estas distribuciones intentan seguir lo más cerca posible la experiencia de Kubernetes, pero otras están tratando de mejorar y aumentar las capacidades que la plataforma proporciona.

Debido a eso, a veces es importante tener una forma de realmente probar nuestro desarrollo en la plataforma objetivo sin esperar un modo de desarrollador basado en servidor. Sabemos que tenemos en nuestra propia laptop una plataforma basada en Kubernetes para ayudar a hacer el trabajo.

minikube es la opción más común para hacer esto y proporcionará una vista muy básica de Kubernetes, pero a veces necesitamos un tipo diferente de plataforma.

[visual-link-preview encoded=»eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9taW5pa3ViZS5zaWdzLms4cy5pby9kb2NzLyIsImltYWdlX2lkIjowLCJpbWFnZV91cmwiOiIiLCJ0aXRsZSI6IiIsInN1bW1hcnkiOiIiLCJ0ZW1wbGF0ZSI6InVzZV9kZWZhdWx0X2Zyb21fc2V0dGluZ3MifQ==»]

Openshift de RedHat se está convirtiendo en una de las soluciones de facto para implementaciones en la nube privada y especialmente para cualquier empresa que no planea mudarse a una solución gestionada en la nube pública como EKS, GKE o AKS. En el pasado teníamos un proyecto similar a minikube conocido como minishift que permitía ejecutar en sus propias palabras:

Minishift es una herramienta que te ayuda a ejecutar OpenShift localmente ejecutando un clúster de OpenShift de un solo nodo dentro de una VM. Puedes probar OpenShift o desarrollarlo, día a día, en tu localhost.

[visual-link-preview encoded=»eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL2NvZGUtcmVhZHkvY3JjIiwiaW1hZ2VfaWQiOi0xLCJpbWFnZV91cmwiOiJodHRwczovL29wZW5ncmFwaC5naXRodWJhc3NldHMuY29tL2I4NTI3NjdhZTZiZjRmOTk3MWMyMTMxZGZmZGU2M2NkZDY3MzhhMTA0NDlhN2IwN2MxNzc4OGNjMjY0NDE0M2EvY29kZS1yZWFkeS9jcmMiLCJ0aXRsZSI6IkdpdEh1YiAtIGNvZGUtcmVhZHkvY3JjOiBSZWQgSGF0IENvZGVSZWFkeSBDb250YWluZXJzIGlzIGEgdG9vbCB0aGF0IG1hbmFnZXMgYSBsb2NhbCBPcGVuU2hpZnQgNC54IGNsdXN0ZXIgb3B0aW1pemVkIGZvciB0ZXN0aW5nIGFuZCBkZXZlbG9wbWVudCBwdXJwb3NlcyIsInN1bW1hcnkiOiJSZWQgSGF0IENvZGVSZWFkeSBDb250YWluZXJzIGlzIGEgdG9vbCB0aGF0IG1hbmFnZXMgYSBsb2NhbCBPcGVuU2hpZnQgNC54IGNsdXN0ZXIgb3B0aW1pemVkIGZvciB0ZXN0aW5nIGFuZCBkZXZlbG9wbWVudCBwdXJwb3NlcyAtIEdpdEh1YiAtIGNvZGUtcmVhZHkvY3JjOiBSZWQgSGF0IENvZGVSZWFkeSBDb250YWluZXJzIGlzIGEgdG9vbCB0aC4uLiIsInRlbXBsYXRlIjoidXNlX2RlZmF1bHRfZnJvbV9zZXR0aW5ncyJ9″]

El único problema con minishift es que solo soportan la versión 3.x de Openshift, pero estamos viendo que la mayoría de los clientes ya están actualizando a la versión 4.x, por lo que podríamos pensar que estamos un poco solos en esa tarea, ¡pero esto está lejos de la verdad!

Porque tenemos CodeReady Containers o CRC para ayudarnos en esa tarea.

[visual-link-preview encoded=»eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL2NvZGUtcmVhZHkvY3JjIiwiaW1hZ2VfaWQiOi0xLCJpbWFnZV91cmwiOiJodHRwczovL29wZW5ncmFwaC5naXRodWJhc3NldHMuY29tL2I4NTI3NjdhZTZiZjRmOTk3MWMyMTMxZGZmZGU2M2NkZDY3MzhhMTA0NDlhN2IwN2MxNzc4OGNjMjY0NDE0M2EvY29kZS1yZWFkeS9jcmMiLCJ0aXRsZSI6IkdpdEh1YiAtIGNvZGUtcmVhZHkvY3JjOiBSZWQgSGF0IENvZGVSZWFkeSBDb250YWluZXJzIGlzIGEgdG9vbCB0aGF0IG1hbmFnZXMgYSBsb2NhbCBPcGVuU2hpZnQgNC54IGNsdXN0ZXIgb3B0aW1pemVkIGZvciB0ZXN0aW5nIGFuZCBkZXZlbG9wbWVudCBwdXJwb3NlcyIsInN1bW1hcnkiOiJSZWQgSGF0IENvZGVSZWFkeSBDb250YWluZXJzIGlzIGEgdG9vbCB0aGF0IG1hbmFnZXMgYSBsb2NhbCBPcGVuU2hpZnQgNC54IGNsdXN0ZXIgb3B0aW1pemVkIGZvciB0ZXN0aW5nIGFuZCBkZXZlbG9wbWVudCBwdXJwb3NlcyAtIEdpdEh1YiAtIGNvZGUtcmVhZHkvY3JjOiBSZWQgSGF0IENvZGVSZWFkeSBDb250YWluZXJzIGlzIGEgdG9vbCB0aC4uLiIsInRlbXBsYXRlIjoidXNlX2RlZmF1bHRfZnJvbV9zZXR0aW5ncyJ9″]

El propósito de Code Ready Containers es proporcionarte un clúster mínimo de Openshift optimizado para propósitos de desarrollo. Su proceso de instalación es muy, muy simple.

Funciona de manera similar al modo de distribución anterior de VM y OVA, por lo que necesitarás obtener algunos binarios para poder configurar esto directamente desde Red Hat usando la siguiente dirección: https://console.redhat.com/openshift/create/local

Necesitarás crear una cuenta, pero es gratuita y en unos pocos pasos obtendrás un gran binario de aproximadamente 3–4 GB y tu código de firma para poder ejecutar la plataforma y eso es todo, en unos minutos tendrás a tu disposición una plataforma completa de Openshift lista para que la uses.

Instalación local de CodeReadyContainers en tu laptop

Podrás encender y apagar la plataforma usando los comandos crc start y crc stop.

Salida de consola de la ejecución del comando crc start

Como puedes imaginar, esto solo es adecuado para el entorno local y de ninguna manera para la implementación en producción y también tiene algunas restricciones que pueden afectarte, tales como:

  • El clúster de OpenShift de CodeReady Containers es efímero y no está destinado para uso en producción.
  • No hay una ruta de actualización compatible a versiones más nuevas de OpenShift. Actualizar la versión de OpenShift puede causar problemas que son difíciles de reproducir.
  • Utiliza un solo nodo que actúa como nodo maestro y trabajador.
  • Desactiva el Operador de monitoring por defecto. Este Operador desactivado causa que la parte correspondiente de la consola web no funcione.
  • La instancia de OpenShift se ejecuta en una máquina virtual. Esto puede causar otras diferencias, particularmente con la red externa.

Espero que encuentres esto útil y que puedas usarlo como parte de tu proceso de implementación.

Artículos tecnológicos de Black Friday en AliExpress — Edición de noviembre

Este mes iremos con un conjunto de artículos que podrían mejorar tu vida cuando estés viajando y ahorrar algo de dinero usando algunos de los artículos del Black Friday 

Foto de Markus Winkler en Unsplash

Si también estás buscando artículos que puedan ayudarte a mejorar tu kit de viaje, echa un vistazo a estos artículos que compré en AliExpress durante la temporada del 11/11 y Black Friday. ¡Únete a mí en este viaje!

Organizador de Cables para tus Artículos de Equipo 

Si estás viajando y eres como yo, probablemente vas a necesitar muchos cables y gadgets alrededor de tu dispositivo principal (portátil, tableta o algo similar). Y en mi caso, eso siempre termina con muchas cosas en el fondo de una bolsa, haciendo imposible encontrar rápidamente lo que necesitas. Con este organizador puedes tener todo a mano y también puedes llevarlo dentro de tu funda para portátil.

Bolsa Pequeña pero llena de capacidades

A veces necesito ir de viaje y no quiero llevar todo conmigo, porque no planeo trabajar ni nada, pero al menos algunas cosas mínimas necesitamos tener, ¿verdad? En mi caso, ese paquete mínimo es: iPad Mini, Power Bank, y algunos cargadores de cable para USB-C, Lightning y USB-Micro. Así que decidí incluir esta bolsa que tiene muchas características geniales como el candado TSA para estos viajes a los EE. UU. y una opción para tener un cargador USB-C para cargar tus dispositivos. Todo con un aspecto moderno y de moda con una calidad perfecta. Echa un vistazo al artículo y decide por ti mismo.

Candado Inteligente para Xiaomi para Nunca Olvidar tu Pin 

Nuevamente enfocado en la seguridad cuando estás viajando, siempre me gusta tener un candado con mis bolsas para asegurarme de que todo esté bajo control. Y tengo el problema de que usualmente olvido el Pin de esos candados cuando no los uso regularmente. Así que decidí dar el salto a un candado inteligente que funciona con mis huellas dactilares para evitar esta situación. Ahora, lo único que necesito hacer es asegurarme de que esté cargado, pero en los meses que

Resumen

Espero que esos artículos te ayuden a completar tu kit de viaje para que puedas mejorar tus viajes. Además, si tienes más artículos que también son parte de tu kit de viaje, ¡no dudes en hacérmelo saber usando los comentarios de esta publicación!

Aprende Cuánto Puedes Ganar en Medium Como Escritor Regular

Echemos un vistazo a mis métricas de Medium en detalle para que puedas estimar las tuyas — Mi año 2021 en revisión.

Foto de Lala Azizli en Unsplash

Quiero hacer este artículo para intentar ser lo más transparente posible sobre cómo ha ido mi año en Medium en diferentes aspectos: lectores, seguidores, suscriptores… ¡y sí, ganancias!

Sé que hay muchos artículos que explican muchas ideas sobre cómo están funcionando en Medium. Y, probablemente, no verás aquí los números más significativos en ninguna de las métricas que podría elegir, por lo que creo que este es un buen post para todos.

Este post te muestra cómo algo tan regular como podrías ser si decides comenzar tu viaje como escritor en Medium puede funcionar con la misma dedicación que yo le pongo.

La motivación adicional para este post es establecer las expectativas para el próximo año que espero sea mejor. Podría enfocarme más en esta gran actividad de compartir conocimiento con toda la audiencia y la gran comunidad que estamos creando aquí en Medium.

Publicaciones Escritas

Esta sección cubre la primera métrica en la que me gustaría centrarme porque esta es la más importante. Y esto es claro. Si escribes más, te involucrarás más con tu audiencia. Por supuesto, el contenido necesita ser de excelente calidad, pero es esencial que el número de publicaciones que escribas sea alto y la frecuencia sea estable para que puedas crecer una comunidad y sepan cuándo pueden esperar la próxima pieza. Como sabes, este no es mi primer trabajo o dedicación, así que no soy tan bueno en este aspecto como debería ser, pero déjame mostrarte los números:

Publicaciones publicadas por mes

Como puedes ver, trato de mantener la estabilidad en mis publicaciones, tratando de apuntar a un período semanal, así que tratando de alcanzar 4 por mes. Sin embargo, pude mantenerlo durante la mitad de los meses. Además, puedes ver el impulso en la motivación cuando comienzas un nuevo año, como puedes ver en los primeros tres meses del año. Así que, en total, puedes ver que he publicado 46 publicaciones. No es una marca significativa, pero es lo que pude hacer.

Seguidores y Suscriptores

Esta métrica es prácticamente la más importante porque te dice cómo se comporta tu comunidad. Si estás interactuando con ellos, si les gustan los temas que escribes, y cómo los cambios que estás haciendo están afectando a esta comunidad. Esta comunidad es tu núcleo, y decidirá cómo se comporta el resto. Necesitas invertir en ella, la alimentarás. Necesitas tratarla como se merece.

Entonces, ¿cuáles son mis números en este tema? No comencé desde cero, así que déjame compartir primero los números que tenía el 1 de enero de 2021: 119 Seguidores, 0 Suscriptores de correo electrónico, y 0 Miembros referidos (esto es normal ya que se introdujo en un punto tardío este año). Así que, aquí están los números para el año 2021:

Métricas de Seguidores y Suscriptores en 2021

Así que, estoy terminando el año con un total de 261 suscriptores, lo que significa un aumento del 120%, lo cual es excelente. Aún así, este aumento ha sido fantástico hasta octubre, y después de eso, es un poco estable, y como puedes ver, coincide con la menor cantidad de publicaciones publicadas de mi parte. Así que puedes ver la tendencia genuinamente porque la comunidad está creciendo y tus publicaciones publicadas. Si no me crees, echemos un vistazo a este gráfico:

Publicaciones publicadas por mes (línea roja) vs. Nuevos seguidores mensuales (barras azules)

Así que, como puedes ver, necesitas invertir para comenzar a ver crecer tu comunidad. Después de mis tres grandes meses con muchas publicaciones, pude ver eso. Después de ese punto, cuando mi tasa de publicación disminuyó, también lo hizo el crecimiento de la comunidad. Y, cuando mantuve el ritmo constante, pude mantener constante el crecimiento. Así que, cuanto más publiques, más consistente seas, más fuerte crecerá tu comunidad.

¡Muéstrame el dinero!

Y por último… pero no menos importante, porque estoy seguro de que esto es lo que te gustaría ver, las diferentes ganancias. Así que hablaré aquí sobre las ganancias antes de impuestos para que podamos comparar las mismas cosas y sería más beneficioso para ti, pero antes de comenzar una advertencia: Tuvimos «un año diferente» debido al programa de socios de Medium en el que pude participar algunos meses del año, lo que hace que mi año sea mucho más exitoso de lo que podría pensar, pero aquí están los números, pero antes de comenzar de nuevo, veamos el punto de partida. En diciembre de 2020, gané $30,41 con todas las publicaciones que había publicado.

Ganancias por mes en 2021

Así que, como puedes ver, no me estoy haciendo rico, pero eso es justo. Obtengo mucha alegría de escribir y compartir mi conocimiento, y si alguna de mis publicaciones te ha ayudado, esto es más importante para mí que cualquier número que puedas ver en el gráfico anterior. Pero hablemos de los números:

  • Puedes ver varios períodos: el donde tuvimos el impulso del Programa de Socios de Medium es claro en la pantalla (agosto — octubre de 2021), y otros fueron buenos porque algunas publicaciones generaron mucha atención. El resto establece la barra base, y podemos considerar la «ganancia base».
  • Lo bueno de Medium es que esto se basa en tus espectadores mensuales y tiempo de lectura, por lo que todas las publicaciones que has publicado durante toda tu vida están contando y generando ingresos cada mes. Así que, de nuevo, cuanto más publiques, más generarás porque no es lo mismo generar $0.01 por publicación cuando tienes 100 publicaciones que cuando tienes 10,000 publicaciones.
  • He ganado (antes de impuestos) $965.06, lo que es un promedio de $87.73 / mes en los 11 meses que he considerado para este estudio. Así que no está mal al menos para ayudarte a pagar algunas herramientas que usas para escribir y animarte a continuar en 2022 con más fuerza.

Resumen

Espero que te haya gustado este post, y de nuevo, intenté ser lo más transparente posible, y espero que lo hayas reconocido. Esto es para mostrarte cómo alguien como yo que usa parte de su tiempo libre para escribir puede ganar en Medium. Seguro, esto no me hará rico, al menos no en ninguna moneda con la que pueda comerciar, pero hay muchas más cosas que solo $ y BTC cuando hablas de cosas que todo este trabajo está generando.

Así que, ¡espero poder contar contigo para nuestro viaje en 2022!

¿Por qué es tan genial el modo agente de Prometheus?

Prometheus ha incluido una nueva capacidad en la versión 2.32.0 para optimizar el enfoque de un solo panel de vidrio 

Foto de Chris Liverani en Unsplash

A partir de la nueva versión próxima de Prometheus v2.32.0, tendremos una nueva característica importante a nuestra disposición: el Modo Agente. Y hay una fantástica publicación en el blog anunciando esta característica de uno de los rockstars del equipo de Prometheus: Bartlomiej Plotka, que recomiendo leer. Agregaré una sección de referencia al final del artículo. Intentaré resumir algunos de los puntos más relevantes aquí.

Otra publicación sobre Prometheus, el sistema de monitoreo más crítico en las arquitecturas nativas de la nube de hoy en día, tiene su origen en el sistema de monitoreo Borgmon creado por Google en tiempos antiguos (alrededor del período 2010–2014).

Basado en esta importancia, su uso ha estado creciendo increíblemente y fortaleciendo su relación con el ecosistema de Kubernetes. Hemos llegado a un punto en que Prometheus es la opción predeterminada para el monitoreo en prácticamente cualquier escenario que tenga una carga de trabajo relacionada con Kubernetes; algunos ejemplos son los que se muestran a continuación:

  • Prometheus es la opción predeterminada, incluyendo el Sistema de Monitoreo de Openshift
  • Prometheus tiene un Servicio Gestionado de Amazon a su disposición para ser utilizado en sus cargas de trabajo.
  • Prometheus está incluido en la Arquitectura de Referencia para Despliegues Nativos de la Nube de Azure.

Debido a esta popularidad y crecimiento, muchos casos de uso diferentes han planteado algunas mejoras que se pueden realizar. Algunos de ellos están relacionados con casos de uso específicos como el despliegue en el borde o proporcionar una vista global, o un solo panel de vidrio.

Hasta ahora, si tengo varios despliegues de Prometheus, monitoreo un subconjunto específico de sus cargas de trabajo debido a que residen en diferentes redes o porque hay varios clústeres, puede confiar en la capacidad de escritura remota para agregar eso en un enfoque de vista global.

La Escritura Remota es una capacidad que ha existido en Prometheus desde su creación. Las métricas que Prometheus está recopilando se pueden enviar automáticamente a un sistema diferente utilizando sus integraciones. Esto se puede configurar para todas las métricas o solo un subconjunto. Pero incluso con todo esto, están avanzando en esta capacidad, por lo que están introduciendo el modo Agente.

El Modo Agente optimiza el caso de uso de escritura remota configurando la instancia de Prometheus en un modo específico para realizar este trabajo de manera optimizada. Ese modelo implica la siguiente configuración:

  • Desactivar consultas y alertas.
  • Cambiar el almacenamiento local por un TSDB WAL personalizado

Y lo notable es que todo lo demás es igual, por lo que seguiremos utilizando la misma API, descubriendo capacidades y configuración relacionada. ¿Y qué te proporcionará todo esto? Veamos los beneficios que obtendrás al hacerlo:

  • Eficiencia: El TSDB WAL personalizado mantendrá solo los datos que no pudieron ser enviados al lugar de destino; tan pronto como tenga éxito, eliminará esa pieza de datos.
  • Escalabilidad: Mejorará la escalabilidad, permitiendo una escalabilidad horizontal más fácil para la ingesta. Esto se debe a que este modo agente desactiva algunas de las razones por las que la autoestabilidad es compleja en el modo servidor normal de Prometheus. Una carga de trabajo con estado hace que la escalabilidad sea compleja, especialmente en escenarios de reducción de escala. Así que este modo llevará a una carga de trabajo «más sin estado» que simplificará este escenario y estará cerca del sueño de un sistema de ingesta de métricas de autoescalabilidad.

Esta característica está disponible como una bandera experimental en la nueva versión, pero ya fue probada con los trabajos de Grafana Labs, especialmente en el lado del rendimiento.

Si deseas ver más detalles sobre esta característica, te recomendaría echar un vistazo al siguiente artículo: https://prometheus.io/blog/2021/11/16/agent/

[visual-link-preview encoded=»eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9wcm9tZXRoZXVzLmlvL2Jsb2cvMjAyMS8xMS8xNi9hZ2VudC8iLCJpbWFnZV9pZCI6MCwiaW1hZ2VfdXJsIjoiIiwidGl0bGUiOiIiLCJzdW1tYXJ5IjoiIiwidGVtcGxhdGUiOiJ1c2VfZGVmYXVsdF9mcm9tX3NldHRpbmdzIn0=»]

Desenredando las Políticas de Reclamación para Volúmenes Persistentes en Kubernetes

Descubre cómo la política puede afectar cómo se gestionan tus datos dentro del Clúster de Kubernetes

Foto por benjamin lehman en Unsplash

Como sabes, todo está bien en Kubernetes hasta que te enfrentas a una carga de trabajo con estado y necesitas gestionar sus datos. Todas las potentes capacidades que Kubernetes aporta al juego enfrentan muchos desafíos cuando hablamos de servicios con estado que requieren muchos datos.

La mayoría de los desafíos tienen una solución hoy en día. Es por eso que muchas cargas de trabajo con estado, como bases de datos y otros sistemas de backend, también requieren mucho conocimiento sobre cómo definir varias cosas. Una de ellas es la política de retención del volumen persistente.

Primero, definamos qué es la Política de Reclamación, y para hacerlo, usaré la definición oficial de la documentación:

Cuando un usuario ha terminado con su volumen, puede eliminar los objetos PVC de la API que permite la reclamación del recurso. La política de reclamación para un PersistentVolume le dice al clúster qué hacer con el volumen después de que ha sido liberado de su reclamación. Actualmente, los volúmenes pueden ser Retenidos, Reciclados o Eliminados.

Entonces, como puedes ver, tenemos tres opciones: Retener, Reciclar o Eliminar. Veamos cuál es el comportamiento de cada una de ellas.

Retener

Eso significa que los datos seguirán allí incluso si la reclamación ha sido eliminada. Todas estas políticas se aplican cuando el PVC original es eliminado. Antes de esa situación, los datos siempre permanecerán sin importar qué política usemos.

Entonces, retener significa que incluso si eliminamos el PVC, los datos seguirán allí, y se almacenarán de manera que ningún otro PVC pueda reclamar esos datos. Solo un administrador puede hacerlo con el siguiente flujo:

  1. Eliminar el PersistentVolume.
  2. Limpiar manualmente los datos en el activo de almacenamiento asociado según corresponda.
  3. Eliminar manualmente el activo de almacenamiento asociado.

Eliminar

Eso significa que tan pronto como eliminemos el PVC, el PV y los datos serán liberados.

Esto simplificará la tarea de limpieza y mantenimiento de tus volúmenes, pero al mismo tiempo, aumenta la posibilidad de que haya alguna pérdida de datos debido a un comportamiento inesperado. Como siempre, este es un compromiso que necesitas hacer.

Siempre necesitamos recordarte que si intentas eliminar un PVC en uso activo por un Pod, el PVC no se elimina inmediatamente. La eliminación del PVC se pospone hasta que el PVC ya no sea utilizado activamente por ningún Pod para asegurar que no se pierdan datos, al menos cuando algún componente todavía está vinculado a él. En la misma política, algo similar sucede con el PV. Si un administrador elimina un PV adjunto a un PVC, el PV no se elimina inmediatamente. La eliminación del PV se pospone hasta que el PV ya no esté vinculado a un PVC.

Reciclar

Eso significa algo en el medio, funciona de manera similar a la política de Eliminar que explicamos anteriormente, pero no elimina el volumen en sí, sino que eliminará el contenido del PV, por lo que en la práctica será similar. Entonces, al final, ejecutará un comando similar a este rm -rf en el artefacto de almacenamiento en sí.

Pero solo para que estés al tanto, esta política está actualmente obsoleta, y no deberías usarla en tus nuevas cargas de trabajo, pero todavía es compatible, por lo que puedes encontrar algunas cargas de trabajo que aún la están usando.

¿Cómo desarrollar una API de manera eficiente?

Aprende algunos consejos sobre cómo crear tu API de manera eficiente y lidiar con el trabajo real simultáneamente.

Foto de Edho Pratama en Unsplash

Al crear una API para exponer una capacidad o integrar diferentes sistemas, hay principalmente dos formas de hacerlo: enfoque de Contrato-Primero o enfoque de Contrato-Último. La diferencia radica en la metodología que seguirás para crear la API.

En un enfoque de contrato-primero, la definición del contrato es el punto de partida. No importa qué lenguaje o tecnología estés utilizando. Esta realidad ha sido la misma desde el comienzo del sistema distribuido en tiempos de RMI y CORBA y continúa siendo la misma en los tiempos extraordinarios de gRPC y GraphQL.

Comienzas con la definición del contrato entre ambas partes: la que expone la capacidad y el consumidor inicial de la información. Eso implica la definición de varios aspectos de él:

  • Propósito de las operaciones.
  • Campos que tiene cada operación.
  • Información de retorno dependiendo de cada escenario.
  • Información de errores reportados, y así sucesivamente.

Después de eso, comenzarás a diseñar la API en sí y la implementación para cumplir con la definición acordada entre las partes.

Este enfoque tiene varias ventajas y desventajas, pero hoy en día es la forma más «aceptable» de desarrollar API. Como ventajas podemos comentar las siguientes:

  • Reducción de Actividades de Retrabajo: Al comenzar definiendo el contrato, puedes validar rápidamente que todas las partes están de acuerdo con el contrato antes de escribir cualquier trabajo de implementación. Eso evitaría cualquier actividad de recodificación o retrabajo debido a un malentendido o simplemente adaptación de las expectativas y se volvería más eficiente.
  • Separación de Funciones: También proporcionará la separación de funciones para ambas partes, el proveedor y los consumidores. Porque tan pronto como tengas el contrato, ambos equipos pueden comenzar a trabajar en eso. Incluso puedes proporcionar un simulacro para que el consumidor pruebe cualquier escenario rápidamente sin la necesidad de esperar a que se cree el servicio real.

Pero el enfoque de Contrato-Primero tiene algunos requisitos o suposiciones para tener éxito que no son muy fáciles de cumplir en un escenario del mundo real. Esta situación es esperada. Hay muchas metodologías, consejos o recomendaciones que aprendes cuando estás estudiando que no son aplicables en la vida real. Para validar ese comentario, permíteme hacerte una pregunta:

¿Creaste una API y la interfaz que creaste fue 100% la misma que tenías al final?

La respuesta a esa pregunta en mi caso es «No, nunca». Y puedes pensar que soy un mal diseñador de API, y podrías tener razón. Estoy seguro de que la mayoría de las personas que leen este artículo definirían sus contratos mucho mejor que yo, pero ese no es el punto. Porque cuando estamos en la fase de implementación, generalmente detectamos algo que no pensamos en la fase de diseño, o cuando intentamos hacer un diseño de bajo nivel, hay otros conceptos que no contemplamos en el punto que hace que otra solución sea la más adecuada para el escenario, por lo que impactarás la API, y eso tiene un costo.

Es posible que mitiges ese riesgo simplemente dedicando más tiempo a la fase de definición del contrato para asegurarte de que nada esté bien considerado o incluso crear algunos prototipos para garantizar que la API generada sea la final. Pero si haces esto, solo estás reduciendo la probabilidad de que esto suceda, nunca eliminándola, y al mismo tiempo, estás reduciendo los beneficios del enfoque.

Uno de los puntos críticos que comentamos anteriormente fue la eficiencia. Supongamos que pensamos en la eficiencia ahora cuando dedicarás más tiempo a esa fase. Eso significa que será menos eficiente. También comentamos sobre lo grandioso de hacer la separación de funciones: pero en este caso, mientras se extiende el tiempo de creación de la interfaz, también se extiende el tiempo que ambos equipos necesitan esperar hasta que puedan trabajar en sus partes.

Pero implementar el otro enfoque no proporcionará mucho beneficio. Puede llevar a un trabajo aún más costoso porque no obtendrás validación para el cliente hasta que la API esté implementada. Y nuevamente, otra pregunta:

¿Alguna vez compartiste algo con tu cliente por primera vez y no pidieron ningún cambio?

Nuevamente, la respuesta es la misma: «No, nunca». Y ese costo siempre será mayor que el que se habla del cambio en la definición, porque como sabes, el cambio es mucho más costoso cuanto más tarde lo detectes en el ciclo de desarrollo, y no es un aumento lineal. Es mucho más cercano a un aumento exponencial.

Entonces, ¿cuál es mi recomendación aquí? Sigue el enfoque de contrato-primero y acepta la vida real. Así que haz tu mejor esfuerzo para definir la API y tener un acuerdo entre las partes y si detectas algo que pueda impactar la API, notifícalo lo antes posible a las partes. Al final, esto no es más que un enfoque interactivo también para la definición de la API, y no hay nada de malo en ello.

Seamos honestos, no hay una bala de plata que proporcione el camino verde en tu trabajo diario, y eso es lo grandioso de hacerlo y por qué lo disfrutamos tanto. Porque en cada una de nuestras decisiones de trabajo, como sucede en cualquier otro aspecto de la vida, hay tantos aspectos, tantas situaciones, tantos detalles que siempre impactan la increíble y hermosa metodología que puedes ver en un artículo, un documento, una clase o un tweet.

TIBFAQS: Mejorando el Tiempo de Respuesta de tu API SOAP de TIBCO BW en Grandes Cargas Útiles al Usar Apache Commons

Descubre cómo ajustar tus servicios SOAP para que sean eficientes para solicitudes de carga masiva 

Foto de Markus Spiske en Unsplash

Todos sabemos que cuando estamos implementando una API, necesitamos diseñar cuidadosamente el tamaño que podemos manejar como el máximo tamaño de solicitud. Por ejemplo, deberías saber que para una solicitud en línea, el límite superior habitual es de 1 MB, todo lo que supere eso deberíamos poder manejarlo de manera diferente (las opciones para manejarlo pueden ser dividir las solicitudes o usar otros protocolos en lugar de HTTP para manejar este tipo de cargas). Pero luego la vida real viene a enfrentarnos allí.

No siempre es posible ceñirse al plan. No siempre somos nosotros los que tomamos esa decisión. Y podemos argumentar todo lo que queramos que esto no es una buena idea y eso está bien, pero al mismo tiempo, necesitamos hacer algo que funcione.

Por defecto, cuando estamos exponiendo un Servicio SOAP en TIBCO BusinessWorks, se basa en bibliotecas de terceros para gestionar la solicitud, analizarla y ayudarnos a acceder al contenido de las solicitudes. Algunas de ellas provienen de la Fundación Apache, y de la que vamos a hablar es Apache Commons.

Cuando estamos enviando una solicitud grande a nuestro servicio SOAP, en mi caso, esta es una solicitud SOAP de 11 MB a mi sistema, y empiezo a ver el siguiente comportamiento:

  • El servicio no está respondiendo a mi consumidor.
  • Puedo ver un uso significativo del hilo del Conector HTTP manejando la solicitud antes de enviarla al servicio real.
  • La CPU y la memoria están aumentando mucho.

Entonces, ¿cómo podemos mejorar eso? Lo primero es profundizar más en los detalles sobre ese uso extensivo de la CPU. Por ejemplo, si vamos al seguimiento de pila que los hilos del Conector HTTP están ejecutando, puedes ver el siguiente seguimiento de pila:

Puedes obtener esa información de varias fuentes:

  • Una es usar el JVisual VM e ir a los detalles del snapshot en las muestras como lo hice yo.
  • También puedes obtener un volcado de hilos y usar herramientas como https://fastthread.io/index.jsp para visualizarlo gráficamente.

Aquí podemos ver que estamos atascados en el método de registro. Y eso es extraño, ¿por qué estoy registrando estas solicitudes si no estoy haciendo eso en la configuración de BusinessWorks? La respuesta es bastante simple: las bibliotecas de Apache tienen su propio sistema de registro que no se ve afectado por la configuración de logback que usa BusinessWorks.

Entonces, podemos desactivar eso usando la siguiente propiedad JVM:

-Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.NoOpLog

El tiempo de respuesta ha mejorado de 120 segundos para 11 MB a menos de 3 segundos, incluyendo toda la lógica que el servicio estaba haciendo. Bastante impresionante, ¿verdad?

Resumen

Espero que encuentres esto interesante, y si eres uno de los que enfrenta este problema ahora, tienes información para no detenerte por este. Si deseas enviar tus preguntas, no dudes en usar una de las siguientes opciones:

  • Twitter: Puedes enviarme una mención a @alexandrev en Twitter o un DM o incluso solo usando el hashtag #TIBFAQS que monitorearé.
  • Email: Puedes enviarme un correo electrónico a alexandre.vazquez en gmail.com con tu pregunta.
  • Instagram: Puedes enviarme un DM en Instagram a @alexandrev

De Docker Desktop a Rancher Desktop: Rápido y Sencillo

contenedores intermodales archivados de varios colores
Foto de frank mckenna en Unsplash

Como la mayoría de ustedes ya saben, el 31 de enero es el último día para usar Docker Desktop sin aplicar el nuevo modelo de licencias que prácticamente genera un costo para cualquier uso empresarial. Por supuesto, todavía es gratuito para usar en proyectos de código abierto y pequeñas empresas, pero es mejor cumplir con los requisitos utilizando la documentación oficial de Docker.

Así que debido a esa situación, comencé un viaje para encontrar una alternativa a Docker Desktop porque usaba mucho docker-desktop. El uso principal que hago es iniciar cosas similares a servidores para uso temporal que no me gusta tener instaladas en mi máquina para mantenerla lo más limpia posible (aunque esto no siempre es cierto, pero es un intento).

Entonces, en esa búsqueda, descubrí que Rancher Desktop fue lanzado no hace mucho tiempo y prometía ser la alternativa más adecuada. El objetivo de este post no es comparar ambas plataformas, pero si deseas tener más información, dejo aquí un post que puede proporcionártela:

La idea aquí es hablar más sobre el viaje de esa migración. Así que instalé Rancher Desktop 1.0.0 en mi Mac y la instalación fue muy, muy fácil. La principal diferencia con Docker Desktop es que Rancher Desktop está construido pensando en Kubernetes y para Docker Desktop, eso vino como una idea posterior. Así que, por defecto, tendremos un entorno de Kubernetes ejecutándose en nuestro sistema, y podemos incluso seleccionar la versión de ese clúster como puedes ver en la imagen a continuación:

Pero también en Rancher, notaron la ventana de oportunidad que tienen frente a ellos, y fueron muy agresivos al proporcionar un camino de migración fácil desde Docker Desktop. Y lo primero que notarás es que puedes configurar Docker Desktop para que sea compatible con la API de Docker CLI como puedes ver en la imagen a continuación.

Esto no está habilitado por defecto, pero es muy fácil hacerlo y te permitirá no tener que cambiar todos tus comandos “similares a docker” (docker build, docker ps.. ) por lo que suavizará mucho la transición.

Quizás en el futuro, quieras alejarte de todo lo que se asemeje a docker incluso en el lado del cliente y moverte a un enfoque tipo Containers, pero por ahora, lo que necesitaba es simplificar el proceso.

Así que, después de habilitar eso y reiniciar mi Rancher Desktop, puedo escribir mis comandos como puedes ver en la imagen a continuación:

Así que, lo único que necesito hacer es migrar mis imágenes y contenedores. Porque no soy un usuario puro de docker, a veces no sigo la idea de tener tu contenedor sin estado y usar volúmenes especialmente cuando estás haciendo un uso pequeño por algún tiempo y eso es todo. Así que, eso significa que algunos de mis contenedores también necesitan ser movidos a la nueva plataforma para evitar cualquier pérdida de datos.

Así que, mi viaje de migración tuvo diferentes pasos:

  • En primer lugar, voy a comprometer los contenedores con estado que necesito mantener en el nuevo sistema usando el comando docker commit con la documentación que puedes encontrar aquí:
  • Luego, exportaré todas las imágenes que tengo ahora en archivos TAR usando el comando docker save con la documentación que puedes encontrar aquí:
  • Y finalmente, cargaré todas esas imágenes en el nuevo sistema usando el comando docker load para tenerlas disponibles allí. Nuevamente, puedes encontrar la documentación de ese comando específico aquí

Para automatizar un poco el proceso, incluso que no tengo muchas imágenes cargadas porque trato de limpiar de vez en cuando usando el comando docker system prune:

Prefiero no hacerlo manualmente, así que usaré algunos scripts simples para hacer el trabajo.

Así que, para realizar el trabajo de exportación, necesito ejecutar el siguiente comando:

docker image ls -q | xargs -I {} docker image save {} -o {}.tar

Este script guardará todas mis imágenes en diferentes archivos tar en una carpeta específica. Ahora, solo necesito ejecutar el siguiente comando desde la misma carpeta en la que ejecuté el anterior para tener todas las imágenes de vuelta en el nuevo sistema:

find . -name "*.tar" -exec docker load -i {} ;

La razón por la que no estoy haciendo ambas acciones al mismo tiempo es que necesito tener Docker Desktop ejecutándose para la primera parte y Rancher Desktop para la otra. Así que, aunque puedo automatizar eso también, creo que no vale la pena.

Y eso es todo, ahora puedo eliminar Docker Desktop de mi portátil, y mi vida continuará siendo la misma. Intentaré proporcionar más comentarios sobre cómo se siente, especialmente en cuanto a la utilización de recursos y temas similares en un futuro cercano.