<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Devops on Daniel Cardozo</title><link>/de/tags/devops/</link><description>Recent content in Devops on Daniel Cardozo</description><generator>Hugo</generator><language>de</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="/de/tags/devops/index.xml" rel="self" type="application/rss+xml"/><item><title>Helm-Templates im Detail</title><link>/de/posts/helm-templates/</link><pubDate>Fri, 10 May 2024 10:00:00 +0100</pubDate><guid>/de/posts/helm-templates/</guid><description>&lt;h2 id="einführung"&gt;Einführung&lt;/h2&gt;
&lt;p&gt;Helm-Templates sind Kubernetes-Manifeste, die mit der Go-Templatesprache &lt;code&gt;text/template&lt;/code&gt; angereichert wurden. Sie befinden sich im Verzeichnis &lt;code&gt;templates/&lt;/code&gt; Ihres Charts und werden von Helm mithilfe der Werte aus &lt;code&gt;values.yaml&lt;/code&gt; und benutzerseitiger Überschreibungen gerendert. Sie zu verstehen ist der Schlüssel zu wartbaren und wiederverwendbaren Charts.&lt;/p&gt;
&lt;h2 id="template-grundlagen"&gt;Template-Grundlagen&lt;/h2&gt;
&lt;p&gt;Ein minimales Deployment-Template:&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="eingebaute-objekte"&gt;Eingebaute Objekte&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Objekt&lt;/th&gt;
					&lt;th&gt;Beschreibung&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;Aktuelle Release-Informationen: &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;Inhalt von &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;Zusammengeführte Werte aus &lt;code&gt;values.yaml&lt;/code&gt; und Benutzerüberschreibungen&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;Zugriff auf nicht-Template-Dateien im Chart&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="template-funktionen"&gt;Template-Funktionen&lt;/h2&gt;
&lt;p&gt;Helm enthält die Go-Sprig-Bibliothek mit über 60 Hilfsfunktionen:&lt;/p&gt;</description></item><item><title>Helm-Tutorial: Kubernetes-Anwendungen verwalten</title><link>/de/posts/helm-tutorial/</link><pubDate>Wed, 20 Mar 2024 10:00:00 +0100</pubDate><guid>/de/posts/helm-tutorial/</guid><description>&lt;h2 id="was-ist-helm"&gt;Was ist Helm?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Helm&lt;/strong&gt; ist der Paketmanager für Kubernetes. Er ermöglicht es, komplexe Kubernetes-Anwendungen mithilfe wiederverwendbarer Pakete, sogenannter &lt;strong&gt;Charts&lt;/strong&gt;, zu definieren, zu installieren und zu aktualisieren. Stellen Sie sich Helm als &lt;code&gt;apt&lt;/code&gt; oder &lt;code&gt;brew&lt;/code&gt; für Kubernetes vor.&lt;/p&gt;
&lt;h2 id="schlüsselkonzepte"&gt;Schlüsselkonzepte&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Begriff&lt;/th&gt;
					&lt;th&gt;Beschreibung&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;Paket mit allen Kubernetes-Ressourcendefinitionen einer Anwendung&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;Eine laufende Instanz eines im Cluster installierten Charts&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;Ort, an dem Charts gespeichert und geteilt werden&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;Konfigurationsparameter, die ein Chart zur Installationszeit anpassen&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="installation"&gt;Installation&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;Installation überprüfen:&lt;/p&gt;</description></item><item><title>Einstieg in ArgoCD</title><link>/de/posts/argocd-getting-started/</link><pubDate>Mon, 15 Jan 2024 10:00:00 +0100</pubDate><guid>/de/posts/argocd-getting-started/</guid><description>&lt;h2 id="was-ist-argocd"&gt;Was ist ArgoCD?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;ArgoCD&lt;/strong&gt; ist ein deklaratives, GitOps-basiertes Continuous-Delivery-Tool für Kubernetes. Es automatisiert den Anwendungs-Deployment, indem es den in einem Git-Repository definierten Sollzustand kontinuierlich mit dem Kubernetes-Cluster synchronisiert – das Git-Repository wird zur einzigen Quelle der Wahrheit.&lt;/p&gt;
&lt;h2 id="voraussetzungen"&gt;Voraussetzungen&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Ein laufender Kubernetes-Cluster (oder &lt;a href="https://kind.sigs.k8s.io/"&gt;kind&lt;/a&gt; für lokale Tests)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubectl&lt;/code&gt; konfiguriert für den Cluster-Zugriff&lt;/li&gt;
&lt;li&gt;Ein Git-Repository mit Kubernetes-Manifesten&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="argocd-installieren"&gt;ArgoCD installieren&lt;/h2&gt;
&lt;p&gt;Erstellen Sie den ArgoCD-Namespace und wenden Sie das offizielle Installationsmanifest an:&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-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl create namespace argocd
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Warten Sie, bis alle Pods bereit sind:&lt;/p&gt;</description></item></channel></rss>