<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>K8s on Daniel Cardozo</title><link>/es/tags/k8s/</link><description>Recent content in K8s on Daniel Cardozo</description><generator>Hugo</generator><language>es</language><copyright>&lt;a href="https://creativecommons.org/licenses/by-nc/4.0/" target="_blank" rel="noopener"&gt;cc by-nc 4.0&lt;/a&gt;</copyright><lastBuildDate>Fri, 10 May 2024 10:00:00 +0100</lastBuildDate><atom:link href="/es/tags/k8s/index.xml" rel="self" type="application/rss+xml"/><item><title>Profundizando en las plantillas de Helm</title><link>/es/posts/helm-templates/</link><pubDate>Fri, 10 May 2024 10:00:00 +0100</pubDate><guid>/es/posts/helm-templates/</guid><description>&lt;h2 id="introducción"&gt;Introducción&lt;/h2&gt;
&lt;p&gt;Las plantillas de Helm son manifiestos de Kubernetes enriquecidos con el lenguaje de plantillas &lt;code&gt;text/template&lt;/code&gt; de Go. Se encuentran en el directorio &lt;code&gt;templates/&lt;/code&gt; del chart y Helm las renderiza usando los valores de &lt;code&gt;values.yaml&lt;/code&gt; y cualquier sobrescritura del usuario. Entenderlas es clave para escribir charts mantenibles y reutilizables.&lt;/p&gt;
&lt;h2 id="conceptos-básicos-de-plantillas"&gt;Conceptos básicos de plantillas&lt;/h2&gt;
&lt;p&gt;Una plantilla de Deployment mínima:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;apiVersion&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;apps/v1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;kind&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Deployment&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;metadata&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: {{ &lt;span style="color:#ae81ff"&gt;.Release.Name }}-app&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;labels&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;app&lt;/span&gt;: {{ &lt;span style="color:#ae81ff"&gt;.Chart.Name }}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;spec&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;replicas&lt;/span&gt;: {{ &lt;span style="color:#ae81ff"&gt;.Values.replicaCount }}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;selector&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;matchLabels&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;app&lt;/span&gt;: {{ &lt;span style="color:#ae81ff"&gt;.Chart.Name }}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;template&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;metadata&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;labels&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;app&lt;/span&gt;: {{ &lt;span style="color:#ae81ff"&gt;.Chart.Name }}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;spec&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;containers&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: {{ &lt;span style="color:#ae81ff"&gt;.Chart.Name }}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;image&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;{{ .Values.image.repository }}:{{ .Values.image.tag }}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="objetos-integrados"&gt;Objetos integrados&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Objeto&lt;/th&gt;
					&lt;th&gt;Descripción&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;.Release&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Info del release actual: &lt;code&gt;.Release.Name&lt;/code&gt;, &lt;code&gt;.Release.Namespace&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;.Chart&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Contenido de &lt;code&gt;Chart.yaml&lt;/code&gt;: &lt;code&gt;.Chart.Name&lt;/code&gt;, &lt;code&gt;.Chart.Version&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;.Values&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Valores combinados de &lt;code&gt;values.yaml&lt;/code&gt; y sobrescrituras del usuario&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;.Files&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Acceso a archivos no-plantilla incluidos en el chart&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="funciones-de-plantilla"&gt;Funciones de plantilla&lt;/h2&gt;
&lt;p&gt;Helm incluye la librería Sprig de Go con más de 60 funciones:&lt;/p&gt;</description></item><item><title>Tutorial de Helm: Gestión de aplicaciones en Kubernetes</title><link>/es/posts/helm-tutorial/</link><pubDate>Wed, 20 Mar 2024 10:00:00 +0100</pubDate><guid>/es/posts/helm-tutorial/</guid><description>&lt;h2 id="qué-es-helm"&gt;¿Qué es Helm?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Helm&lt;/strong&gt; es el gestor de paquetes para Kubernetes. Permite definir, instalar y actualizar aplicaciones complejas de Kubernetes mediante paquetes reutilizables llamados &lt;strong&gt;charts&lt;/strong&gt;. Piense en él como &lt;code&gt;apt&lt;/code&gt; o &lt;code&gt;brew&lt;/code&gt;, pero para Kubernetes.&lt;/p&gt;
&lt;h2 id="conceptos-clave"&gt;Conceptos clave&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Término&lt;/th&gt;
					&lt;th&gt;Descripción&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Chart&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Paquete con todas las definiciones de recursos de Kubernetes para una aplicación&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Release&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Instancia en ejecución de un chart instalado en el clúster&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Repository&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Lugar donde se almacenan y comparten los charts&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Values&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Parámetros de configuración que personalizan un chart en el momento de la instalación&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="instalación"&gt;Instalación&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# macOS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;brew install helm
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Linux&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Verifique la instalación:&lt;/p&gt;</description></item><item><title>Primeros pasos con ArgoCD</title><link>/es/posts/argocd-getting-started/</link><pubDate>Mon, 15 Jan 2024 10:00:00 +0100</pubDate><guid>/es/posts/argocd-getting-started/</guid><description>&lt;h2 id="qué-es-argocd"&gt;¿Qué es ArgoCD?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;ArgoCD&lt;/strong&gt; es una herramienta de entrega continua declarativa basada en GitOps para Kubernetes. Automatiza el despliegue de aplicaciones sincronizando continuamente el estado deseado definido en un repositorio Git con el clúster de Kubernetes. El repositorio Git se convierte en la única fuente de verdad.&lt;/p&gt;
&lt;h2 id="requisitos-previos"&gt;Requisitos previos&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Un clúster de Kubernetes en funcionamiento (o &lt;a href="https://kind.sigs.k8s.io/"&gt;kind&lt;/a&gt; para pruebas locales)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubectl&lt;/code&gt; configurado para acceder al clúster&lt;/li&gt;
&lt;li&gt;Un repositorio Git con manifiestos de Kubernetes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="instalación-de-argocd"&gt;Instalación de ArgoCD&lt;/h2&gt;
&lt;p&gt;Cree el namespace de ArgoCD y aplique el manifiesto de instalación oficial:&lt;/p&gt;</description></item><item><title>Crear backups con Velero</title><link>/es/posts/velero/</link><pubDate>Thu, 30 Jun 2022 19:46:08 +0000</pubDate><guid>/es/posts/velero/</guid><description>&lt;h2 id="introducción"&gt;Introducción&lt;/h2&gt;
&lt;p&gt;Velero es una herramienta de código abierto para realizar copias de seguridad de tus clústeres de Kubernetes, ¡esto también incluye tus volúmenes de Kubernetes! La forma en que Velero funciona es solicitando a la API de Kubernetes los manifiestos deseados que deseas respaldar, de esta manera no necesitas acceso directo a la base de datos de etcd. Esto es muy útil cuando se utilizan clústeres de Kubernetes administrados como AWS, GCP, Digital Ocean, etc. Ya que al usar clústeres administrados, no tienes acceso directo a los nodos maestros.&lt;/p&gt;</description></item></channel></rss>