<?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>infraestructura &#8211; Webmago Dev</title>
	<atom:link href="https://webmago.dev/category/infraestructura/feed/" rel="self" type="application/rss+xml" />
	<link>https://webmago.dev</link>
	<description>Creando codigo desde 1990</description>
	<lastBuildDate>Tue, 27 Apr 2021 17:21:37 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>GitOps con Digital Ocean, Pulumi y ArgoCD</title>
		<link>https://webmago.dev/gitops-con-digital-ocean-pulumi-y-argocd/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gitops-con-digital-ocean-pulumi-y-argocd</link>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Wed, 10 Mar 2021 02:20:41 +0000</pubDate>
				<category><![CDATA[digital ocean]]></category>
		<category><![CDATA[gitops]]></category>
		<category><![CDATA[infraestructura]]></category>
		<category><![CDATA[kubernetes]]></category>
		<category><![CDATA[pulumi]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=796</guid>
					<description><![CDATA[Gitops es un nuevo termino que vendrá a replantear lo que ya conocemos como DevOps, con Gitops la única fuente de verdad será el repositorio en donde reside el código. &#160; Recientemente hemos estado haciendo PoC´s con Pulumi y Digital Ocean así que metimos a un tercero a la ecuación, ArgoCD, una herramienta de Delivery [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Gitops es un nuevo termino que vendrá a replantear lo que ya conocemos como DevOps, con Gitops la única fuente de verdad será el repositorio en donde reside el código.</p>
<p>&nbsp;</p>
<p>Recientemente hemos estado haciendo PoC´s con <a title="Pulumi" href="https://pulumi.com" target="_blank" rel="noopener noreferrer">Pulumi</a> y <a title="Digital Ocean" href="https://digitalocean.com" target="_blank" rel="noopener noreferrer">Digital Ocean</a> así que metimos a un tercero a la ecuación, <a href="https://argoproj.github.io/argo-cd/">ArgoCD</a>, una herramienta de Delivery para Kubernetes.</p>
<p>&nbsp;</p>
<p>A partir del <a title="Pulumi (IaC) con Digital Ocean" href="https://webmago.dev/pulumi-iac-con-digital-ocean/" target="_blank" rel="noopener noreferrer">PoC</a> hecho con Pulumi y Digital Ocean instalamos ArgoCD en el cluster de Kubernetes creado y vinculamos un único repositorio con dos ramas, <strong><em>master</em></strong> y <em><strong>feature/python-simple-web</strong></em> para dos apps diferentes <strong><em>mypage</em></strong> y <strong><em>simple-web </em></strong>en ArgoCD, lo que hace difiere estas dos ramas son el namespace del proyecto, la imagen del contenedor y la url que <strong>nginx-ingress</strong> deberá administrar.</p>
<p>&nbsp;</p>
<p>Esta nueva herramienta después de hacer todos los ajustes se vuelve divertida y amigable, como primer acercamiento puedo decir que tiene una agradable interface gráfica y que me hace pensar si dejaremos fuera a Pulumi para administrar el estatus deseado de los recursos creados previamente como <em>deployments</em>/<em>services</em>/<em>ingress</em>/<em>configMaps</em> etc, en el cluster.</p>
<p>&nbsp;</p>
<p>A continuación les dejo unas capturas del PoC.</p>
<div id="attachment_802" style="width: 1034px" class="wp-caption aligncenter"><img fetchpriority="high" decoding="async" aria-describedby="caption-attachment-802" class="size-large wp-image-802" src="https://webmago.dev/buvytsan/2021/03/01-repo-branches-1024x307.png" alt="Branches Repositorio Git" width="1024" height="307" srcset="https://webmago.dev/buvytsan/2021/03/01-repo-branches-1024x307.png 1024w, https://webmago.dev/buvytsan/2021/03/01-repo-branches-300x90.png 300w, https://webmago.dev/buvytsan/2021/03/01-repo-branches-768x230.png 768w, https://webmago.dev/buvytsan/2021/03/01-repo-branches-1536x460.png 1536w, https://webmago.dev/buvytsan/2021/03/01-repo-branches-2048x614.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-802" class="wp-caption-text">Branches Repositorio Git</p></div>
<p>&nbsp;</p>
<div id="attachment_803" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-803" class="size-large wp-image-803" src="https://webmago.dev/buvytsan/2021/03/02-argocd-apps-dashboard-1024x602.png" alt="ArgoCD Dashboard Applications" width="1024" height="602" srcset="https://webmago.dev/buvytsan/2021/03/02-argocd-apps-dashboard-1024x602.png 1024w, https://webmago.dev/buvytsan/2021/03/02-argocd-apps-dashboard-300x176.png 300w, https://webmago.dev/buvytsan/2021/03/02-argocd-apps-dashboard-768x451.png 768w, https://webmago.dev/buvytsan/2021/03/02-argocd-apps-dashboard-1536x902.png 1536w, https://webmago.dev/buvytsan/2021/03/02-argocd-apps-dashboard-2048x1203.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-803" class="wp-caption-text">ArgoCD Dashboard Applications</p></div>
<p>&nbsp;</p>
<div id="attachment_805" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-805" class="size-large wp-image-805" src="https://webmago.dev/buvytsan/2021/03/04-argocd-app-01-view2-1024x446.png" alt="ArgoCD vista de red del app &quot;mypage&quot;" width="1024" height="446" srcset="https://webmago.dev/buvytsan/2021/03/04-argocd-app-01-view2-1024x446.png 1024w, https://webmago.dev/buvytsan/2021/03/04-argocd-app-01-view2-300x131.png 300w, https://webmago.dev/buvytsan/2021/03/04-argocd-app-01-view2-768x334.png 768w, https://webmago.dev/buvytsan/2021/03/04-argocd-app-01-view2-1536x668.png 1536w, https://webmago.dev/buvytsan/2021/03/04-argocd-app-01-view2-2048x891.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-805" class="wp-caption-text">ArgoCD vista de red del app &#8220;mypage&#8221;</p></div>
<p>&nbsp;</p>
<div id="attachment_804" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-804" class="size-large wp-image-804" src="https://webmago.dev/buvytsan/2021/03/03-argocd-app-01-view1-1024x575.png" alt="ArgoCD vista de arbol del app &quot;mypage&quot;" width="1024" height="575" srcset="https://webmago.dev/buvytsan/2021/03/03-argocd-app-01-view1-1024x575.png 1024w, https://webmago.dev/buvytsan/2021/03/03-argocd-app-01-view1-300x169.png 300w, https://webmago.dev/buvytsan/2021/03/03-argocd-app-01-view1-768x432.png 768w, https://webmago.dev/buvytsan/2021/03/03-argocd-app-01-view1-1536x863.png 1536w, https://webmago.dev/buvytsan/2021/03/03-argocd-app-01-view1-2048x1151.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-804" class="wp-caption-text">ArgoCD vista de arbol del app &#8220;mypage&#8221;</p></div>
<p>&nbsp;</p>
<div id="attachment_807" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-807" class="size-large wp-image-807" src="https://webmago.dev/buvytsan/2021/03/05-argocd-app-02-view2-1024x420.png" alt="ArgoCD vista de red del app &quot;simple'web&quot;" width="1024" height="420" srcset="https://webmago.dev/buvytsan/2021/03/05-argocd-app-02-view2-1024x420.png 1024w, https://webmago.dev/buvytsan/2021/03/05-argocd-app-02-view2-300x123.png 300w, https://webmago.dev/buvytsan/2021/03/05-argocd-app-02-view2-768x315.png 768w, https://webmago.dev/buvytsan/2021/03/05-argocd-app-02-view2-1536x630.png 1536w, https://webmago.dev/buvytsan/2021/03/05-argocd-app-02-view2-2048x840.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-807" class="wp-caption-text">ArgoCD vista de red del app &#8220;simple-web&#8221;</p></div>
<p>&nbsp;</p>
<div id="attachment_806" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-806" class="size-large wp-image-806" src="https://webmago.dev/buvytsan/2021/03/05-argocd-app-02-view1-1024x527.png" alt="ArgoCD vista de arbol del app &quot;simple'web&quot;" width="1024" height="527" srcset="https://webmago.dev/buvytsan/2021/03/05-argocd-app-02-view1-1024x527.png 1024w, https://webmago.dev/buvytsan/2021/03/05-argocd-app-02-view1-300x154.png 300w, https://webmago.dev/buvytsan/2021/03/05-argocd-app-02-view1-768x396.png 768w, https://webmago.dev/buvytsan/2021/03/05-argocd-app-02-view1-1536x791.png 1536w, https://webmago.dev/buvytsan/2021/03/05-argocd-app-02-view1-2048x1055.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-806" class="wp-caption-text">ArgoCD vista de arbol del app &#8220;simple-web&#8221;</p></div>
<p>&nbsp;</p>
<div id="attachment_808" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-808" class="size-large wp-image-808" src="https://webmago.dev/buvytsan/2021/03/06-app-01-liveview-1024x360.png" alt="Vista en vivo de app &quot;mypage&quot;" width="1024" height="360" srcset="https://webmago.dev/buvytsan/2021/03/06-app-01-liveview-1024x360.png 1024w, https://webmago.dev/buvytsan/2021/03/06-app-01-liveview-300x105.png 300w, https://webmago.dev/buvytsan/2021/03/06-app-01-liveview-768x270.png 768w, https://webmago.dev/buvytsan/2021/03/06-app-01-liveview-1536x540.png 1536w, https://webmago.dev/buvytsan/2021/03/06-app-01-liveview-2048x720.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-808" class="wp-caption-text">Vista en vivo de app &#8220;mypage&#8221;</p></div>
<p>&nbsp;</p>
<div id="attachment_810" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-810" class="size-large wp-image-810" src="https://webmago.dev/buvytsan/2021/03/07-app-02-liveview-nodo2-1024x196.png" alt="Vista en vivo de app &quot;simple'web&quot; balance pod 2" width="1024" height="196" srcset="https://webmago.dev/buvytsan/2021/03/07-app-02-liveview-nodo2-1024x196.png 1024w, https://webmago.dev/buvytsan/2021/03/07-app-02-liveview-nodo2-300x57.png 300w, https://webmago.dev/buvytsan/2021/03/07-app-02-liveview-nodo2-768x147.png 768w, https://webmago.dev/buvytsan/2021/03/07-app-02-liveview-nodo2-1536x294.png 1536w, https://webmago.dev/buvytsan/2021/03/07-app-02-liveview-nodo2-2048x391.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-810" class="wp-caption-text">Vista en vivo de app &#8220;simple&#8217;web&#8221; balance pod 2</p></div>
<p>&nbsp;</p>
<div id="attachment_809" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-809" class="size-large wp-image-809" src="https://webmago.dev/buvytsan/2021/03/07-app-02-liveview-nodo1-1024x225.png" alt="Vista en vivo de app &quot;simple'web&quot; balance pod 1" width="1024" height="225" srcset="https://webmago.dev/buvytsan/2021/03/07-app-02-liveview-nodo1-1024x225.png 1024w, https://webmago.dev/buvytsan/2021/03/07-app-02-liveview-nodo1-300x66.png 300w, https://webmago.dev/buvytsan/2021/03/07-app-02-liveview-nodo1-768x169.png 768w, https://webmago.dev/buvytsan/2021/03/07-app-02-liveview-nodo1-1536x338.png 1536w, https://webmago.dev/buvytsan/2021/03/07-app-02-liveview-nodo1-2048x451.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-809" class="wp-caption-text">Vista en vivo de app &#8220;simple&#8217;web&#8221; balance pod 1</p></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Si requieres de mi ayuda para administrar tu infraestructura e implementar un sistema GitOps <a href="https://webmago.dev/#contact">contáctame</a>.</p>
<div class="mceTemp"></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Administrando Droplets con Pulumi</title>
		<link>https://webmago.dev/administrando-droplets-con-pulumi/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=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[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;]]]></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>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Pulumi (IaC) con Digital Ocean</title>
		<link>https://webmago.dev/pulumi-iac-con-digital-ocean/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=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[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;]]]></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>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Wasabi un almacenamiento S3 muy accesible</title>
		<link>https://webmago.dev/wasabi-un-almacenamiento-s3-muy-accesible/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=wasabi-un-almacenamiento-s3-muy-accesible</link>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Mon, 08 Feb 2021 20:28:01 +0000</pubDate>
				<category><![CDATA[infraestructura]]></category>
		<category><![CDATA[storage]]></category>
		<category><![CDATA[s3]]></category>
		<category><![CDATA[wasabi]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=751</guid>
					<description><![CDATA[Recientemente necesitaba una solución para almacenar los respaldos de una solución editorial On Premise ubicado en las instalaciones del cliente. Los desafios eran: Enviar los respaldos de la BD. Enviar el storage  de los objetos generados Mantener una sincronía de objetos de los respaldos de la BD y los objetos creados/actualizados/eliminados con el software. Por [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Recientemente necesitaba una solución para almacenar los respaldos de una solución editorial On Premise ubicado en las instalaciones del cliente.</p>
<p>Los desafios eran:</p>
<ul style="list-style-type: square;">
<li>Enviar los respaldos de la BD.</li>
<li>Enviar el storage  de los objetos generados</li>
<li>Mantener una sincronía de objetos de los respaldos de la BD y los objetos creados/actualizados/eliminados con el software.</li>
</ul>
<p>Por cuestiones de costos decidimos usar S3 respecto a un NFS, EBS, por lo que busque una herramienta que me permitiera sincronizar los contenidos usando la linea de comandos.</p>
<p>Entre la vastedad de resultados apareció <a href="https://rclone.org/" target="_blank" rel="noopener noreferrer">RClone</a>, en su pagina principal indicaba los protocoles y fabricantes soportados, FTP y SSH quedaban descartados, no precisábamos adquirir un servidor y storage y salirnos del presupuesto por lo que analizamos los que eran S3, entre ellos casi al final de la lista estaba <a href="https://wasabi.com" target="_blank" rel="noopener noreferrer">Wasabi</a>, nos llamo la atención y accedimos a visitarle.</p>
<p>Lo que nos engancho fue el ahorro de un 80% del costo en comparación con AWS y GCE, <a href="https://wasabi.com/cloud-storage-pricing/#three-info" target="_blank" rel="noopener noreferrer">tan solo a $5.99 por TB</a> lo que lo hace muy competitivo ante <a href="https://mega.co.nz" target="_blank" rel="noopener noreferrer">Mega</a> o <a href="https://drive.google.com" target="_blank" rel="noopener noreferrer">Google Drive</a>.</p>
<p><a href="https://wasabi.com" target="_blank" rel="noopener noreferrer">Wasabi</a> te ofrece la oportunidad de probarlo por un mes, por lo que optamos por esta opción y validar la integración con <a href="https://rclone.com" target="_blank" rel="noopener noreferrer">RClone</a>.</p>
<p>La configuración del <a href="https://rclone.com" target="_blank" rel="noopener noreferrer">RClone</a> respecto a la version y zonas actuales que posee <a href="https://wasabi.com" target="_blank" rel="noopener noreferrer">Wasabi</a> al momento de hacer nuestro PoC están desfasadas por lo que tuvimos que contactar con el soporte de Wasabi, quienes amablemente y un tiempo razonable nos apoyaron para ajustar los parámetros y la zona (de recién integración en <a href="https://wasabi.com" target="_blank" rel="noopener noreferrer">Wasabi</a>) que elegimos al momento de adquirir nuestra cuenta.</p>
<p>Una vez <a href="https://rclone.org/s3/#wasabi" target="_blank" rel="noopener noreferrer">configurado</a> RClone empezamos con nuestra PoC listando los volumenes creados  en su interface grafica.</p>
<p><code>webmago ~: rclone lsd wasabi:<br />
-1 2021-01-19 09:37:49 -1 desarrollos<br />
-1 2021-01-18 19:20:56 -1 fotos-webmago<br />
</code></p>
<p>&nbsp;</p>
<p>Creamos una carpeta local, generamos algunos archivos y los sincronizamos con nuestro volumen.</p>
<p><code>webmago ~: mkdir -p wasabi/one wasabi/two wasabi/three</code></p>
<p>&nbsp;</p>
<p>Listando los contenidos locales de wasabi.</p>
<p><code>webmago ~: ls wasabi/<br />
one tree two</code></p>
<p>&nbsp;</p>
<p>Generando archivos que enviaremos a wasabi.</p>
<p><code>webmago ~: touch wasabi/one/uno.txt wasabi/two/dos.txt wasabi/three/tres.txt</code><code></code><code></code></p>
<p><code>webmago ~: rclone sync ./wasabi/ wasabi:desarrollos/wasabi</code></p>
<p>&nbsp;</p>
<p>Listando los contenidos enviados a Wasabi</p>
<p><code>webmago ~: rclone ls wasabi:desarrollos/wasabi<br />
15 one/uno.txt<br />
0 three/tres.txt<br />
0 two/dos.txt<br />
</code></p>
<p>Si no quieres batallar con la linea de comandos, <a href="https://wasabi.com" target="_blank" rel="noopener noreferrer">Wasabi</a> recomienda algunos clientes Windows, Linux y Mac para acceder a los volumenes y hacer operaciones similares a un Finder (Mac), Explorador (Windows), en mi caso use <a href="https://nextcloud.com/" target="_blank" rel="noopener noreferrer">Nextcloud</a> como cliente web, en un  PoC previo tuve unos comportamientos inesperados con Google Cloud Storage, como solo poder elminar objetos y no poder crear a pesar de tener los privilegios, por lo que pensé que con Wasabi podria ocurri algo similar, sin embargo, todas las operaciones de Lectura, Escritura, Eliminación fueron exitosas.</p>
<div id="attachment_755" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-755" class="size-large wp-image-755" src="https://webmago.dev/buvytsan/2021/02/nextcloud-wasabi-1024x575.png" alt="Nextcloud - Wasabi" width="1024" height="575" srcset="https://webmago.dev/buvytsan/2021/02/nextcloud-wasabi-1024x575.png 1024w, https://webmago.dev/buvytsan/2021/02/nextcloud-wasabi-300x169.png 300w, https://webmago.dev/buvytsan/2021/02/nextcloud-wasabi-768x431.png 768w, https://webmago.dev/buvytsan/2021/02/nextcloud-wasabi-1536x863.png 1536w, https://webmago.dev/buvytsan/2021/02/nextcloud-wasabi-2048x1150.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-755" class="wp-caption-text">Nextcloud &#8211; Wasabi</p></div>
<p><a href="https://wasabi.com" target="_blank" rel="noopener noreferrer">Wasabi</a> nos convencio no solo en el precio, sino en el valor agregado que dan al responderte e indicarte la gran cantidad de informacion que tienen sobre sus productos, las certificaciones, redundancia y sistemas de seguridad en torno a todas sus soluciones hacen de Wasabi una gran opcion de almacenamiento.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Sendgrid mi eleccion para envio de correos</title>
		<link>https://webmago.dev/sendgrid-mi-eleccion-para-envio-de-correos/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sendgrid-mi-eleccion-para-envio-de-correos</link>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Mon, 30 Nov 2020 16:43:36 +0000</pubDate>
				<category><![CDATA[devops]]></category>
		<category><![CDATA[infraestructura]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[mta]]></category>
		<category><![CDATA[proyectos]]></category>
		<category><![CDATA[sendgrid]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=626</guid>
					<description><![CDATA[Imagina que vas caminando por la plaza VIP de tu localidad, el motivo de tu visita es adquirir un par de calzado, confortables, de buen estilo, a tu medida; mientras recorres los pasillos, vas viendo en los aparadores de las diferentes tiendas de calzado algo que te agrade, finalmente uno te ha gustado, entras a [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Imagina que vas caminando por la plaza VIP de tu localidad, el motivo de tu visita es adquirir un par de calzado, confortables, de buen estilo, a tu medida; mientras recorres los pasillos, vas viendo en los aparadores de las diferentes tiendas de calzado algo que te agrade, finalmente uno te ha gustado, entras a la tienda donde lo has visto, preguntas al encargado si puedes verlo y probarlo, a lo que el encargado te dice que debes pagar una cierta cantidad para poder verlo y probarte el calzado. Imagino tu cara de asombro, piensas que por ser una plaza VIP ellos tienen ese derecho.</p>
<p>Finalmente declinas probarte ese calzado y continuas con tu búsqueda, unos metros mas adelante encuentras otra tienda con un calzado similar y con mejores características, como 2 pares de cuerdas extras de color para combinar con tus atuendos, preguntas al encargado si puedes verlos y probártelos, a lo que el te responde que si, de tu experiencia previa preguntas si debes pagar algo por probártelos; el te responde que eso no es necesario, que puedes hacerlo sin un compromiso de compra. Es cierto, acabo de ver tu cara de felicidad.</p>
<p>Algo parecido me ocurrió con Amazon SES, parecía una buena opción, acudí a un partner, AWS me contacto y me puso en contacto con otro partner al que le indique que me gustaría probar y ver el panel de AWS SES para ofrecer un POC a un futuro cliente.</p>
<p>Después de una semana, la respuesta del ultimo partner fue una cotización para poder habilitarme el panel y yo hacer el POC, imagina si el cliente no aprueba contratar el servicio de AWS SES, para mí eso seria reflejado como perdida.</p>
<p>En varios de mis proyectos he usado <a href="https://sendgrid.com" target="_blank" rel="noopener noreferrer">Sendgrid</a>, por las siguientes características:</p>
<ul>
<li>Envío de correo usando API.</li>
<li>Sin limite de envíos por día, solo en paquetes de pago.</li>
<li>Paquete gratuito 100 emails por día.</li>
<li>Cuando contratas un paquete, no tienes limite en el tamaño del envío.</li>
<li>Si excedes de tu paquete en envíos tus excedente serán cobrados en la siguiente factura.</li>
<li>Estadísticas.</li>
<li>Registros  del estatus de cada correo enviado.</li>
<li>Manejo de campañas de marketing.</li>
<li>Manejo de usuarios.</li>
<li>IP dedicada con paquetes PRO en adelante.</li>
</ul>
<p>Por lo tanto, <a href="https://sendgrid.com" target="_blank" rel="noopener noreferrer">Sendgrid</a> es una buena opción si vas empezando con tu proyecto o si deseas lanzarte a lo grande.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Qué infraestructura estoy usando</title>
		<link>https://webmago.dev/que-infraestructura-estoy-usando/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=que-infraestructura-estoy-usando</link>
					<comments>https://webmago.dev/que-infraestructura-estoy-usando/#respond</comments>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Thu, 26 Sep 2019 12:02:54 +0000</pubDate>
				<category><![CDATA[devops]]></category>
		<category><![CDATA[infraestructura]]></category>
		<category><![CDATA[kubernetes]]></category>
		<category><![CDATA[codefresh]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=444</guid>
					<description><![CDATA[A lo largo de los años he usado distintos proveedores tanto para uso personal como profesional, algunos durante trienios la relación ha sido buena hasta que sus condiciones cambian, no muchos se han tomado la molestia de avisarme así que he tenido que recurrir al tema legal y respaldos. Hoy que estoy trabajando en todo [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>A lo largo de los años he usado distintos proveedores tanto para uso personal como profesional, algunos durante trienios la relación ha sido buena hasta que sus condiciones cambian, no muchos se han tomado la molestia de avisarme así que he tenido que recurrir al tema legal y respaldos.</p>
<p>Hoy que estoy trabajando en todo el ciclo de DevOps con Kubernetes no me hacia sentido trabajar en un VPS para generar mis ciclos y demos que veras en el blog, por lo que analice las diferentes ofertas como <strong>AWS</strong>, <strong>Azure</strong>, <strong>Digital Ocean</strong> y finalmente <strong>Google</strong> donde se encuentra hospedado este blog.</p>
<p>Al inicio intente poner en marcha <strong>October CMS</strong>, sin embargo tiene muchos puntos que resolver aun para hacer una portación a K8S de forma completa, por lo que opte por WordPress, ya lo he usado con otros proyectos y sé cómo vincularlo a un Volumen.</p>
<p>Inicie el cluster de forma micro, con <strong>3</strong> instancias <strong>f1-micro </strong>las cuales te dan <strong>1 vCPU</strong> y <strong>0.6 GB RAM</strong>, sin embargo siempre presentaba un problema alguno de los nodos, por lo que lo incremente a <strong>8</strong> y resulto mas o menos la estabilidad, nace un nuevo problema, montar una BD MySQL para el blog, ya lo he aplicado en clusters K8S con mayores recursos sin problemas, claro, sin la <strong>HA</strong> que ofrece <strong>Cloud SQL</strong>; debido a la poca memoria que los nodos tienen, era imposible mantener estable el pod de MySQL, así que analice el costo y bien podría usar una instancia micro sin obtener, claro esta, el SLA por una instancia mas grande, algo que para este proyecto personal no es de gran impacto.</p>
<p><img loading="lazy" decoding="async" class="wp-image-448 alignright" src="https://webmago.dev/buvytsan/2019/09/Captura-de-Pantalla-2019-09-26-a-las-7.00.24-1024x239.png" alt="" width="580" height="146" />Todo marcha bien hasta que recordé a <a href="https://spotinst.com/"><strong>spotinst.com</strong></a> quienes te ofrecen reducir en un margen del <strong>70</strong> al <strong>80</strong> por ciento del costo de tu cluster, así que manos a la obra y ahora tenemos un cluster de <strong>2</strong> nodos <strong>n1-standard-1</strong>, lo que representa <strong>1 vCPU</strong> y <strong>3.75 GB</strong> por nodo, ya les contare en otro post como me ha ido en costos con <a href="https://spotinst.com/"><strong>spotinst.com</strong></a>, de momento el dashboard indica que me he ahorrado <strong>78.97%</strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://webmago.dev/que-infraestructura-estoy-usando/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
