<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>docker | Webmago Dev</title>
	<atom:link href="https://webmago.dev/category/docker/feed/" rel="self" type="application/rss+xml" />
	<link>https://webmago.dev</link>
	<description>Creando codigo desde 1990</description>
	<lastBuildDate>Sat, 10 May 2025 13:39:07 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>¡Descongela tu Desarrollo con Winter CMS! ❄️ Tu Entorno Docker Listo para la Acción</title>
		<link>https://webmago.dev/descongela-tu-desarrollo-con-winter-cms-%e2%9d%84%ef%b8%8f-tu-entorno-docker-listo-para-la-accion/</link>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Fri, 09 May 2025 15:21:43 +0000</pubDate>
				<category><![CDATA[development]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[wintercms]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=5901</guid>
					<description><![CDATA[<p>¿Cansado de lidiar con configuraciones complejas y entornos de desarrollo inconsistentes? ¡Dile adiós al frío de la incertidumbre y da la bienvenida a Winter CMS, mi imagen Docker preconfigurada lista para potenciar tus proyectos! Hace apenas dos semanas, compartí contigo una herramienta que he estado afinando para simplificar tu flujo de trabajo. Winter CMS encapsula [&#8230;]</p>
The post <a href="https://webmago.dev/descongela-tu-desarrollo-con-winter-cms-%e2%9d%84%ef%b8%8f-tu-entorno-docker-listo-para-la-accion/">¡Descongela tu Desarrollo con Winter CMS! ❄️ Tu Entorno Docker Listo para la Acción</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></description>
										<content:encoded><![CDATA[<p data-sourcepos="5:1-5:231">¿Cansado de lidiar con configuraciones complejas y entornos de desarrollo inconsistentes? ¡Dile adiós al frío de la incertidumbre y da la bienvenida a <strong>Winter CMS</strong>, mi imagen Docker preconfigurada lista para potenciar tus proyectos!</p>
<p data-sourcepos="7:1-7:288">Hace apenas dos semanas, compartí contigo una herramienta que he estado afinando para simplificar tu flujo de trabajo. <strong>Winter CMS</strong> encapsula un entorno de desarrollo robusto y eficiente, ahorrándote horas de configuración y garantizando la consistencia en cada paso de tu proceso creativo.</p>
<p data-sourcepos="9:1-9:26"><strong>¿Qué te ofrece Winter CMS?</strong></p>
<ul data-sourcepos="11:3-15:0">
<li data-sourcepos="11:3-11:158"><strong>Un entorno consistente:</strong> Olvídate de los &#8220;funciona en mi máquina&#8221;. Winter CMS asegura que todos los miembros de tu equipo trabajen en un ambiente idéntico.</li>
<li data-sourcepos="12:3-12:127"><strong>Ahorro de tiempo invaluable:</strong> Dedica tu energía a lo que realmente importa: ¡codificar! Winter CMS viene listo para usarse.</li>
<li data-sourcepos="13:3-13:151"><strong>Flexibilidad total:</strong> Adapta Winter CMS a tus necesidades específicas. Su diseño modular te permite integrar las herramientas que realmente utilizas.</li>
<li data-sourcepos="14:3-15:0"><strong>La base de mis servicios:</strong> Winter CMS no es solo una imagen Docker, es la demostración de mi compromiso con la eficiencia y la calidad en el desarrollo. Utilizo esta misma base para ofrecerte soluciones robustas y escalables.</li>
</ul>
<p><strong>¿Qué Versiones de Winter CMS se han liberado?</strong></p>
<ul>
<li>1.2.7 php 8.2 fpm</li>
<li>1.2.7 php 8.2 apache</li>
<li>1.2.7 php 8.1 fpm</li>
<li>1.2.7 php 8.1 apache</li>
<li>1.2.7 php 8.0 fpm</li>
<li>1.2.7 php 8.0 apache</li>
</ul>
<p><strong>¿Listo para experimentar la calidez de un desarrollo sin complicaciones?</strong></p>
<p><a href="https://webmago.dev/#contact">¡Quiero saber cómo Winter CMS puede impulsar mi próximo proyecto!</a></p>
<p data-sourcepos="20:1-20:228">Al hacer clic en el botón de arriba, podrás contactarme directamente para discutir tus necesidades y descubrir cómo mis servicios, basados en la eficiencia de herramientas como Winter CMS, pueden llevar tus ideas al siguiente nivel.</p>
<p data-sourcepos="22:1-22:202">Ya sea que necesites ayuda para optimizar tu flujo de trabajo, construir aplicaciones robustas o implementar soluciones escalables, estoy aquí para ofrecerte mi experiencia y las herramientas adecuadas.</p>
<p data-sourcepos="24:1-24:164"><strong>¡No esperes más para descongelar tu potencial! Explora Winter CMS en Docker Hub:</strong> <a class="ng-star-inserted" href="https://hub.docker.com/r/webmago/winter" target="_blank" rel="noopener">https://hub.docker.com/r/webmago/winter</a></p>The post <a href="https://webmago.dev/descongela-tu-desarrollo-con-winter-cms-%e2%9d%84%ef%b8%8f-tu-entorno-docker-listo-para-la-accion/">¡Descongela tu Desarrollo con Winter CMS! ❄️ Tu Entorno Docker Listo para la Acción</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WinterCMS, Testing Docker Image</title>
		<link>https://webmago.dev/wintercms-testing-docker-image/</link>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Tue, 04 May 2021 04:25:15 +0000</pubDate>
				<category><![CDATA[docker]]></category>
		<category><![CDATA[wintercms]]></category>
		<category><![CDATA[docker-compose]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=1206</guid>
					<description><![CDATA[<p>Some days ago, I created the WinterCMS Docker image for use with PHP 7.2 &#8211; 7.4 on Apache2 or FPM variants; those images/versions are publicly available, is my donation to the OpenSource and WinterCMS communities. Today I put my hands to write a basic docker-compose.yml to test the Docker Image using Docker Compose, SQLite as [&#8230;]</p>
The post <a href="https://webmago.dev/wintercms-testing-docker-image/">WinterCMS, Testing Docker Image</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></description>
										<content:encoded><![CDATA[<p>Some days ago, I created the <a title="WinterCMS, descarga la imagen Docker." href="https://webmago.dev/wintercms-descarga-la-imagen-docker/" target="_blank" rel="noopener">WinterCMS Docker image</a> for use with PHP 7.2 &#8211; 7.4 on Apache2 or FPM variants; those images/versions are publicly available, is my donation to the OpenSource and <a title="WinterCMS, descarga la imagen Docker." href="https://wintercms.com" target="_blank" rel="noopener">WinterCMS</a> communities.</p>
<p>Today I put my hands to write a basic <code>docker-compose.yml</code> to test the Docker Image using Docker Compose, SQLite as a database.</p>
<p>I decided to bind to my SSD local directories with <code>storage, themes, plugins, and database</code> container directories to keep this data safe if the container crashes or is removed.</p>
<div id="attachment_1211" style="width: 770px" class="wp-caption aligncenter"><img fetchpriority="high" decoding="async" aria-describedby="caption-attachment-1211" class="size-full wp-image-1211" src="https://webmago.dev/buvytsan/2021/05/WinterCMS-bind-dirs.png" alt="WinterCMS binding directories" width="760" height="352" srcset="https://webmago.dev/buvytsan/2021/05/WinterCMS-bind-dirs.png 760w, https://webmago.dev/buvytsan/2021/05/WinterCMS-bind-dirs-300x139.png 300w" sizes="(max-width: 760px) 100vw, 760px" /><p id="caption-attachment-1211" class="wp-caption-text">WinterCMS binding directories</p></div>
<p>I created an <code>.env</code> file to inject environment variables and some values into the <code>docker-compose.yml</code> services file.</p>
<pre><code class="language-bash">###
#
# Winter CMS Test Image
# Version 1.0
# @author: WebMago
#
###
#### ---- * WinterCMS Configuration * ---- ####
# Name
CONTAINER_CMS_NAME=wintercms
# Image
CONTAINER_CMS_IMAGE=webmago/winter:stable-v1.1.3-php7.4-apache
# Env values
APP_DEBUG=false
APP_KEY=base64:PUT-YOUR-KEY-HERE
TZ=America/Mexico_City
APP_LOCALE=en
DB_PATH_SQLITE=storage/database.sqlite
DB_TYPE=sqlite
SESSION_DRIVER=file
CMS_ACTIVE_THEME=jacoweb-freelance
#### ---- * WinterCMS Domains * ---- ####
# A fake domain to test locally
WINTER_DOMAINS=winter.webmago.io</code></pre>
<p>&nbsp;</p>
<p>On the <code>docker-compose.yml</code> the <code>.env</code> values are injected as you can view on the code below and the directories are bound locally on my SSD.</p>
<pre><code class="language-yaml">version: &#039;3&#039;
services:
  web-wintercms:
    image: ${CONTAINER_CMS_IMAGE}
    container_name: ${CONTAINER_CMS_NAME}
    restart: unless-stopped
    ports:
      - &quot;80:80&quot;
    environment:
        VIRTUAL_HOST: ${WINTER_DOMAINS}
        APP_DEBUG: ${APP_DEBUG}
        APP_KEY: ${APP_KEY}
        TZ: ${TZ}
        APP_LOCALE: ${APP_LOCALE}
        DB_PATH_SQLITE: ${DB_PATH_SQLITE}
        DB_TYPE: ${DB_TYPE}
        SESSION_DRIVER: ${SESSION_DRIVER}
        CMS_ACTIVE_THEME: ${CMS_ACTIVE_THEME}
    volumes:
     - ./config/test:/var/www/html/config/docker
     - ./wintercms/storage/database.sqlite:/var/www/html/storage/database.sqlite
     - ./wintercms/storage/logs:/var/www/html/storage/logs
     - ./wintercms/storage/app:/var/www/html/storage/app
     - ./wintercms/storage/cms:/var/www/html/storage/cms
     - ./wintercms/themes:/var/www/html/themes
     - ./wintercms/plugins:/var/www/html/plugins
</code></pre>
<p>&nbsp;</p>
<p>To launch WinterCMS execute:</p>
<pre><code class="language-bash">docker-compose up -d</code></pre>
<p>This runs the process in the background, to stop the execution run:</p>
<pre><code class="language-bash">docker-compose down</code></pre>
<p>&nbsp;</p>
<p>The first run creates the <code>database.sqlite</code> and assign a random password to the <code>admin</code> user, this is not visible if you run the <code>docker-compose</code> command using the flag <code>-d</code>.</p>
<p>This can be solved using three scenarios.</p>
<p>&nbsp;</p>
<p><strong>First Scenario</strong></p>
<p>Execute the docker-compose without the flag -d</p>
<p><code class="language-bash">docker-compose up</code></p>
<p>&nbsp;</p>
<p><strong>Second Scenario</strong></p>
<p>If you have been executed the docker-compose with the flag -d and used the YAML of this example, the database is not deleted and the change will keep on the next execution.</p>
<pre><code class="language-bash"># Access the container
docker-compose exec -it wintercms bash
# change the admin password
php artisan winter:passwd
# Enter the username to reset, on this case is admin
 Username to reset:
 &gt; admin
 Enter new password (leave blank for generated password) []:
 &gt; 
Password successfully changed.
# exit the container.
exit</code></pre>
<p>If you require to use <code>redis</code> my advice is to use my images as a base to generate a new image with this PHP extension.</p>
<p>&nbsp;</p>
<p><strong>Third Scenario</strong></p>
<p>Add the environment variable <code>INIT_WINTER</code> with the <code>false</code> value into the <code>environment</code> section of the YAML file, only if you have not executed the <code>docker-compose</code> command as the first run.</p>
<pre><code class="language-bash"># Access the container
docker-compose exec -it wintercms bash
# Winter up
php artisan winter:up
.
. # this show the DB migration process
.
.
. # finally the process displays the random password assigned, this is an example only
- The following password has been automatically generated for the &quot;admin&quot; account: xZ4DF20k8txIrcBRqEhkjw
 </code></pre>
<p><strong>Accessing the Backend</strong> After all the previous process, now you can access the Backend  CMS, on my case I define the host <code>wintercms.webmago.io</code> as a fake URL added to my hosts, on my web browser typed: <code>http://wintercms.webmago.io/backend/</code> the user is <code>admin</code> and my password the defined or adjusted based on the previous three scenarios described. <code>/etc/hosts file</code></p>
<pre><code class="language-bash">127.0.0.1 wintercms.webmago.io</code></pre>
<p>&nbsp;</p>
<div id="attachment_1216" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-1216" class="size-large wp-image-1216" src="https://webmago.dev/buvytsan/2021/05/WinterCMS-sqlite-one-them-1024x378.png" alt="WinterCMS SQLite, Freelance Theme" width="1024" height="378" srcset="https://webmago.dev/buvytsan/2021/05/WinterCMS-sqlite-one-them-1024x378.png 1024w, https://webmago.dev/buvytsan/2021/05/WinterCMS-sqlite-one-them-300x111.png 300w, https://webmago.dev/buvytsan/2021/05/WinterCMS-sqlite-one-them-768x283.png 768w, https://webmago.dev/buvytsan/2021/05/WinterCMS-sqlite-one-them-1536x566.png 1536w, https://webmago.dev/buvytsan/2021/05/WinterCMS-sqlite-one-them-2048x755.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-1216" class="wp-caption-text">WinterCMS SQLite, Freelance Theme</p></div>
<p><strong>Glitches</strong></p>
<p>The <code>demo</code> theme currently is not available, this can origin errors on the Frontend, you need to install and activate one of the suggested on the <code>Front-end theme</code> section, find or add your old theme with the required adjustments for WinterCMS.</p>
<p>&nbsp;</p>
<p>On the Plugins section, the oldest OctoberCMS Plugins are available to be installed, this can be an additional article for the WinterCMS series.</p>
<div id="attachment_1217" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-1217" class="size-large wp-image-1217" src="https://webmago.dev/buvytsan/2021/05/WinterCMS-Plugins-1024x562.png" alt="WinterCMS Plugins" width="1024" height="562" srcset="https://webmago.dev/buvytsan/2021/05/WinterCMS-Plugins-1024x562.png 1024w, https://webmago.dev/buvytsan/2021/05/WinterCMS-Plugins-300x165.png 300w, https://webmago.dev/buvytsan/2021/05/WinterCMS-Plugins-768x421.png 768w, https://webmago.dev/buvytsan/2021/05/WinterCMS-Plugins-1536x842.png 1536w, https://webmago.dev/buvytsan/2021/05/WinterCMS-Plugins-2048x1123.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-1217" class="wp-caption-text">WinterCMS Plugins</p></div>
<p>&nbsp;</p>
<p>If you require my help, please let me know, <a href="https://webmago.dev/#contact" target="_blank" rel="noopener">contact me</a>.</p>The post <a href="https://webmago.dev/wintercms-testing-docker-image/">WinterCMS, Testing Docker Image</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WinterCMS, descarga la imagen Docker.</title>
		<link>https://webmago.dev/wintercms-descarga-la-imagen-docker/</link>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Fri, 30 Apr 2021 15:15:58 +0000</pubDate>
				<category><![CDATA[codefresh]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[wintercms]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=1166</guid>
					<description><![CDATA[<p>Si has leído nuestros artículos previos, te habrás enterado que OctoberCMS ha generado un nuevo esquema de pagos y esto origino una ruptura interna entre los colaboradores del proyecto quienes quienes lanzaron WinterCMS una derivación del actual OctoberCMS. &#160; Varios desarrolladores que hemos usado este CMS también han optado por mirar y  migrar sus proyectos [&#8230;]</p>
The post <a href="https://webmago.dev/wintercms-descarga-la-imagen-docker/">WinterCMS, descarga la imagen Docker.</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></description>
										<content:encoded><![CDATA[<p>Si has leído nuestros artículos previos, te habrás enterado que OctoberCMS ha generado un <a title="Adios OctoberCMS, Hola WinterCMS" href="https://webmago.dev/adios-octobercms-hola-wintercms/" target="_blank" rel="noopener">nuevo esquema de pagos</a> y esto origino una ruptura interna entre los colaboradores del proyecto quienes quienes lanzaron <a title="WinterCMS finalmente disponible" href="https://webmago.dev/wintercms-finalmente-disponible/" target="_blank" rel="noopener">WinterCMS</a> una derivación del actual OctoberCMS.</p>
<p>&nbsp;</p>
<p>Varios desarrolladores que hemos usado este CMS también han optado por mirar y  migrar sus proyectos a este nuevo Administrador de Contenido, y por ello me he unido para proveer de las primeras imágenes <a href="https://hub.docker.com/r/webmago/winter" target="_blank" rel="noopener">Docker de WinterCMS</a> de forma gratuita.</p>
<p>&nbsp;</p>
<p>Para generar dichas imágenes me base en el código  proporcionado por <a href="https://github.com/aspendigital/docker-octobercms" target="_blank" rel="noopener">@aspendigital</a>, haciendo una derivación para generar el CI  con <a href="https://codefresh.io/" target="_blank" rel="noopener">Codefresh</a> un SaaS al que le he confiado varios de mis pipelines desde hace mas de 2 años.</p>
<p>&nbsp;</p>
<p>Al momento de escribir este artículo he generado 3 versiones de WinterCMS, <em>v1.1.0, v1.1.2</em> y <em>v1.1.3</em> con <em>PHP 7.2 a 7.4</em> con dos variantes, para <em>apache</em> y <em>fpm</em>; el por que no esta la version 1.1.1 se debe a que generó un error de sqlite al momento de su construcción, por lo que opté por no generar sus respectivas imágenes, así también  las imágenes con <strong>PHP 5.6</strong> fueron descartadas , esto debido a que WinterCMS recomienda usar la version <strong>PHP 7.2</strong> en adelante.</p>
<p>&nbsp;</p>
<h2>¿Cómo usar la imagen?</h2>
<h3>La forma rápida</h3>
<p><code>$ docker run -p 80:80 --name winter webmago/winter:latest</code></p>
<p>Detener la imagen con CTRL-C</p>
<p><code>$ docker rm winter # Destruye el contenedor</code></p>
<p>&nbsp;</p>
<blockquote>
<div>Si hay un conflicto con el puerto, recibirás un mensaje de error del daemon Docker. Intenta mapear a un puerto local <strong>(-p 8080:80)</strong> o apaga el contenedor o servidor que esté usando el puerto deseado.</div>
</blockquote>
<div>
<ul>
<li>Visita http://localhost usando tu navegador.</li>
<li>Ingresa al backend http://localhost/backend con el usuario <code>admin</code> y  password <code>admin</code>.</li>
<li>Presiona<code>CTRL-C</code> para detener el contenedor. Ejecutar el contenedor en primer plano enviara los mensajes de log a la terminal.</li>
</ul>
</div>
<div></div>
<div></div>
<div>
<h3>Ejecutar el contenedor en segundo plano con la opcion <code>-d</code>:</h3>
<div>
<pre><code class="language-bash">$ docker run -p 80:80 --name winter -d webmago/winter:latest
$ docker stop winter  # Detener el contenedor. Para reiniciar docker start winter
$ docker rm winter  # Destruir el contenedor</code></pre>
</div>
</div>
<div></div>
<h2>Trabajar con archivos locales</h2>
<p>&nbsp;</p>
<div>
<div>Usando <em>volumes Docker,</em> es posible montar archivos localmente dentro de un contenedor.</div>
</div>
<div>
<div></div>
<div>El contenedor usa el directorio de trabajo <code>/var/www/html</code> para el <code>document root</code> del servidor web. Es aquí donde el codigo base de Winter CMS reside dentro del contenedor. Puedes reemplazar archivos y carpetas, o itnroducir nuevos con volumenes montados vinculados:</div>
<div>
<pre><code class="language-bash"># Developing a plugin
$ git clone git@github.com:aspendigital/oc-resizer-plugin.git
$ cd oc-resizer-plugin
$ docker run -p 80:80 --rm \
-v $(pwd):/var/www/html/plugins/aspendigital/resizer \
webmago/winter:latest</code></pre>
</div>
</div>
<div></div>
<div>
<div>
<div>Ahórrate algunos pulsaciones de teclado, utiliza <a href="https://docs.docker.com/compose/overview/" target="_blank" rel="noopener"><code>docker-compose</code></a> introduciendo un archivo <code>docker-compose.yml</code> a tu proyecto:</div>
</div>
</div>
<div></div>
<div>
<pre><code class="language-yaml"># docker-compose.yml
version: &#039;2.2&#039;
services:
  web:
    image: webmago/winter
    ports:
      - 80:80
    volumes:
      - $PWD:/var/www/html/plugins/aspendigital/resizer</code></pre>
</div>
<p>&nbsp;</p>
<div>
<div>Con el código arriba mencionado, guardalo en tu directorio de trabajo y ejecutalo:</div>
</div>
<div></div>
<div>
<pre><code class="language-bash">$ docker-compose up -d # inicia los servicios definidos en `docker-compose.yml` en el fondo
$ docker-compose down # detiene y destruye</code></pre>
</div>
<p>&nbsp;</p>
<p>Estas son algunas formas principales de como usar esta imagen, si requieres una personalización o implementarla en algun cluster Kubernetes <a href="https://webmago.dev/#contact" target="_blank" rel="noopener">contactame</a>.</p>The post <a href="https://webmago.dev/wintercms-descarga-la-imagen-docker/">WinterCMS, descarga la imagen Docker.</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Administrando Droplets con Pulumi</title>
		<link>https://webmago.dev/administrando-droplets-con-pulumi/</link>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Fri, 05 Mar 2021 16:41:44 +0000</pubDate>
				<category><![CDATA[development]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[digital ocean]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[infraestructura]]></category>
		<category><![CDATA[pulumi]]></category>
		<category><![CDATA[IaC]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=788</guid>
					<description><![CDATA[<p>Un Droplet es el nombre que Digital Ocean le da a sus maquinas virtuales, es muy probable que algunas aplicaciones requieran de un arquitectura que involucre 1 o mas Droplets y que estos se encuentren balanceados. &#160; Usando código en Typescript trabaje en un PoC para vincular 3 Droplets y balancear sus cargas, para ello [&#8230;]</p>
The post <a href="https://webmago.dev/administrando-droplets-con-pulumi/">Administrando Droplets con Pulumi</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></description>
										<content:encoded><![CDATA[<p>Un Droplet es el nombre que <a title="Digital Ocean" href="https://digitalocean.com" target="_blank" rel="noopener noreferrer">Digital Ocean</a> le da a sus maquinas virtuales, es muy probable que algunas aplicaciones requieran de un arquitectura que involucre 1 o mas Droplets y que estos se encuentren balanceados.</p>
<p>&nbsp;</p>
<p>Usando código en Typescript trabaje en un PoC para vincular 3 Droplets y balancear sus cargas, para ello hice uso de <a title="Pulumi" href="https://pulumi.com" target="_blank" rel="noopener noreferrer">Pulumi</a> para generar la arquitectura en donde un balanceador de carga recibirá las peticiones y las dirigirá hacia los droplets, a su vez un firewall evitara accesos a puertos no solicitados.</p>
<p>&nbsp;</p>
<p>En un post <a title="Pulumi (IaC) con Digital Ocean" href="https://webmago.dev/pulumi-iac-con-digital-ocean/" target="_blank" rel="noopener noreferrer">previo</a> hable de <a title="Pulumi" href="https://pulumi.com" target="_blank" rel="noopener noreferrer">Pulumi</a> con <a title="Digital Ocean" href="https://digitalocean.com" target="_blank" rel="noopener noreferrer">Digital Ocean</a>, con el que trabaje en un PoC y Kubernetes. Para este PoC me base en este <a title="Pulumi DigitalOcean Droplets" href="https://github.com/pulumi/examples/tree/master/digitalocean-ts-loadbalanced-droplets" target="_blank" rel="noopener noreferrer">código</a>  al cual le hice algunas adecuaciones para instalar docker y ejecutar el contenedor de <a title="Codigo Simple Web en Python" href="https://github.com/yeasy/simple-web" target="_blank" rel="noopener noreferrer">Simple Web</a> y validar el balanceo a través de los 3 Droplets creados.</p>
<p>&nbsp;</p>
<p>En la primer creación del Load Balancer, el verificador de salud lo habia definido para revisar el protocolo TCP en el puerto 80, esto genero un fallo general debido al uso del contenedor con python, por lo que procedí a ajustarlo para revisar el protocolo HTTP en el codigo de Typescript en lugar de hacerlo en el panel administrativo de Digital Ocean obteniendo así el estado de salud satisfactorio.</p>
<p>Cabe señalar que existen algunos glitches que <a title="Pulumi" href="https://pulumi.com" target="_blank" rel="noopener noreferrer">Pulumi</a> deberá resolver como en el caso de actualizar el Userdata de los Droplets se generan errores en el recurso del Firewall y Load Balancer.</p>
<p>&nbsp;</p>
<p>Les dejo a continuación unas capturas del PoC.</p>
<div id="attachment_790" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-790" class="size-large wp-image-790" src="https://webmago.dev/buvytsan/2021/03/pulumi-up-1024x865.png" alt="Pulumi Stack" width="1024" height="865" srcset="https://webmago.dev/buvytsan/2021/03/pulumi-up-1024x865.png 1024w, https://webmago.dev/buvytsan/2021/03/pulumi-up-300x253.png 300w, https://webmago.dev/buvytsan/2021/03/pulumi-up-768x649.png 768w, https://webmago.dev/buvytsan/2021/03/pulumi-up-1536x1298.png 1536w, https://webmago.dev/buvytsan/2021/03/pulumi-up.png 1664w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-790" class="wp-caption-text">Pulumi Stack</p></div>
<p>&nbsp;</p>
<div id="attachment_793" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-793" class="size-large wp-image-793" src="https://webmago.dev/buvytsan/2021/03/do-vpc-1024x455.png" alt="DO VPC creado" width="1024" height="455" srcset="https://webmago.dev/buvytsan/2021/03/do-vpc-1024x455.png 1024w, https://webmago.dev/buvytsan/2021/03/do-vpc-300x133.png 300w, https://webmago.dev/buvytsan/2021/03/do-vpc-768x341.png 768w, https://webmago.dev/buvytsan/2021/03/do-vpc-1536x682.png 1536w, https://webmago.dev/buvytsan/2021/03/do-vpc-2048x910.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-793" class="wp-caption-text">DO VPC creado</p></div>
<p>&nbsp;</p>
<div id="attachment_792" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-792" class="size-large wp-image-792" src="https://webmago.dev/buvytsan/2021/03/do-droplets-1024x332.png" alt="DO DROPLETS creados" width="1024" height="332" srcset="https://webmago.dev/buvytsan/2021/03/do-droplets-1024x332.png 1024w, https://webmago.dev/buvytsan/2021/03/do-droplets-300x97.png 300w, https://webmago.dev/buvytsan/2021/03/do-droplets-768x249.png 768w, https://webmago.dev/buvytsan/2021/03/do-droplets-1536x498.png 1536w, https://webmago.dev/buvytsan/2021/03/do-droplets-2048x664.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-792" class="wp-caption-text">DO DROPLETS creados</p></div>
<p>&nbsp;</p>
<div id="attachment_791" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-791" class="size-large wp-image-791" src="https://webmago.dev/buvytsan/2021/03/do-lb-1024x329.png" alt="DO LB creados" width="1024" height="329" srcset="https://webmago.dev/buvytsan/2021/03/do-lb-1024x329.png 1024w, https://webmago.dev/buvytsan/2021/03/do-lb-300x96.png 300w, https://webmago.dev/buvytsan/2021/03/do-lb-768x246.png 768w, https://webmago.dev/buvytsan/2021/03/do-lb-1536x493.png 1536w, https://webmago.dev/buvytsan/2021/03/do-lb-2048x657.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-791" class="wp-caption-text">DO LB creado</p></div>
<p>&nbsp;</p>
<div id="attachment_789" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-789" class="size-large wp-image-789" src="https://webmago.dev/buvytsan/2021/03/do-fw-1024x333.png" alt="DO FW creado" width="1024" height="333" srcset="https://webmago.dev/buvytsan/2021/03/do-fw-1024x333.png 1024w, https://webmago.dev/buvytsan/2021/03/do-fw-300x97.png 300w, https://webmago.dev/buvytsan/2021/03/do-fw-768x250.png 768w, https://webmago.dev/buvytsan/2021/03/do-fw-1536x499.png 1536w, https://webmago.dev/buvytsan/2021/03/do-fw-2048x665.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-789" class="wp-caption-text">DO FW creado</p></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="style-80 style-local-23-m39 position-relative" data-colibri-id="14-m39">
<div class="h-global-transition-all colibri-post-content">
<div class="style-80 style-local-23-m39 position-relative" data-colibri-id="14-m39">
<div class="h-global-transition-all colibri-post-content">
<p>Si requieres de mi ayuda para administrar tu infraestructura <a href="https://webmago.dev/#contact">contáctame</a>.</p>
</div>
</div>
</div>
</div>The post <a href="https://webmago.dev/administrando-droplets-con-pulumi/">Administrando Droplets con Pulumi</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Pulumi (IaC) con Digital Ocean</title>
		<link>https://webmago.dev/pulumi-iac-con-digital-ocean/</link>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Thu, 04 Mar 2021 03:41:00 +0000</pubDate>
				<category><![CDATA[development]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[infraestructura]]></category>
		<category><![CDATA[kubernetes]]></category>
		<category><![CDATA[pulumi]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[digital ocean]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=778</guid>
					<description><![CDATA[<p>La administración de la infraestructura puede ser manejada a partir de generar código, es decir, Infraestructura como Código también conocida como IaC en ingles. &#160; Puedes usar una gran variedad de software para llevarlo a cabo, lo que implica en algunos casos aprender un nuevo lenguaje, algo que Pulumi ha tomado en cuenta para su [&#8230;]</p>
The post <a href="https://webmago.dev/pulumi-iac-con-digital-ocean/">Pulumi (IaC) con Digital Ocean</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></description>
										<content:encoded><![CDATA[<p>La administración de la infraestructura puede ser manejada a partir de generar código, es decir, Infraestructura como Código también conocida como IaC en ingles.</p>
<p>&nbsp;</p>
<p>Puedes usar una gran variedad de software para llevarlo a cabo, lo que implica en algunos casos aprender un nuevo lenguaje, algo que <a title="Pulumi" href="https://www.pulumi.com/" target="_blank" rel="noopener noreferrer">Pulumi</a> ha tomado en cuenta para su rápida adopción, por lo que si sabes Typescript, Go, Python, Javascript o .Net reducirás enormemente la curvatura de aprendizaje.</p>
<p>&nbsp;</p>
<p>Había escuchado de <a title="Pulumi" href="https://www.pulumi.com/" target="_blank" rel="noopener noreferrer">Pulumi</a> hace un año, hace unas semanas tome dos webinars  y las dudas que tenia sobre su uso, escenarios me animo a probarlo con una <a title="Promo Digital Ocean" href="https://m.do.co/c/82e9086ec3ae" target="_blank" rel="noopener noreferrer">promo</a> que obtuve en <a title="Digital Ocean" href="https://digitalocean.com" target="_blank" rel="noopener noreferrer">Digital Ocean</a> por lo que inicie con la creación de un cluster <a title="Kubernetes" href="https://kubernetes.io/" target="_blank" rel="noopener noreferrer">Kuberntes</a> usando Typescript. <a title="Pulumi" href="https://www.pulumi.com/" target="_blank" rel="noopener noreferrer">Pulumi</a> te ofrece una version <a title="Pricing" href="https://www.pulumi.com/pricing/" target="_blank" rel="noopener noreferrer">gratuita</a> si únicamente tú usas el entorno.</p>
<p>&nbsp;</p>
<p>La ventaja de esto que puedes ir haciéndolo poco a poco y esta es la lista ordenada de lo que fui administrando con mi código.</p>
<p>&nbsp;</p>
<ol>
<li>Creación del Cluster Kubernetes.</li>
<li>Creación de algunos namespaces, ex: staging, website</li>
<li>Creación de un primer Deployment con nginx en el namespace de staging.</li>
<li>Creación de un ClusterIP Service para el Deployment creado en el punto 3.</li>
<li>Una gran pausa para instalar Istio (muy complicado y tomaría mas horas) o nginx como Ingress</li>
<li>Después de decidirme en el punto 5 por nginx, procedí a crear el código para instalarlo como Ingress, con su namespace usando el <a title="Hlem" href="https://helm.sh/" target="_blank" rel="noopener noreferrer">Helm v3</a> Chart; esto me genero un LoadBalancer en <a title="Digital Ocean" href="https://digitalocean.com" target="_blank" rel="noopener noreferrer">Digital Ocean</a> a su vez asignándome la IP Publica.</li>
<li>Creación de un Service Ingress para dirigir el tráfico del ingress-nginx creado en el punto 6 hacia el ClusterIP creado en el punto 4, puedes verlo en <a title="do.webmago.dev" href="http://do.webmago.dev" target="_blank" rel="noopener noreferrer">do.webmago.dev</a> (puede no estar disponible en el futuro).</li>
</ol>
<div id="attachment_785" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-785" class="size-large wp-image-785" src="https://webmago.dev/buvytsan/2021/03/pulumi-do-step-1-1024x265.png" alt="Ejecucion Paso 1 Pulumi" width="1024" height="265" srcset="https://webmago.dev/buvytsan/2021/03/pulumi-do-step-1-1024x265.png 1024w, https://webmago.dev/buvytsan/2021/03/pulumi-do-step-1-300x78.png 300w, https://webmago.dev/buvytsan/2021/03/pulumi-do-step-1-768x199.png 768w, https://webmago.dev/buvytsan/2021/03/pulumi-do-step-1-1536x397.png 1536w, https://webmago.dev/buvytsan/2021/03/pulumi-do-step-1.png 1894w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-785" class="wp-caption-text">Ejecucion Paso 1 Pulumi</p></div>
<p>&nbsp;</p>
<div id="attachment_784" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-784" class="size-large wp-image-784" src="https://webmago.dev/buvytsan/2021/03/do-step-1-1024x595.png" alt="Revision Dashboard Digital Ocean" width="1024" height="595" srcset="https://webmago.dev/buvytsan/2021/03/do-step-1-1024x595.png 1024w, https://webmago.dev/buvytsan/2021/03/do-step-1-300x174.png 300w, https://webmago.dev/buvytsan/2021/03/do-step-1-768x446.png 768w, https://webmago.dev/buvytsan/2021/03/do-step-1-1536x893.png 1536w, https://webmago.dev/buvytsan/2021/03/do-step-1-2048x1191.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-784" class="wp-caption-text">Revision Dashboard Digital Ocean</p></div>
<p>&nbsp;</p>
<div id="attachment_786" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-786" class="size-large wp-image-786" src="https://webmago.dev/buvytsan/2021/03/pulumi-step-1-1024x597.png" alt="Dashboard Pulumi paso 1" width="1024" height="597" srcset="https://webmago.dev/buvytsan/2021/03/pulumi-step-1-1024x597.png 1024w, https://webmago.dev/buvytsan/2021/03/pulumi-step-1-300x175.png 300w, https://webmago.dev/buvytsan/2021/03/pulumi-step-1-768x448.png 768w, https://webmago.dev/buvytsan/2021/03/pulumi-step-1-1536x896.png 1536w, https://webmago.dev/buvytsan/2021/03/pulumi-step-1-2048x1195.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-786" class="wp-caption-text">Dashboard Pulumi paso 1</p></div>
<p>&nbsp;</p>
<p>Cabe señalar que para mantener mi entorno aislado y no interferir con mis configuraciones de mi equipo trabaje desde un contenedor de <a title="Docker" href="https://docker.com" target="_blank" rel="noopener noreferrer">docker</a>.</p>
<p>&nbsp;</p>
<p>Tengo que aclarar que tuve algunos glitches con Pulumi al aplicar/actualizar cambios y al parecer es un comportamiento algo raro que tiene <a title="Digital Ocean" href="https://digitalocean.com" target="_blank" rel="noopener noreferrer">Digital Ocean</a>, por lo que recibía errores y tenia que volver a ejecutar la actualización de cambios.</p>
<p>&nbsp;</p>
<p>En mi experiencia, puedo decir que <a title="Pulumi" href="https://www.pulumi.com/" target="_blank" rel="noopener noreferrer">Pulumi</a> reduce considerablemente su curvatura de aprendizaje y adopción permitiéndote administrar tu Infraestructura como Código con los lenguajes antes mencionados.</p>
<p>&nbsp;</p>
<div class="style-80 style-local-23-m39 position-relative" data-colibri-id="14-m39">
<div class="h-global-transition-all colibri-post-content">
<p>Si requieres de mi ayuda para administrar tu infraestructura <a href="https://webmago.dev/#contact">contáctame</a>.</p>
</div>
</div>The post <a href="https://webmago.dev/pulumi-iac-con-digital-ocean/">Pulumi (IaC) con Digital Ocean</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Editores de Código en linea</title>
		<link>https://webmago.dev/editores-de-codigo-en-linea/</link>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Wed, 24 Feb 2021 00:00:23 +0000</pubDate>
				<category><![CDATA[development]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[moviles]]></category>
		<category><![CDATA[vps]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[online]]></category>
		<category><![CDATA[visual studio code]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=767</guid>
					<description><![CDATA[<p>Desde hace mas de cinco años que hago home office, y con el auge de la pandemia de COVID-19 es necesario tener herramientas de acceso remoto en mi caso editores de código. &#160; He desarrollado código en diversos lenguajes y he tenido la necesidad que algún proyecto requiere de un ajuste o corrección y no [&#8230;]</p>
The post <a href="https://webmago.dev/editores-de-codigo-en-linea/">Editores de Código en linea</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></description>
										<content:encoded><![CDATA[<p>Desde hace mas de cinco años que hago home office, y con el auge de la pandemia de COVID-19 es necesario tener herramientas de acceso remoto en mi caso editores de código.</p>
<p>&nbsp;</p>
<p>He desarrollado código en diversos lenguajes y he tenido la necesidad que algún proyecto requiere de un ajuste o corrección y no cargo con una Laptop, quienes hacen senderismo me darán la razón que con el tiempo la carga puede ser agobiante y entre mas ligero transites mejor, por lo tanto, una tableta, datos móviles y la corrección puede ser realizada en cualquier lugar.</p>
<p>&nbsp;</p>
<p>Existen en el mercado varios proveedores para editar código en línea, algunos te ofrecen cuentas básicas gratuitas con un espacio de trabajo y pueden servirte para tu projecto personal, aquí te enlisto algunos de ellos.</p>
<p>&nbsp;</p>
<p>Estos te permiten crear espacios de trabajo</p>
<ul>
<li><a href="https://aws.amazon.com/cloud9/" target="_blank" rel="noopener noreferrer">AWS Cloud9</a> &#8211; $ 2.05 al mes en adelante.</li>
<li><a href="https://codeanywhere.com/" target="_blank" rel="noopener noreferrer">Codeanyhere</a> &#8211; $ 2.5 al mes en adelante.</li>
<li><a href="https://repl.it/" target="_blank" rel="noopener noreferrer">Repl.it</a> &#8211; Free, $7.00 (usuario), $ 35 (Team) al mes</li>
<li><a href="https://codesandbox.io/" target="_blank" rel="noopener noreferrer">Code Sandbox</a> &#8211; Free, $7.00 mes</li>
</ul>
<p>&nbsp;</p>
<p>Si solo quieres probar y aprender código:</p>
<ul>
<li><a href="https://www.online-ide.com/" target="_blank" rel="noopener noreferrer">Online IDE</a></li>
<li><a href="https://www.ideone.com/" target="_blank" rel="noopener noreferrer">IdeOne</a></li>
<li><a href="https://www.codechef.com/ide" target="_blank" rel="noopener noreferrer">Code Chef</a></li>
<li><a href="https://paiza.io/" target="_blank" rel="noopener noreferrer">Paiza</a></li>
<li><a href="https://ide.codingblocks.com/" target="_blank" rel="noopener noreferrer">Coding Blocks IDE</a></li>
</ul>
<p>&nbsp;</p>
<p>Si quieres trabajar con tu cluster Kubernetes</p>
<ul>
<li><a href="https://www.gitpod.io/" target="_blank" rel="noopener noreferrer">Gitpod</a></li>
</ul>
<p>&nbsp;</p>
<p>Si cuentas con un VPS de al menos 2 Cores CPU, 1 GB RAM puedes montarte tu <a href="https://code.visualstudio.com/" target="_blank" rel="noopener noreferrer">Visual Studio Code</a> en tu propio servidor y tener tu IDE web en algun dominio como https://idecode.webmago.dev, puedes hacerlo siguiendo el procedimiento de <a href="https://github.com/cdr/code-server/blob/master/docs/install.md" target="_blank" rel="noopener noreferrer">instalacion</a> o usar una <a href="https://hub.docker.com/search?q=codercom%2Fcode-server&amp;type=image" target="_blank" rel="noopener noreferrer">imagen</a> Docker .</p>
<p>&nbsp;</p>
<p>La implementacion de <a href="https://code.visualstudio.com/" target="_blank" rel="noopener noreferrer">Visual Studio Code</a> en un VPS me tomo menos de una hora; el pasado fin de semana estando fuera de oficina tuve que corregir un estilo en un sitio web y el contar ya con un editor en linea me ayudo para hacer la correccion y enviarla al repositorio y lanzar el procedimiento de CI/CD y ver el cambio solicitado por el cliente.</p>
<p>&nbsp;</p>
<p>En esta captura podras ver <a href="https://code.visualstudio.com/" target="_blank" rel="noopener noreferrer">Visual Studio Code</a> solicitandome la contraseña para acceder y empezar a trabajar.</p>
<div id="attachment_772" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-772" class="size-large wp-image-772" src="https://webmago.dev/buvytsan/2021/02/vscode-access-1024x494.png" alt="Visual Studio Code" width="1024" height="494" srcset="https://webmago.dev/buvytsan/2021/02/vscode-access-1024x494.png 1024w, https://webmago.dev/buvytsan/2021/02/vscode-access-300x145.png 300w, https://webmago.dev/buvytsan/2021/02/vscode-access-768x370.png 768w, https://webmago.dev/buvytsan/2021/02/vscode-access-1536x740.png 1536w, https://webmago.dev/buvytsan/2021/02/vscode-access-2048x987.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-772" class="wp-caption-text">Acceder usando contraseña</p></div>
<p>&nbsp;</p>
<p>En esta otra captura podras ver la pantalla clasica de bienvenidad de <a href="https://code.visualstudio.com/" target="_blank" rel="noopener noreferrer">Visual Studio Code</a>.</p>
<div id="attachment_773" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-773" class="size-large wp-image-773" src="https://webmago.dev/buvytsan/2021/02/vscode-welcome-1024x594.png" alt="Visual Studio Code" width="1024" height="594" srcset="https://webmago.dev/buvytsan/2021/02/vscode-welcome-1024x594.png 1024w, https://webmago.dev/buvytsan/2021/02/vscode-welcome-300x174.png 300w, https://webmago.dev/buvytsan/2021/02/vscode-welcome-768x446.png 768w, https://webmago.dev/buvytsan/2021/02/vscode-welcome-1536x891.png 1536w, https://webmago.dev/buvytsan/2021/02/vscode-welcome-2048x1188.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-773" class="wp-caption-text">Pantalla de Bienvenida</p></div>
<p>&nbsp;</p>
<p>Si requieres de mi ayuda para montar tu propio IDE online en tu VPS <a href="https://webmago.dev/#contact">contactame</a>.</p>The post <a href="https://webmago.dev/editores-de-codigo-en-linea/">Editores de Código en linea</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Weavescope metricas, administracion, visualizacion en tiempo real</title>
		<link>https://webmago.dev/weavescope-metricas-administracion-visualizacion-en-tiempo-real/</link>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Tue, 16 Feb 2021 21:13:01 +0000</pubDate>
				<category><![CDATA[devops]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[kubernetes]]></category>
		<category><![CDATA[loggin]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[metrics]]></category>
		<category><![CDATA[operations]]></category>
		<category><![CDATA[weavescope]]></category>
		<category><![CDATA[weaveworks]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=758</guid>
					<description><![CDATA[<p>Actualmente administro Clusters Kubernetes y algunos VPS con Docker con sitios web, parte de trabajar como DevOps es  observar cómo los micro-servicios consumen recursos tales como CPU o Memoria; y me ha tocado que fuera de horario de oficina tengo que acceder y monitorear recursos cuando se espera un consumo basado en noticias de impacto; [&#8230;]</p>
The post <a href="https://webmago.dev/weavescope-metricas-administracion-visualizacion-en-tiempo-real/">Weavescope metricas, administracion, visualizacion en tiempo real</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></description>
										<content:encoded><![CDATA[<p>Actualmente administro Clusters Kubernetes y algunos VPS con Docker con sitios web, parte de trabajar como DevOps es  observar cómo los micro-servicios consumen recursos tales como CPU o Memoria; y me ha tocado que fuera de horario de oficina tengo que acceder y monitorear recursos cuando se espera un consumo basado en noticias de impacto; por lo que debo cargar en todo momento un dispositivo movil.</p>
<p>&nbsp;</p>
<p>Para los clusters Kubernetes me auxilio de &#8220;Monitoring&#8221; (antes Stackdriver) en GCP o CloudWatch en AWS, o incluso Prometheus con Grafana.</p>
<p>&nbsp;</p>
<p>Lo que hace de <a href="https://www.weave.works/oss/scope/" target="_blank" rel="noopener noreferrer">Weavescope</a> un software Open Source tan peculiar no solo es ver métricas, sino pausar, detener, reiniciar un contenedor o acceder a la terminal del mismo para hacer algunas operaciones tal como si fuera una terminal remota.</p>
<p>&nbsp;</p>
<p>Esta versatilidad de <a href="https://www.weave.works/oss/scope/" target="_blank" rel="noopener noreferrer">Weavescope</a> me permite visualizar y hacer operaciones cuando solo cuento con un dispositivo móvil como una tableta o un iPad.</p>
<p>&nbsp;</p>
<p><a href="https://www.weave.works/oss/scope/" target="_blank" rel="noopener noreferrer">Weavescope</a> ofrece varias alternativas de ser <a href="https://www.weave.works/docs/scope/latest/installing/" target="_blank" rel="noopener noreferrer">instalado</a>, en mi caso donde uso VPS con docker-compose opte por esta version con algunos ajustes que no se mencionan en la version oficial, tal es el caso de la autenticacion, ya que de no contar con esto cualquiera que conozca la dirección de mi instalacion podria hacer un mal uso como detener o crear contenedores y vulnerar mi sistema.</p>
<p>&nbsp;</p>
<p><a href="https://www.weave.works/" target="_blank" rel="noopener noreferrer">Weaveworks</a> la compañia creadora de <a href="https://www.weave.works/oss/scope/" target="_blank" rel="noopener noreferrer">Weavescope</a> ofrece diferentes soluciones de automatizacion CI-CD, monitoreo y registros, una de las herramientas mas novedosas GitOps basado en Kubernetes.</p>
<p>&nbsp;</p>
<p>No olvides <a href="https://webmago.dev/#contact">contactarme</a> si requieres asistencia en tus proyectos.</p>
<p>&nbsp;</p>
<p>A continuacion dejo una serie de capturas de una de mis instalaciones de <a href="https://www.weave.works/oss/scope/" target="_blank" rel="noopener noreferrer">Weavescope</a>.</p>
<div id="attachment_760" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-760" class="size-large wp-image-760" src="https://webmago.dev/buvytsan/2021/02/Captura-de-Pantalla-2021-02-16-a-las-14.11.22-1024x570.png" alt="Filtrando por Contenedor" width="1024" height="570" srcset="https://webmago.dev/buvytsan/2021/02/Captura-de-Pantalla-2021-02-16-a-las-14.11.22-1024x570.png 1024w, https://webmago.dev/buvytsan/2021/02/Captura-de-Pantalla-2021-02-16-a-las-14.11.22-300x167.png 300w, https://webmago.dev/buvytsan/2021/02/Captura-de-Pantalla-2021-02-16-a-las-14.11.22-768x427.png 768w, https://webmago.dev/buvytsan/2021/02/Captura-de-Pantalla-2021-02-16-a-las-14.11.22-1536x854.png 1536w, https://webmago.dev/buvytsan/2021/02/Captura-de-Pantalla-2021-02-16-a-las-14.11.22-2048x1139.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-760" class="wp-caption-text">Filtrando los recursos por contenedor</p></div>
<p>&nbsp;</p>
<div id="attachment_761" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-761" class="wp-image-761 size-large" src="https://webmago.dev/buvytsan/2021/02/Captura-de-Pantalla-2021-02-16-a-las-14.21.25-1024x571.png" alt="Accediendo al contenedor" width="1024" height="571" srcset="https://webmago.dev/buvytsan/2021/02/Captura-de-Pantalla-2021-02-16-a-las-14.21.25-1024x571.png 1024w, https://webmago.dev/buvytsan/2021/02/Captura-de-Pantalla-2021-02-16-a-las-14.21.25-300x167.png 300w, https://webmago.dev/buvytsan/2021/02/Captura-de-Pantalla-2021-02-16-a-las-14.21.25-768x428.png 768w, https://webmago.dev/buvytsan/2021/02/Captura-de-Pantalla-2021-02-16-a-las-14.21.25.png 1431w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-761" class="wp-caption-text">En la ficha del contenedor se observan varios botones para efectuar operaciones tales como adjuntar, acceder a la terminal, refrescar, pausar, detener el contenedor.</p></div>
<p>&nbsp;</p>
<div id="attachment_762" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-762" class="size-large wp-image-762" src="https://webmago.dev/buvytsan/2021/02/Captura-de-Pantalla-2021-02-16-a-las-14.29.47-1024x567.png" alt="Accediendo a la terminal." width="1024" height="567" srcset="https://webmago.dev/buvytsan/2021/02/Captura-de-Pantalla-2021-02-16-a-las-14.29.47-1024x567.png 1024w, https://webmago.dev/buvytsan/2021/02/Captura-de-Pantalla-2021-02-16-a-las-14.29.47-300x166.png 300w, https://webmago.dev/buvytsan/2021/02/Captura-de-Pantalla-2021-02-16-a-las-14.29.47-768x425.png 768w, https://webmago.dev/buvytsan/2021/02/Captura-de-Pantalla-2021-02-16-a-las-14.29.47.png 1432w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-762" class="wp-caption-text">Esta version grafica es un atajo a la instruccion &#8220;docker exec -it dbadmin bash&#8221;</p></div>The post <a href="https://webmago.dev/weavescope-metricas-administracion-visualizacion-en-tiempo-real/">Weavescope metricas, administracion, visualizacion en tiempo real</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Kubernetes 1.20, no tengas pánico Docker seguirá disponible</title>
		<link>https://webmago.dev/kubernetes-1-20-no-tengas-panico-docker-seguira-disponible/</link>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Fri, 04 Dec 2020 17:25:21 +0000</pubDate>
				<category><![CDATA[development]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[kubernetes]]></category>
		<category><![CDATA[dockershim]]></category>
		<category><![CDATA[upgrades]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=655</guid>
					<description><![CDATA[<p>Hace unos días leí en Twitter un hilo sobre los cambios que se vienen en Kubernetes 1.20 y la depreciación de Docker como runtime de los contenedores entrando en su lugar Containerd, varios colegas mostraron su preocupación al respecto. So, Kubernetes is deprecating Docker support and you&#8217;re either nervous or confused. That&#8217;s okay! I would [&#8230;]</p>
The post <a href="https://webmago.dev/kubernetes-1-20-no-tengas-panico-docker-seguira-disponible/">Kubernetes 1.20, no tengas pánico Docker seguirá disponible</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></description>
										<content:encoded><![CDATA[<p>Hace unos días leí en Twitter un hilo sobre los cambios que se vienen en Kubernetes 1.20 y la depreciación de Docker como runtime de los contenedores entrando en su lugar <a href="https://containerd.io/" target="_blank" rel="noopener noreferrer">Containerd,</a> varios colegas mostraron su preocupación al respecto.</p>
<blockquote class="twitter-tweet">
<p dir="ltr" lang="en">So, Kubernetes is deprecating Docker support and you&#8217;re either nervous or confused. That&#8217;s okay! I would like to help you understand what&#8217;s happening. A thread! 1/10</p>
<p>— Kat Cosgrove, but ✨festive✨ (@Dixie3Flatline) <a href="https://twitter.com/Dixie3Flatline/status/1334188913724850177?ref_src=twsrc%5Etfw">December 2, 2020</a></p></blockquote>
<p><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>Quienes trabajamos con Kubernetes o en Desarrollo de Software hemos usado Docker para desarrollar y generar las imágenes que finalmente usaremos en nuestro clúster, por supuesto que existen mas proveedores compatibles con <a href="https://opencontainers.org/" target="_blank" rel="noopener noreferrer">OCI</a> (Open Container Initiative) y esto quiere decir que las imágenes que generamos en Docker cumplen con esta normativa.</p>
<p>Ayer 3 de Noviembre 2020, Docker publico un articulo (en inglés) detallando quá sucederá con este cambio dándonos una tranquilidad a toda la comunidad que usa la tecnología de contenedores.</p>
<blockquote><p><strong><a href="https://www.docker.com/blog/what-developers-need-to-know-about-docker-docker-engine-and-kubernetes-v1-20/" target="_blank" rel="noopener noreferrer">What developers need to know about Docker, Docker Engine, and Kubernetes v1.20</a></strong></p></blockquote>
<p>En si, lo que se eliminará probablemente en un año será <a href="https://kubernetes.io/blog/2020/12/02/dockershim-faq/" target="_blank" rel="noopener noreferrer">dockershim</a>, por lo tanto, las imágenes que generes con Docker seguirán funcionando en tu clúster Kubernetes, el cambio es mas para los operadores y administradores de Kubernetes donde el acceso a la inspección de los contenedores usando comandos de Docker no podrán ser usados.</p>
<p>Así que mantén la calma y sigue usando Docker.</p>The post <a href="https://webmago.dev/kubernetes-1-20-no-tengas-panico-docker-seguira-disponible/">Kubernetes 1.20, no tengas pánico Docker seguirá disponible</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>La importancia de la calidad del código</title>
		<link>https://webmago.dev/la-importancia-de-la-calidad-del-codigo/</link>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Tue, 01 Dec 2020 15:52:11 +0000</pubDate>
				<category><![CDATA[development]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[calidad]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[proyectos]]></category>
		<category><![CDATA[registros]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=649</guid>
					<description><![CDATA[<p>Durante meses un sitio con miles de visitas al día estuvo trabajando sin caídas en la pagina principal, como medida preventiva implemente monitoreo en las secciones principales, es decir, las de mayor visitas para darme cuenta si alguna de ellas dejaba de responder con el  Código HTTP 200 OK. Posterior a un cambio hecho en [&#8230;]</p>
The post <a href="https://webmago.dev/la-importancia-de-la-calidad-del-codigo/">La importancia de la calidad del código</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></description>
										<content:encoded><![CDATA[<p>Durante meses un sitio con miles de visitas al día estuvo trabajando sin caídas en la pagina principal, como medida preventiva implemente monitoreo en las secciones principales, es decir, las de mayor visitas para darme cuenta si alguna de ellas dejaba de responder con el  <code>Código HTTP 200 OK</code>.</p>
<p>Posterior a un cambio hecho en el código iniciaron las caídas de secciones en cascada y finalmente la página de inicio, el momento en que esto sucedía era aleatorio, el único patrón detectado era la caída de secciones y finalmente la página de inicio.</p>
<p>El equipo externo de desarrollo nos responsabilizaba por qué seguramente habíamos hecho algún cambio no autorizado al sistema de cache; algo que tenia mas de un año sin ser modificado.</p>
<p>Algunos desarrolladores no cuentan con un disciplina para documentar, hacer pruebas unitarias, este era el caso de el equipo externo, incluso había detectado código duplicado o no optimizado en el inicio del proyecto y lo peor, habían silenciado los registros, es decir, si algo mal ocurría simplemente era &#8220;ocultado&#8221; o no registrado, algo que el mismo programador hizo a propósito.</p>
<p>En algún momento trabaje con un equipo ordenado que documentaba y generaba sus pruebas unitarias, al momento de hacer el proceso de integración estas pruebas unitarias validaban en parte que el código no tendría errores, así también la detección de código duplicado entre otros.</p>
<p>Es mi costumbre documentar y tener estadísticas de incidencias, por lo que estuve buscando cómo validar su código y con ello respaldarnos para descartar que era nuestra responsabilidad la caída de secciones y página principal.</p>
<p>En el camino encontré <a href="https://www.codacy.com/" target="_blank" rel="noopener noreferrer">Codacy,</a> una buena opción con muchas características, lamentablemente solicitar una autorización para el incremento del presupuesto tomaría tiempo y nos quedaríamos sin funciones PRO en el corto tiempo, así que opte por <a href="https://www.sonarqube.org/" target="_blank" rel="noopener noreferrer">Sonarqube.</a></p>
<p>Con <a href="https://www.sonarqube.org/" target="_blank" rel="noopener noreferrer">Sonarqube</a> implemente un bash script para escanear el código del proyecto indicado, para mi fortuna Sonarqube cuenta con una versión Docker Comunitaria gratuita la cual puedes tener lista y operando en 5 minutos; esta versión solo te permite escanear la rama <strong><em>master</em></strong> de tu proyecto, si requieres algo mejorado tendrás que optar por la versión de <a href="https://sonarcloud.io/pricing" target="_blank" rel="noopener noreferrer">Sonar Cloud</a> y te cobrara en base a las lineas de código que tenga tu proyecto.</p>
<p>Usando mis estadísticas desde que dejaron de presentarse caídas y al momento de su re-aparición busque en el histórico de Sonarqube y encontré las fechas en las que habían hecho los cambios y Sonarqube nos indicaba la mala calidad del código que había detectado en esos cambios, con ello descartaron que había sido un descuido de nuestro lado al modificar un componente fuera de su alcance.</p>The post <a href="https://webmago.dev/la-importancia-de-la-calidad-del-codigo/">La importancia de la calidad del código</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Recientes anuncios en Docker &#8211; &#8220;Pull Rate Limit Enforcement&#8221;</title>
		<link>https://webmago.dev/recientes-anuncios-en-docker-pull-rate-limit-enforcement/</link>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Tue, 01 Dec 2020 02:35:03 +0000</pubDate>
				<category><![CDATA[codefresh]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[kubernetes]]></category>
		<category><![CDATA[anuncios]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=643</guid>
					<description><![CDATA[<p>Hace mas de medio año, Codefresh anuncio que el almacenamiento gratuito que ofrecía para almacenar las imágenes Docker en tu cuenta serían deshabilitadas, pregunte cuál era la causa de este cambio, y la respuesta fue que se debía a que no era tan demandado el servicio; personalmente quedé con cierta inquietud, al menos en nuestro [&#8230;]</p>
The post <a href="https://webmago.dev/recientes-anuncios-en-docker-pull-rate-limit-enforcement/">Recientes anuncios en Docker – “Pull Rate Limit Enforcement”</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></description>
										<content:encoded><![CDATA[<p>Hace mas de medio año, <a href="https://codefresh.io" target="_blank" rel="noopener noreferrer">Codefresh</a> anuncio que el almacenamiento gratuito que ofrecía para almacenar las imágenes Docker en tu cuenta serían deshabilitadas, pregunte cuál era la causa de este cambio, y la respuesta fue <em>que se debía a que no era tan demandado el servicio</em>; personalmente quedé con cierta inquietud, al menos en nuestro caso si lo usábamos y con bastante frecuencia. Así que  debería de  pensar en migrarlas a un tercero como <a href="https://cloud.google.com/container-registry/" target="_blank" rel="noopener noreferrer">Google Cloud Registry</a>, <a href="https://quay.io/" target="_blank" rel="noopener noreferrer">Quay</a>, el mismo <a href="https://docker.com" target="_blank" rel="noopener noreferrer">Docker</a> u otro proveedor.</p>
<p>Lo anterior hizo que trabajara en la creación del espacio en GCR, generar los permisos IAM, ajustar todos los pipelines en <a href="https://codefresh.io" target="_blank" rel="noopener noreferrer">Codefresh</a>  para enviar las imágenes resultantes, exportar las imágenes mas recientes y descargadas y por ultimo hacer los cambios en el cluster Kubernetes para que los deployments pudieran descargar las imágenes durante el proceso de CI/CD o regeneración.</p>
<p>Quienes hemos trabajado con Kubernetes existe un parámetro <code>ImagePullPolicy</code> cuyos valores pueden ser <code>Always</code> o <code>IfNotPresent</code>y dependerá del comportamiento esperado tomando en cuenta estas <a href="https://kubernetes.io/docs/concepts/containers/images/" target="_blank" rel="noopener noreferrer">recomendaciones</a>.</p>
<p>Recientemente <a href="https://docker.com" target="_blank" rel="noopener noreferrer">Docker</a> anuncio a través de un correo electrónico  que haría cambios para las descargas y retención de imágenes en su servicio.</p>
<p>Los descargas anónimas de imágenes solo podrán hacerse 100 veces en 6 horas, las descargas de tus imágenes en tu cuenta gratuita se extiende hasta 200 cada 6 horas; las cuentas Pro y Team y Large no tienen esta limitante ver comparativo en su pagina de <a href="https://www.docker.com/pricing" target="_blank" rel="noopener noreferrer">Precios</a>, dicha política entro en vigor en Noviembre 2, 2020.</p>
<p>Por otro lado, las retenciones de las imágenes solo estarán disponibles por seis meses, por lo que si tu imagen no es actualizada o descargada en ese tiempo será eliminada, este ultimo ha sido pausado ya que entraría en vigor en noviembre 1, 2020; y será retomado a mediados del año 2021.</p>
<p>Como recordaran, tenia duda si realmente <a href="https://codefresh.io" target="_blank" rel="noopener noreferrer">Codefresh</a> daría de baja el servicio por falta de uso, o por que le estaba generando un costo enorme mantener varias imágenes de todos los que formamos su plantilla de clientes, algo que también <a href="https://docker.com" target="_blank" rel="noopener noreferrer">Docker</a> acaba de hacer con su servicio.</p>
<p>Creo que el costo de <strong>$5.00 US siendo Pro</strong> en <a href="https://docker.com" target="_blank" rel="noopener noreferrer">Docker</a> vale la pena para tener nuestro Hub de nuestras imágenes de forma privada.</p>The post <a href="https://webmago.dev/recientes-anuncios-en-docker-pull-rate-limit-enforcement/">Recientes anuncios en Docker – “Pull Rate Limit Enforcement”</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
