<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Übersicht on IT-CNE Cloud-Native Core</title>
		<link>https://kubernetes.tbz.pstark.ch/en/</link>
		<description>Recent content in Übersicht on IT-CNE Cloud-Native Core</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<atom:link href="https://kubernetes.tbz.pstark.ch/en/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>1.1 Tasks: Setup</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/01/labs/11/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/01/labs/11/</guid>
				<description>&lt;h2 id=&#34;task-111-getting-started&#34;&gt;Task 1.1.1: Getting Started&lt;/h2&gt;&#xA;&lt;p&gt;In Bearbeitung.&lt;/p&gt;&#xA;&lt;h2 id=&#34;task-112-install-prometheus&#34;&gt;Task 1.1.2: Install Prometheus&lt;/h2&gt;&#xA;&lt;h2 id=&#34;mit-argocd&#34;&gt;Mit ArgoCD&lt;/h2&gt;&#xA;&lt;p&gt;In Bearbeitung.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;apiVersion&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;argoproj.io/v1alpha1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;kind&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Application&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;metadata&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;&amp;lt;user&amp;gt;-app-of-apps&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;namespace&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;argocd&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;spec&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;destination&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;namespace&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;argocd&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;server&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;https://kubernetes.default.svc&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;project&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;default&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;source&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;repoURL&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;https://gitea.training.cluster.acend.ch/&amp;lt;user&amp;gt;/prometheus-training-lab-setup&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;path&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;apps/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;targetRevision&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;main&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;syncPolicy&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;automated&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;prune&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;selfHeal&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;syncOptions&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;Replace=true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl argocd create -f user-app-of-apps.yaml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;deploy-prometheus&#34;&gt;Deploy Prometheus&lt;/h3&gt;&#xA;&lt;p&gt;Wir verwenden diese Helm-Chart: &lt;a href=&#34;https://github.com/prometheus-community/helm-charts/blob/main/charts/kube-prometheus-stack/README.md&#34;&gt;https://github.com/prometheus-community/helm-charts/blob/main/charts/kube-prometheus-stack/README.md&lt;/a&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;helm install -f kube-prom-stack-values.yaml -n monitoring-system prometheus-stack oci://ghcr.io/prometheus-community/charts/kube-prometheus-stack&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# kube-prom-stack-values.yaml&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;prometheusOperator&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;prometheus&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;ingress&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# ingressClassName: &amp;#34;traefik&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;hosts&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;prometheus.app.lernvirt.ch&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;thanosRuler&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;ingress&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# ingressClassName: &amp;#34;traefik&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;hosts&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;thanosruler.app.lernvirt.ch&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;grafana&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;ingress&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# ingressClassName: &amp;#34;traefik&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;hosts&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;grafana.app.lernvirt.ch&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;alertmanager&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;ingress&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# ingressClassName: &amp;#34;traefik&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;hosts&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;alertmanager.app.lernvirt.ch&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;configure-prometheus&#34;&gt;Configure Prometheus&lt;/h3&gt;&#xA;&lt;p&gt;As mentioned in the introduction, configuring a Prometheus on Kubernetes can be done using the Prometheus Operator. We basically need to specify a &lt;a href=&#34;https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#prometheus&#34;&gt;Prometheus custom resource&lt;/a&gt; and the Operator will do its work.&#xA;In the prometheus custom resource&amp;rsquo;s spec block you can find various configuration options:&lt;/p&gt;</description>
			</item>
			<item>
				<title>2.1 Tasks: Thanos Querier</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/02/labs/21/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/02/labs/21/</guid>
				<description>&lt;p&gt;To have centralized access to the metrics of both the shared infrastructure Prometheus instance as well as your own userwokload Prometheus instance, we will install the Thanos Querier in this lab. This will give us a central point of view for the following prometheus instances:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Infrastructure Prometheus (K8S Metrics, Node Metrics, &amp;hellip;) in the global &lt;code&gt;monitoring&lt;/code&gt; namespace&lt;/li&gt;&#xA;&lt;li&gt;Userworkload Prometheus (the stack we can use for our application metrics) in the &lt;code&gt;&amp;lt;user&amp;gt;-monitoring&lt;/code&gt; namespace&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;task-211-install-thanos-querier&#34;&gt;Task 2.1.1: Install Thanos Querier&lt;/h3&gt;&#xA;&lt;p&gt;To install the Thanos Querier, change &lt;code&gt;query.enabled&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt; in the &lt;code&gt;values.yaml&lt;/code&gt; of your user-monitoring Helm release. ArgoCD will automagically install all needed components in your namespace.&lt;/p&gt;</description>
			</item>
			<item>
				<title>2.2 Tasks: Explore metrics</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/02/labs/22/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/02/labs/22/</guid>
				<description>&lt;p&gt;In this lab you are going to explore various metrics, which your Prometheus server is collecting.&lt;/p&gt;&#xA;&lt;h3 id=&#34;task-221-prometheusthanos-web-ui&#34;&gt;Task 2.2.1: Prometheus/Thanos web UI&lt;/h3&gt;&#xA;&lt;p&gt;As we have now attached the Thanos Querier to your own Prometheus as well as the infrastructure Prometheus, we will use its UI to have a global view.&lt;/p&gt;&#xA;&lt;p&gt;Get a feel for how to use the Thanos Querier web UI. Open the &lt;a href=&#34;https://thanos-query.app.lernvirt.ch&#34;&gt;web UI&lt;/a&gt; and navigate to the &lt;strong&gt;Graph&lt;/strong&gt; menu (right on top in the grey navigation bar next to Stores).&lt;/p&gt;</description>
			</item>
			<item>
				<title>2.3 Tasks: PromQL</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/02/labs/23/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/02/labs/23/</guid>
				<description>&lt;p&gt;In this lab you are going to learn a bit more about &lt;a href=&#34;https://prometheus.io/docs/prometheus/latest/querying/basics/&#34;&gt;PromQL (Prometheus Query Language)&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;PromQL is the query language that allows you to select, aggregate and filter the time series data collected by prometheus in real time.&lt;/p&gt;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&lt;div class=&#34;h4 alert-heading&#34; role=&#34;heading&#34;&gt;Note&lt;/div&gt;&#xA;&lt;p&gt;Execute the queries in the &lt;a href=&#34;https://thanos-query.app.lernvirt.ch&#34;&gt;Thanos Querier UI&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;PromQL can seem overwhelming. It may take a little time to get used to it. There may be different approaches to solve the tasks. Our solution is just one possibility.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
			</item>
			<item>
				<title>3.1 Tasks: Grafana intro</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/03/labs/31/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/03/labs/31/</guid>
				<description>&lt;h3 id=&#34;task-311-install-grafana&#34;&gt;Task 3.1.1: Install Grafana&lt;/h3&gt;&#xA;&lt;p&gt;Similar to the basic setup, we are just going to update our configuration of the ArgoCD application to install and create our Grafana instance. Update your monitoring application (&lt;code&gt;charts/user-monitoring/values.yaml&lt;/code&gt;) and update the &lt;code&gt;grafana.enabled&lt;/code&gt; flag to &lt;code&gt;true&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;charts/user-monitoring/values.yaml&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;user&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;&amp;lt;user&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# Replace me&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# prometheus&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;prometheus&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# thanos-query&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;query&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# grafana&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;grafana&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# blackboxexporter&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;blackboxexporter&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# pushgateway&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;pushgateway&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# alertmanager&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;alertmanager&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# thanos-ruler&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;ruler&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Verify the installation and sync process in the &lt;a href=&#34;https://argocd.lernvirt.ch&#34;&gt;ArgoCD UI&lt;/a&gt;.&#xA;When the application is synchronized successfully navigate to your freshly created Grafana instance: &lt;a href=&#34;https://grafana.app.lernvirt.ch&#34;&gt;https://grafana.app.lernvirt.ch&lt;/a&gt;. Use the admin account to login in. Skip the password change.&lt;/p&gt;</description>
			</item>
			<item>
				<title>3.2 Tasks: Grafana dashboards</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/03/labs/32/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/03/labs/32/</guid>
				<description>&lt;h3 id=&#34;task-321-import-a-dashboard&#34;&gt;Task 3.2.1: Import a dashboard&lt;/h3&gt;&#xA;&lt;p&gt;As a first Task we import an existing dashboard to our grafana. There is a huge collection of predefined dashboards available on &lt;a href=&#34;https://grafana.com/grafana/dashboards&#34;&gt;https://grafana.com/grafana/dashboards&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;In this task we learn how to import existing dashboards, which we can also use as reference to write our own queries and dashboards.&lt;/p&gt;&#xA;&lt;p&gt;Choose one or more of the preexisting dashboards from &lt;a href=&#34;https://grafana.com/grafana/dashboards&#34;&gt;https://grafana.com/grafana/dashboards&lt;/a&gt; and import them into your grafana. Use the daterange, interval picker on the top right to change the timerange (between &lt;code&gt;5 minutes&lt;/code&gt; and &lt;code&gt;10 minutes&lt;/code&gt;) of the displayed mertics.&lt;/p&gt;</description>
			</item>
			<item>
				<title>4.1 Tasks: Blackbox exporter</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/04/labs/41/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/04/labs/41/</guid>
				<description>&lt;h3 id=&#34;task-411-install-blackbox-exporter&#34;&gt;Task 4.1.1: Install Blackbox exporter&lt;/h3&gt;&#xA;&lt;p&gt;Similar to the basic setup, we are just going to update our configuration of the ArgoCD application to install the Blackbox exporter. Update your monitoring application (&lt;code&gt;charts/user-monitoring/values.yaml&lt;/code&gt;) and update the &lt;code&gt;blackboxexporter.enabled&lt;/code&gt; flag to &lt;code&gt;true&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;charts/user-monitoring/values.yaml&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;user&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;&amp;lt;user&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# Replace me&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# prometheus&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;prometheus&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# thanos-query&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;query&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# grafana&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;grafana&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;datasources&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;prometheus&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;access&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;proxy&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;editable&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;type&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;prometheus&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;url&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;http://prometheus-operated:9090&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# blackboxexporter&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;blackboxexporter&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# pushgateway&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;pushgateway&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# alertmanager&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;alertmanager&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# thanos-ruler&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;ruler&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Commit and push the changes.&lt;/p&gt;</description>
			</item>
			<item>
				<title>4.2 Tasks: Pushgateway</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/04/labs/42/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/04/labs/42/</guid>
				<description>&lt;h3 id=&#34;task-421---install-and-configure-pushgateway&#34;&gt;Task 4.2.1 - Install and configure Pushgateway&lt;/h3&gt;&#xA;&lt;p&gt;Update your monitoring application (&lt;code&gt;charts/user-monitoring/values.yaml&lt;/code&gt;) and update the &lt;code&gt;blackboxexporter.enabled&lt;/code&gt; flag to &lt;code&gt;true&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;charts/user-monitoring/values.yaml&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;user&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;&amp;lt;user&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# Replace me&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# prometheus&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;prometheus&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# thanos-query&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;query&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# grafana&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;grafana&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;datasources&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;prometheus&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;access&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;proxy&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;editable&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;type&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;prometheus&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;url&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;http://prometheus-operated:9090&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# blackboxexporter&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;blackboxexporter&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# pushgateway&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;pushgateway&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# alertmanager&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;alertmanager&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# thanos-ruler&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;ruler&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Commit and push the changes and verify whether the deployment worked correctly.&lt;/p&gt;</description>
			</item>
			<item>
				<title>6.1 Tasks: Instrumenting</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/06/labs/61/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/06/labs/61/</guid>
				<description>&lt;h3 id=&#34;task-611-get-the-source-code&#34;&gt;Task 6.1.1: Get the source code&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git clone https://github.com/acend/prometheus-training-go-instrumentation.git&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Change into the freshly cloned git repository&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd prometheus-training-go-instrumentation&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;TODO: create Dockerfile&#xA;This application creates a simple webserver which listens at &lt;code&gt;http://localhost:8083&lt;/code&gt; and returns the string &lt;code&gt;Prometheus Training&lt;/code&gt; after a random interval between 0 and 1000 milliseconds. You can test the app by building it as a docker image using &lt;code&gt;docker build -t prometheus-training-go-instrumentation:local .&lt;/code&gt; and then running the built image using &lt;code&gt;docker run --rm -p 8083:8083 prometheus-training-go-instrumentation:local&lt;/code&gt;. You can then (in a separate terminal) issue a request using the command &lt;code&gt;curl http://localhost:8083&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>6.1 Tasks: Instrumenting</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/06/labs/61_springboot/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/06/labs/61_springboot/</guid>
				<description>&lt;h3 id=&#34;task-611-spring-boot-example-instrumentation&#34;&gt;Task 6.1.1: Spring Boot Example Instrumentation&lt;/h3&gt;&#xA;&lt;p&gt;Using the &lt;a href=&#34;https://spring.io/blog/2018/03/16/micrometer-spring-boot-2-s-new-application-metrics-collector&#34;&gt;micrometer metrics facade&lt;/a&gt; in Spring Boot Applications lets us collect all sort of metrics within a Spring Boot application. Those metrics can be exported for Prometheus to scrape by a few additional dependencies and configuration.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s have a deeper look at how the instrumentation of a Spring Boot application works. For that we can use the prometheus-training-spring-boot-example application located at &lt;a href=&#34;https://github.com/acend/prometheus-training-spring-boot-example&#34;&gt;https://github.com/acend/prometheus-training-spring-boot-example&lt;/a&gt;. To make the application collect metrics and provide a Prometheus endpoint we now need to simply add the following two dependencies in the &lt;code&gt;pom.xml&lt;/code&gt; file, where it says &lt;code&gt;&amp;lt;!-- Add Dependencies here--&amp;gt;&lt;/code&gt;:&lt;/p&gt;</description>
			</item>
			<item>
				<title>7.1 Tasks: Enable and configure Alertmanager</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/07/labs/71/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/07/labs/71/</guid>
				<description>&lt;h3 id=&#34;task-711-install-alertmanager-and-thanosruler&#34;&gt;Task 7.1.1: Install Alertmanager and Thanosruler&lt;/h3&gt;&#xA;&lt;p&gt;Update your monitoring application (&lt;code&gt;charts/user-monitoring/values.yaml&lt;/code&gt;) and update the &lt;code&gt;alertmanager.enabled&lt;/code&gt; and &lt;code&gt;ruler.enabled&lt;/code&gt; flag to &lt;code&gt;true&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;charts/user-monitoring/values.yaml&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;user&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;&amp;lt;user&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# Replace me&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# prometheus&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;prometheus&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# thanos-query&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;query&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# grafana&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;grafana&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;datasources&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;prometheus&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;access&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;proxy&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;editable&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;type&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;prometheus&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;url&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;http://prometheus-operated:9090&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# blackboxexporter&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;blackboxexporter&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# pushgateway&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;pushgateway&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# alertmanager&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;alertmanager&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# thanos-ruler&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;ruler&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Commit and push the changes.&lt;/p&gt;&#xA;&lt;p&gt;Verify the installation and sync process in the &lt;a href=&#34;https://argocd.lernvirt.ch&#34;&gt;ArgoCD UI&lt;/a&gt;.&#xA;Or execute the following command:&lt;/p&gt;</description>
			</item>
			<item>
				<title>7.2 Tasks: Alertmanager</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/07/labs/72/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/07/labs/72/</guid>
				<description>&lt;h3 id=&#34;task-721-configure-slack-as-alert-receiver&#34;&gt;Task 7.2.1: Configure Slack as alert receiver&lt;/h3&gt;&#xA;&lt;p&gt;As part of our lab setup we already configured an alert receiver for Alertmanager alerts.&lt;/p&gt;&#xA;&lt;p&gt;We deployed the &lt;a href=&#34;https://mailcatcher.app.lernvirt.ch&#34;&gt;Mail catcher&lt;/a&gt;, which is a very simple component. We can send Emails to the server, and those are then displayed in the Web UI. The Emails are not send anywhere, and this setup should only be used for demo purposes.&lt;/p&gt;&#xA;&lt;p&gt;When we enabled the alertmanager configuration in the &lt;code&gt;charts/user-monitoring/values.yaml&lt;/code&gt; we also deployed the following AlertmanagerConfig Custom Resource&lt;/p&gt;</description>
			</item>
			<item>
				<title>7.3 Tasks: Alertrules and alerts</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/07/labs/73/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/07/labs/73/</guid>
				<description>&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&lt;div class=&#34;h4 alert-heading&#34; role=&#34;heading&#34;&gt;Note&lt;/div&gt;&#xA;&lt;p&gt;For doing the alerting lab it&amp;rsquo;s useful to have a &amp;ldquo;real&amp;rdquo; application so that alerts can be provoked. You will use the demo app installed in your  monitoring-demo namespace for this purpose.&lt;/p&gt;&#xA;&lt;p&gt;The example app exposes metrics which are already scraped from lab one.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-promql&#34; data-lang=&#34;promql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{job&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&amp;#34;&lt;span style=&#34;color:#e6db74&#34;&gt;example-web-python&lt;/span&gt;&amp;#34;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;The Prometheus Operator allows you to configure Alerting Rules (PrometheusRules). This enables Kubernetes users to configure and maintain alerting rules for their projects. Furthermore it is possible to treat Alerting Rules like any other Kubernetes resource and lets you manage them in Helm or Kustomize. A PrometheusRule has the following form:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Web terminal</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/setup/web-terminal/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/setup/web-terminal/</guid>
				<description>&lt;p&gt;Using OpenShift&amp;rsquo;s web terminal might be more convenient for you as it doesn&amp;rsquo;t require you to install &lt;code&gt;kubectl&lt;/code&gt; locally on your computer.&lt;/p&gt;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&lt;div class=&#34;h4 alert-heading&#34; role=&#34;heading&#34;&gt;Note&lt;/div&gt;&#xA;&lt;p&gt;If you do change your mind, head right over to &lt;a href=&#34;https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/setup/local-usage/&#34;&gt;1.1.1. Local usage&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;task-1-login-on-the-web-console&#34;&gt;Task 1: Login on the web console&lt;/h2&gt;&#xA;&lt;p&gt;First of all, open your browser.&#xA;Then, log in on OpenShift&amp;rsquo;s web console using the URL and credentials provided by your trainer.&lt;/p&gt;&#xA;&lt;h2 id=&#34;task-2-initialize-terminal&#34;&gt;Task 2: Initialize terminal&lt;/h2&gt;&#xA;&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;&lt;div class=&#34;h4 alert-heading&#34; role=&#34;heading&#34;&gt;Warning&lt;/div&gt;&#xA;&lt;p&gt;Make sure to create a dedicated project for the web terminal!&lt;/p&gt;&#xA;&lt;/div&gt;</description>
			</item>
			<item>
				<title>4.3 Tasks: Exporter as a sidecar</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/04/labs/43/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/04/labs/43/</guid>
				<description>&lt;h3 id=&#34;task-431-deploy-a-database-and-use-a-sidecar-container-to-expose-metric&#34;&gt;Task 4.3.1: Deploy a database and use a sidecar container to expose metric&lt;/h3&gt;&#xA;&lt;p&gt;As we&amp;rsquo;ve learned in &lt;a href=&#34;../../../04/&#34;&gt;Lab 4 - Prometheus exporters&lt;/a&gt; when applications do not expose metrics in the Prometheus format, there are a lot of exporters available to convert metrics into the correct format. In Kubernetes this is often done by deploying so called sidecar containers along with the actual application.&lt;/p&gt;&#xA;&lt;p&gt;This lab demonstrates that with a &lt;code&gt;mariadb&lt;/code&gt; database. In the first step, we are going to install a plain &lt;code&gt;mariadb&lt;/code&gt; with a &lt;a href=&#34;https://kubernetes.io/docs/concepts/configuration/secret/&#34;&gt;Secret&lt;/a&gt; (username password to access the database), a &lt;a href=&#34;https://kubernetes.io/docs/concepts/services-networking/service/&#34;&gt;Service&lt;/a&gt; and the &lt;a href=&#34;https://kubernetes.io/docs/concepts/workloads/controllers/deployment/&#34;&gt;Deployment&lt;/a&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>5.1 Tasks: kube-prometheus metrics</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/05/labs/51/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/05/labs/51/</guid>
				<description>&lt;h3 id=&#34;task-511-memory-usage-of-prometheus&#34;&gt;Task 5.1.1: Memory usage of Prometheus&lt;/h3&gt;&#xA;&lt;p&gt;&lt;strong&gt;Task description&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Display the memory usage of both Prometheus pods&lt;/li&gt;&#xA;&lt;li&gt;Use a filter to just display metrics from your &lt;code&gt;prometheus&lt;/code&gt; containers&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Use the [Thanos Querier web UI](&lt;a href=&#34;https://thanos-query.app.lernvirt.ch&#34;&gt;https://thanos-query.app.lernvirt.ch&lt;/a&gt; to execute the queries.&lt;/p&gt;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&lt;div class=&#34;h4 alert-heading&#34; role=&#34;heading&#34;&gt;Note&lt;/div&gt;&#xA;&lt;p&gt;Search for a metric with &lt;code&gt;memory_working_set&lt;/code&gt; in its name&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;details data-mode=&#34;normalexpertmode&#34; class=&#34;normalexpertmode&#34;&gt;&#xA;  &lt;summary&gt;Hints&lt;/summary&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-promql&#34; data-lang=&#34;promql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;container_memory_working_set_bytes{pod&lt;span style=&#34;color:#f92672&#34;&gt;=~&lt;/span&gt;&amp;#34;&lt;span style=&#34;color:#e6db74&#34;&gt;prometheus-prometheus-0&lt;/span&gt;&amp;#34;, container&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&amp;#34;&lt;span style=&#34;color:#e6db74&#34;&gt;prometheus&lt;/span&gt;&amp;#34;,namespace&lt;span style=&#34;color:#f92672&#34;&gt;=~&lt;/span&gt;&amp;#34;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;lt;user&amp;gt;.*&lt;/span&gt;&amp;#34;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/details&gt;&#xA;&lt;h3 id=&#34;task-512-kubernetes-pod-count&#34;&gt;Task 5.1.2: Kubernetes pod count&lt;/h3&gt;&#xA;&lt;p&gt;&lt;strong&gt;Task description&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Display how many pods are currently running on your Kubernetes platform&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;details data-mode=&#34;normalexpertmode&#34; class=&#34;normalexpertmode&#34;&gt;&#xA;  &lt;summary&gt;Hints&lt;/summary&gt;&#xA;&lt;p&gt;There are different ways to archive this. You can for example query all running containers and group them by &lt;code&gt;pod&lt;/code&gt; and &lt;code&gt;namespace&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-promql&#34; data-lang=&#34;promql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;count&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;sum&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;kube_pod_container_status_running &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;by&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;pod,namespace,cluster&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You may also sum() all running pods on your Kubernetes nodes&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-promql&#34; data-lang=&#34;promql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;sum&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;kubelet_running_pods&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;</description>
			</item>
			<item>
				<title>5.2 Tasks: Prometheus Operator</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/05/labs/52/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/05/labs/52/</guid>
				<description>&lt;h3 id=&#34;521-prometheus-storage&#34;&gt;5.2.1: Prometheus storage&lt;/h3&gt;&#xA;&lt;p&gt;By default, the Prometheus operator stack does not persist the data of the deployed monitoring stack. Therefore, any pod restart would result in a reset of all data. Let&amp;rsquo;s learn about persistence for Prometheus.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Task description&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;See this &lt;a href=&#34;https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/storage.md#manual-storage-provisioning&#34;&gt;example&lt;/a&gt; of how to configure storage for Prometheus&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;To get the current values, either look at the file in git or use &lt;code&gt;kubectl -n $USER-monitoring get prometheus prometheus -oyaml&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;details data-mode=&#34;normalexpertmode&#34; class=&#34;normalexpertmode&#34;&gt;&#xA;  &lt;summary&gt;Hints&lt;/summary&gt;&#xA;&lt;p&gt;To enable storage for our Prometheus we would simply add the following section to our Prometheus definition.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;spec&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ae81ff&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;securityContext&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;fsGroup&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;65534&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;storage&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;disableMountSubPath&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumeClaimTemplate&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;spec&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;resources&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;requests&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;storage&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;10Gi&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ae81ff&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;</description>
			</item>
			<item>
				<title>Windows</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/setup/local-usage/cli-installation/windows/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/setup/local-usage/cli-installation/windows/</guid>
				<description>&lt;h2 id=&#34;installation-for-windows&#34;&gt;Installation for Windows&lt;/h2&gt;&#xA;&lt;p&gt;Follow the steps outlined in &lt;a href=&#34;https://kubernetes.io/docs/tasks/tools/install-kubectl/&#34;&gt;https://kubernetes.io/docs/tasks/tools/install-kubectl/&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;In case the installation from the official package repositories didn&amp;rsquo;t work (or a specific version is needed) the static binary can be downloaded and put into the following path:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;C:\Kubernetes\&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In Windows, the &lt;code&gt;PATH&lt;/code&gt; can be set in the advanced system settings. It depends on the version:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.thewindowsclub.com/how-to-add-edit-a-path-variable-in-windows&#34;&gt;Windows 10&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://thecategorizer.com/windows/how-to-add-path-and-environment-variables-in-windows/&#34;&gt;Windows 11&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&lt;div class=&#34;h4 alert-heading&#34; role=&#34;heading&#34;&gt;Note: Windows Quick Hack&lt;/div&gt;&#xA;&lt;p&gt;Copy the &lt;code&gt;kubectl&lt;/code&gt; binary directly into the folder &lt;code&gt;C:\Windows&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
			</item>
			<item>
				<title>YAML</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/exercises/introduction/yaml/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/exercises/introduction/yaml/</guid>
				<description>&lt;p&gt;YAML Ain&amp;rsquo;t Markup Language (YAML) is a human-readable data-serialization language.&#xA;YAML is not a programming language. It is mostly used for storing configuration information.&lt;/p&gt;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&lt;div class=&#34;h4 alert-heading&#34; role=&#34;heading&#34;&gt;Note&lt;/div&gt;&#xA;&lt;p&gt;Data serialization is the process of converting data objects, or object states present in complex data structures, into a stream of bytes for storage, transfer, and distribution in a form that can allow recovery of its original structure.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;As you will see a lot of YAML in our Kubernetes basics course, we want to make sure you can read and write YAML. If you are not yet familiar with YAML, this introduction is waiting for you. Otherwise, feel free to skip it or come back later if you meet some less familiar YAML stuff.&lt;/p&gt;</description>
			</item>
			<item>
				<title>macOS</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/setup/local-usage/cli-installation/macos/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/setup/local-usage/cli-installation/macos/</guid>
				<description>&lt;h2 id=&#34;installation-for-macos&#34;&gt;Installation for macOS&lt;/h2&gt;&#xA;&lt;p&gt;Follow the steps outlined in &lt;a href=&#34;https://kubernetes.io/docs/tasks/tools/install-kubectl/&#34;&gt;https://kubernetes.io/docs/tasks/tools/install-kubectl/&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;In case the installation from the official package repositories didn&amp;rsquo;t work (or a specific version is needed) the static binary can be downloaded and put into the following path:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;~/bin&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;file-mode&#34;&gt;File mode&lt;/h3&gt;&#xA;&lt;p&gt;The &lt;code&gt;kubectl&lt;/code&gt; binary has to be executable:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd ~/bin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chmod +x kubectl&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;path-variable&#34;&gt;PATH variable&lt;/h3&gt;&#xA;&lt;p&gt;In macOS, the directory &lt;code&gt;~/bin&lt;/code&gt; should already be part of the &lt;code&gt;PATH&lt;/code&gt; variable.&#xA;In case &lt;code&gt;kubectl&lt;/code&gt; is placed in a different directory, you can change the &lt;code&gt;PATH&lt;/code&gt; variable with the following command:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Linux</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/setup/local-usage/cli-installation/linux/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/setup/local-usage/cli-installation/linux/</guid>
				<description>&lt;h2 id=&#34;installation-for-linux&#34;&gt;Installation for Linux&lt;/h2&gt;&#xA;&lt;p&gt;Follow the steps outlined in &lt;a href=&#34;https://kubernetes.io/docs/tasks/tools/install-kubectl/&#34;&gt;https://kubernetes.io/docs/tasks/tools/install-kubectl/&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;In case the installation from the official package repositories didn&amp;rsquo;t work (or a specific version is needed) the static binary can be downloaded and put into the following path:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;~/bin&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;file-mode&#34;&gt;File mode&lt;/h3&gt;&#xA;&lt;p&gt;The &lt;code&gt;kubectl&lt;/code&gt; binary has to be executable:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd ~/bin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chmod +x kubectl&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;path-variable&#34;&gt;PATH variable&lt;/h3&gt;&#xA;&lt;p&gt;In Linux, the directory &lt;code&gt;~/bin&lt;/code&gt; should already be part of the &lt;code&gt;PATH&lt;/code&gt; variable.&#xA;In case &lt;code&gt;kubectl&lt;/code&gt; is placed in a different directory, you can change the &lt;code&gt;PATH&lt;/code&gt; variable with the following command:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Console login</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/setup/local-usage/console-login/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/setup/local-usage/console-login/</guid>
				<description>&lt;h2 id=&#34;task-4-login-on-the-web-console&#34;&gt;Task 4: Login on the web console&lt;/h2&gt;&#xA;&lt;p&gt;First of all, open your browser.&#xA;Then, log in on OpenShift&amp;rsquo;s web console using the URL and credentials provided by your trainer.&lt;/p&gt;&#xA;&lt;h2 id=&#34;task-5-login-on-the-command-line&#34;&gt;Task 5: Login on the command line&lt;/h2&gt;&#xA;&lt;p&gt;In order to log in on the command line, copy the login command from the web console.&lt;/p&gt;&#xA;&lt;p&gt;To do that, open the Web Console and click on your username that you see at the top right, then choose &lt;strong&gt;Copy Login Command&lt;/strong&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Verification</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/setup/local-usage/verification/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/setup/local-usage/verification/</guid>
				<description>&lt;h2 id=&#34;verify-the-installation&#34;&gt;Verify the installation&lt;/h2&gt;&#xA;&lt;p&gt;You should now be able to execute &lt;code&gt;kubectl&lt;/code&gt; in the command prompt. To test, execute:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You should now see something like (the version number may vary):&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Client Version: version.Info{Major:&amp;#34;1&amp;#34;, Minor:&amp;#34;18&amp;#34;, GitVersion:&amp;#34;v1.18.0&amp;#34;, GitCommit:&amp;#34;9e991415386e4cf155a24b1da15becaa390438d8&amp;#34;, GitTreeState:&amp;#34;clean&amp;#34;, BuildDate:&amp;#34;2020-03-25T14:58:59Z&amp;#34;, GoVersion:&amp;#34;go1.13.8&amp;#34;, Compiler:&amp;#34;gc&amp;#34;, Platform:&amp;#34;linux/amd64&amp;#34;}&#xA;...&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you don&amp;rsquo;t see a similar output, possibly there are issues with the &lt;code&gt;PATH&lt;/code&gt; variable.&lt;/p&gt;&#xA;&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;&lt;div class=&#34;h4 alert-heading&#34; role=&#34;heading&#34;&gt;Warning&lt;/div&gt;&#xA;&lt;p&gt;Make sure to use at least version 1.16.x for your &lt;code&gt;kubectl&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Optional Kubernetes power tools</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/setup/optional-kubernetes-power-tools/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/setup/optional-kubernetes-power-tools/</guid>
				<description>&lt;h2 id=&#34;optional-kubernetes-power-tools&#34;&gt;Optional Kubernetes power tools&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;kubectx&lt;/code&gt; and &lt;code&gt;kubens&lt;/code&gt; are two handy shell scripts which let you easily switch between Kubernetes contexts and namespaces. See &lt;a href=&#34;https://github.com/ahmetb/kubectx&#34;&gt;https://github.com/ahmetb/kubectx&lt;/a&gt; for detailed instructions.&lt;/p&gt;&#xA;&lt;p&gt;Installation of &lt;code&gt;kubectx&lt;/code&gt; and &lt;code&gt;kubens&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl https://raw.githubusercontent.com/ahmetb/kubectx/master/kubectx -o ~/bin/kubectx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl https://raw.githubusercontent.com/ahmetb/kubectx/master/kubens -o ~/bin/kubens&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chmod +x ~/bin/kubectx ~/bin/kubens&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;kube-ps1&lt;/code&gt; is another helpful shell script which adds the current context and namespace to the shell prompt: &lt;a href=&#34;https://github.com/jonmosco/kube-ps1&#34;&gt;https://github.com/jonmosco/kube-ps1&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;fzf&lt;/code&gt; is yet another handy helper tool when you have to deal with a lot of contexts or namespaces by adding an interactive menu to &lt;code&gt;kubectx&lt;/code&gt; and &lt;code&gt;kubens&lt;/code&gt;: &lt;a href=&#34;https://github.com/junegunn/fzf&#34;&gt;https://github.com/junegunn/fzf&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Other ways to work with OpenShift</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/setup/more-tools-to-work-with-openshift/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/setup/more-tools-to-work-with-openshift/</guid>
				<description>&lt;h2 id=&#34;other-ways-to-work-with-openshift&#34;&gt;Other ways to work with OpenShift&lt;/h2&gt;&#xA;&lt;p&gt;If you don&amp;rsquo;t have access to a running OpenShift development environment (anymore), there are several options to get one.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://developers.redhat.com/developer-sandbox&#34;&gt;OpenShift Developer Sandbox&lt;/a&gt;: 30 days of no-cost access to a shared cluster on OpenShift&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://developers.redhat.com/products/openshift-local/overview&#34;&gt;OpenShift Local&lt;/a&gt;: A local OpenShift environmennt running on your machine&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.okd.io/latest/installing/installing_sno/install-sno-preparing-to-install-sno.html&#34;&gt;OKD single node installation&lt;/a&gt;: OKD (OpenShift community edition) single node installation&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;&#xA;&lt;p&gt;When you&amp;rsquo;re ready to go, head on over to the &lt;a href=&#34;../../docs/&#34;&gt;labs&lt;/a&gt; and begin with the training!&lt;/p&gt;</description>
			</item>
			<item>
				<title>6.1 Deploy your awesome application</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/02-helm/exercises/06/01_deploy/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/02-helm/exercises/06/01_deploy/</guid>
				<description>&lt;p&gt;Using the generated and modified Helm chart, we are going to deploy our own awesome application.&lt;/p&gt;&#xA;&lt;h2 id=&#34;task-611-deploy-the-chart&#34;&gt;Task 6.1.1: Deploy the chart&lt;/h2&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s deploy our awesome application. Therefore we need to adjust ingress configuriation in the values file.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;ingress&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;hosts&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;host&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;helm-complex-chart-&amp;lt;namespace&amp;gt;.webconsole.app.lernvirt.ch&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;paths&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#f92672&#34;&gt;path&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;pathType&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;ImplementationSpecific&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;tls&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;hosts&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#ae81ff&#34;&gt;helm-complex-chart-&amp;lt;namespace&amp;gt;.webconsole.app.lernvirt.ch&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;solution&#34;&gt;Solution&lt;/h3&gt;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&lt;div class=&#34;h4 alert-heading&#34; role=&#34;heading&#34;&gt;Note&lt;/div&gt;&#xA;&lt;p&gt;Don&amp;rsquo;t forget to replace &lt;code&gt;webconsole.app.lernvirt.ch&lt;/code&gt; with the value provided by the trainer.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;To create a release from our chart, we run the following command within our chart directory:&lt;/p&gt;</description>
			</item>
			<item>
				<title>6.2 Template the database backend</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/02-helm/exercises/06/02_database/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/02-helm/exercises/06/02_database/</guid>
				<description>&lt;p&gt;In this lab we are going to templates the resources that are necessary to deploy a MariaDB database as a backend to our &lt;code&gt;example-web-python&lt;/code&gt; application. Before we start creating those templates we want to have a look at a couple of best practices.&lt;/p&gt;&#xA;&lt;h2 id=&#34;resource-names&#34;&gt;Resource names&lt;/h2&gt;&#xA;&lt;p&gt;When looking at the app templates of our &lt;code&gt;mychart&lt;/code&gt; chart, the name of the resource is always defined by a helper function:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: {{ &lt;span style=&#34;color:#ae81ff&#34;&gt;include &amp;#34;helm-complex-chart.fullname&amp;#34; . }}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Resources within the same Namespace and of the same resource type must have unique names. Since a Helm chart can be instantiated multiple times in different releases, it&amp;rsquo;s best to include the release name as part of the resource name:&lt;/p&gt;</description>
			</item>
			<item>
				<title>6.3 Backend as a Dependency</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/02-helm/exercises/06/03_database-dependency/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/02-helm/exercises/06/03_database-dependency/</guid>
				<description>&lt;p&gt;In the previous lab we&amp;rsquo;ve manually added a database deployment to our awesome application. Instead of creating your own templates and deployments, we can also integrate other helm charts as dependencies. We have seen this already in lab 3 but are now going to go into more detail in this lab.&lt;/p&gt;&#xA;&lt;h2 id=&#34;helm-dependencies&#34;&gt;Helm Dependencies&lt;/h2&gt;&#xA;&lt;p&gt;Helm dependencies allow you to integrate other helm charts within your helm chart. It helps to reduce code duplication and to centralize certain functionality and to simply use well maintained helm charts in your deployments.&lt;/p&gt;</description>
			</item>
			<item>
				<title>6.4 Test</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/02-helm/exercises/06/04_tests/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/02-helm/exercises/06/04_tests/</guid>
				<description>&lt;h2 id=&#34;task-641-add-a-test-to-your-chart&#34;&gt;Task 6.4.1: Add a test to your chart&lt;/h2&gt;&#xA;&lt;p&gt;As we learned in the previous section, Helm gives us the availability to run automated tests during the Helm deployment.&#xA;Now it&amp;rsquo;s time to write our first test.&#xA;The test should meet the following requirements:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Image: mariadb&lt;/li&gt;&#xA;&lt;li&gt;Env Variables:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;MYSQL_DATABASE_HOST&lt;/code&gt; from secret&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;MYSQL_DATABASE_USER&lt;/code&gt; from secret&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;MYSQL_DATABASE_PASSWORD&lt;/code&gt; from secret&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Command: &lt;code&gt;mysql --host=$MYSQL_DATABASE_HOST --user=$MYSQL_DATABASE_USER --password=$MYSQL_DATABASE_PASSWORD&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Annotation: &lt;code&gt;helm.sh/hook: test&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Open the test file &lt;code&gt;templates/tests/test-connection.yaml&lt;/code&gt; and start to modify it.&lt;/p&gt;</description>
			</item>
			<item>
				<title>6.5 Helm hooks</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/02-helm/exercises/06/05_hooks/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/02-helm/exercises/06/05_hooks/</guid>
				<description>&lt;p&gt;In the previous lab we learned how to deploy our python example application and connect it to a MariaDB. In this chapter we are going to look at a mechanism of Helm called hooks, which let&amp;rsquo;s chart developers intervene / interact at certain points in a release&amp;rsquo;s life cycle.&lt;/p&gt;&#xA;&lt;h2 id=&#34;task-651-chart-hooks&#34;&gt;Task 6.5.1: Chart Hooks&lt;/h2&gt;&#xA;&lt;p&gt;At some point when developing helm charts we would like to interact or alter certain behaviour of our deployed resources. For example in this usecase we would like to have test data available in our database when releasing our chart. With the hook functionality of helm we can alter the life cycle and intervene at certain points. Hooks are regular templates specially annotated that causes Helm to utilize them differently. The tests used in the previous chapter are a special case of helm hooks. The following hooks are available for you to alter the behaviour of the chart:&lt;/p&gt;</description>
			</item>
			<item>
				<title>6.6 Deploy your Chart with different environment configurations</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/02-helm/exercises/06/06_environment/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/02-helm/exercises/06/06_environment/</guid>
				<description>&lt;p&gt;One of the most typical challenges when deploying an application is the handling of different deployment environments.&lt;/p&gt;&#xA;&lt;p&gt;A typical use case is to deploy your application into a Development and Production environment. Helm is a great solution for handling this challenge.&#xA;In this lab we are going to show you how to prepare your Helm releases for different environments.&lt;/p&gt;&#xA;&lt;h2 id=&#34;task-661-create-a-devlopment-release&#34;&gt;Task 6.6.1 Create a devlopment release&lt;/h2&gt;&#xA;&lt;p&gt;Let us start with a new value file for the Development environment. Create a new file called &lt;code&gt;values-dev.yaml&lt;/code&gt; and add following content to the file&lt;/p&gt;</description>
			</item>
			<item>
				<title>6.7 Optional: Publish your chart</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/02-helm/exercises/06/07_publish/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/02-helm/exercises/06/07_publish/</guid>
				<description>&lt;p&gt;In this lab we will learn how to publish our Helm chart and make it accessible to the public by using GitHub pages.&lt;/p&gt;&#xA;&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;&lt;div class=&#34;h4 alert-heading&#34; role=&#34;heading&#34;&gt;Note&lt;/div&gt;&#xA;&lt;p&gt;To work through this lab, you need a personal GitHub account. See &lt;a href=&#34;https://helm.sh/docs/topics/chart_repository#hosting-chart-repositories&#34;&gt;Hosting chart repositories&lt;/a&gt; for a lot of different strategies how to serve a Helm repository.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;GitHub pages provides an easy way to expose static files over HTTP(S) to the public. Everyone with a GitHub account can use this feature. The files to expose must be located in the &lt;code&gt;docs/&lt;/code&gt; subdirectory or on a separate branch which can be configured in the repository settings.&lt;/p&gt;</description>
			</item>
			<item>
				<title>7.1 Refactor 1</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/02-helm/exercises/07/01_refactor_1/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/02-helm/exercises/07/01_refactor_1/</guid>
				<description>&lt;h2 id=&#34;task-711-make-the-ingress-resource-more-configurable&#34;&gt;Task 7.1.1: Make the Ingress resource more configurable&lt;/h2&gt;&#xA;&lt;p&gt;After cloning the repository and inspecting the templates already created for you, you will notice some potential for improvement. For example the hostname of the applications should not be hard-coded. When deploying to multiple environments you will run into conflicts.&lt;/p&gt;&#xA;&lt;p&gt;Modify the &lt;strong&gt;consumer and producer&lt;/strong&gt; ingress templates and extract following variables to make them configurable:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Extract &lt;code&gt;.spec.rules.host&lt;/code&gt; as value&lt;/li&gt;&#xA;&lt;li&gt;Extract &lt;code&gt;.spec.tls.hosts[0]&lt;/code&gt; as value, use the same value as above&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&lt;div class=&#34;h4 alert-heading&#34; role=&#34;heading&#34;&gt;Note&lt;/div&gt;&#xA;&lt;p&gt;If you want to test the chart locally you can execute following command&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;helm template -s templates/consumer-ingress.yaml ./helm-basic-chart --debug | cat -n -&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/div&gt;</description>
			</item>
			<item>
				<title>7.2 Refactor 2</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/02-helm/exercises/07/02_refactor_2/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/02-helm/exercises/07/02_refactor_2/</guid>
				<description>&lt;p&gt;If you take a closer look at your Chart you will still recognize some weak spots. For example the producer and consumer will look like a lot of code duplication. We don&amp;rsquo;t like code duplication at all! The only big difference is the &lt;code&gt;&amp;quot;consumer&amp;quot;&lt;/code&gt; or &lt;code&gt;&amp;quot;producer&amp;quot;&lt;/code&gt; pre- or suffixed everywhere.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Just for fun:&lt;/strong&gt; How much lines of code are actually different?&lt;/p&gt;&#xA;&lt;details &gt;&#xA;  &lt;summary&gt;Hint / Solution&lt;/summary&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bc -l &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;diff -U0 templates/consumer-deployment.yaml templates/producer-deployment.yaml | wc -l&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;/2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;&#xA;&lt;p&gt;When considering the differences and how they affect the service, we can easily see the flaw of this Chart. The entire Chart is a duplication. Both services could use the same Chart and just be two instances / releases!&lt;/p&gt;</description>
			</item>
			<item>
				<title>7.3 Composition</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/02-helm/exercises/07/03_composition/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/02-helm/exercises/07/03_composition/</guid>
				<description>&lt;p&gt;Instead of instantiating the Chart two times manually by hand, we can also define a composition of two Charts in a single Chart. In other 2words we create a new Helm Chart and add the Chart we just wrote twice as a dependency to the chart.&lt;/p&gt;&#xA;&lt;p&gt;In Helm we can make a composition of already existing Charts and own templates and define it as a new Chart. This is a very common use case if we mix self created resources with own templated resources.&lt;/p&gt;</description>
			</item>
			<item>
				<title>8.1 Tasks: Relabeling</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/08/labs/81-relabeling/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/08/labs/81-relabeling/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config&#34;&gt;Relabeling&lt;/a&gt; in Prometheus can be used to perform numerous tasks using regular expressions, such as&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;adding, modifying or removing labels to/from metrics or alerts,&lt;/li&gt;&#xA;&lt;li&gt;filtering metrics based on labels, or&lt;/li&gt;&#xA;&lt;li&gt;enabling horizontal scaling of Prometheus by using &lt;code&gt;hashmod&lt;/code&gt; relabeling.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;It is a very powerful part of the Prometheus configuration, but it can also get quite complex and confusing. Thus, we will only take a look at some basic/simple examples.&lt;/p&gt;&#xA;&lt;p&gt;There are four types of relabelings:&lt;/p&gt;</description>
			</item>
			<item>
				<title>8.2 Tasks: Recording Rules</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/08/labs/82-recording/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/08/labs/82-recording/</guid>
				<description>&lt;p&gt;Prometheus &lt;a href=&#34;https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/&#34;&gt;recording rules&lt;/a&gt; allow you to precompute queries at a defined interval (&lt;code&gt;global.evaluation_interval&lt;/code&gt; or &lt;code&gt;interval&lt;/code&gt; in &lt;code&gt;rule_group&lt;/code&gt;) and save them to a new set of time series.&lt;/p&gt;&#xA;&lt;p&gt;In this lab you are going to create your first own recording rules. &lt;a href=&#34;https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/&#34;&gt;Recording rules&lt;/a&gt; are very useful when it comes to queries, which are very complex and take a long time to compute.&#xA;The naming convention dictates to use the following format when naming recording rules &lt;code&gt;level:metric:operation&lt;/code&gt;. Additional information regarding naming best-practices can be found &lt;a href=&#34;https://prometheus.io/docs/practices/rules/#naming-and-aggregation&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>8.3 Tasks: Troubleshoot Kubernetes Service Discovery</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/08/labs/83-troubleshoot-sd/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/04-prometheus/exercises/08/labs/83-troubleshoot-sd/</guid>
				<description>&lt;h3 id=&#34;task-831-troubleshooting-kubernetes-service-discovery&#34;&gt;Task 8.3.1: Troubleshooting Kubernetes Service Discovery&lt;/h3&gt;&#xA;&lt;p&gt;We will now deploy an application with an error in the monitoring configration.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Deploy &lt;a href=&#34;https://grafana.com/oss/loki/&#34;&gt;Loki&lt;/a&gt; in your namespace by adding the following files to your git repo in the &lt;code&gt;user-demo/&lt;/code&gt; folder:&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;apiVersion&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;apps/v1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;kind&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Deployment&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;metadata&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;labels&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;app&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;loki&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;loki&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;spec&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;replicas&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;selector&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;matchLabels&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;app&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;loki&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;template&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;metadata&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;labels&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;app&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;loki&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;spec&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;containers&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;mirror.gcr.io/grafana/loki:latest&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;loki&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;apiVersion&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;v1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;kind&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Service&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;metadata&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;labels&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;app&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;loki&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;loki&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;spec&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;http&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;port&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;3100&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;protocol&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;TCP&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;targetPort&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;3100&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;selector&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;app&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;loki&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;type&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;NodePort&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;apiVersion&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;monitoring.coreos.com/v1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;kind&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;ServiceMonitor&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;metadata&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;labels&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;app.kubernetes.io/name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;loki&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;loki&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;spec&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;endpoints&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;interval&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;30s&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;port&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;http&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;scheme&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;http&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;path&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;/metrics&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;selector&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;matchLabels&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;prometheus-monitoring&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;true&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Add, commit and push changes to your git repository and let ArgoCD sync your app again.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Helm overview</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/exercises/helm/overview/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/exercises/helm/overview/</guid>
				<description>&lt;p&gt;Ok, let&amp;rsquo;s start with Helm.&#xA;First, you have to understand the following 3 Helm concepts: &lt;strong&gt;Chart&lt;/strong&gt;, &lt;strong&gt;Repository&lt;/strong&gt; and &lt;strong&gt;Release&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;A &lt;strong&gt;Chart&lt;/strong&gt; is a Helm package. It contains all of the resource definitions necessary to run an application, tool, or service inside of a Kubernetes cluster. Think of it like the Kubernetes equivalent of a Homebrew formula, an Apt dpkg, or a Yum RPM file.&lt;/p&gt;&#xA;&lt;p&gt;A &lt;strong&gt;Repository&lt;/strong&gt; is the place where charts can be collected and shared. It’s like Perl’s CPAN archive or the Fedora Package Database, but for Kubernetes packages.&lt;/p&gt;</description>
			</item>
			<item>
				<title>CLI installation</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/exercises/helm/installation/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/exercises/helm/installation/</guid>
				<description>&lt;p&gt;This guide shows you how to install the &lt;code&gt;helm&lt;/code&gt; CLI tool. &lt;code&gt;helm&lt;/code&gt; can be installed either from source or from pre-built binary releases.&#xA;We are going to use the pre-built releases.&#xA;&lt;code&gt;helm&lt;/code&gt; binaries can be found on &lt;a href=&#34;https://github.com/helm/helm/releases&#34;&gt;Helm&amp;rsquo;s release page&lt;/a&gt; for the usual variety of operating systems.&lt;/p&gt;&#xA;&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;&lt;div class=&#34;h4 alert-heading&#34; role=&#34;heading&#34;&gt;Warning&lt;/div&gt;&#xA;&lt;p&gt;If you do this training in our acend web based environment, no installation is required.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;task-121221-install-cli&#34;&gt;Task 1.2.12.2.1: Install CLI&lt;/h2&gt;&#xA;&lt;p&gt;Install the CLI for your &lt;strong&gt;Operating System&lt;/strong&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Create a chart</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/exercises/helm/simplechart/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/exercises/helm/simplechart/</guid>
				<description>&lt;p&gt;In this lab we are going to create our very first Helm chart and deploy it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;task-121237-create-chart&#34;&gt;Task 1.2.12.3.7: Create Chart&lt;/h2&gt;&#xA;&lt;p&gt;First, let&amp;rsquo;s create our chart. Open your favorite terminal and make sure you&amp;rsquo;re in the workspace for this lab, e.g. &lt;code&gt;cd ~/&amp;lt;workspace-kubernetes-training&amp;gt;&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;helm create mychart&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You will now find a &lt;code&gt;mychart&lt;/code&gt; directory with the newly created chart. It already is a valid and fully functional chart which deploys an nginx instance. Have a look at the generated files and their content. For an explanation of the files, visit the &lt;a href=&#34;https://docs.helm.sh/developing_charts/#the-chart-file-structure&#34;&gt;Helm Developer Documentation&lt;/a&gt;. In a later section you&amp;rsquo;ll find all the information about Helm templates.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Generic Chart setup</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/exercises/helm/generic-chart-setup/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/exercises/helm/generic-chart-setup/</guid>
				<description>&lt;p&gt;In the following labs we are going to create our first Helm Charts with the help of Baloise&amp;rsquo;s Generic Chart and deploy them.&lt;/p&gt;&#xA;&lt;p&gt;Baloise&amp;rsquo;s Generic Helm Chart is meant as a template and easy starting point to deploy common Kubernetes resource manifests.&#xA;By declaring the Generic Chart as a dependency of your own Chart, you can make use of all the features the Generic Chart offers.&lt;/p&gt;&#xA;&lt;h2 id=&#34;task-2-setup-the-dependency&#34;&gt;Task 2: Setup the dependency&lt;/h2&gt;&#xA;&lt;p&gt;So first, let&amp;rsquo;s create your own Chart. Open your favorite terminal and make sure you&amp;rsquo;re in the workspace for this lab, e.g. &lt;code&gt;cd ~/&amp;lt;workspace-kubernetes-training&amp;gt;&lt;/code&gt;:&lt;/p&gt;</description>
			</item>
			<item>
				<title>A first example using the Generic Chart</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/exercises/helm/a-first-example-using-the-generic-chart/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/exercises/helm/a-first-example-using-the-generic-chart/</guid>
				<description>&lt;p&gt;You&amp;rsquo;re now all set to begin with a first example!&lt;/p&gt;&#xA;&lt;h2 id=&#34;task-4-create-a-valuesyaml-file&#34;&gt;Task 4: Create a &lt;code&gt;values.yaml&lt;/code&gt; file&lt;/h2&gt;&#xA;&lt;p&gt;Still inside your &lt;code&gt;mychart&lt;/code&gt; Helm Chart directory, open the already existing &lt;code&gt;values.yaml&lt;/code&gt; file.&#xA;Inside you&amp;rsquo;ll find a host of defined parameters. Delete them all.&lt;/p&gt;&#xA;&lt;p&gt;Instead, fill in the following content:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;first-example-app&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;replicaCount&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;repository&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;REGISTRY-URL/example/nginx-sample&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;tag&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;latest&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;pullPolicy&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;IfNotPresent&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;ingress&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;controller&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Route&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;clusterName&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;CLUSTER-NAME&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;network&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;http&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;servicePort&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;8080&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;ingress&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;clusterName&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;CLUSTER-NAME&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;readinessProbe&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;httpGet&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;path&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;port&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;8080&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;initialDelaySeconds&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;timeoutSeconds&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;resources&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;requests&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;cpu&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;10m&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;memory&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;16Mi&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;limits&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;cpu&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;200m&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;memory&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;32Mi&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;task-5-a-first-test&#34;&gt;Task 5: A first test&lt;/h2&gt;&#xA;&lt;p&gt;Before applying anything to the cluster, you should test if the current values have the desired effect.&#xA;In order to do so, execute the following command:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Complex example</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/exercises/helm/complex-example/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/exercises/helm/complex-example/</guid>
				<description>&lt;p&gt;In this extended lab, we are going to deploy an existing, more complex application with a Helm chart from the Artifact Hub.&lt;/p&gt;&#xA;&lt;h2 id=&#34;artifact-hub&#34;&gt;Artifact Hub&lt;/h2&gt;&#xA;&lt;p&gt;Check out &lt;a href=&#34;https://artifacthub.io/&#34;&gt;Artifact Hub&lt;/a&gt; where you&amp;rsquo;ll find a huge number of different Helm charts. For this lab, we&amp;rsquo;ll use the &lt;a href=&#34;https://artifacthub.io/packages/helm/bitnami/wordpress&#34;&gt;WordPress chart by Bitnami&lt;/a&gt;, a publishing platform for building blogs and websites.&lt;/p&gt;&#xA;&lt;h2 id=&#34;wordpress&#34;&gt;WordPress&lt;/h2&gt;&#xA;&lt;p&gt;As this WordPress Helm chart is published in Bitnami&amp;rsquo;s Helm repository, we&amp;rsquo;re first going to add it to our local repo list:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Generic Chart usage</title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/exercises/helm/generic-chart-usage/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/exercises/helm/generic-chart-usage/</guid>
				<description>&lt;p&gt;You have now seen how to set up and use the Generic Chart. Now it&amp;rsquo;s your turn!&lt;/p&gt;&#xA;&lt;h2 id=&#34;task-1-setup&#34;&gt;Task 1: Setup&lt;/h2&gt;&#xA;&lt;p&gt;Repeat the steps from &lt;a href=&#34;https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/01-k8s-basics/exercises/helm/generic-chart-setup/&#34;&gt; Generic Chart setup&lt;/a&gt; in order to create a new Chart.&lt;/p&gt;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&lt;div class=&#34;h4 alert-heading&#34; role=&#34;heading&#34;&gt;Note&lt;/div&gt;&#xA;&lt;p&gt;Note the &lt;code&gt;alias:&lt;/code&gt; line inside &lt;code&gt;Chart.yaml&lt;/code&gt;. You can change this value to whatever you&amp;rsquo;d like, but you need to use the same name as first line inside your &lt;code&gt;values.yaml&lt;/code&gt;!&lt;/p&gt;&#xA;&lt;p&gt;This is also how you can use the Generic Chart multiple times if you have more than one app/component.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
			</item>
			<item>
				<title></title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/0_organisatorisches/tagesplaene/tag01/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/0_organisatorisches/tagesplaene/tag01/</guid>
				<description>&lt;h1 id=&#34;tag-01---einführung&#34;&gt;Tag 01 - Einführung&lt;/h1&gt;&#xA;&lt;br/&gt;&#xA;&lt;h1 id=&#34;modulübersicht&#34;&gt;Modulübersicht&lt;/h1&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;kursplan&#34;&gt;&lt;a href=&#34;./Readme.md#kursplan-mit-durchg%C3%A4ngiger-projektarbeit&#34;&gt;Kursplan&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;br/&gt;&#xA;&lt;h1 id=&#34;inhaltsverzeichnis&#34;&gt;Inhaltsverzeichnis&lt;/h1&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;[TOC]&lt;/p&gt;&#xA;&lt;br/&gt;&#xA;&lt;h1 id=&#34;tagesziel&#34;&gt;Tagesziel&lt;/h1&gt;&#xA;&lt;hr&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Modulübersicht&lt;/li&gt;&#xA;&lt;li&gt;Einführung in DevOps&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Was ist DevOps?&lt;/li&gt;&#xA;&lt;li&gt;DevOps Lifecycles&lt;/li&gt;&#xA;&lt;li&gt;Technologieübersicht&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Projekt Kickoff&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;br/&gt;&#xA;&lt;h1 id=&#34;theorie&#34;&gt;Theorie&lt;/h1&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;Willkommen zum ersten Tag unseres DevOps-Kurses! Heute legen wir das Fundament für unser gemeinsames Verständnis von DevOps und starten mit unserem Praxisprojekt - der Modernisierung des Online-Shops von TechStyle.&lt;/p&gt;&#xA;&lt;p&gt;DevOps ist mehr als nur ein technisches Konzept - es ist eine Kultur, eine Denkweise und eine Sammlung von Praktiken, die darauf abzielen, die Zusammenarbeit zwischen Entwicklung (Development) und Betrieb (Operations) zu verbessern. In den kommenden Wochen werden wir diese Prinzipien nicht nur theoretisch erlernen, sondern sie praktisch in unserem durchgängigen Projekt anwenden.&lt;/p&gt;</description>
			</item>
			<item>
				<title></title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/0_organisatorisches/tagesplaene/template/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/0_organisatorisches/tagesplaene/template/</guid>
				<description>&lt;h1 id=&#34;tag-x---beschreibung-tag&#34;&gt;Tag X - Beschreibung Tag&lt;/h1&gt;&#xA;&lt;p&gt;[TOC]&lt;/p&gt;&#xA;&lt;h1 id=&#34;modulübersicht&#34;&gt;Modulübersicht&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;./Readme.md#kursplan-mit-durchg%C3%A4ngiger-projektarbeit&#34;&gt;Kursplan&lt;/a&gt;&lt;/p&gt;&#xA;&lt;br/&gt;&#xA;&lt;h2 id=&#34;tagesziel&#34;&gt;Tagesziel&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Ziel 1&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Ziel 1.1&lt;/li&gt;&#xA;&lt;li&gt;Ziel 1.2&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Ziel 2&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;theorie&#34;&gt;Theorie&lt;/h1&gt;&#xA;&lt;h2 id=&#34;theorie-teil-1&#34;&gt;Theorie Teil 1&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Grundlegende Konzepte&lt;/li&gt;&#xA;&lt;li&gt;Wichtige Definitionen&lt;/li&gt;&#xA;&lt;li&gt;Historischer Kontext&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;theorie-teil-2&#34;&gt;Theorie Teil 2&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Erweiterte Methoden&lt;/li&gt;&#xA;&lt;li&gt;Best Practices&lt;/li&gt;&#xA;&lt;li&gt;Aktuelle Entwicklungen&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;praxis&#34;&gt;Praxis&lt;/h1&gt;&#xA;&lt;h2 id=&#34;praxis---auftrag-1&#34;&gt;Praxis - Auftrag 1&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Installieren Sie die benötigte Software&lt;/li&gt;&#xA;&lt;li&gt;Konfigurieren Sie die Umgebung&lt;/li&gt;&#xA;&lt;li&gt;Führen Sie den ersten Test durch&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;praxis---auftrag-2&#34;&gt;Praxis - Auftrag 2&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Erstellen Sie ein neues Projekt&lt;/li&gt;&#xA;&lt;li&gt;Implementieren Sie die besprochenen Funktionen&lt;/li&gt;&#xA;&lt;li&gt;Dokumentieren Sie Ihre Ergebnisse&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title></title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/intro/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/intro/</guid>
				<description>&lt;h1 id=&#34;kubernetes&#34;&gt;Kubernetes&lt;/h1&gt;&#xA;&lt;p&gt;Umgebung zum Modul: &lt;a href=&#34;https://gitlab.com/ch-tbz-wb/Stud/cnc&#34;&gt;CNC - Cloud-native Core&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Mit Control-Plane verbinden und &lt;code&gt;microk8s add-node&lt;/code&gt; ausführen. Die Ausgabe ist dann jeweils, mittels Voranstellung von &lt;code&gt;sudo&lt;/code&gt;, auf dem Worker auszuführen.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ssh ubuntu@${ip}&#xA;&#xA;microk8s add-node --token-ttl 3600&#xA;exit&#xA;&#xA;ssh ubuntu@${ip_01}&#xA;sudo &amp;lt;Ausgabe von oben&amp;gt;&#xA;exit&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Die obigen Befehle sind für jeden Worker zu wiederholen.&lt;/p&gt;&#xA;&lt;h2 id=&#34;dashboard&#34;&gt;Dashboard&lt;/h2&gt;&#xA;&lt;p&gt;Das Kubernetes Dashboard ist wie folgt erreichbar.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;https://${fqdn}:18443&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
			</item>
			<item>
				<title></title>
				<link>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/kompetenz_a/readme/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://kubernetes.tbz.pstark.ch/en/modul/2_unterrichtsressourcen/kompetenz_a/readme/</guid>
				<description>&lt;h1 id=&#34;unterrichtsressourcen&#34;&gt;Unterrichtsressourcen&lt;/h1&gt;&#xA;&lt;p&gt;[[&lt;em&gt;TOC&lt;/em&gt;]]&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Überblick über die Unterrichtsressourcen&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Ressourcen in Unterordnern ablegen und in dieser Übersichtsseite sinnvolle Hinweise und Verlinkungen ergänzen&lt;/em&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;A/&#34;&gt;Unterrichtsressource A&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;B/&#34;&gt;Unterrichtsressource B&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;infrastruktur-erstellen&#34;&gt;Infrastruktur erstellen&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;git clone https://gitlab.com/ch-tbz-wb/Stud/cnc&#xA;cd cnc/2_Unterrichtsressourcen&#xA;&#xA;terraform init&#xA;&#xA;terraform plan&#xA;&#xA;terraform apply -parallelism=1 -auto-approve &#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Hinweis&lt;/strong&gt;: Terraform verwendet 10 Threads das ist zuviel für das MAAS.&lt;/p&gt;&#xA;&lt;p&gt;Für mehrere Studenten&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;export TF_VAR_host_no=10&#xA;for stud in 01 02 03 04 05 06 07 08 09 10 11 12&#xA;do&#xA;    terraform workspace new ws${stud}&#xA;    terraform workspace select ws${stud}&#xA;    terraform init&#xA;    terraform apply -parallelism=1 -auto-approve&#xA;    TF_VAR_host_no=$((TF_VAR_host_no + 6))&#xA;done&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Hinweis&lt;/strong&gt;: falls MAAS sich mit Fehler meldet, einloggen in den entsprechende KVM-Host und VMs mittels &lt;code&gt;virsh list --all&lt;/code&gt; und &lt;code&gt;virsh undefine xxx&lt;/code&gt; manuell weglöschen.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
