<?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>codefresh &#8211; Webmago Dev</title>
	<atom:link href="https://webmago.dev/category/codefresh/feed/" rel="self" type="application/rss+xml" />
	<link>https://webmago.dev</link>
	<description>Creando codigo desde 1990</description>
	<lastBuildDate>Fri, 30 Apr 2021 15:15:58 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>WinterCMS, descarga la imagen Docker.</title>
		<link>https://webmago.dev/wintercms-descarga-la-imagen-docker/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=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[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;]]]></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>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Blue-Green Deployment con Codefresh</title>
		<link>https://webmago.dev/blue-green-deployment-con-codefresh/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=blue-green-deployment-con-codefresh</link>
					<comments>https://webmago.dev/blue-green-deployment-con-codefresh/#respond</comments>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Fri, 11 Dec 2020 14:51:29 +0000</pubDate>
				<category><![CDATA[codefresh]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[kubernetes]]></category>
		<category><![CDATA[blue-green]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[kuberntes]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=500</guid>
					<description><![CDATA[Entre los tipos de Deployment existentes Red/Black Blue/Green Rollout Canary Me he inclinado por usar el segundo de la lista, el deploy Blue/Green, el cual te permite lanzar una nueva versión e ir redirigiendo tráfico de forma gradual a la nueva versión. Existe una gran variedad de plugins en Codefresh uno de ellos, hacer un [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Entre los tipos de Deployment existentes</p>
<ul>
<li>Red/Black</li>
<li>Blue/Green</li>
<li>Rollout</li>
<li>Canary</li>
</ul>
<p>Me he inclinado por usar el segundo de la lista, el deploy <strong>Blue/Green</strong>, el cual te permite lanzar una nueva versión e ir redirigiendo tráfico de forma gradual a la nueva versión.</p>
<p>Existe una gran variedad de plugins en <a title="Codefresh" href="https://codefresh.io" target="_blank" rel="noopener noreferrer">Codefresh</a> uno de ellos, hacer un Deploy en tu entorno Kubernetes con Blue/Green, incluso hay un plugin y <a title="Howto" href="https://codefresh.io/kubernetes-tutorial/simple-canary-codefresh-k8s-2/" target="_blank" rel="noopener noreferrer">Howto</a> para hacer un Canary Deployment.</p>
<p>Una de las ventajas de este plugin es que en caso de existir algun timeout, o error en el despliegue de la nueva version, la version actual no se ve afectada debido a que la nueva version es eliminada del clúster.</p>
<p>En caso de ser exitoso el despliegue el plugin en automatico inicia el proceso de redireccion del trafico hacia la  nueva version de forma gradual.</p>
<p>La integracion de este plugin en mis pipelines me ha permitido hacer despliegues sin caídas en entornos de producción de alto tráfico.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webmago.dev/blue-green-deployment-con-codefresh/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Integrando SonarQube en pipelines CI/CD de Codefresh</title>
		<link>https://webmago.dev/integrando-sonarqube-en-pipelines-ci-cd-de-codefresh/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=integrando-sonarqube-en-pipelines-ci-cd-de-codefresh</link>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Tue, 08 Dec 2020 01:21:05 +0000</pubDate>
				<category><![CDATA[codefresh]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[sonarqube]]></category>
		<category><![CDATA[git]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=689</guid>
					<description><![CDATA[Hace unos días vi un twit de Codefresh, donde incluso retuitee que la versión usada para su demostración era la de Pago SonarCloud y no SonarQube, por lo que retuitee que si se exponía la instalación gratuita de SonarQube tendría el mismo resultado. Code analysis made easy with the Codefresh&#8217;s @SonarQube integration &#8212; view the [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Hace unos días vi un twit de <a title="Codefresh" href="https://codefresh.io" target="_blank" rel="noopener noreferrer">Codefresh</a>, donde incluso retuitee que la versión usada para su demostración era la de Pago <a title="SonarCloud" href="https://sonarcloud.io/" target="_blank" rel="noopener noreferrer">SonarCloud</a> y no <a title="SonarQube" href="https://www.sonarqube.org/" target="_blank" rel="noopener noreferrer">SonarQube</a>, por lo que retuitee que si se exponía la instalación gratuita de SonarQube tendría el mismo resultado.</p>
<blockquote class="twitter-tweet">
<p dir="ltr" lang="en">Code analysis made easy with the Codefresh&#8217;s <a href="https://twitter.com/SonarQube?ref_src=twsrc%5Etfw">@SonarQube</a> integration &#8212; view the analysis report after every build ? <a href="https://t.co/lg3VW2hFZO">https://t.co/lg3VW2hFZO</a><a href="https://twitter.com/hashtag/DevOps?src=hash&amp;ref_src=twsrc%5Etfw">#DevOps</a> <a href="https://twitter.com/hashtag/codeanalysis?src=hash&amp;ref_src=twsrc%5Etfw">#codeanalysis</a> <a href="https://twitter.com/hashtag/testing?src=hash&amp;ref_src=twsrc%5Etfw">#testing</a> <a href="https://twitter.com/urlichsanais?ref_src=twsrc%5Etfw">@urlichsanais</a> <a href="https://t.co/SkWJab3mKD">pic.twitter.com/SkWJab3mKD</a></p>
<p>— Codefresh (@codefresh) <a href="https://twitter.com/codefresh/status/1334180752267890694?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>Así que me dí a la tarea de integrar el escaneo de código de uno de los proyectos asignados para confirmar la integración sugerida.</p>
<p>El documento en inglés de Codefresh puedes encontrarlo en <a title="Continuous Code Analysis with SonarQube and Codefresh" href="https://codefresh.io/howtos/sonarqube/" target="_blank" rel="noopener noreferrer">Continuous Code Analysis with SonarQube and Codefresh</a>, lo revise y por supuesto que tiene algunos detalles por resolver, en este <a title="La importancia de la calidad del código" href="https://webmago.dev/la-importancia-de-la-calidad-del-codigo/" target="_blank" rel="noopener noreferrer">artículo</a> describí que implemente SonarQube para escanear el código de los proyectos que me son asignados y que había implementado un Script en Bash para hacer el escaneo, algo manual por supuesto, por lo que hacer esto en el pipeline dejaría sin efecto a mi Bash Script, algo que ansiaba hacer en el corto plazo.</p>
<p>Por lo que describiré aquí cómo fue que lo implemente.</p>
<p>&nbsp;</p>
<h3><strong>Creando el proyecto en SonarQube.</strong></h3>
<p>Si aún no has instalado SonarQube, te recuerdo que puedes hacerlo usando Docker, mas información en <a title="Install the Server" href="https://docs.sonarqube.org/latest/setup/install-server/" target="_blank" rel="noopener noreferrer">Install the Server</a>.</p>
<ol>
<li>Para evitar &#8220;conflictos&#8221; y evitar &#8220;mirones&#8221; genere un nuevo Grupo y le asigne permisos únicamente para que el Administrador o Usuario indicado pueda ver este proyecto.</li>
<li>Genere el proyecto siguiendo el asistente de SonarQube y le asigne un Token para que desde Codefresh pueda usarlo.</li>
</ol>
<div id="attachment_696" style="width: 1034px" class="wp-caption alignnone"><img fetchpriority="high" decoding="async" aria-describedby="caption-attachment-696" class="size-large wp-image-696" src="https://webmago.dev/buvytsan/2020/12/CreandoProyectoSonarqube-1024x499.png" alt="Creando Proyecto en Sonarqube" width="1024" height="499" srcset="https://webmago.dev/buvytsan/2020/12/CreandoProyectoSonarqube-1024x499.png 1024w, https://webmago.dev/buvytsan/2020/12/CreandoProyectoSonarqube-300x146.png 300w, https://webmago.dev/buvytsan/2020/12/CreandoProyectoSonarqube-768x374.png 768w, https://webmago.dev/buvytsan/2020/12/CreandoProyectoSonarqube-1536x748.png 1536w, https://webmago.dev/buvytsan/2020/12/CreandoProyectoSonarqube.png 1572w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-696" class="wp-caption-text">Creando Proyecto en Sonarqube</p></div>
<p>&nbsp;</p>
<div id="attachment_702" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-702" class="wp-image-702 size-large" src="https://webmago.dev/buvytsan/2020/12/Proyecto-Creado-SonarQube-1-1024x578.png" alt="Proyecto Creado SonarQube" width="1024" height="578" srcset="https://webmago.dev/buvytsan/2020/12/Proyecto-Creado-SonarQube-1-1024x578.png 1024w, https://webmago.dev/buvytsan/2020/12/Proyecto-Creado-SonarQube-1-300x169.png 300w, https://webmago.dev/buvytsan/2020/12/Proyecto-Creado-SonarQube-1-768x434.png 768w, https://webmago.dev/buvytsan/2020/12/Proyecto-Creado-SonarQube-1-1536x868.png 1536w, https://webmago.dev/buvytsan/2020/12/Proyecto-Creado-SonarQube-1-2048x1157.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-702" class="wp-caption-text">Proyecto Creado SonarQube</p></div>
<p>&nbsp;</p>
<h3><strong>Integrando el Plugin al Pipeline del proyecto en Codefresh.</strong></h3>
<p>Este fue uno de los pasos de mayor atención, ya que mis pipelines toman las configuraciones de un repositorio adicional, por  lo que tuve que adicionar un Plugin solo para copiar el archivo <code>sonar-project.properties</code> en la raíz del proyecto.</p>
<div id="attachment_704" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-704" class="size-large wp-image-704" src="https://webmago.dev/buvytsan/2020/12/Integracion-Plugin-Pipeline-Codefresh-1024x663.png" alt="Integración Plugin Pipeline Codefresh" width="1024" height="663" srcset="https://webmago.dev/buvytsan/2020/12/Integracion-Plugin-Pipeline-Codefresh-1024x663.png 1024w, https://webmago.dev/buvytsan/2020/12/Integracion-Plugin-Pipeline-Codefresh-300x194.png 300w, https://webmago.dev/buvytsan/2020/12/Integracion-Plugin-Pipeline-Codefresh-768x497.png 768w, https://webmago.dev/buvytsan/2020/12/Integracion-Plugin-Pipeline-Codefresh.png 1519w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-704" class="wp-caption-text">Integración Plugin Pipeline Codefresh</p></div>
<p>&nbsp;</p>
<h3><strong>La hora de la verdad, ejecutando el pipeline manualmente.</strong></h3>
<p>Aquí es donde veremos si realmente funciona la teoría, claro que la ejecución final tuvo como antecesores varias pruebas para darnos cuenta que debido a la configuración que tomamos por separado no obtenía la propiedad <code>sonar.projectKey</code> necesaria para identificar al proyecto en nuestro SonarQube.</p>
<p>En la imagen podemos ver la ejecución exitosa de nuestro pipeline, en el log del paso <strong><em>QUALITY</em></strong> podemos ver el ID de la Tarea (Task) la cual es <code>AXY_dPYDfvCgCTUgh8X4</code> y debe coincidir con la tarea en el &#8220;fondo&#8221; (background) en nuestro escritorio, sección de tareas de SonarQube.</p>
<div id="attachment_707" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-707" class="size-large wp-image-707" src="https://webmago.dev/buvytsan/2020/12/Ejecucion-Pipeline-SonarQube-Codefresh-1024x531.png" alt="Ejecución Pipeline SonarQube Codefresh" width="1024" height="531" srcset="https://webmago.dev/buvytsan/2020/12/Ejecucion-Pipeline-SonarQube-Codefresh-1024x531.png 1024w, https://webmago.dev/buvytsan/2020/12/Ejecucion-Pipeline-SonarQube-Codefresh-300x155.png 300w, https://webmago.dev/buvytsan/2020/12/Ejecucion-Pipeline-SonarQube-Codefresh-768x398.png 768w, https://webmago.dev/buvytsan/2020/12/Ejecucion-Pipeline-SonarQube-Codefresh-1536x796.png 1536w, https://webmago.dev/buvytsan/2020/12/Ejecucion-Pipeline-SonarQube-Codefresh.png 1912w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-707" class="wp-caption-text">Ejecución Pipeline SonarQube Codefresh</p></div>
<p>&nbsp;</p>
<h3><strong>Comprando en la cola de SonarQube la tarea de escaneo.</strong></h3>
<p>Como lo anticipe en mi <a title="The document mention SonarCloud (payment) instead Sonarqube (Free), I think I you expose your Sonarqube you can do the same with @codefresh pipeline." href="https://twitter.com/WebMago/status/1334187107028520969">retuit</a>, mencionando que usaban SonarCloud y que si exponían su instalación de SonarQube se podría hacer lo mismo que se indica en el Howto.</p>
<p>Así que vayamos a ver el Dashboard de SonarQube, he puesto en rojo el ID de la Tarea (Task) en la imagen para su rápida identificación.</p>
<div id="attachment_709" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-709" class="size-large wp-image-709" src="https://webmago.dev/buvytsan/2020/12/Tareas-en-Background-SonarQube-1024x359.png" alt="Tareas en Background SonarQube" width="1024" height="359" srcset="https://webmago.dev/buvytsan/2020/12/Tareas-en-Background-SonarQube-1024x359.png 1024w, https://webmago.dev/buvytsan/2020/12/Tareas-en-Background-SonarQube-300x105.png 300w, https://webmago.dev/buvytsan/2020/12/Tareas-en-Background-SonarQube-768x269.png 768w, https://webmago.dev/buvytsan/2020/12/Tareas-en-Background-SonarQube-1536x538.png 1536w, https://webmago.dev/buvytsan/2020/12/Tareas-en-Background-SonarQube-2048x717.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-709" class="wp-caption-text">Tareas en Background SonarQube</p></div>
<p>Efectivamente podemos ver que la tarea del análisis lanzada desde Codefresh se esta ejecutando en mi instancia de SonarQube y al finalizar puedo revisar la calidad del código del proyecto.</p>
<div id="attachment_710" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-710" class="size-large wp-image-710" src="https://webmago.dev/buvytsan/2020/12/Escritorio-Proyecto-SonarQube-1024x597.png" alt="Escritorio Proyecto SonarQube" width="1024" height="597" srcset="https://webmago.dev/buvytsan/2020/12/Escritorio-Proyecto-SonarQube-1024x597.png 1024w, https://webmago.dev/buvytsan/2020/12/Escritorio-Proyecto-SonarQube-300x175.png 300w, https://webmago.dev/buvytsan/2020/12/Escritorio-Proyecto-SonarQube-768x447.png 768w, https://webmago.dev/buvytsan/2020/12/Escritorio-Proyecto-SonarQube-1536x895.png 1536w, https://webmago.dev/buvytsan/2020/12/Escritorio-Proyecto-SonarQube-2048x1193.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-710" class="wp-caption-text">Escritorio Proyecto SonarQube</p></div>
<p>Con esto comprobamos la integración del escaneo de código usando SonarQube lanzado desde un pipeline en Codefresh.</p>
<p>Si necesitas ayuda puedes contactarme en este <a title="Formulario de Contacto" href="https://webmago.dev/#contact" target="_blank" rel="noopener noreferrer">enlace</a>.</p>
]]></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/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=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[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;]]]></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>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ciclos de Integracion y Despliegue en Kubernetes</title>
		<link>https://webmago.dev/ciclos-de-integracion-y-despliegue-en-kubernetes/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ciclos-de-integracion-y-despliegue-en-kubernetes</link>
					<comments>https://webmago.dev/ciclos-de-integracion-y-despliegue-en-kubernetes/#respond</comments>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Fri, 27 Sep 2019 18:00:46 +0000</pubDate>
				<category><![CDATA[codefresh]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[kubernetes]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=479</guid>
					<description><![CDATA[Como habrán leído alguna otra de mis historias, Codefresh Desplegando en Kubernetes, he usado esta plataforma SaaS &#8211;Codefresh&#8211; para generar varios pipelines, en algunos casos paralelos sin tener que depender de otra plataforma para que el ciclo suceda. Al momento de recibir la orden vía Webhook inicia el proceso de integración del código a través [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Como habrán leído alguna otra de mis historias, <a href="https://webmago.dev/codefresg-desplegando-en-kubernetes/" target="_blank" rel="noopener noreferrer"><strong><em>Codefresh Desplegando en Kubernetes</em></strong></a>, he usado esta plataforma SaaS &#8211;<a href="https://codefresh.io" target="_blank" rel="noopener noreferrer"><strong>Codefresh</strong></a>&#8211; para generar varios pipelines, en algunos casos paralelos sin tener que depender de otra plataforma para que el ciclo suceda.</p>



<p>Al momento de recibir la orden vía <strong>Webhook</strong> inicia el proceso de integración del código a través de las ordenes indicadas en el <em>Dockerfile</em>, con esta imagen y/o con la ayuda de otras se realizan pruebas unitarias que los desarrolladores acompañan con sus commits.</p>



<p style="padding-left: 40px;">Muchos creen que Delivery y Deployment son lo mismo, sin embargo, Deployment es el siguiente paso a Continuos Delivery. En el proceso de Delivery, existe un paso manual, sin embargo, en el Deployment todo sucede de forma automática.</p>
<div id="attachment_514" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-514" class="wp-image-514 size-large" src="https://webmago.dev/buvytsan/2019/09/Continuous_DeliveryDeployment-1024x600.png" alt="Continuous Delivery, Continuous Deployment." width="1024" height="600" srcset="https://webmago.dev/buvytsan/2019/09/Continuous_DeliveryDeployment-1024x600.png 1024w, https://webmago.dev/buvytsan/2019/09/Continuous_DeliveryDeployment-300x176.png 300w, https://webmago.dev/buvytsan/2019/09/Continuous_DeliveryDeployment-768x450.png 768w, https://webmago.dev/buvytsan/2019/09/Continuous_DeliveryDeployment.png 1494w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-514" class="wp-caption-text">Inspired by <a href="https://blog.crisp.se/2013/02/05/yassalsundman/continuous-delivery-vs-continuous-deployment" target="_blank" rel="noopener noreferrer">Yassal Sundman’s blog post on Crisp’s Blog.</a></p></div>



<p>Tras el éxito del paso previo, viene el despliegue o liberación del producto final, <a href="https://codefresh.io" target="_blank" rel="noopener noreferrer"><strong>Codefresh</strong></a> provee una vasta serie de plugins e imágenes para que no tengas que recurrir a pasos adicionales fuera de su entorno, para mis actuales proyectos en clusters Kubernetes hice uso de su imagen <strong><em>k8s-blue-green</em></strong>, esta me permite hacer despliegues de la version actual y sacar la version previa &#8220;<strong><em>del aire</em></strong>&#8220;.</p>
<p>Si todo ha ido bien, o mal, el mismo SaaS de forma nativa o haciendo uso de sus plugins puedes notificar via Slack o Telegram a tu equipo sobre el ciclo, haciéndolos participes y corresponsables.</p>
<p>¿Quieres emular un <strong><em>Delivery</em></strong> en esta plataforma?, sin problema, introduce el paso <strong><em>pending-aproval</em></strong>, y através de  Slack, el usuario indicado recibirá la notificación con las opciones para <strong>Aprobar</strong> o <strong>Declinar</strong> el proceso desde este medio o el Dashboard del SaaS.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webmago.dev/ciclos-de-integracion-y-despliegue-en-kubernetes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Codefresh Desplegando en Kubernetes</title>
		<link>https://webmago.dev/codefresh-desplegando-en-kubernetes/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=codefresh-desplegando-en-kubernetes</link>
					<comments>https://webmago.dev/codefresh-desplegando-en-kubernetes/#respond</comments>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Tue, 17 Sep 2019 12:00:55 +0000</pubDate>
				<category><![CDATA[codefresh]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[kubernetes]]></category>
		<category><![CDATA[bitbucket]]></category>
		<category><![CDATA[ci/cd]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[github]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=1</guid>
					<description><![CDATA[Hace unos meses tuve el reto de migrar a un cliente con sus aplicaciones monoliticas a Kubernetes. Mi lectura incluyo cursos sobre lo que Kubernetes era, como funcionaba, beneficios y los retos a resolver, despliegues blue/green, entre otros. Previo a ello manejaba alrededor de 25 servidores en donde en conjunto se alojaban los Fronteds, APIs, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Hace unos meses tuve el reto de migrar a un cliente con sus aplicaciones monoliticas a Kubernetes.</p>
<p>Mi lectura incluyo cursos sobre lo que Kubernetes era, como funcionaba, beneficios y los retos a resolver, despliegues blue/green, entre otros.</p>
<p>Previo a ello manejaba alrededor de 25 servidores en donde en conjunto se alojaban los Fronteds, APIs, Admin, cache, Base de Datos y servicios adicionales.</p>
<p>Hacer un despliegue en momentos operativos nos ocasiono en mas de una vez caidas donde tuvimos que hacer un rollback de emergencia.</p>
<p>Durante mi entrenamiento en Kubernetes tuve la experiencia de probar varios entornos CI/CD, entre ellos: Bitbucket pipelines, Circle CI, entorno local Jenkins.</p>
<p>Varios de los problemas que tuve, Codefresh ya los habia analizado y comparado, incluso mi entorno local infructuso de Jenkins -requiere de varios equipos y horas para tunning-, por lo que me di a la tarea de adentrarme en su interface y lenguaje <em>yaml</em> para codificar los pipelines y condicionales de despliegue.</p>
<p>Cabe mencionar que su equipo siempre estara listo para ayudarte, algo que tuve desde el primer momento que conoci a Maya -no es un bot- quien te dara una respuesta o canalizara con un especialista.</p>
<p>Codefresh te ofrece una version gratuita con una cantidad razonable de builds para que lo conozcas, las cuales agoté en el curso del PoC, ellos gentilmente me obsequiaron mas para concluir con mi Prueba de Concepto.</p>
<p>Codefresh esta basada en una tecnologia Docker in Docker, es decir, construyes tus imagenes Docker y testeas en un contenedor.</p>
<p>Codefresh no solo hace despliegues a entornos Kubernetes, tambien hace despliegues a entornos &#8220;Legacy&#8221;, esas apps que aun se resisten a migrar a este entorno.</p>
<p>Te preguntaras, mi cluster Kubernetes esta detras de mi firewall, puedo hacer el despliegue?, la respuesta es si, personalmente yo experimente este entorno con exito.</p>
<p>Codefresh se integra con <strong>cualquier</strong> proveedores de Kubernetes, incluidos los personalizados.&#8221; (ya que por medio de la opción &#8220;custom&#8221;, lo unico que se require es la IP/hostname, el certificado, etc.. y listo, ya nos podemos integrar.. sin importar donde este hosteado</p>
<p>Volviendo al tema de los despliegues, con Codefresh implemente su imagen de despliegue Blue/Green, imagina hacer un deploy de 16 contenedores de un microservicio sin tener una caida; con ellos fue posible hacerlo, incluso aplicar el escalado horizontal una vez que la nueva version ha sido publicada y recibir una notificacion en Slack en caso de exito o falla.</p>
<p>Estaras pensando en gitOps, por que no, recientemente vi un webinar donde usaron Terraform para hacer despliegues usando Github y Codefresh.</p>
<p>Por que no te das una vuelta por su sitio y pruebas las bondades que <a href="https://codefresh.io/" target="_blank" rel="nofollow noopener noreferrer">Codefresh</a> tiene para ti, <a href="https://codefresh.io/" target="_blank" rel="nofollow noopener noreferrer">https://codefresh.io/</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://webmago.dev/codefresh-desplegando-en-kubernetes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
